Air-Quality-Web/design/Application Structure.drawi...

2 lines
47 KiB
XML

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="4143" height="1242" viewBox="-0.5 -0.5 4143 1242" content="&lt;mxfile modified=&quot;2019-02-25T11:36:08.740Z&quot; host=&quot;www.draw.io&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/9.3.1 Chrome/66.0.3359.181 Electron/3.0.6 Safari/537.36&quot; etag=&quot;D11kMHNhcSoJjEHFh9Du&quot; version=&quot;10.2.6&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;396a3652-59d3-6754-36e3-84bf9249b1bf&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><filter id="dropShadow"><feGaussianBlur in="SourceAlpha" stdDeviation="1.7" result="blur"/><feOffset in="blur" dx="3" dy="3" result="offsetBlur"/><feFlood flood-color="#3D4574" flood-opacity="0.4" result="offsetColor"/><feComposite in="offsetColor" in2="offsetBlur" operator="in" result="offsetBlur"/><feBlend in="SourceGraphic" in2="offsetBlur"/></filter></defs><g filter="url(#dropShadow)"><rect x="3184" y="64" width="480" height="1180" fill-opacity="0.9" fill="#d5e8d4" stroke="#82b366" stroke-opacity="0.9" stroke-width="6" stroke-dasharray="18 18" pointer-events="none"/><rect x="2684" y="64" width="500" height="1180" fill-opacity="0.8" fill="#d5e8d4" stroke="#82b366" stroke-opacity="0.8" stroke-width="6" stroke-dasharray="18 18" pointer-events="none"/><rect x="2164" y="64" width="520" height="1180" fill-opacity="0.7" fill="#d5e8d4" stroke="#82b366" stroke-opacity="0.7" stroke-width="6" stroke-dasharray="18 18" pointer-events="none"/><rect x="1604" y="64" width="560" height="1180" fill-opacity="0.5" fill="#d5e8d4" stroke="#82b366" stroke-opacity="0.5" stroke-width="6" stroke-dasharray="18 18" pointer-events="none"/><path d="M 3360 544 L 3293.57 322.57" fill="none" stroke="#666666" stroke-width="4" stroke-miterlimit="10" stroke-dasharray="12 12" pointer-events="none"/><path d="M 3304.55 331.31 L 3292.29 318.28 L 3289.22 335.91" fill="none" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="3244" y="544" width="280" height="160" rx="24" ry="24" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><path d="M 3104 363 L 3185 363 L 3185 623 L 3247.53 623" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3259.53 623 L 3243.53 631 L 3247.53 623 L 3243.53 615 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3104 883 L 3185 883 L 3185 623 L 3247.53 623" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3259.53 623 L 3243.53 631 L 3247.53 623 L 3243.53 615 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2504 363 L 2585 363 L 2585 603 L 2785 603 L 2785 363 L 2847.53 363" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2859.53 363 L 2843.53 371 L 2847.53 363 L 2843.53 355 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2504 883 L 2585 883 L 2585 643 L 2785 643 L 2785 883 L 2847.53 883" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2859.53 883 L 2843.53 891 L 2847.53 883 L 2843.53 875 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2104 623 L 2205 623 L 2205 363 L 2247.53 363" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2259.53 363 L 2243.53 371 L 2247.53 363 L 2243.53 355 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2104 623 L 2205 623 L 2205 883 L 2247.53 883" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2259.53 883 L 2243.53 891 L 2247.53 883 L 2243.53 875 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 64 64 L 244 64 L 244 94 L 224 124 L 64 124 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><path d="M 244 64 L 1084 64 L 1084 1244 L 64 1244 L 64 124" fill="none" stroke="#6c8ebf" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><g transform="translate(92.5,79.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="66" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 67px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Browser</div></div></foreignObject><text x="33" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Browser</text></switch></g><path d="M 3664 64 L 3864 64 L 3864 94 L 3844 124 L 3664 124 Z" fill="#f8cecc" stroke="#b85450" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><path d="M 3864 64 L 4144 64 L 4144 1244 L 3664 1244 L 3664 124" fill="none" stroke="#b85450" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><g transform="translate(3691.5,79.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="77" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 78px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Database</div></div></foreignObject><text x="39" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Database</text></switch></g><path d="M 1084 64 L 1244 64 L 1244 94 L 1224 124 L 1084 124 Z" fill="#fff2cc" stroke="#d6b656" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><path d="M 1244 64 L 3664 64 L 3664 1244 L 1084 1244 L 1084 124" fill="none" stroke="#d6b656" stroke-width="6" stroke-miterlimit="10" stroke-dasharray="18 18" pointer-events="none"/><g transform="translate(1115.5,79.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="53" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 55px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Server</div></div></foreignObject><text x="27" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Server</text></switch></g><path d="M 2104 624 L 2247.53 624" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2259.53 624 L 2243.53 632 L 2247.53 624 L 2243.53 616 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="1864" y="564" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(1926.5,602.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="54" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 55px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Router</div></div></foreignObject><text x="27" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Router</text></switch></g><rect x="2264" y="824" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2266.5,841.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Action Handler</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Action Handler</text></switch></g><path d="M 2504 624 L 2847.53 624" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2859.53 624 L 2843.53 632 L 2847.53 624 L 2843.53 616 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="2264" y="564" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2266.5,581.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Action Handler</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Action Handler</text></switch></g><path d="M 3104 624 L 3247.53 624" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3259.53 624 L 3243.53 632 L 3247.53 624 L 3243.53 616 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="2864" y="564" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2895.5,602.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="86" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 87px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Repository</div></div></foreignObject><text x="43" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Repository</text></switch></g><path d="M 3504 624 L 3767.53 624" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3779.53 624 L 3763.53 632 L 3767.53 624 L 3763.53 616 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="3264" y="564" width="240" height="120" rx="18" ry="18" fill="#e1d5e7" stroke="#9673a6" stroke-width="2" pointer-events="none"/><g transform="translate(3300.5,602.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="81" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 82px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">PHP PDO</div></div></foreignObject><text x="41" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">PHP PDO</text></switch></g><path d="M 3904 564 L 3904 404" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3904 684 L 3904 844" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="3784" y="564" width="240" height="120" rx="18" ry="18" fill="#f8cecc" stroke="#b85450" stroke-width="2" pointer-events="none"/><g transform="translate(3786.5,581.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Database Host</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Database Host</text></switch></g><path d="M 3784 868 C 3784 836 4024 836 4024 868 L 4024 940 C 4024 972 3784 972 3784 940 Z" fill="#f8cecc" stroke="#b85450" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 3784 868 C 3784 892 4024 892 4024 868" fill="none" stroke="#b85450" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(3815.5,899.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="86" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 87px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Data Store</div></div></foreignObject><text x="43" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Data Store</text></switch></g><rect x="3784" y="284" width="240" height="120" rx="18" ry="18" fill="#f8cecc" stroke="#b85450" stroke-width="2" pointer-events="none"/><g transform="translate(3786.5,301.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Query Optimiser</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Query Optimiser</text></switch></g><rect x="2264" y="304" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2266.5,321.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Action Handler</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Action Handler</text></switch></g><rect x="2864" y="824" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2895.5,862.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="86" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 87px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Repository</div></div></foreignObject><text x="43" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Repository</text></switch></g><rect x="2864" y="304" width="240" height="120" rx="18" ry="18" fill="#fff2cc" stroke="#d6b656" stroke-width="2" pointer-events="none"/><g transform="translate(2895.5,342.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="86" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 87px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Repository</div></div></foreignObject><text x="43" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Repository</text></switch></g><path d="M 3166 214 L 3356 214 L 3386 244 L 3386 314 L 3166 314 L 3166 214 Z" fill="#f5f5f5" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 3356 214 L 3356 244 L 3386 244" fill="none" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(3168.5,223.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="105" height="38" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 17px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 105px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Wrapper Class</div></div></foreignObject><text x="53" y="28" fill="#000000" text-anchor="middle" font-size="17px" font-family="Helvetica">Wrapper Class</text></switch></g><rect x="3556" y="598" width="166" height="50" rx="7.5" ry="7.5" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(3564.5,601.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="71" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 72px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Contacts<br /></div></div></foreignObject><text x="36" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Contacts&lt;br&gt;</text></switch></g><rect x="3115" y="600" width="110" height="50" rx="7.5" ry="7.5" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(3131.5,602.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="36" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 37px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">SQL<br /></div></div></foreignObject><text x="18" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">SQL&lt;br&gt;</text></switch></g><rect x="2594" y="579" width="180" height="90" rx="13.5" ry="13.5" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(2605.5,581.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="76" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 77px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><span>Requests</span><br /><span>Data</span></div></div></foreignObject><text x="38" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="2119" y="599" width="110" height="46" rx="6.9" ry="6.9" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(2130.5,600.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="40" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Calls<br /></div></div></foreignObject><text x="20" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Calls&lt;br&gt;</text></switch></g><path d="M 689 774 L 779 774" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 449 773 L 420 773 L 420 933 L 369 933" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 449 773 L 420 773 L 420 1093 L 369 1093" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="449" y="714" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(512.5,752.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="54" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 55px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Leaflet</div></div></foreignObject><text x="27" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Leaflet</text></switch></g><rect x="129" y="874" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(196.5,912.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="50" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 51px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Plugin</div></div></foreignObject><text x="25" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Plugin</text></switch></g><path d="M 1019 773 L 1045 773 L 1045 643 L 1187.53 643" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1199.53 643 L 1183.53 651 L 1187.53 643 L 1183.53 635 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="779" y="714" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(851.5,752.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="45" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 46px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Layer</div></div></foreignObject><text x="23" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Layer</text></switch></g><path d="M 369 774 L 449 774" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="129" y="714" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(196.5,752.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="50" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 51px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Plugin</div></div></foreignObject><text x="25" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Plugin</text></switch></g><path d="M 569 555 L 569 697.53" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 569 709.53 L 561 693.53 L 569 697.53 L 577 693.53 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 569 435 L 569 291.47" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 569 279.47 L 577 295.47 L 569 291.47 L 561 295.47 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 570 435 L 570 363 L 255 363 L 255 291.47" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 255 279.47 L 263 295.47 L 255 291.47 L 247 295.47 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="449" y="435" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(451.5,451.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Client Application</div></div></foreignObject><text x="58" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Client Application</text></switch></g><path d="M 689 213 L 730 213 L 725 213 L 747.53 213" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 759.53 213 L 743.53 221 L 747.53 213 L 743.53 205 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="449" y="155" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(507.5,193.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="59" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 60px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Module</div></div></foreignObject><text x="30" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Module</text></switch></g><rect x="129" y="1034" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(196.5,1072.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="50" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 51px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Plugin</div></div></foreignObject><text x="25" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Plugin</text></switch></g><path d="M 779 933 L 740 933 L 740 773 L 689 773" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="779" y="874" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(851.5,912.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="45" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 46px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Layer</div></div></foreignObject><text x="23" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Layer</text></switch></g><path d="M 779 1093 L 740 1093 L 740 773 L 689 773" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="779" y="1034" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(851.5,1072.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="45" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 46px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Layer</div></div></foreignObject><text x="23" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Layer</text></switch></g><rect x="134" y="155" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(192.5,193.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="59" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 60px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Module</div></div></foreignObject><text x="30" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Module</text></switch></g><path d="M 1004 213 L 1045 213 L 1045 603 L 1187.53 603" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1199.53 603 L 1183.53 611 L 1187.53 603 L 1183.53 595 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="764" y="155" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#dae8fc" stroke="#6c8ebf" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(822.5,193.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="59" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 60px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Module</div></div></foreignObject><text x="30" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Module</text></switch></g><path d="M 250 714 L 250 623 L 557 623 C 557 607.4 581 607.4 581 623 L 581 623 L 1187.53 623" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1199.53 623 L 1183.53 631 L 1187.53 623 L 1183.53 615 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="944" y="563" width="200" height="112" rx="16.8" ry="16.8" fill-opacity="0.9" fill="#d5e8d4" stroke="#82b366" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(965.5,576.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="76" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 77px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">HTTP<br />Requests<br /></div></div></foreignObject><text x="38" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">HTTP&lt;br&gt;Requests&lt;br&gt;</text></switch></g><path d="M 1444 623 L 1847.53 623" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1859.53 623 L 1843.53 631 L 1847.53 623 L 1843.53 615 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1324 563 L 1324 419.47" fill="none" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1324 407.47 L 1332 423.47 L 1324 419.47 L 1316 423.47 Z" fill="#000000" stroke="#000000" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><rect x="1204" y="563" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#ffe6cc" stroke="#d79b00" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(1274.5,601.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="46" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 47px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Nginx</div></div></foreignObject><text x="23" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Nginx</text></switch></g><rect x="1204" y="283" width="240" height="120" rx="18" ry="18" fill-opacity="0.9" fill="#ffe6cc" stroke="#d79b00" stroke-opacity="0.9" stroke-width="2" pointer-events="none"/><g transform="translate(1268.5,321.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="52" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 53px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Cache</div></div></foreignObject><text x="26" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Cache</text></switch></g><path d="M 1624 84 L 1814 84 L 1844 114 L 1844 184 L 1624 184 L 1624 84 Z" fill="#f5f5f5" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 1814 84 L 1814 114 L 1844 114" fill="none" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(1625.5,93.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="105" height="38" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 17px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 105px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Application Starts Here</div></div></foreignObject><text x="53" y="28" fill="#000000" text-anchor="middle" font-size="17px" font-family="Helvetica">Application Starts Here</text></switch></g><g transform="translate(1771.5,1149.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="112" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 113px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Routing Layer</div></div></foreignObject><text x="56" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Routing Layer</text></switch></g><g transform="translate(2302.5,1149.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="121" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 122px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Handling Layer</div></div></foreignObject><text x="61" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Handling Layer</text></switch></g><g transform="translate(2725.5,1149.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="208" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 209px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Storage Abstraction Layer</div></div></foreignObject><text x="104" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Storage Abstraction Layer</text></switch></g><g transform="translate(3185.5,1148.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="238" height="40" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 238px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Database Driver Abstraction (PHP)</div></div></foreignObject><text x="119" y="29" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">Database Driver Abstraction (PHP)</text></switch></g><path d="M 2204 964 L 2594 964 L 2624 994 L 2624 1124 L 2204 1124 L 2204 964 Z" fill="#f5f5f5" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><path d="M 2594 964 L 2594 994 L 2624 994" fill="none" stroke="#666666" stroke-width="4" stroke-miterlimit="10" pointer-events="none"/><g opacity="0.8" transform="translate(2204.5,963.5)scale(2)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="206" height="78" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 17px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 206px; white-space: normal; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Handlers may call extra view classes (not pictured here) to render content for complex responses</div></div></foreignObject><text x="103" y="48" fill="#000000" text-anchor="middle" font-size="17px" font-family="Helvetica">[Not supported by viewer]</text></switch></g></g></svg>