Commit 26b621bb authored by Matej Frančeškin's avatar Matej Frančeškin
Browse files

Merged with master

parents f69b32b3 e44b5140
......@@ -5,7 +5,8 @@ language: cpp
env:
global:
- JOBS=4
- QT_FATAL_WARNINGS=1
# QT_FATAL_WARNINGS is turned off because Qt 5.11.3 throws a speech dispatcher not working warning when running unit tests
#- QT_FATAL_WARNINGS=1
- SHADOW_BUILD_DIR=/tmp/shadow_build_dir
# ANDROID_STOREPASS
- secure: RGovyUnMw3fp/bHZi058JvANT1rYmNqrsuSYew0cIgirO6YbMHr/rsjwCm1FTYpBl8s1zgr+u2b8ftYnfnCz2YT+Aip4NWrVYpVU0FEmfytGILrnUS0pjlt8m7fU9AKR1ElOSll7yw7e1kftynN39Q321etvwbLZcXon6zz0suE=
......@@ -14,12 +15,13 @@ matrix:
fast_finish: true
include:
- os: linux
dist: trusty
dist: xenial
env: SPEC=linux-g++-64 CONFIG=installer
sudo: required
- os: linux
dist: trusty
dist: xenial
env: SPEC=linux-g++-64 CONFIG=debug
services: xvfb
sudo: required
- os: android
language: android
......@@ -35,7 +37,7 @@ matrix:
sudo: false
# OSX builds pared back to installer only since travis sucks so bad we can't afford more than one'
# - os: osx
# osx_image: xcode8
# osx_image: xcode10.1
# env: SPEC=macx-clang CONFIG=debug
# sudo: required
......@@ -48,8 +50,7 @@ android:
addons:
apt:
packages:
- espeak
- libespeak-dev
- speech-dispatcher
- libgstreamer-plugins-base1.0-dev
- libgstreamer1.0-0:amd64
- libgstreamer1.0-dev
......@@ -73,11 +74,9 @@ before_install:
install:
# linux dependencies: qt
- if [ "${SPEC}" = "linux-g++-64" ]; then
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.11.0-gcc_64-min.tar.bz2 &&
tar jxf Qt5.11.0-gcc_64-min.tar.bz2 -C /tmp &&
export PATH=/tmp/Qt5.11-gcc_64/5.11.0/gcc_64/bin:$PATH &&
export DISPLAY=:99.0 &&
sh -e /etc/init.d/xvfb start
wget --quiet https://s3-us-west-2.amazonaws.com/qgroundcontrol/dependencies/Qt5.11.3-gcc_64-min.tar.bz2 &&
tar jxf Qt5.11.3-gcc_64-min.tar.bz2 -C /tmp &&
export PATH=/tmp/Qt5.11-gcc_64/5.11.3/gcc_64/bin:$PATH
;
fi
......@@ -164,8 +163,9 @@ script:
# unit tests linux
- if [[ "${SPEC}" = "linux-g++-64" && "${CONFIG}" = "debug" ]]; then
mkdir -p ~/.config/QtProject/ && cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/.config/QtProject/ &&
./debug/qgroundcontrol-start.sh --unittest;
mkdir -p ~/.config/QtProject/ &&
cp ${TRAVIS_BUILD_DIR}/test/qtlogging.ini ~/.config/QtProject/ &&
./debug/qgroundcontrol-start.sh --unittest;
fi
after_success:
......
......@@ -2,9 +2,18 @@
Note: This file only contains high level features or important fixes.
## 3.5
## 3.6
### 3.5.0 - Daily Build
### 3.6.0 - Daily Build
* No changes yet
### 3.5.0 - Stable
* Plan GeoFence: Fix loading of fence from intermediate 3.4 code
* Structure Scan: Fix loading of structure scan height
* ArduPilot: Fix location of planned home position when not connected to vehicle. Issue #6840.
* Fix loading of parameters from multiple components. Would report download complete too early, thus missing all default component params.
* Fix file delete in mobile file dialogs
* Add support for specifying fixed RTK based station location in Settings/General.
* Added Airmap integration to QGC
* Added ESTIMATOR_STATUS values to new estimatorStatus Vehicle FactGroup. These are now available to display in instrument panel.
......@@ -13,23 +22,15 @@ Note: This file only contains high level features or important fixes.
* Make Heading to Home available for display from instrument panel.
* Edit Position dialog available on polygon vertices.
* Fixed Wing Landing Pattern: Add stop photo/video support. Defaults to on such that doing an RTL will stop camera.
* Survey Planning: add mode that supports concave polygons
* Support loading polygons from SHP files
* Bumped settings version (now 8). This will cause all settings to be reset to defaults.
* Orbit visuals support changing rotation direction
* Added support for the Taisync 2.4GHz ViUlinx digital HD wireless link.
* Added UDP Port option for NMEA GPS Device.
## 3.4
### 3.4.5 - Not yet released
* Plan GeoFence: Fix loading of fence from intermediate 3.4 code
* Orbit: Turn off for PX4 since still not supported
* Structure Scan: Fix loading of structure scan height
* ArduPilot: Fix location of planned home position when not connected to vehicle. Issue #6840.
* Fix loading of parameters from multiple components. Would report download complete too early, thus missing all default component params.
* Fix file delete in mobile file dialogs
### 3.4.4 - Stable
### 3.4.4
* Stable desktop versions now inform user at boot if newer version is available.
* Multi-Vehicle Start Mission and Pause now work correctly. Issue #6864.
......
......@@ -13,7 +13,7 @@ pipeline {
}
agent {
docker {
image 'mavlink/qgc-build-android:2018-06-08'
image 'mavlink/qgc-build-android:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
......@@ -42,7 +42,7 @@ pipeline {
}
agent {
docker {
image 'mavlink/qgc-build-linux:2018-06-08'
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
......@@ -72,7 +72,7 @@ pipeline {
}
agent {
docker {
image 'mavlink/qgc-build-linux:2018-06-07'
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
......@@ -101,7 +101,7 @@ pipeline {
}
agent {
docker {
image 'mavlink/qgc-build-linux:2018-06-08'
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
......@@ -134,7 +134,7 @@ pipeline {
}
agent {
docker {
image 'mavlink/qgc-build-linux:2018-06-07'
image 'mavlink/qgc-build-linux:2019-02-03'
args '-v ${CCACHE_DIR}:${CCACHE_DIR}:rw'
}
}
......
......@@ -170,20 +170,22 @@ contains (DEFINES, DISABLE_AIRMAP) {
message("Skipping support for AirMap (manual override from user_config.pri)")
} else {
AIRMAPD_PATH = $$PWD/libs/airmapd
MacBuild {
exists($${AIRMAPD_PATH}/macOS/Qt.5.11.0) {
message("Including support for AirMap for macOS")
LIBS += -L$${AIRMAPD_PATH}/macOS/Qt.5.11.0 -lairmap-qt
DEFINES += QGC_AIRMAP_ENABLED
}
} else:LinuxBuild {
exists($${AIRMAPD_PATH}/linux/Qt.5.11.0) {
message("Including support for AirMap for Linux")
LIBS += -L$${AIRMAPD_PATH}/linux/Qt.5.11.0 -lairmap-qt
DEFINES += QGC_AIRMAP_ENABLED
contains(QT_VERSION, ˆ5\\.11\..*) {
MacBuild {
exists($${AIRMAPD_PATH}/macOS/Qt.5.11.0) {
message("Including support for AirMap for macOS")
LIBS += -L$${AIRMAPD_PATH}/macOS/Qt.5.11.0 -lairmap-qt
DEFINES += QGC_AIRMAP_ENABLED
}
} else:LinuxBuild {
exists($${AIRMAPD_PATH}/linux/Qt.5.11.0) {
message("Including support for AirMap for Linux")
LIBS += -L$${AIRMAPD_PATH}/linux/Qt.5.11.0 -lairmap-qt
DEFINES += QGC_AIRMAP_ENABLED
}
} else {
message("Skipping support for Airmap (unsupported platform)")
}
} else {
message("Skipping support for Airmap (unsupported platform)")
}
contains (DEFINES, QGC_AIRMAP_ENABLED) {
INCLUDEPATH += \
......
......@@ -72,6 +72,8 @@
<uses-feature android:name="android.hardware.usb.accessory"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
Remove the comment if you do not require these default features. -->
......
......@@ -41,8 +41,8 @@ public class CdcAcmSerialDriver extends CommonUsbSerialDriver {
private static final int SET_CONTROL_LINE_STATE = 0x22;
private static final int SEND_BREAK = 0x23;
public CdcAcmSerialDriver(UsbDevice device, UsbDeviceConnection connection) {
super(device, connection);
public CdcAcmSerialDriver(UsbDevice device) {
super(device);
}
@Override
......@@ -304,6 +304,18 @@ public class CdcAcmSerialDriver extends CommonUsbSerialDriver {
UsbId.DEVICE_SPARKY2,
UsbId.DEVICE_OPLINK,
});
supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ARDUPILOT_CHIBIOS1),
new int[] {
UsbId.DEVICE_ARDUPILOT_CHIBIOS,
});
supportedDevices.put(Integer.valueOf(UsbId.VENDOR_ARDUPILOT_CHIBIOS2),
new int[] {
UsbId.DEVICE_ARDUPILOT_CHIBIOS,
});
supportedDevices.put(Integer.valueOf(UsbId.VENDOR_DRAGONLINK),
new int[] {
UsbId.DEVICE_DRAGONLINK,
});
return supportedDevices;
}
......
......@@ -35,11 +35,13 @@ abstract class CommonUsbSerialDriver implements UsbSerialDriver {
public static final int DEFAULT_READ_BUFFER_SIZE = 16 * 1024;
public static final int DEFAULT_WRITE_BUFFER_SIZE = 16 * 1024;
protected final UsbDevice mDevice;
protected final UsbDeviceConnection mConnection;
protected final UsbDevice mDevice;
protected final Object mReadBufferLock = new Object();
protected final Object mWriteBufferLock = new Object();
protected final Object mReadBufferLock = new Object();
protected final Object mWriteBufferLock = new Object();
protected UsbDeviceConnection mConnection = null;
private int _permissionStatus = permissionStatusRequestRequired;
/** Internal read buffer. Guarded by {@link #mReadBufferLock}. */
protected byte[] mReadBuffer;
......@@ -47,14 +49,28 @@ abstract class CommonUsbSerialDriver implements UsbSerialDriver {
/** Internal write buffer. Guarded by {@link #mWriteBufferLock}. */
protected byte[] mWriteBuffer;
public CommonUsbSerialDriver(UsbDevice device, UsbDeviceConnection connection) {
public CommonUsbSerialDriver(UsbDevice device) {
mDevice = device;
mConnection = connection;
mReadBuffer = new byte[DEFAULT_READ_BUFFER_SIZE];
mWriteBuffer = new byte[DEFAULT_WRITE_BUFFER_SIZE];
}
@Override
public void setConnection(UsbDeviceConnection connection) {
mConnection = connection;
}
@Override
public int permissionStatus() {
return _permissionStatus;
}
@Override
public void setPermissionStatus(int permissionStatus) {
_permissionStatus = permissionStatus;
}
/**
* Returns the currently-bound USB device.
*
......
......@@ -61,8 +61,8 @@ public class Cp2102SerialDriver extends CommonUsbSerialDriver {
private UsbEndpoint mReadEndpoint;
private UsbEndpoint mWriteEndpoint;
public Cp2102SerialDriver(UsbDevice device, UsbDeviceConnection connection) {
super(device, connection);
public Cp2102SerialDriver(UsbDevice device) {
super(device);
}
private int setConfigSingle(int request, int value) {
......
......@@ -211,8 +211,8 @@ public class FtdiSerialDriver extends CommonUsbSerialDriver {
* @throws UsbSerialRuntimeException if the given device is incompatible
* with this driver
*/
public FtdiSerialDriver(UsbDevice usbDevice, UsbDeviceConnection usbConnection) {
super(usbDevice, usbConnection);
public FtdiSerialDriver(UsbDevice usbDevice) {
super(usbDevice);
mType = null;
}
......
......@@ -231,8 +231,8 @@ public class ProlificSerialDriver extends CommonUsbSerialDriver {
return ((getStatus() & flag) == flag);
}
public ProlificSerialDriver(UsbDevice device, UsbDeviceConnection connection) {
super(device, connection);
public ProlificSerialDriver(UsbDevice device) {
super(device);
}
@Override
......
......@@ -74,6 +74,13 @@ public final class UsbId {
public static final int DEVICE_SPARKY2 = 0x41D0;
public static final int DEVICE_CC3D = 0x415D;
public static final int VENDOR_ARDUPILOT_CHIBIOS1 = 0x0483;
public static final int VENDOR_ARDUPILOT_CHIBIOS2 = 0x1209;
public static final int DEVICE_ARDUPILOT_CHIBIOS = 0x5740;
public static final int VENDOR_DRAGONLINK = 0x1FC9;
public static final int DEVICE_DRAGONLINK = 0x0083;
private UsbId() {
throw new IllegalAccessError("Non-instantiable class.");
}
......
......@@ -83,6 +83,16 @@ public interface UsbSerialDriver {
/** 2 stop bits. */
public static final int STOPBITS_2 = 2;
public static final int permissionStatusSuccess = 0;
public static final int permissionStatusDenied = 1;
public static final int permissionStatusRequested = 2;
public static final int permissionStatusRequestRequired = 3;
public static final int permissionStatusOpen = 4;
public int permissionStatus();
public void setPermissionStatus(int permissionStatus);
public void setConnection(UsbDeviceConnection connection);
/**
* Returns the currently-bound USB device.
*
......
......@@ -65,11 +65,7 @@ public enum UsbSerialProber {
if (!testIfSupported(usbDevice, FtdiSerialDriver.getSupportedDevices())) {
return Collections.emptyList();
}
final UsbDeviceConnection connection = manager.openDevice(usbDevice);
if (connection == null) {
return Collections.emptyList();
}
final UsbSerialDriver driver = new FtdiSerialDriver(usbDevice, connection);
final UsbSerialDriver driver = new FtdiSerialDriver(usbDevice);
return Collections.singletonList(driver);
}
},
......@@ -80,11 +76,7 @@ public enum UsbSerialProber {
if (!testIfSupported(usbDevice, CdcAcmSerialDriver.getSupportedDevices())) {
return Collections.emptyList();
}
final UsbDeviceConnection connection = manager.openDevice(usbDevice);
if (connection == null) {
return Collections.emptyList();
}
final UsbSerialDriver driver = new CdcAcmSerialDriver(usbDevice, connection);
final UsbSerialDriver driver = new CdcAcmSerialDriver(usbDevice);
return Collections.singletonList(driver);
}
},
......@@ -95,11 +87,7 @@ public enum UsbSerialProber {
if (!testIfSupported(usbDevice, Cp2102SerialDriver.getSupportedDevices())) {
return Collections.emptyList();
}
final UsbDeviceConnection connection = manager.openDevice(usbDevice);
if (connection == null) {
return Collections.emptyList();
}
final UsbSerialDriver driver = new Cp2102SerialDriver(usbDevice, connection);
final UsbSerialDriver driver = new Cp2102SerialDriver(usbDevice);
return Collections.singletonList(driver);
}
},
......@@ -110,11 +98,7 @@ public enum UsbSerialProber {
if (!testIfSupported(usbDevice, ProlificSerialDriver.getSupportedDevices())) {
return Collections.emptyList();
}
final UsbDeviceConnection connection = manager.openDevice(usbDevice);
if (connection == null) {
return Collections.emptyList();
}
final UsbSerialDriver driver = new ProlificSerialDriver(usbDevice, connection);
final UsbSerialDriver driver = new ProlificSerialDriver(usbDevice);
return Collections.singletonList(driver);
}
};
......
Subproject commit c847642263deefa584691eebade8b29a25264442
Subproject commit e302e1b735e47e9d33c3bad579dd7c6c089c1bb3
......@@ -197,7 +197,7 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
if (deviceId == BAD_PORT)
{
qWarning() << "Error opening %s" << systemLocation.toLatin1().data();
qWarning() << "Error opening" << systemLocation.toLatin1().data();
q_ptr->setError(QSerialPort::DeviceNotFoundError);
return false;
}
......
......@@ -210,6 +210,7 @@
<file alias="QGCLogoBlack">resources/QGCLogoBlack.svg</file>
<file alias="QGCLogoFull">resources/QGCLogoFull.svg</file>
<file alias="QGCLogoWhite">resources/QGCLogoWhite.svg</file>
<file alias="QGCLogoArrow">resources/QGCLogoArrow.svg</file>
<file alias="QGroundControlConnect">resources/QGroundControlConnect.svg</file>
<file alias="rtl.svg">resources/rtl.svg</file>
<file alias="SplashScreen">resources/SplashScreen.png</file>
......
......@@ -405,7 +405,8 @@ HEADERS += \
src/api/QGCOptions.h \
src/api/QGCSettings.h \
src/api/QmlComponentInfo.h \
src/comm/MavlinkMessagesTimer.h
src/comm/MavlinkMessagesTimer.h \
src/GPS/Drivers/src/base_station.h
SOURCES += \
src/api/QGCCorePlugin.cc \
......@@ -620,6 +621,7 @@ HEADERS += \
src/comm/QGCMAVLink.h \
src/comm/TCPLink.h \
src/comm/UDPLink.h \
src/comm/UdpIODevice.h \
src/uas/UAS.h \
src/uas/UASInterface.h \
src/uas/UASMessageHandler.h \
......@@ -664,6 +666,7 @@ HEADERS += \
src/GPS/Drivers/src/rtcm.h \
src/GPS/Drivers/src/ashtech.h \
src/GPS/Drivers/src/ubx.h \
src/GPS/Drivers/src/sbf.h \
src/GPS/GPSManager.h \
src/GPS/GPSPositionMessage.h \
src/GPS/GPSProvider.h \
......@@ -820,6 +823,7 @@ SOURCES += \
src/comm/QGCMAVLink.cc \
src/comm/TCPLink.cc \
src/comm/UDPLink.cc \
src/comm/UdpIODevice.cc \
src/main.cc \
src/uas/UAS.cc \
src/uas/UASMessageHandler.cc \
......@@ -851,6 +855,7 @@ SOURCES += \
src/GPS/Drivers/src/rtcm.cpp \
src/GPS/Drivers/src/ashtech.cpp \
src/GPS/Drivers/src/ubx.cpp \
src/GPS/Drivers/src/sbf.cpp \
src/GPS/GPSManager.cc \
src/GPS/GPSProvider.cc \
src/GPS/RTCM/RTCMMavlink.cc \
......
......@@ -137,6 +137,7 @@
<file alias="QGroundControl/Controls/VehicleRotationCal.qml">src/QmlControls/VehicleRotationCal.qml</file>
<file alias="QGroundControl/Controls/VehicleSummaryRow.qml">src/QmlControls/VehicleSummaryRow.qml</file>
<file alias="QGroundControl/Controls/ViewWidget.qml">src/ViewWidgets/ViewWidget.qml</file>
<file alias="QGroundControl/FactControls/AltitudeFactTextField.qml">src/FactSystem/FactControls/AltitudeFactTextField.qml</file>
<file alias="QGroundControl/FactControls/FactBitmask.qml">src/FactSystem/FactControls/FactBitmask.qml</file>
<file alias="QGroundControl/FactControls/FactCheckBox.qml">src/FactSystem/FactControls/FactCheckBox.qml</file>
<file alias="QGroundControl/FactControls/FactComboBox.qml">src/FactSystem/FactControls/FactComboBox.qml</file>
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 72 72"
style="enable-background:new 0 0 72 72;"
xml:space="preserve"
sodipodi:docname="QGCLogoArrow.svg"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata23"><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><defs
id="defs21" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1016"
id="namedview19"
showgrid="false"
inkscape:zoom="9.2709556"
inkscape:cx="27.235609"
inkscape:cy="41.171517"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g16" />
<style
type="text/css"
id="style2">
.st0{fill:#C72B27;}
.st1{fill:#7F0036;}
.st2{fill:#EE3424;}
</style>
<g
id="g16">
<g
id="g8">
<polygon
class="st0"
points="35.5,2.118 35.5,53.691 1.118,70.882 "
id="polygon4"
style="fill:#4b2c6d;fill-opacity:1" />
<path
class="st1"
d="M35,4.236v49.146L2.236,69.764L35,4.236 M36,0L0,72l36-18V0L36,0z"
id="path6"
style="fill:#4e005b;fill-opacity:1" />
</g><g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1" />
<g
id="g14">
<polygon
class="st2"
points="36.5,53.691 36.5,2.118 70.882,70.882 "
id="polygon10"
style="fill:#4b2c6d;fill-opacity:1" />
<path
class="st1"
d="M37,4.236l32.764,65.528L37,53.382V4.236 M36,0v54l36,18L36,0L36,0z"
id="path12"
style="fill:#4e005b;fill-opacity:1" />
</g>
<rect
x="22.746561"
y="24.02066"
class="st0"
width="28.493719"
height="27.410166"
id="rect4"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.55064428"
ry="13.705083"
rx="12.432203" /><path
inkscape:connector-curvature="0"
class="st1"
d="M 40.481217,11.731933 36.001273,1.7752157 30.56639,14.31297 c -2.380355,5.491254 -3.980916,6.040006 -6.02939,11.992023 l -6.68916,19.435928 c -1.938321,5.631958 6.119569,7.70955 12.262119,7.69678 l 14.249711,-0.02962 c 6.142548,-0.01277 15.907094,-3.46401 13.095514,-8.720704 L 50.751722,32.154194 C 47.930248,26.967975 41.501216,17.642415 40.481217,11.731937 Z m 4.195168,36.993208 -2.047336,-1.982796 c -1.530884,0.889792 -3.329787,1.389962 -5.243395,1.389962 v 0 c -5.32005,0 -9.721346,-3.910319 -10.256821,-8.932608 h 4.458929 c 0.536033,2.83574 3.234107,4.929625 6.391559,4.633207 0.459377,-0.03685 0.918755,-0.148479 1.339525,-0.296416 l -2.085944,-2.020186 3.138427,-3.039493 2.277304,2.18709 c 0.306066,-0.611799 0.516451,-1.278874 0.593106,-1.982796 0.306065,-3.057916 -1.875558,-5.670937 -4.803041,-6.171649 v -4.318367 c 5.185763,0.519137 9.242945,4.762721 9.242945,9.933489 v 0 c 0,2.094428 -0.669761,4.058799 -1.817926,5.652513 l 1.951656,1.890133 z"
id="path6-4"
style="fill:#4b2c6d;fill-opacity:1;stroke-width:0.55064428"
sodipodi:nodetypes="ccsssssscscccccccccccccccccccc" /><path
inkscape:connector-curvature="0"
class="st2"
d="m 36.256515,25.317959 h -0.07666 C 29.788296,25.85552 24.698214,30.803568 24.124133,36.993643 v 0.07424 0.05582 c 0,0.407506 0.344672,0.722889 0.746418,0.722889 0.401745,0 0.727393,-0.314842 0.746418,-0.685499 v 0 c 0.478402,-5.50404 5.013426,-9.896646 10.678151,-10.378391 v 0 c 0.38272,-0.01842 0.688787,-0.314841 0.70781,-0.685497 v -0.03685 c 0.01903,-0.427014 -0.32509,-0.742397 -0.746418,-0.742397 z"
id="path8"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.55064428"
sodipodi:nodetypes="ccccsscccccccc" /><path
inkscape:connector-curvature="0"
class="st2"
d="m 36.256515,28.190548 h -0.07666 -0.01902 c -4.803042,0.53756 -8.611232,4.318367 -9.070609,8.821518 v 0.09266 c 0,0.407506 0.344672,0.722889 0.746419,0.722889 0.401744,0 0.727394,-0.314842 0.746418,-0.685499 v -0.01842 c 0.478401,-3.928744 3.673902,-7.042477 7.71206,-7.505797 v 0 c 0.382721,-0.01843 0.688787,-0.314842 0.70781,-0.685499 v -0.03685 c 0.01903,-0.389623 -0.325089,-0.705006 -0.746418,-0.705006 z"
id="path10"
style="fill:#ffffff;fill-opacity:1;stroke-width:0.55064428"
sodipodi:nodetypes="ccccsscccccccc" /><path
inkscape:connector-curvature="0"
class="st2"
d="m 36.256515,31.081561 c -0.03805,0 -0.09567,0 -0.133728,0.01842 -3.080796,0.500171 -5.511412,2.872589 -6.027863,5.856266 v 0.01842 c 0,0.03685 -0.01902,0.11109 -0.01902,0.129512 0,0.407506 0.325089,0.72289 0.746419,0.72289 h 0.09567 c 0.344672,-0.03685 0.631714,-0.314841 0.650738,-0.64865 v -0.07424 c 0.440354,-2.316603 2.334376,-4.151461 4.745969,-4.577392 h 0.03805 c 0.363697,-0.03685 0.650739,-0.333808 0.650739,-0.685498 v -0.03685 c 0.01846,-0.38908 -0.325649,-0.722888 -0.746979,-0.722888 z"
id="path12-3"
style="fill:#ffffff;fill-opacity:0.94117647;stroke-width:0.55064428"
sodipodi:nodetypes="cccssscccccsccc" /><path
style="stroke-width:0.07627118"
d=""
id="path3787"
inkscape:connector-curvature="0" /><path
style="fill:#f9f9f9;stroke-width:0.07627118"
d="M 53.932087,62.909526 36.065561,53.97513 v -0.286093 -0.286093 h 0.495125 0.495125 l 16.322672,8.160876 c 8.977469,4.488482 16.322671,8.143734 16.322671,8.122782 0,-0.02095 -2.623661,-5.285326 -5.830358,-11.698612 C 60.074913,50.396352 57.997025,46.159936 57.916026,45.847349 57.764496,45.262578 57.646791,45.027524 56.487074,42.993798 55.068374,40.505904 50.43602,30.787387 49.888293,29.776328 48.941925,28.02941 48.367416,26.879769 47.005323,24.076673 46.196292,22.411741 45.26452,20.776789 42.03838,14.313961 39.818704,9.8673513 37.56677,5.2574683 37.034083,4.0697769 l -0.968522,-2.1594389 0.0042,-0.8151374 0.0042,-0.81513738 17.885612,35.76058178 c 9.837086,19.66832 17.875118,35.770188 17.862295,35.781929 -0.01282,0.01174 -8.063253,-3.99913 -17.889841,-8.913048 z"
id="path3789"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccssscssssscccsccc" /><path
style="fill:#f9f9f9;stroke-width:0.07627118"
d="M 0.14606269,71.803368 C 0.14838922,71.771906 8.2121638,55.63197 18.065561,35.936843 L 35.98083,0.12752085 l 0.0042,0.82931483 0.0042,0.82931482 -0.696473,1.6113631 C 34.873857,4.3668219 28.155843,17.890262 18.432636,37.337254 9.5425965,55.117862 2.2841976,69.680902 2.3028613,69.699566 2.3215249,69.71823 9.6854814,66.059125 18.667209,61.568222 l 16.330414,-8.165278 h 0.495833 0.495834 v 0.286093 0.286093 l -17.885637,8.94272 c -9.8370994,4.918497 -17.90277724,8.942721 -17.92372803,8.942721 -0.0209508,0 -0.0361888,-0.02574 -0.0338623,-0.0572 z"
id="path3791"
inkscape:connector-curvature="0" /></g>
</svg>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment