#ifndef STDAFX_H__
#define STDAFX_H__

#include <inttypes.h>
#include <stdlib.h>
#include <cassert>
#include <time.h>
#include <stdio.h>

#include <string.h> // TODO: replace with cstring and std::<old func> through out
#include <string>
#include <cstring>

#include <iostream>
#include <sstream>
#include <fstream>

#include <functional>
#include <algorithm>
#include <atomic>
#include <utility>
#include <cctype>
#include <condition_variable>
#include <chrono>

#include <set>
#include <map>
#include <memory>
#include <queue>
#include <vector>

#include <thread>
#include <mutex>

#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/date_time/local_time/local_time.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ini_parser.hpp>
#include <boost/filesystem.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/thread/thread.hpp>
#include <boost/filesystem/fstream.hpp>
#include <boost/foreach.hpp>
#include <boost/program_options/detail/config_file.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/algorithm/string.hpp>

#include <zlib.h>

#include <openssl/ssl.h>
#include <openssl/err.h>
#include <openssl/bn.h>
#include <openssl/dh.h>
#include <openssl/aes.h>
#include <openssl/sha.h>
#include <openssl/md5.h>
#include <openssl/rand.h>
#include <openssl/dsa.h>
#include <openssl/ec.h>
#include <openssl/ecdsa.h>
#include <openssl/rsa.h>
#include <openssl/evp.h>

#endif
