Merge branch 'jetty-9.3.x' into jetty-9.4.x

This commit is contained in:
Joakim Erdfelt 2016-07-08 08:45:39 -07:00
commit 66dfe7a5c2
13 changed files with 422 additions and 16 deletions

BIN
icon.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -17,15 +17,15 @@
[[jetty-classloading]]
=== Jetty Classloading
Class loading in a web container is slightly more complex than a normal Java application.
The normal configuration is that each web context (web application or WAR file) has its own classloader, which has the system classloader as its parent.
Class loading in a web container is slightly more complex than a normal Java application.
The normal configuration is that each web context (web application or WAR file) has its own classloader, which has the system classloader as its parent.
Such a classloader hierarchy is normal in Java, however the servlet specification complicates the hierarchy because it requires the following:
* Classes contained within WEB-INF/lib or WEB-INF/classes have priority over classes on the parent classloader.
* Classes contained within WEB-INF/lib or WEB-INF/classes have priority over classes on the parent classloader.
This is the opposite of the normal behaviour of a Java 2 classloader.
* System classes such as `java.lang.String` are excluded from the webapp priority, and you may not replace them with classes in `WEB-INF/lib` or `WEB-INF/` classes.
* System classes such as `java.lang.String` are excluded from the webapp priority, and you may not replace them with classes in `WEB-INF/lib` or `WEB-INF/` classes.
Unfortunately the specification does not clearly state what classes are _System_ classes, and it is unclear if all javax classes should be treated as System classes.
* Server implementation classes like link:{JDURL}/org/eclipse/jetty/server/Server.html[Server] should be hidden from the web application and should not be available in any classloader.
* Server implementation classes like link:{JDURL}/org/eclipse/jetty/server/Server.html[Server] should be hidden from the web application and should not be available in any classloader.
Unfortunately the specification does not state what classes are _Server_ classes, and it is unclear if common libraries like the Xerces parser should be treated as Implementation classes.
[[configuring-webapp-classloading]]
@ -33,20 +33,46 @@ Unfortunately the specification does not state what classes are _Server_ classes
Jetty provides configuration options to control the three webapp class loading issues identified above.
You can configure webapp classloading by several methods on the link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html[WebAppContext].
You can call these methods directly if you are working with the Jetty API, or you can inject methods from a context XML file if you are using the Context Provider (xref:using-context-provider[]).
You can configure webapp classloading by several methods on the link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html[WebAppContext].
You can call these methods directly if you are working with the Jetty API, or you can inject methods from a context XML file if you are using the Context Provider (xref:using-context-provider[]).
You CANNOT set these methods from a `jetty-web.xml` file, as it executes after the classloader configuration is set.
[[controlling-webapp-classloader-priority]]
===== Controlling Webapp Classloader Priority
The method link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html#isParentLoaderPriority()[org.eclipse.jett .webapp.WebAppContext.setParentLoaderPriority(boolean)] allows control over the priority given to webapp classes over system classes.
If you set it to false (the default), Jetty uses standard webapp classloading priority.
The method link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html#isParentLoaderPriority()[org.eclipse.jett .webapp.WebAppContext.setParentLoaderPriority(boolean)] allows control over the priority given to webapp classes over system classes.
If you set it to false (the default), Jetty uses standard webapp classloading priority.
However, if in this mode some classes that are dependencies of other classes are loaded from the parent classloader (due to settings of system classes below), ambiguities might arise as both the webapp and system classloader versions can end up being loaded.
If set to true, Jetty uses normal JavaSE classloading priority, and gives priority to the parent/system classloader.
If set to true, Jetty uses normal JavaSE classloading priority, and gives priority to the parent/system classloader.
This avoids the issues of multiple versions of a class within a webapp, but the version the parent/system loader provides must be the right version for all webapps you configure in this way.
[[configuring-webapp-caching]]
===== Configuring Webapp Classloader Caching
Introduced in Jetty 9.3.6, the link:{JDURL}/org/eclipse/jetty/webapp/CachingWebAppClassLoader.html[CachingWebAppClassLoader] can be used to cache `getResource(String)` results.
For webapps that search for classes and resources regularly, this can increase speed and performance.
This is an optional feature and it should be noted that it can conflict with several other libraries such as JSP, JSTL, JSF and CDI.
As such, this feature must be manually enabled for each webapp you want to use it in.
Below is an example of implementing this feature using Jetty IoC XML format:
[source, xml, options="header"]
----
<Configure id="mywebapp" class="org.eclipse.jetty.webapp.WebAppContext">
...
<Set name="classLoader">
<New class="org.eclipse.jetty.webapp.CachingWebAppClassLoader">
<Arg><Ref refid="mywebapp"/></Arg>
</New>
</Set>
...
</Configure>
----
[[classloading-setting-system-classes]]
===== Setting System Classes
@ -109,15 +135,15 @@ You can add extra classpaths to Jetty in several ways.
If you are using xref:advanced-start-features[], at startup the jetty runtime automatically loads option Jars from the top level `$jetty.home/lib` directory. The default settings include:
* Adding Jars under `$jetty.home/lib/ext` to the system classpath.
* Adding Jars under `$jetty.home/lib/ext` to the system classpath.
You can place additional Jars here.
* Adding the directory `$jetty.home/resources` to the classpath (may contain classes or other resources).
* Adding the directory `$jetty.home/resources` to the classpath (may contain classes or other resources).
* Adding a single path defined by the command line parameter __path__.
[[using-extra-classpath-method]]
===== Using the extraClasspath() method
You can add an additional classpath to a context classloader by calling link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html#setExtraClasspath(java.lang.String)[org.eclipse.jetty.webapp.WebAppContext.setExtraClasspath(String)] with a comma-separated list of paths.
You can add an additional classpath to a context classloader by calling link:{JDURL}/org/eclipse/jetty/webapp/WebAppContext.html#setExtraClasspath(java.lang.String)[org.eclipse.jetty.webapp.WebAppContext.setExtraClasspath(String)] with a comma-separated list of paths.
You can do so directly to the API via a context XML file such as the following:
[source, xml, subs="{sub-order}"]
@ -131,7 +157,7 @@ You can do so directly to the API via a context XML file such as the following:
[[using-custom-webappclassloader]]
==== Using a Custom WebAppClassLoader
If none of the alternatives already described meet your needs, you can always provide a custom classloader for your webapp.
If none of the alternatives already described meet your needs, you can always provide a custom classloader for your webapp.
We recommend, but do not require, that your custom loader subclasses link:{JDURL}/org/eclipse/jetty/webapp/WebAppClassLoader.html[WebAppClassLoader].
You configure the classloader for the webapp like so:
@ -142,7 +168,7 @@ MyCleverClassLoader myCleverClassLoader = new MyCleverClassLoader();
WebAppContext webapp = new WebAppContext();
...
webapp.setClassLoader(myCleverClassLoader);
----
You can also accomplish this in a context xml file.
@ -150,7 +176,7 @@ You can also accomplish this in a context xml file.
[[starting-jetty-custom-classloader]]
==== Starting Jetty with a Custom ClassLoader
If you start a Jetty server using a custom class loaderconsider the Jetty classes not being available to the system class loader, only your custom class loaderyou may run into class loading issues when the WebAppClassLoader kicks in.
If you start a Jetty server using a custom class loaderconsider the Jetty classes not being available to the system class loader, only your custom class loaderyou may run into class loading issues when the WebAppClassLoader kicks in.
By default the WebAppClassLoader uses the system class loader as its parent, hence the problem. This is easy to fix, like so:
[source, java, subs="{sub-order}"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
logos/jetty-avatar-256.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
logos/jetty-avatar-64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
logos/jetty-avatar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

179
logos/jetty-avatar.svg Normal file
View File

@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="400"
height="400"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.5 r10040"
version="1.0"
sodipodi:docname="jetty-avatar.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="jetty-avatar.png"
inkscape:export-xdpi="28.799999"
inkscape:export-ydpi="28.799999">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective2390"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
<filter
inkscape:collect="always"
id="filter3853"
x="-0.15826963"
width="1.3165393"
y="-0.20584013"
height="1.4116803">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="26.292865"
id="feGaussianBlur3855" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#525252"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.87428571"
inkscape:cx="171.56863"
inkscape:cy="200"
inkscape:document-units="px"
inkscape:current-layer="layer2"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1026"
inkscape:window-x="0"
inkscape:window-y="0"
showguides="true"
inkscape:guide-bbox="true"
showborder="true"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Jetty"
style="display:inline"
transform="translate(-1.845606,-221.31978)">
<g
id="g3857"
transform="matrix(0.88669095,0,0,0.88669095,25.158515,48.38446)">
<path
inkscape:connector-curvature="0"
id="path3004"
d="m 84.37204,268.03851 a 12.50125,12.50125 0 0 0 -12.1875,9.6875 l -10.3125,44.75 a 12.50125,12.50125 0 0 0 0.71875,7.75 12.50125,12.50125 0 0 0 -4.0625,6.6875 L 18.68454,509.44476 c -0.93999,0.0793 -1.75306,0.16127 -3.21875,0.21875 a 12.50125,12.50125 0 0 0 -12,12.1875 l -0.96875,39.9375 a 12.50125,12.50125 0 0 0 12.53125,12.8125 l 67.40625,-0.25 a 12.50125,12.50125 0 0 0 0.625,0 c 8.74629,-0.48292 17.66461,-3.77402 24.21875,-10.15625 6.55414,-6.38223 10.64721,-14.90394 13.6875,-25.25 a 12.50125,12.50125 0 0 0 0.1875,-0.6875 l 5.625,-24.3125 3.75,0 -4.0625,8.6875 a 12.50125,12.50125 0 0 0 11.34375,17.78125 l 42.15625,0 a 12.50125,12.50125 0 0 0 11.34375,-7.21875 l 115.34375,-247.375 a 12.50125,12.50125 0 0 0 -11.3125,-17.78125 l -42.1875,0 a 12.50125,12.50125 0 0 0 -11.3125,7.21875 l -24.59375,52.75 a 12.50125,12.50125 0 0 0 -4.375,-0.78125 l -43.03125,0 10.15625,-43.875 a 12.50125,12.50125 0 0 0 -12.1875,-15.3125 l -83.4375,0 z m 262.15625,0 a 12.50125,12.50125 0 0 0 -11.3125,7.21875 l -115.375,247.375 a 12.50125,12.50125 0 0 0 11.34375,17.78125 l 42.15625,0 a 12.50125,12.50125 0 0 0 11.34375,-7.21875 l 115.34375,-247.375 a 12.50125,12.50125 0 0 0 -11.3125,-17.78125 l -42.1875,0 z m -196.75,146.28125 27.21875,0 -5.84375,12.53125 -24.28125,0 2.90625,-12.53125 z"
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:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:25;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter3853);enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
<g
id="g3058">
<g
id="g3032"
transform="translate(-33.169935,0)">
<path
id="path2996"
d="M 106.32205,339.73892 65.825288,515.14967 c -2.406515,7.05911 -6.072322,6.68223 -14.254473,7.0031 l -0.962606,39.94815 67.382421,-0.24066 c 13.0754,-0.72195 21.22428,-8.13437 26.59883,-26.42388 l 45.18031,-195.69746 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path2994"
d="m 119.98951,280.53864 -10.33393,44.76119 83.44772,0 10.33393,-44.76119 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path3020"
d="M 106.32205,339.73892 65.825288,515.14967 c -2.406515,7.05911 -6.072322,6.68223 -14.254473,7.0031 l -0.962606,39.94815 67.382421,-0.24066 c 13.0754,-0.72195 21.22428,-8.13437 26.59883,-26.42388 l 45.18031,-195.69746 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
<path
id="path3018"
d="m 119.98951,280.53864 -10.33393,44.76119 83.44772,0 10.33393,-44.76119 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
</g>
<g
id="g3046"
transform="translate(-287.0915,0)">
<path
id="path2988"
d="m 542.7018,280.53864 -115.3597,247.38976 42.1718,0 115.3597,-247.38976 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path3193"
d="m 636.0746,280.53864 -115.3597,247.38976 42.1718,0 115.3597,-247.38976 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path3012"
d="m 542.7018,280.53864 -115.3597,247.38976 42.1718,0 115.3597,-247.38976 z"
style="fill:#fc592e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
<path
id="path3316"
d="m 636.0746,280.53864 -115.3597,247.38976 42.1718,0 115.3597,-247.38976 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
</g>
<g
id="g3052"
transform="translate(-239.05228,0)">
<path
id="path2992"
d="m 370.6225,339.73892 -14.3342,62.08809 83.7467,0 14.3342,-62.08809 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path2990"
d="m 347.6212,439.36864 -14.3342,62.08809 83.7466,0 14.3342,-62.08809 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:28.19471741;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path3016"
d="m 370.6225,339.73892 -14.3342,62.08809 83.7467,0 14.3342,-62.08809 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
<path
id="path3014"
d="m 347.6212,439.36864 -14.3342,62.08809 83.7466,0 14.3342,-62.08809 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
logos/jetty-logo-200.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
logos/jetty-logo-shadow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

110
logos/jetty-logo-shadow.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

BIN
logos/jetty-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

91
logos/jetty-logo.svg Normal file
View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1400"
height="400"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.48.3.1 r9886"
version="1.0"
sodipodi:docname="jetty-logo.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="jetty-logo-200.png"
inkscape:export-xdpi="12.86"
inkscape:export-ydpi="12.86">
<defs
id="defs4">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10" />
<inkscape:perspective
id="perspective2390"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 526.18109 : 1"
sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
gridtolerance="10000"
guidetolerance="10"
objecttolerance="10"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.87428571"
inkscape:cx="700"
inkscape:cy="200"
inkscape:document-units="px"
inkscape:current-layer="layer2"
showgrid="false"
inkscape:window-width="1679"
inkscape:window-height="1001"
inkscape:window-x="1"
inkscape:window-y="48"
showguides="true"
inkscape:guide-bbox="true"
showborder="true"
inkscape:window-maximized="0" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Jetty"
style="display:inline"
transform="translate(-1.845606,-221.31978)">
<path
id="path3193"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 468.5751,304.59386 L 460.4501,339.75011 L 430.85635,339.75011 L 423.54385,371.50011 L 453.1376,371.50011 L 435.6376,447.21886 C 431.11514,466.80783 434.69559,501.46886 475.60635,501.46886 L 574.3876,501.46886 L 582.3876,466.81261 C 513.82035,466.81262 513.81207,466.80768 518.8251,445.09386 L 535.8251,371.50011 L 598.2626,371.50011 L 604.3876,371.50011 L 627.85635,371.50011 L 610.35635,447.21886 C 605.83388,466.80782 609.41434,501.46886 650.3251,501.46886 L 749.10635,501.46886 L 757.10635,466.81261 C 688.53909,466.81261 688.53082,466.80768 693.54385,445.09386 L 710.54385,371.50011 L 779.10635,371.50011 L 786.4501,339.75011 L 717.85635,339.75011 L 725.98135,304.59386 L 643.29385,304.59386 L 635.16885,339.75011 L 611.73135,339.75011 L 605.5751,339.75011 L 543.1376,339.75011 L 551.2626,304.59386 L 468.5751,304.59386 z M 106.32205,339.73892 L 65.825288,515.14967 C 63.418773,522.20878 59.752966,521.8319 51.570815,522.15277 L 50.608209,562.10092 L 117.99063,561.86026 C 131.06603,561.13831 139.21491,553.72589 144.58946,535.43638 L 189.76977,339.73892 L 106.32205,339.73892 z M 119.98951,280.53864 L 109.65558,325.29983 L 193.1033,325.29983 L 203.43723,280.53864 L 119.98951,280.53864 z M 239.29385,339.75011 C 224.85477,339.75012 208.26802,352.04925 204.6376,371.50011 L 188.6376,436.96886 C 179.27284,477.53211 184.20976,501.46886 214.48135,501.46886 L 385.3251,501.46886 L 393.3251,466.81261 L 265.29385,466.81261 L 272.16885,436.96886 L 400.2001,436.96886 C 402.2537,428.07372 410.80305,415.14706 415.3251,371.50011 C 416.6053,365.955 407.76262,339.75011 374.5126,339.75011 L 239.29385,339.75011 z M 307.98135,371.50011 C 325.75108,371.50011 330.91518,377.05789 325.2001,401.81261 L 280.29385,401.81261 C 285.80848,377.9261 293.45487,371.5001 307.98135,371.50011 z M 799.21238,339.73892 L 769.87735,466.80292 C 769.87735,466.80292 761.87689,501.45673 810.59962,501.45673 L 893.34691,501.45673 C 889.21672,519.34655 887.23544,527.9284 839.14197,527.9284 L 755.76542,527.9284 L 748.32055,560.1757 L 879.79056,560.1757 C 940.41876,560.1757 962.20636,560.1757 969.65123,527.9284 L 1013.0982,339.73892 L 930.6824,339.73892 L 901.34737,466.80292 L 853.2539,466.80292 L 882.58893,339.73892 L 799.21238,339.73892 z M 1045.4591,339.73892 L 1031.1249,401.82701 L 1114.8716,401.82701 L 1129.2058,339.73892 L 1045.4591,339.73892 z M 1022.4578,439.36864 L 1008.1236,501.45673 L 1091.8702,501.45673 L 1106.2044,439.36864 L 1022.4578,439.36864 z M 1217.5384,280.53864 L 1102.1787,527.9284 L 1144.3505,527.9284 L 1259.7102,280.53864 L 1217.5384,280.53864 z M 1310.9112,280.53864 L 1195.5515,527.9284 L 1237.7233,527.9284 L 1353.083,280.53864 L 1310.9112,280.53864 z" />
<path
d="M 468.5751,304.59386 L 460.4501,339.75011 L 430.85635,339.75011 L 423.54385,371.50011 L 453.1376,371.50011 L 435.6376,447.21886 C 431.11514,466.80783 434.69559,501.46886 475.60635,501.46886 L 574.3876,501.46886 L 582.3876,466.81261 C 513.82035,466.81262 513.81207,466.80768 518.8251,445.09386 L 535.8251,371.50011 L 598.2626,371.50011 L 604.3876,371.50011 L 627.85635,371.50011 L 610.35635,447.21886 C 605.83388,466.80782 609.41434,501.46886 650.3251,501.46886 L 749.10635,501.46886 L 757.10635,466.81261 C 688.53909,466.81261 688.53082,466.80768 693.54385,445.09386 L 710.54385,371.50011 L 779.10635,371.50011 L 786.4501,339.75011 L 717.85635,339.75011 L 725.98135,304.59386 L 643.29385,304.59386 L 635.16885,339.75011 L 611.73135,339.75011 L 605.5751,339.75011 L 543.1376,339.75011 L 551.2626,304.59386 L 468.5751,304.59386 z M 106.32205,339.73892 L 65.825288,515.14967 C 63.418773,522.20878 59.752966,521.8319 51.570815,522.15277 L 50.608209,562.10092 L 117.99063,561.86026 C 131.06603,561.13831 139.21491,553.72589 144.58946,535.43638 L 189.76977,339.73892 L 106.32205,339.73892 z M 119.98951,280.53864 L 109.65558,325.29983 L 193.1033,325.29983 L 203.43723,280.53864 L 119.98951,280.53864 z M 239.29385,339.75011 C 224.85477,339.75012 208.26802,352.04925 204.6376,371.50011 L 188.6376,436.96886 C 179.27284,477.53211 184.20976,501.46886 214.48135,501.46886 L 385.3251,501.46886 L 393.3251,466.81261 L 265.29385,466.81261 L 272.16885,436.96886 L 400.2001,436.96886 C 402.2537,428.07372 410.80305,415.14706 415.3251,371.50011 C 416.6053,365.955 407.76262,339.75011 374.5126,339.75011 L 239.29385,339.75011 z M 307.98135,371.50011 C 325.75108,371.50011 330.91518,377.05789 325.2001,401.81261 L 280.29385,401.81261 C 285.80848,377.9261 293.45487,371.5001 307.98135,371.50011 z M 799.21238,339.73892 L 769.87735,466.80292 C 769.87735,466.80292 761.87689,501.45673 810.59962,501.45673 L 893.34691,501.45673 C 889.21672,519.34655 887.23544,527.9284 839.14197,527.9284 L 755.76542,527.9284 L 748.32055,560.1757 L 879.79056,560.1757 C 940.41876,560.1757 962.20636,560.1757 969.65123,527.9284 L 1013.0982,339.73892 L 930.6824,339.73892 L 901.34737,466.80292 L 853.2539,466.80292 L 882.58893,339.73892 L 799.21238,339.73892 z M 1045.4591,339.73892 L 1031.1249,401.82701 L 1114.8716,401.82701 L 1129.2058,339.73892 L 1045.4591,339.73892 z M 1022.4578,439.36864 L 1008.1236,501.45673 L 1091.8702,501.45673 L 1106.2044,439.36864 L 1022.4578,439.36864 z M 1217.5384,280.53864 L 1102.1787,527.9284 L 1144.3505,527.9284 L 1259.7102,280.53864 L 1217.5384,280.53864 z M 1310.9112,280.53864 L 1195.5515,527.9284 L 1237.7233,527.9284 L 1353.083,280.53864 L 1310.9112,280.53864 z"
style="fill:#fc390e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:30;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path3316" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.2 KiB