  // Included Libraries ------------------------------------

  // File System & ESP8266
  #include  <FS.h>                   //this needs to be first, or it all crashes and burns...
  #define   strtFS    SPIFFS.begin()
  #define   wipeFS    SPIFFS.format()

  // Button
  #include  <Button.h>               // Button Library
  //#include  <ESP8266WiFi.h>          //https://github.com/esp8266/Arduino
  #include  <WiFi.h>
  
  // Needed For Library
  #include  <DNSServer.h>
  //#include  <ESP8266WebServer.h>
  #include  <WebServer.h>
  #include  <WiFiManager.h>          //https://github.com/zhouhan0126/WIFIMANAGER-ESP32
  #include  <ArduinoJson.h>          //https://github.com/bblanchon/ArduinoJson

  // User Data To Be Displayed
  String    u_id          = "";
  String    u_name        = "";
  String    u_package     = "";
  String    u_starttime   = "";
  String    u_timing      = "";
  String    u_remain      = "";
  String    u_valid       = "";
  String    u_sysmsg      = "";

  /* THIS SECTION IS FOR BASIC I/O */
  //Button    button(D3);
  Button    button(3);

  /* WIFI MANAGER FUNCTION FLAG */
  bool      shouldSaveConfig  = false;
  String    WiFi_SSID     = "";
  String    WiFi_PASS     = "";

  /* DEVICE INFO */
  const String  devName   = "TAKEONE WIFID ";// + String(ESP.getChipId());
  String        devID     = "";   // Changable Via Web Interface
  String        devPASS   = "";   // Changable Via Web Interface
  const String  devMac    = String(WiFi.macAddress());
  const String  server    = "http://192.168.1.3/index.php?card=";

  // Included Libraries ------------------------------------

  #include <rBase64.h>
  
  // Included Libraries ------------------------------------
  
  //#include <ESP8266HTTPClient.h>
  #include <HTTPClient.h>

  // Included Libraries ------------------------------------
  
  #include  <SPI.h>
  #include  <MFRC522.h>
  
  //#define   SS_PIN        D8
  //#define   RST_PIN       D0
  #define   SS_PIN        5
  #define   RST_PIN       4
 
  MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

  // Included Libraries ------------------------------------
  
  #include  <TimeTrigger.h>
  
  // Recuring Time Events
  TimeTrigger blink(3000);
  TimeTrigger testWiFi(1000);
  
  // Included Libraries ------------------------------------

  // Including I2C Library
  #include  <Wire.h>
  
  // Define I2C Pins
  //#define   SDA_PIN       D2
  //#define   SCL_PIN       D1
  #define   SDA_PIN       21
  #define   SCL_PIN       22

  // Included Libraries ------------------------------------
  
  // Download From https://github.com/lucasmaziero/LiquidCrystal_I2C
  #include  <LiquidCrystal_I2C.h>
  //#define   I2C_LCD       0x3F
  #define   I2C_LCD       0x27
  
  // Set the LCD address to 0x27 for a 16 chars and 2 line display
  LiquidCrystal_I2C lcd(I2C_LCD, 16, 2);

  // Included Libraries ------------------------------------

  #include <RtcDS3231.h>
  #include <EepromAt24C32.h>
  #define countof(a) (sizeof(a) / sizeof(a[0]))
  
  RtcDS3231<TwoWire> Rtc(Wire);
  EepromAt24c32<TwoWire> RtcEeprom(Wire);
  
  const char      data[]      = "What time is it in Greenwich?";
  const uint16_t  stringAddr  = 64; // stored on page boundary

  //========================================================
  
  void setup()
  {
    // Calling Setup Routine
    _setup();
  }

  //========================================================
  
  void loop()
  {
    // Calling Loop Routine
    _loop();

    // Listen To Commands
    command_reader();
  }

  // =======================================================
  
