Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connecting to Amazon Web Services #2149

Merged
merged 1 commit into from
Nov 30, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 153 additions & 0 deletions samples/Basic_AWS/.cproject
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147" moduleId="org.eclipse.cdt.core.settings" name="Sming">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147" name="Sming" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147.86962463" name="/" resourcePath="">
<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1164554300" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
<option id="cdt.managedbuild.option.gnu.cross.prefix.521205673" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
<option id="cdt.managedbuild.option.gnu.cross.path.393887888" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.712123812" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
<builder id="cdt.managedbuild.builder.gnu.cross.2110485170" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="cdt.managedbuild.builder.gnu.cross"/>
<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.1168221903" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
<option id="gnu.c.compiler.option.include.paths.357494572" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/system/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/Libraries&quot;"/>
<listOptionValue builtIn="false" value="&quot;${ESP_HOME}/sdk/include&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.313321806" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.1999763015" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler">
<option id="gnu.cpp.compiler.option.include.paths.611746109" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/system/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/Libraries&quot;"/>
<listOptionValue builtIn="false" value="&quot;${ESP_HOME}/sdk/include&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1330530366" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.65193859" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker"/>
<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1795850540" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker">
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.364843833" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType>
</tool>
<tool id="cdt.managedbuild.tool.gnu.cross.archiver.525412186" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
<tool id="cdt.managedbuild.tool.gnu.cross.assembler.587940548" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
<option id="gnu.both.asm.option.include.paths.1067006329" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/system/include&quot;"/>
<listOptionValue builtIn="false" value="&quot;${SMING_HOME}/Libraries&quot;"/>
<listOptionValue builtIn="false" value="&quot;${ESP_HOME}/sdk/include&quot;"/>
</option>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.651581712" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings">
<externalSettings containerId="Sming;" factoryId="org.eclipse.cdt.core.cfg.export.settings.sipplier"/>
</storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="Basic_Blink.null.1347473968" name="Basic_Blink"/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Sming">
<resource resourceType="PROJECT" workspacePath="/Basic_Blink"/>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets>
<target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>all</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="clean" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>clean</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="flash" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>flash</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="flashonefile" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>flashonefile</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="flashinit" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>flashinit</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="flashboot" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>flashboot</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="rebuild" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>-f ${ProjDirPath}/Makefile</buildArguments>
<buildTarget>rebuild</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147;cdt.managedbuild.toolchain.gnu.mingw.base.1135534147.86962463;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.2032390008;cdt.managedbuild.tool.gnu.c.compiler.input.1700912488">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147;cdt.managedbuild.toolchain.gnu.mingw.base.1135534147.86962463;cdt.managedbuild.tool.gnu.cross.c.compiler.1168221903;cdt.managedbuild.tool.gnu.c.compiler.input.313321806">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147;cdt.managedbuild.toolchain.gnu.mingw.base.1135534147.86962463;cdt.managedbuild.tool.gnu.cross.cpp.compiler.1999763015;cdt.managedbuild.tool.gnu.cpp.compiler.input.1330530366">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1135534147;cdt.managedbuild.toolchain.gnu.mingw.base.1135534147.86962463;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.454898447;cdt.managedbuild.tool.gnu.cpp.compiler.input.501261625">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
</cproject>
29 changes: 29 additions & 0 deletions samples/Basic_AWS/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Basic_AWS</name>
<comment></comment>
<projects>
<project>SmingFramework</project>
<project>Sming</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
</projectDescription>
9 changes: 9 additions & 0 deletions samples/Basic_AWS/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#####################################################################
#### Please don't change this file. Use component.mk instead ####
#####################################################################

ifndef SMING_HOME
$(error SMING_HOME is not set: please configure it as an environment variable)
endif

include $(SMING_HOME)/project.mk
8 changes: 8 additions & 0 deletions samples/Basic_AWS/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Basic AWS
=========

How to set up Amazon Web Services to use as an IOT gateway.


openssl rsa -in APP.private.key -out APP.private.key.der -outform DER
openssl x509 -in APP.cert.pem -out APP.cert.der -outform DER
38 changes: 38 additions & 0 deletions samples/Basic_AWS/app/MqttMessage.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/****
* Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
* Created 2015 by Skurydin Alexey
* http://github.com/SmingHub/Sming
* All files of the Sming Core are provided under the LGPL v3 license.
*
* MqttMessage.h - C++ utilities to simplify handling MQTT messages and buffers
*
****/

#pragma once

#include <mqtt-codec/src/message.h>
#include <Print.h>

/**
* @brief Helper class to simplify printing and parsing message buffers
*/
class MqttBuffer : public Printable
{
public:
MqttBuffer(const mqtt_buffer_t& buf) : buf(buf)
{
}

operator String() const
{
return String(reinterpret_cast<const char*>(buf.data), buf.length);
}

size_t printTo(Print& p) const override
{
return p.write(buf.data, buf.length);
}

private:
const mqtt_buffer_t& buf;
};
101 changes: 101 additions & 0 deletions samples/Basic_AWS/app/application.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#include <SmingCore.h>
#include "MqttMessage.h"

// If you want, you can define WiFi settings globally in Eclipse Environment Variables
#ifndef WIFI_SSID
#define WIFI_SSID "PleaseEnterSSID" // Put you SSID and Password here
#define WIFI_PWD "PleaseEnterPass"
#endif

namespace
{
MqttClient mqtt;

IMPORT_FSTR(privateKeyData, PROJECT_DIR "/files/private.pem.key.der");
IMPORT_FSTR(certificateData, PROJECT_DIR "/files/certificate.pem.crt.der");
IMPORT_FSTR(awsEndpoint, PROJECT_DIR "/files/endpoint.txt");

// Run MQTT client
void startMqttClient()
{
mqtt.setSslInitHandler([](Ssl::Session& session) {
session.options.verifyLater = true;
session.keyCert.assign(privateKeyData, certificateData);
});

Url url;
url.Scheme = URI_SCHEME_MQTT_SECURE;
url.Host = awsEndpoint;
mqtt.connect(url, "Basic_AWS");

// Assign a disconnect callback function
// mqtt.setCompleteDelegate(checkMQTTDisconnect);
mqtt.subscribe("thing/fish/test");
}

// Publish our message
void publishMessage()
{
// Auto reconnect
if(mqtt.getConnectionState() != eTCS_Connected) {
startMqttClient();
}

Serial.println("publish message");
mqtt.publish("version", "ver.1.2");
}

// Callback for messages, arrived from MQTT server
int onMessagePublish(MqttClient& client, mqtt_message_t* message)
{
Serial.print("Publish: ");
Serial.print(MqttBuffer(message->publish.topic_name));
Serial.print(":\r\n\t"); // Pretify alignment for printing
Serial.println(MqttBuffer(message->publish.content));
return 0;
}

int onMessageConnect(MqttClient& client, mqtt_message_t* message)
{
Serial.print("Connect: ");
Serial.print(MqttBuffer(message->connect.protocol_name));
Serial.print(", client: ");
Serial.println(MqttBuffer(message->connect.client_id));
return 0;
}

int onMessageDisconnect(MqttClient& client, mqtt_message_t* message)
{
Serial.println("Disconnect");
return 0;
}

void gotIP(IpAddress ip, IpAddress netmask, IpAddress gateway)
{
Serial.print("Connected: ");
Serial.println(ip);
startMqttClient();
publishMessage(); // run once publishMessage

mqtt.subscribe("$aws/things/Basic_AWS/shadow/get");
}

} // namespace

void init()
{
Serial.begin(SERIAL_BAUD_RATE); // 115200 by default
Serial.systemDebugOutput(true);

Serial.println("Hello");

// initialization config
mqtt.setEventHandler(MQTT_TYPE_PUBLISH, onMessagePublish);
mqtt.setEventHandler(MQTT_TYPE_CONNECT, onMessageConnect);
mqtt.setEventHandler(MQTT_TYPE_DISCONNECT, onMessageDisconnect);

WifiStation.config(WIFI_SSID, WIFI_PWD);
WifiStation.enable(true);
WifiEvents.onStationGotIP(gotIP);
WifiAccessPoint.enable(false);
}
4 changes: 4 additions & 0 deletions samples/Basic_AWS/component.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
DISABLE_SPIFFS := 1
ENABLE_SSL := 1
MQTT_NO_COMPAT := 1
ENABLE_CUSTOM_HEAP := 1
20 changes: 20 additions & 0 deletions samples/Basic_AWS/files/3051d5b002-certificate.pem.crt.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
-----BEGIN CERTIFICATE-----
MIIDWjCCAkKgAwIBAgIVAOxaW1RB41mdhMvpNLw9Bo85VGkRMA0GCSqGSIb3DQEB
CwUAME0xSzBJBgNVBAsMQkFtYXpvbiBXZWIgU2VydmljZXMgTz1BbWF6b24uY29t
IEluYy4gTD1TZWF0dGxlIFNUPVdhc2hpbmd0b24gQz1VUzAeFw0xOTA5MTUxNDI3
MjVaFw00OTEyMzEyMzU5NTlaMB4xHDAaBgNVBAMME0FXUyBJb1QgQ2VydGlmaWNh
dGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQClilQHo7KeM6hv61Zi
Up2274y5/fOzoYYznCr/+8fivmtAh6BBekiFY5FYPOr1Gb6hIQs0TQvmOeYWDD4n
dy2qHhSnhWVyw/OzCr9QngBVjNQ7PVDd+Ij708E3UEuZp9/ORiGfSPQ/LrYFw6bB
zlPgRiN7H6hNOrmG1+lsZCwH/zFkGaOMZp22pUTUmNX//Fg9mni0OT4iBngD/lVO
+TIBz96Nj0kQepr5Pci4nwuAwrxf+sBy8s8aA6JxJrB1zlUMT0rc7K4AxjJCVi9q
am/Fd7Lyh+4JD0ndPVsIIpUKD7JDSCmicOA0q3VB1p4SuDGrsgvvqQXrfncSnBTw
tEnnAgMBAAGjYDBeMB8GA1UdIwQYMBaAFI08RqEu1VXBTz7eQypWXKpuZV6OMB0G
A1UdDgQWBBQ9AwSFdv0tkOROoUjIPOX66boY9zAMBgNVHRMBAf8EAjAAMA4GA1Ud
DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAfeoF/tH7cI6cw9psDGi3LEyQ
YRuut9f6psjY4j++DrWGpsqvLlghvgeighvbSf0J6CTHVlrUXpQEOgRk3HzcMjwW
7EczkT6FsJghqjGgye3wKtAsqoide8uvC1mJ7Ev02LfdEZDge55+930ozBzXnjH2
R1s0pRokzh8pHy2Ug/Y/29dRBPK9smCtOFUAeQpJ6Z93u720bOUOqHo+KBfZjTEC
5eyxp2NiuzYP8bCOEyJIcDXXk5xVy6WZMJ73Xj/2z5M39YIr+QXvITDx4zfTK8Ue
3h9I7CULHEA2cjKmdlDiNGTu2fKChrqgUy0owzQSPxf1G9gV95yESLEceIpKjg==
-----END CERTIFICATE-----
27 changes: 27 additions & 0 deletions samples/Basic_AWS/files/3051d5b002-private.pem.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEApYpUB6OynjOob+tWYlKdtu+Muf3zs6GGM5wq//vH4r5rQIeg
QXpIhWORWDzq9Rm+oSELNE0L5jnmFgw+J3ctqh4Up4VlcsPzswq/UJ4AVYzUOz1Q
3fiI+9PBN1BLmaffzkYhn0j0Py62BcOmwc5T4EYjex+oTTq5htfpbGQsB/8xZBmj
jGadtqVE1JjV//xYPZp4tDk+IgZ4A/5VTvkyAc/ejY9JEHqa+T3IuJ8LgMK8X/rA
cvLPGgOicSawdc5VDE9K3OyuAMYyQlYvampvxXey8ofuCQ9J3T1bCCKVCg+yQ0gp
onDgNKt1QdaeErgxq7IL76kF6353EpwU8LRJ5wIDAQABAoIBABp78Aes2+XNk/Qb
7Z0bZJog5x3WkEe73tGg+YwsxwTyvAv95tiy7KlSja1VSa3e6Y2z0KwUa4Pw3WvH
l6YOviKKX3mRsPJUgUeyv3rxXFJTjpzPqYFpwtivPylPUlkJ75d7xuNJ87GsEnkH
nUVCck7eSczn+rAoZgg5wOGTgSviGSq2evmGoTOX0u2IEbJGZhS+Ge5jjYITuquG
vd2AwydUtS62aftyUH0RedsR/E8AJHm4PQE/W/gOu0h06g4NkgoUzuHiaYpZTUV1
1YJ0cJuPm2cB6bZAHXMtwhNQ+P4u93NKpHB2BNL0zuFZ0jjieMdE9BR/IkNDXWeD
dRL4anECgYEA040zgtpWeZrfjtjQ7HDTJMhxZbQAgpwkjV/hQB/DwAhLRl1f98bM
5e6NQZUkTBiyeDjALAC8kA1Tzbwemm1wnAvDAujhzZf6vi/hnN21YZ0vyzit+O6O
K3GOJni6YVx5A0eW8whedbgT1JuLI3cCEXi2MeV46R5hj4HxMRdaWE8CgYEAyFJO
H1P/nkFlf/FOfKG9M3qHCMh37FbaD5Nzs1gdSCwo5odC9I9UZUpRbhlZzS1n282n
dPAXTl9dvI4oIa4JY1wirvigHsXx6ujlpJX8ixfYAiEAJpDmpa1bn6ut7QoNZvl+
F9Xa6WzaYmjldKIwaJLxzutrNGbR1YAXsnIC9ukCgYEA0NmJjRl4Xb1kD2ZFe+c2
zA2Gxd0a09bKzzdk7SVu31pQ1jrAz6DYD/eeRKy0lNuc9csxDT/86En//hBGNjbt
AWErOOgoZAwyYyhqF69ZrfC8imh+eE8q1ADbUWfGuO/OGErI303X02fTTAXzKyQG
SrFdTY05/QsdTcv/DXP8oUkCgYA14148sz4KdpE1b9arVF8vYAC/bh5Ep8CVfBcd
4dBOwAJosW5jl8MeVHW/ZnZv6Y0M5i/sF0JNxP3UYXGOTeEcp4Z1B1Ebtig0B17v
faGoUUu8luARf91sKEyDkY2CPLgKQYeYJeFz9eJxosJHM/JNz2nZPh9iw14jTwgQ
6va9MQKBgQCyOAzarD9sf5rFWox4zMIxVF+xrY0Szc30iIfPnb5gA/zUrDSVf05V
Ql1SV7pZzIC/KsK+RYssjMcWXTO+JRjhjSecW0M2FCZBUX7hHCTCYPiQ/3oLSuwb
Bl5TKKAw3w9xAbW3wI9O2MnLsdQltcmAPez+rTM2+/NZ+xjxA2LQOQ==
-----END RSA PRIVATE KEY-----
Loading