diff --git a/docs/_json_web_client_8cpp.html b/docs/_json_web_client_8cpp.html new file mode 100644 index 0000000..de957fb --- /dev/null +++ b/docs/_json_web_client_8cpp.html @@ -0,0 +1,89 @@ + + + + + + + +Telegram Bot Api Client: JsonWebClient.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
JsonWebClient.cpp File Reference
+
+
+ +

Implementation of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data. +More...

+
#include "JsonWebClient.h"
+

Detailed Description

+

Implementation of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.

+

Part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient) Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om

+
+ + + + diff --git a/docs/_json_web_client_8h.html b/docs/_json_web_client_8h.html new file mode 100644 index 0000000..bf56a27 --- /dev/null +++ b/docs/_json_web_client_8h.html @@ -0,0 +1,214 @@ + + + + + + + +Telegram Bot Api Client: JsonWebClient.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes | +Macros | +Enumerations
+
+
JsonWebClient.h File Reference
+
+
+ +

Header of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data. +More...

+
#include "TBCDebug.h"
+#include "Arduino.h"
+#include <Client.h>
+#include <ArduinoJson.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  JsonWebClient
 
+ + + + + + + + + +

+Macros

+#define JsonWebClient_h
 
+#define JWC_BUFF_SIZE   10000
 
+#define JWC_CALLBACK_MESSAGE_SIGNATURE   void (*callbackSuccess)(void*, JwcProcessError, JsonObject&)
 
+#define JWC_CALLBACK_ERROR_SIGNATURE   void (*callbackError)(void*, JwcProcessError, Client*)
 
+ + + + + +

+Enumerations

enum  JwcProcessError : int { JwcProcessError::Ok = 0, +JwcProcessError::HttpErr = -1, +JwcProcessError::MsgTooBig = -2, +JwcProcessError::MsgJsonErr = -3 + }
 
enum  JwcClientState : int {
+  JwcClientState::Unconnected = 0, +JwcClientState::Connected = 1, +JwcClientState::Waiting = 2, +JwcClientState::Headers = 3, +
+  JwcClientState::Json = 4 +
+ }
 
+

Detailed Description

+

Header of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.

+

JSONWebClient (netClient, "www.example.com", 80, CallBackObject, callBackMessage, callBackError);.

+

JwcClientState state = JwcClientState::Unconnected;.

+

JwcProcessError state = JwcProcessError::Ok;.

+

Part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient) Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om

+

Enumeration to indicate internal process state of JsonWebClient.

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

This class implements a minimum http client to receive json data from a host. It uses an underlying implementation of Client interface and can be used with raw client or ssl client.

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

Enumeration Type Documentation

+ +

◆ JwcClientState

+ +
+
+ + + + + +
+ + + + +
enum JwcClientState : int
+
+strong
+
+ + + + + + +
Enumerator
Unconnected 

Client is not connected

+
Connected 

Client is connected but no command was sent.

+
Waiting 

Client is waiting for response from server.

+
Headers 

Client is processing headers.

+
Json 

Client is processing json from response

+
+ +
+
+ +

◆ JwcProcessError

+ +
+
+ + + + + +
+ + + + +
enum JwcProcessError : int
+
+strong
+
+ + + + + +
Enumerator
Ok 

Everything Ok, no error

+
HttpErr 

Not found HTTP 200 Header –> Server Error

+
MsgTooBig 

Message bigger than JWC_BUFF_SIZE adjust JWC_BUFF_SIZE to avoid this, beware ArduinoJSON still needs to fit to your device's memory

+
MsgJsonErr 

ArduinoJSON was not able to parse the message

+
+ +
+
+
+ + + + diff --git a/docs/_json_web_client_8h_source.html b/docs/_json_web_client_8h_source.html new file mode 100644 index 0000000..f4959c9 --- /dev/null +++ b/docs/_json_web_client_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +Telegram Bot Api Client: JsonWebClient.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
JsonWebClient.h
+
+
+Go to the documentation of this file.
1 
12 #pragma once
13 #ifndef JsonWebClient_h
14 #define JsonWebClient_h
15 
16 #include "TBCDebug.h"
17 #include "Arduino.h"
18 #include <Client.h>
19 #include <ArduinoJson.h>
20 
21 #ifndef JWC_BUFF_SIZE
22 #ifdef ESP8266
23 #define JWC_BUFF_SIZE 1000
24 #else
25 #define JWC_BUFF_SIZE 10000
26 #endif
27 #endif
28 
29 
47 enum class JwcProcessError : int
48 {
50  Ok = 0,
52  HttpErr = -1,
55  MsgTooBig = -2,
57  MsgJsonErr = -3
58 };
59 
61 static String JwcProcessErrorString[] = {"Ok", "HttpErr", "MsgTooBig", "MsgJsonErr"};
62 
63 static String toString(JwcProcessError err)
64 {
65  return JwcProcessErrorString[(-1) * (int) err];
66 }
67 
68 
69 
70 // Inspired by PubSubClient by Nick O'Leary (http://knolleary.net)
71 #ifdef ESP8266
72 #include <functional>
73 #define JWC_CALLBACK_MESSAGE_SIGNATURE std::function<void(void*, JwcProcessError, JsonObject&)> callbackSuccess
74 #define JWC_CALLBACK_ERROR_SIGNATURE std::function<void(void*, JwcProcessError, Client*)> callbackError
75 #else
76 #define JWC_CALLBACK_MESSAGE_SIGNATURE void (*callbackSuccess)(void*, JwcProcessError, JsonObject&)
77 #define JWC_CALLBACK_ERROR_SIGNATURE void (*callbackError)(void*, JwcProcessError, Client*)
78 #endif
79 
95 enum class JwcClientState : int
96 {
98  Unconnected = 0,
100  Connected = 1,
102  Waiting = 2,
104  Headers = 3,
106  Json = 4
107 };
108 
110 static String JwcClientStateString[] = {"Unconnected", "Connected", "Waiting", "Headers", "Json"};
111 
112 static String toString(JwcClientState state)
113 {
114  return JwcClientStateString[(int) state];
115 }
116 
117 
137 {
138  private:
142  Client* NetClient;
144  String Host;
146  int Port;
148  long ContentLength = JWC_BUFF_SIZE;
150  bool HttpStatusOk = false;
158  void reConnect();
172  bool processHeader();
180  bool processJson();
181 
182  public:
195  JsonWebClient (
196  Client* netClient,
197  String host,
198  int port,
199  void* callBackObject,
213  bool fire (String commands[], int count);
230  bool loop();
239  bool stop();
240 };
241 #endif
Definition: JsonWebClient.h:136
+ + +
JwcClientState state()
Current state of the client.
Definition: JsonWebClient.cpp:157
+
bool stop()
Stops the client.
Definition: JsonWebClient.cpp:53
+ + +
bool HttpStatusOk
Definition: JsonWebClient.h:150
+
void reConnect()
Reconnects to host.
Definition: JsonWebClient.cpp:32
+
bool processJson()
Process JSON.
Definition: JsonWebClient.cpp:78
+
JWC_CALLBACK_ERROR_SIGNATURE
Definition: JsonWebClient.h:164
+ + + +
bool loop()
Method to poll client processing.
Definition: JsonWebClient.cpp:116
+
void * CallBackObject
Definition: JsonWebClient.h:160
+ +
String Host
Definition: JsonWebClient.h:144
+ +
JwcClientState State
Definition: JsonWebClient.h:140
+
long ContentLength
Definition: JsonWebClient.h:148
+ +
bool fire(String commands[], int count)
Executes a list of commands.
Definition: JsonWebClient.cpp:162
+
int Port
Definition: JsonWebClient.h:146
+
Client * NetClient
Definition: JsonWebClient.h:142
+
JsonWebClient(Client *netClient, String host, int port, void *callBackObject, JWC_CALLBACK_MESSAGE_SIGNATURE, JWC_CALLBACK_ERROR_SIGNATURE)
Definition: JsonWebClient.cpp:15
+
JWC_CALLBACK_MESSAGE_SIGNATURE
Definition: JsonWebClient.h:162
+
bool processHeader()
Process a header.
Definition: JsonWebClient.cpp:61
+ +
+ + + + diff --git a/docs/_t_b_c_debug_8h_source.html b/docs/_t_b_c_debug_8h_source.html new file mode 100644 index 0000000..0dd49e7 --- /dev/null +++ b/docs/_t_b_c_debug_8h_source.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: TBCDebug.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TBCDebug.h
+
+
+
1 #pragma once
2 #ifndef TBDebug_h
3 #define TBDebug_h
4 
5 #define TBCVERBOSE
6 
7 #ifdef TBCVERBOSE
8  #define DOUT(x) { Serial.print (F(x)); \
9  Serial.print (F(" -- ")); \
10  Serial.print (__FILE__); Serial.print (F(" in line ")); \
11  Serial.print (__LINE__); Serial.print (F(" -- ")); \
12  Serial.println (__FUNCTION__); \
13  }
14  #define DOUTKV(k, v) { Serial.print (F(k)); Serial.print (':'); Serial.print (v); \
15  Serial.print (F(" -- ")); \
16  Serial.print (__FILE__); Serial.print (F(" in line ")); \
17  Serial.print (__LINE__); Serial.print (F(" -- ")); \
18  Serial.println (__FUNCTION__); \
19  }
20 #else
21  #define DOUT(x)
22  #define DOUTKV(k, v)
23 #endif
24 
25 #endif
+ + + + diff --git a/docs/_telegram_bot_client_8h.html b/docs/_telegram_bot_client_8h.html new file mode 100644 index 0000000..38b3b57 --- /dev/null +++ b/docs/_telegram_bot_client_8h.html @@ -0,0 +1,203 @@ + + + + + + + +Telegram Bot Api Client: TelegramBotClient.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes | +Macros | +Enumerations
+
+
TelegramBotClient.h File Reference
+
+
+ +

Header of a simple client sending and receiving message via Telegram's Bot API. Uses one or two underlying objects implementing the Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data. +More...

+
#include "TBCDebug.h"
+#include "Arduino.h"
+#include <Client.h>
+#include <ArduinoJson.h>
+#include "JsonWebClient.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  Message
 
struct  TBCKeyBoardRow
 
class  TBCKeyBoard
 
class  TelegramBotClient
 
+ + + + + + + + + + + + + + + +

+Macros

+#define TelegramBotClient_h
 
+#define TELEGRAMHOST   F("api.telegram.org")
 
+#define TELEGRAMPORT   443
 
+#define POLLINGTIMEOUT   600
 
+#define USERAGENTSTRING   F("telegrambotclient /0.1")
 
+#define TBC_CALLBACK_RECEIVE_SIGNATURE   void (*callbackReceive)(TelegramProcessError, JwcProcessError, Message*)
 
+#define TBC_CALLBACK_ERROR_SIGNATURE   void (*callbackError)(TelegramProcessError, JwcProcessError)
 
+ + + +

+Enumerations

enum  TelegramProcessError : int {
+  TelegramProcessError::Ok = 0, +TelegramProcessError::JcwPollErr = -1, +TelegramProcessError::JcwPostErr = -2, +TelegramProcessError::RetPollErr = -3, +
+  TelegramProcessError::RetPostErr = -4 +
+ }
 
+

Detailed Description

+

Header of a simple client sending and receiving message via Telegram's Bot API. Uses one or two underlying objects implementing the Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.

+

Telegram Bot Client.

+

Class to represent a keyboard used in Telegram chat.

+

Row in a keyboard.

+

Telegram Message.

+

TelegramProcessError state = TelegramProcessError::Ok;.

+

Part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient) Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om

+

Enumeration to indicate error or success of processing by TelegramBotClient.

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

Struct to store elements of a Telegram Message (https://core.telegram.org/bots/api#message) and the update_id provided by each callback (https://core.telegram.org/bots/api#getting-updates)

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

Struct to store elements of a Telegram key board

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

This class represents a keyboard that can be displayed in a Telegram chat. Keyboards can be assembled by Rows including buttons. To add a row to a keyboard use push().

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

Client to access Telegram's Bot API

+
Note
Should only be used as a part of TelegramBotClient (https://github.com/schlingensiepen/TelegramBotClient)
+
Author
Jörn Schlingensiepen joern.nosp@m.@sch.nosp@m.linge.nosp@m.nsie.nosp@m.pen.c.nosp@m.om
+

Enumeration Type Documentation

+ +

◆ TelegramProcessError

+ +
+
+ + + + + +
+ + + + +
enum TelegramProcessError : int
+
+strong
+
+ + + + + + +
Enumerator
Ok 

Everything Ok, no error

+
JcwPollErr 

JSONWebClient host returns error while polling

+
JcwPostErr 

JSONWebClient host returns error while posting

+
RetPollErr 

Telegram host returns error while polling

+
RetPostErr 

Telegram host returns error while posting

+
+ +
+
+
+ + + + diff --git a/docs/_telegram_bot_client_8h_source.html b/docs/_telegram_bot_client_8h_source.html new file mode 100644 index 0000000..9d65626 --- /dev/null +++ b/docs/_telegram_bot_client_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +Telegram Bot Api Client: TelegramBotClient.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TelegramBotClient.h
+
+
+Go to the documentation of this file.
1 
12 #pragma once
13 #ifndef TelegramBotClient_h
14 #define TelegramBotClient_h
15 
16 #include "TBCDebug.h"
17 #include "Arduino.h"
18 #include <Client.h>
19 #include <ArduinoJson.h>
20 #include "JsonWebClient.h"
21 
22 #define TELEGRAMHOST F("api.telegram.org")
23 #define TELEGRAMPORT 443
24 #define POLLINGTIMEOUT 600
25 #define USERAGENTSTRING F("telegrambotclient /0.1")
26 
27 // Inspired by PubSubClient by Nick O'Leary (http://knolleary.net)
28 #ifdef ESP8266
29 #include <functional>
30 #define TBC_CALLBACK_RECEIVE_SIGNATURE std::function<void(TelegramProcessError, JwcProcessError, Message*)> callbackReceive
31 #define TBC_CALLBACK_ERROR_SIGNATURE std::function<void(TelegramProcessError, JwcProcessError)> callbackError
32 #else
33 #define TBC_CALLBACK_RECEIVE_SIGNATURE void (*callbackReceive)(TelegramProcessError, JwcProcessError, Message*)
34 #define TBC_CALLBACK_ERROR_SIGNATURE void (*callbackError)(TelegramProcessError, JwcProcessError)
35 #endif
36 
53 enum class TelegramProcessError : int
54 {
56  Ok = 0,
58  JcwPollErr = -1,
60  JcwPostErr = -2,
62  RetPollErr = -3,
64  RetPostErr = -4
65 };
66 
68 static String TelegramProcessErrorString[] = {"Ok", "JcwPollErr", "JcwPostErr", "RetPollErr", "RetPostErr"};
69 
70 static String toString(TelegramProcessError err)
71 {
72  return TelegramProcessErrorString[(-1) * (int) err];
73 }
74 
93 struct Message {
101  long UpdateId;
104  long MessageId;
107  long FromId;
110  bool FromIsBot;
117  String FromLastName;
129  long ChatId;
135  String ChatLastName;
138  String ChatType;
142  String Text;
146  long Date;
147 };
148 
165 {
166  uint Count;
167  String* Buttons;
168 };
169 
188 {
189  private:
190 
191  uint Count; /*< Maximum number of rows in the keyboard */
192  uint Counter; /*< Number of rows already stored in keyboard */
193  TBCKeyBoardRow* Rows; /*< Array of rows in the keyboard */
203  bool OneTime = false;
213  bool Resize = false;
214  public:
222  TBCKeyBoard (uint count, bool oneTime = false, bool resize = false);
227  ~TBCKeyBoard ();
238  TBCKeyBoard& push(uint count, const String buttons[]);
248  const String get(const uint row, const uint col);
258  const int length (const uint row);
267  const int length ();
268 
276  const bool getOneTime() {
277  return OneTime;
278  }
286  const bool getResize() {
287  return Resize;
288  }
289 
290 };
291 
308 {
309  private:
313  long LastUpdateId = 0;
315  String Token;
319  bool Parallel = false;
326 
334  void startPolling();
344  void startPosting(String Message);
349  public:
363  String token,
364  Client& sslPollClient,
365  Client& sslPostClient,
368  );
378  String token,
379  Client& sslPollClient,
380  Client& sslPostClient)
381  : TelegramBotClient (token, sslPollClient, sslPostClient, 0, 0) {};
391  String token,
392  Client& sslPollClient)
393  : TelegramBotClient (token, sslPollClient, sslPollClient, 0, 0) {};
412  void begin(
426  void setCallbacks(
429 
437  bool loop();
449  void postMessage(long chatId, String text, TBCKeyBoard& keyBoard);
461  void postMessage(long chatId, String text) {TBCKeyBoard keyBoard(0);
462  postMessage(chatId, text, keyBoard);
463  }
475  void pollSuccess(JwcProcessError err, JsonObject& json);
487  void pollError(JwcProcessError err, Client* client);
499  void postSuccess(JwcProcessError err, JsonObject& json);
511  void postError(JwcProcessError err, Client* client);
512 
513  static void callbackPollSuccess (void* obj, JwcProcessError err, JsonObject& json)
514  {
515  if (obj == 0) return;
516  TelegramBotClient* botClient = (TelegramBotClient*)obj;
517  botClient->pollSuccess(err, json);
518  }
519  static void callbackPollError(void* obj, JwcProcessError err, Client* client)
520  {
521  if (obj == 0) return;
522  TelegramBotClient* botClient = (TelegramBotClient*)obj;
523  botClient->pollError(err, client);
524  }
525  static void callbackPostSuccess (void* obj, JwcProcessError err, JsonObject& json)
526  {
527  if (obj == 0) return;
528  TelegramBotClient* botClient = (TelegramBotClient*)obj;
529  botClient->postSuccess(err, json);
530  }
531  static void callbackPostError(void* obj, JwcProcessError err, Client* client)
532  {
533  if (obj == 0) return;
534  TelegramBotClient* botClient = (TelegramBotClient*)obj;
535  botClient->postError(err, client);
536  }
537 };
538 
539 #endif
540 
541 
542 
Definition: JsonWebClient.h:136
+
long ChatId
Definition: TelegramBotClient.h:129
+
TBCKeyBoard & push(uint count, const String buttons[])
Adds a row to the keyboard.
Definition: TelegramBotClient.cpp:292
+
Definition: TelegramBotClient.h:164
+
Definition: TelegramBotClient.h:307
+
String Text
Definition: TelegramBotClient.h:142
+
Definition: TelegramBotClient.h:187
+
~TelegramBotClient()
Destructor.
Definition: TelegramBotClient.cpp:25
+
TBCKeyBoard(uint count, bool oneTime=false, bool resize=false)
Constructor.
Definition: TelegramBotClient.cpp:269
+
bool loop()
Handles client background tasks.
Definition: TelegramBotClient.cpp:50
+
void startPosting(String Message)
Starts posting a message.
Definition: TelegramBotClient.cpp:184
+
TelegramBotClient(String token, Client &sslPollClient, Client &sslPostClient, TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
Constructor.
Definition: TelegramBotClient.cpp:3
+ + +
long FromId
Definition: TelegramBotClient.h:107
+
String Token
Definition: TelegramBotClient.h:315
+
void pollError(JwcProcessError err, Client *client)
Callback called by JSONWebClient.
Definition: TelegramBotClient.cpp:150
+
String ChatFirstName
Definition: TelegramBotClient.h:132
+ +
Definition: TelegramBotClient.h:93
+
void setCallbacks(TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
Sets callbacks.
Definition: TelegramBotClient.cpp:31
+
void postMessage(long chatId, String text)
Post a message.
Definition: TelegramBotClient.h:461
+
JsonWebClient * SslPollClient
Definition: TelegramBotClient.h:321
+
const int length()
Length of keyboard.
Definition: TelegramBotClient.cpp:319
+
~TBCKeyBoard()
Destructor.
Definition: TelegramBotClient.cpp:282
+ +
JsonWebClient * SslPostClient
Definition: TelegramBotClient.h:325
+
long LastUpdateId
Definition: TelegramBotClient.h:313
+
String FromLanguageCode
Definition: TelegramBotClient.h:121
+
String ChatType
Definition: TelegramBotClient.h:138
+
String FromFirstName
Definition: TelegramBotClient.h:114
+
TelegramBotClient(String token, Client &sslPollClient)
Constructor.
Definition: TelegramBotClient.h:390
+
void postSuccess(JwcProcessError err, JsonObject &json)
Callback called by JSONWebClient.
Definition: TelegramBotClient.cpp:254
+
long MessageId
Definition: TelegramBotClient.h:104
+ +
bool FromIsBot
Definition: TelegramBotClient.h:110
+
const bool getOneTime()
Gets value of OneTime.
Definition: TelegramBotClient.h:276
+
const bool getResize()
Gets value of Resize.
Definition: TelegramBotClient.h:286
+ +
void postMessage(long chatId, String text, TBCKeyBoard &keyBoard)
Post a message.
Definition: TelegramBotClient.cpp:211
+
void begin(TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
Alias for setCallbacks following Arduino convention.
Definition: TelegramBotClient.cpp:40
+
String FromLastName
Definition: TelegramBotClient.h:117
+
String ChatLastName
Definition: TelegramBotClient.h:135
+
bool Parallel
Definition: TelegramBotClient.h:319
+
bool OneTime
Definition: TelegramBotClient.h:203
+
long UpdateId
Definition: TelegramBotClient.h:101
+
TelegramBotClient(String token, Client &sslPollClient, Client &sslPostClient)
Constructor.
Definition: TelegramBotClient.h:377
+ +
bool Resize
Definition: TelegramBotClient.h:213
+
TBC_CALLBACK_RECEIVE_SIGNATURE
Definition: TelegramBotClient.h:346
+
void pollSuccess(JwcProcessError err, JsonObject &json)
Callback called by JSONWebClient.
Definition: TelegramBotClient.cpp:98
+
void startPolling()
Starts polling.
Definition: TelegramBotClient.cpp:68
+
TBC_CALLBACK_ERROR_SIGNATURE
Definition: TelegramBotClient.h:348
+
void postError(JwcProcessError err, Client *client)
Callback called by JSONWebClient.
Definition: TelegramBotClient.cpp:259
+
long Date
Definition: TelegramBotClient.h:146
+
Header of a simple web client receiving json uses an underlying implementation of Client interface...
+
+ + + + diff --git a/docs/annotated.html b/docs/annotated.html new file mode 100644 index 0000000..6be80e0 --- /dev/null +++ b/docs/annotated.html @@ -0,0 +1,90 @@ + + + + + + + +Telegram Bot Api Client: Class List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + +
 CJsonWebClient
 CJwcClientState
 CJwcProcessError
 CMessage
 CTBCKeyBoard
 CTBCKeyBoardRow
 CTelegramBotClient
 CTelegramProcessError
+
+
+ + + + diff --git a/docs/bc_s.png b/docs/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/bc_s.png differ diff --git a/docs/bdwn.png b/docs/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/docs/bdwn.png differ diff --git a/docs/class_json_web_client-members.html b/docs/class_json_web_client-members.html new file mode 100644 index 0000000..9059a36 --- /dev/null +++ b/docs/class_json_web_client-members.html @@ -0,0 +1,98 @@ + + + + + + + +Telegram Bot Api Client: Member List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
JsonWebClient Member List
+
+
+ +

This is the complete list of members for JsonWebClient, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
CallBackObjectJsonWebClientprivate
ContentLengthJsonWebClientprivate
fire(String commands[], int count)JsonWebClient
HostJsonWebClientprivate
HttpStatusOkJsonWebClientprivate
JsonWebClient(Client *netClient, String host, int port, void *callBackObject, JWC_CALLBACK_MESSAGE_SIGNATURE, JWC_CALLBACK_ERROR_SIGNATURE)JsonWebClient
JWC_CALLBACK_ERROR_SIGNATUREJsonWebClientprivate
JWC_CALLBACK_MESSAGE_SIGNATUREJsonWebClientprivate
loop()JsonWebClient
NetClientJsonWebClientprivate
PortJsonWebClientprivate
processHeader()JsonWebClientprivate
processJson()JsonWebClientprivate
reConnect()JsonWebClientprivate
StateJsonWebClientprivate
state()JsonWebClient
stop()JsonWebClient
+ + + + diff --git a/docs/class_json_web_client.html b/docs/class_json_web_client.html new file mode 100644 index 0000000..9f17803 --- /dev/null +++ b/docs/class_json_web_client.html @@ -0,0 +1,600 @@ + + + + + + + +Telegram Bot Api Client: JsonWebClient Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
JsonWebClient Class Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Member Functions

 JsonWebClient (Client *netClient, String host, int port, void *callBackObject, JWC_CALLBACK_MESSAGE_SIGNATURE, JWC_CALLBACK_ERROR_SIGNATURE)
 
bool fire (String commands[], int count)
 Executes a list of commands. More...
 
JwcClientState state ()
 Current state of the client. More...
 
bool loop ()
 Method to poll client processing. More...
 
bool stop ()
 Stops the client. More...
 
+ + + + + + + + + + +

+Private Member Functions

void reConnect ()
 Reconnects to host. More...
 
bool processHeader ()
 Process a header. More...
 
bool processJson ()
 Process JSON. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Private Attributes

JwcClientState State = JwcClientState::Unconnected
 
Client * NetClient
 
String Host
 
int Port
 
long ContentLength = JWC_BUFF_SIZE
 
bool HttpStatusOk = false
 
void * CallBackObject
 
 JWC_CALLBACK_MESSAGE_SIGNATURE
 
 JWC_CALLBACK_ERROR_SIGNATURE
 
+

Constructor & Destructor Documentation

+ +

◆ JsonWebClient()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
JsonWebClient::JsonWebClient (Client * netClient,
String host,
int port,
void * callBackObject,
JWC_CALLBACK_MESSAGE_SIGNATURE ,
JWC_CALLBACK_ERROR_SIGNATURE  
)
+
+

Constructor, initializing all members

Parameters
+ + + + + + + +
netClienta object implementing Client interface to access the network. Using a Client implementing ssl feature will result in https otherwise http.
hostHost to connect to
portPort to connect to
callBackObjectObject passed to the callbacks, shall not be 0
JWC_CALLBACK_MESSAGE_SIGNATURECallback called on receiving a message / valid json data
JWC_CALLBACK_ERROR_SIGNATURECallback called on error while receiving
+
+
+ +
+
+

Member Function Documentation

+ +

◆ fire()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool JsonWebClient::fire (String commands[],
int count 
)
+
+ +

Executes a list of commands.

+
Parameters
+ + + +
[in]commands[]list of commands
[in]countof commands
+
+
+
Returns
Return true on success
+

Sends a list of commands to the server by calling println() for each command and flush() at the end of list. The commands shall follow the http protocol.

+ +
+
+ +

◆ loop()

+ +
+
+ + + + + + + +
bool JsonWebClient::loop ()
+
+ +

Method to poll client processing.

+
Returns
True is an internal action was executed.
+

Method to poll client processing, shall be called in each main loop()

+ +
+
+ +

◆ processHeader()

+ +
+
+ + + + + +
+ + + + + + + +
bool JsonWebClient::processHeader ()
+
+private
+
+ +

Process a header.

+
Returns
Returns true while headers found in underlying Client
+

Read a header from NetClient and process it.

+ +
+
+ +

◆ processJson()

+ +
+
+ + + + + +
+ + + + + + + +
bool JsonWebClient::processJson ()
+
+private
+
+ +

Process JSON.

+
Returns
Returns true on success
+

Reads data from underlying Client and process it by ArduinoJSON

+ +
+
+ +

◆ reConnect()

+ +
+
+ + + + + +
+ + + + + + + +
void JsonWebClient::reConnect ()
+
+private
+
+ +

Reconnects to host.

+
Returns
Return nothing
+

Reconnects to host, skips open connection

+ +
+
+ +

◆ state()

+ +
+
+ + + + + + + +
JwcClientState JsonWebClient::state ()
+
+ +

Current state of the client.

+
Returns
The current state as a JwcClientState
+

Make the current state of the client public accessible.

+ +
+
+ +

◆ stop()

+ +
+
+ + + + + + + +
bool JsonWebClient::stop ()
+
+ +

Stops the client.

+
Returns
True
+

Stops the underlying client connection and reset client state to JwcClientState::unconnected

+ +
+
+

Member Data Documentation

+ +

◆ CallBackObject

+ +
+
+ + + + + +
+ + + + +
void* JsonWebClient::CallBackObject
+
+private
+
+

Object passed to the callbacks

+ +
+
+ +

◆ ContentLength

+ +
+
+ + + + + +
+ + + + +
long JsonWebClient::ContentLength = JWC_BUFF_SIZE
+
+private
+
+

Content length stored during header processing

+ +
+
+ +

◆ Host

+ +
+
+ + + + + +
+ + + + +
String JsonWebClient::Host
+
+private
+
+

Host to connect to

+ +
+
+ +

◆ HttpStatusOk

+ +
+
+ + + + + +
+ + + + +
bool JsonWebClient::HttpStatusOk = false
+
+private
+
+

Indicate if Http 200 Ok header was found

+ +
+
+ +

◆ JWC_CALLBACK_ERROR_SIGNATURE

+ +
+
+ + + + + +
+ + + + +
JsonWebClient::JWC_CALLBACK_ERROR_SIGNATURE
+
+private
+
+

Callback called on error while receiving

+ +
+
+ +

◆ JWC_CALLBACK_MESSAGE_SIGNATURE

+ +
+
+ + + + + +
+ + + + +
JsonWebClient::JWC_CALLBACK_MESSAGE_SIGNATURE
+
+private
+
+

Callback called on receiving a message / valid json data

+ +
+
+ +

◆ NetClient

+ +
+
+ + + + + +
+ + + + +
Client* JsonWebClient::NetClient
+
+private
+
+

Client used to access the net (depends on hardware)

+ +
+
+ +

◆ Port

+ +
+
+ + + + + +
+ + + + +
int JsonWebClient::Port
+
+private
+
+

Port to connect to

+ +
+
+ +

◆ State

+ +
+
+ + + + + +
+ + + + +
JwcClientState JsonWebClient::State = JwcClientState::Unconnected
+
+private
+
+

Current state of the client

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/class_jwc_client_state.html b/docs/class_jwc_client_state.html new file mode 100644 index 0000000..e2a0c24 --- /dev/null +++ b/docs/class_jwc_client_state.html @@ -0,0 +1,81 @@ + + + + + + + +Telegram Bot Api Client: JwcClientState Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
JwcClientState Class Reference
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/class_jwc_process_error.html b/docs/class_jwc_process_error.html new file mode 100644 index 0000000..ddc5dc4 --- /dev/null +++ b/docs/class_jwc_process_error.html @@ -0,0 +1,81 @@ + + + + + + + +Telegram Bot Api Client: JwcProcessError Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
JwcProcessError Class Reference
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/class_t_b_c_key_board-members.html b/docs/class_t_b_c_key_board-members.html new file mode 100644 index 0000000..72f6efb --- /dev/null +++ b/docs/class_t_b_c_key_board-members.html @@ -0,0 +1,94 @@ + + + + + + + +Telegram Bot Api Client: Member List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TBCKeyBoard Member List
+
+
+ +

This is the complete list of members for TBCKeyBoard, including all inherited members.

+ + + + + + + + + + + + + + +
Count (defined in TBCKeyBoard)TBCKeyBoardprivate
Counter (defined in TBCKeyBoard)TBCKeyBoardprivate
get(const uint row, const uint col)TBCKeyBoard
getOneTime()TBCKeyBoardinline
getResize()TBCKeyBoardinline
length(const uint row)TBCKeyBoard
length()TBCKeyBoard
OneTimeTBCKeyBoardprivate
push(uint count, const String buttons[])TBCKeyBoard
ResizeTBCKeyBoardprivate
Rows (defined in TBCKeyBoard)TBCKeyBoardprivate
TBCKeyBoard(uint count, bool oneTime=false, bool resize=false)TBCKeyBoard
~TBCKeyBoard()TBCKeyBoard
+ + + + diff --git a/docs/class_t_b_c_key_board.html b/docs/class_t_b_c_key_board.html new file mode 100644 index 0000000..015bd7d --- /dev/null +++ b/docs/class_t_b_c_key_board.html @@ -0,0 +1,432 @@ + + + + + + + +Telegram Bot Api Client: TBCKeyBoard Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Private Attributes | +List of all members
+
+
TBCKeyBoard Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TBCKeyBoard (uint count, bool oneTime=false, bool resize=false)
 Constructor. More...
 
 ~TBCKeyBoard ()
 Destructor. More...
 
TBCKeyBoardpush (uint count, const String buttons[])
 Adds a row to the keyboard. More...
 
const String get (const uint row, const uint col)
 Gets a button text. More...
 
const int length (const uint row)
 Length of row. More...
 
const int length ()
 Length of keyboard. More...
 
const bool getOneTime ()
 Gets value of OneTime. More...
 
const bool getResize ()
 Gets value of Resize. More...
 
+ + + + + + + + + + + +

+Private Attributes

+uint Count
 
+uint Counter
 
+TBCKeyBoardRowRows
 
bool OneTime = false
 
bool Resize = false
 
+

Constructor & Destructor Documentation

+ +

◆ TBCKeyBoard()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
TBCKeyBoard::TBCKeyBoard (uint count,
bool oneTime = false,
bool resize = false 
)
+
+ +

Constructor.

+

Constructor, initializing all members

Parameters
+ + + + +
countThe number of rows in keyboard.
oneTimevalue for OneTime
resizevalue for Resize
+
+
+ +
+
+ +

◆ ~TBCKeyBoard()

+ +
+
+ + + + + + + +
TBCKeyBoard::~TBCKeyBoard ()
+
+ +

Destructor.

+

Destructor

+ +
+
+

Member Function Documentation

+ +

◆ get()

+ +
+
+ + + + + + + + + + + + + + + + + + +
const String TBCKeyBoard::get (const uint row,
const uint col 
)
+
+ +

Gets a button text.

+
Parameters
+ + + +
[in]rowIndex of row to fetch button text from
[in]colIndex of column to fetch button text from
+
+
+
Returns
button text
+

Gets the text of a button in given row and column

+ +
+
+ +

◆ getOneTime()

+ +
+
+ + + + + +
+ + + + + + + +
const bool TBCKeyBoard::getOneTime ()
+
+inline
+
+ +

Gets value of OneTime.

+
Returns
Value of OneTime
+

See OneTime, this methods makes it read only.

+ +
+
+ +

◆ getResize()

+ +
+
+ + + + + +
+ + + + + + + +
const bool TBCKeyBoard::getResize ()
+
+inline
+
+ +

Gets value of Resize.

+
Returns
Value of Resize
+

See Resize, this methods makes it read only.

+ +
+
+ +

◆ length() [1/2]

+ +
+
+ + + + + + + + +
const int TBCKeyBoard::length (const uint row)
+
+ +

Length of row.

+
Parameters
+ + +
[in]rowIndex of row to get length
+
+
+
Returns
return length of row
+

Gets the length of the row at the given index The length of a row is the number of buttons in this row.

+ +
+
+ +

◆ length() [2/2]

+ +
+
+ + + + + + + +
const int TBCKeyBoard::length ()
+
+ +

Length of keyboard.

+
Returns
return length of keyboard
+

Gets the length of the keyboard The length of a keyboard is the number of rows in this keyboard.

+ +
+
+ +

◆ push()

+ +
+
+ + + + + + + + + + + + + + + + + + +
TBCKeyBoard & TBCKeyBoard::push (uint count,
const String buttons[] 
)
+
+ +

Adds a row to the keyboard.

+
Parameters
+ + + +
[in]countNumber of buttons passend in buttons
[in]buttonsButton to be displayed in this row
+
+
+
Returns
The keyboard itself
+

Adds a row to the keyboard containing buttons displaying the string passed in buttons[]

+ +
+
+

Member Data Documentation

+ +

◆ OneTime

+ +
+
+ + + + + +
+ + + + +
bool TBCKeyBoard::OneTime = false
+
+private
+
+

Requests clients to hide the keyboard as soon as it's been used. The keyboard will still be available, but clients will automatically display the usual letter-keyboard in the chat – the user can press a special button in the input field to see the custom keyboard again.

+

Defaults to false.

+

https://core.telegram.org/bots/api#replykeyboardmarkup

+ +
+
+ +

◆ Resize

+ +
+
+ + + + + +
+ + + + +
bool TBCKeyBoard::Resize = false
+
+private
+
+

Requests clients to resize the keyboard vertically for optimal fit (e.g., make the keyboard smaller if there are just two rows of buttons). Defaults to false, in which case the custom keyboard is always of the same height as the app's standard keyboard.

+

Defaults to false.

+

https://core.telegram.org/bots/api#replykeyboardmarkup

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/class_telegram_bot_client-members.html b/docs/class_telegram_bot_client-members.html new file mode 100644 index 0000000..9ecbcce --- /dev/null +++ b/docs/class_telegram_bot_client-members.html @@ -0,0 +1,107 @@ + + + + + + + +Telegram Bot Api Client: Member List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TelegramBotClient Member List
+
+
+ +

This is the complete list of members for TelegramBotClient, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin(TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)TelegramBotClient
callbackPollError(void *obj, JwcProcessError err, Client *client) (defined in TelegramBotClient)TelegramBotClientinlinestatic
callbackPollSuccess(void *obj, JwcProcessError err, JsonObject &json) (defined in TelegramBotClient)TelegramBotClientinlinestatic
callbackPostError(void *obj, JwcProcessError err, Client *client) (defined in TelegramBotClient)TelegramBotClientinlinestatic
callbackPostSuccess(void *obj, JwcProcessError err, JsonObject &json) (defined in TelegramBotClient)TelegramBotClientinlinestatic
LastUpdateIdTelegramBotClientprivate
loop()TelegramBotClient
ParallelTelegramBotClientprivate
pollError(JwcProcessError err, Client *client)TelegramBotClient
pollSuccess(JwcProcessError err, JsonObject &json)TelegramBotClient
postError(JwcProcessError err, Client *client)TelegramBotClient
postMessage(long chatId, String text, TBCKeyBoard &keyBoard)TelegramBotClient
postMessage(long chatId, String text)TelegramBotClientinline
postSuccess(JwcProcessError err, JsonObject &json)TelegramBotClient
setCallbacks(TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)TelegramBotClient
SslPollClientTelegramBotClientprivate
SslPostClientTelegramBotClientprivate
startPolling()TelegramBotClientprivate
startPosting(String Message)TelegramBotClientprivate
TBC_CALLBACK_ERROR_SIGNATURETelegramBotClientprivate
TBC_CALLBACK_RECEIVE_SIGNATURETelegramBotClientprivate
TelegramBotClient(String token, Client &sslPollClient, Client &sslPostClient, TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)TelegramBotClient
TelegramBotClient(String token, Client &sslPollClient, Client &sslPostClient)TelegramBotClientinline
TelegramBotClient(String token, Client &sslPollClient)TelegramBotClientinline
TokenTelegramBotClientprivate
~TelegramBotClient()TelegramBotClient
+ + + + diff --git a/docs/class_telegram_bot_client.html b/docs/class_telegram_bot_client.html new file mode 100644 index 0000000..f21b6dd --- /dev/null +++ b/docs/class_telegram_bot_client.html @@ -0,0 +1,929 @@ + + + + + + + +Telegram Bot Api Client: TelegramBotClient Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+Public Member Functions | +Static Public Member Functions | +Private Member Functions | +Private Attributes | +List of all members
+
+
TelegramBotClient Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TelegramBotClient (String token, Client &sslPollClient, Client &sslPostClient, TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
 Constructor. More...
 
 TelegramBotClient (String token, Client &sslPollClient, Client &sslPostClient)
 Constructor. More...
 
 TelegramBotClient (String token, Client &sslPollClient)
 Constructor. More...
 
 ~TelegramBotClient ()
 Destructor. More...
 
void begin (TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
 Alias for setCallbacks following Arduino convention. More...
 
void setCallbacks (TBC_CALLBACK_RECEIVE_SIGNATURE, TBC_CALLBACK_ERROR_SIGNATURE)
 Sets callbacks. More...
 
bool loop ()
 Handles client background tasks. More...
 
void postMessage (long chatId, String text, TBCKeyBoard &keyBoard)
 Post a message. More...
 
void postMessage (long chatId, String text)
 Post a message. More...
 
void pollSuccess (JwcProcessError err, JsonObject &json)
 Callback called by JSONWebClient. More...
 
void pollError (JwcProcessError err, Client *client)
 Callback called by JSONWebClient. More...
 
void postSuccess (JwcProcessError err, JsonObject &json)
 Callback called by JSONWebClient. More...
 
void postError (JwcProcessError err, Client *client)
 Callback called by JSONWebClient. More...
 
+ + + + + + + + + +

+Static Public Member Functions

+static void callbackPollSuccess (void *obj, JwcProcessError err, JsonObject &json)
 
+static void callbackPollError (void *obj, JwcProcessError err, Client *client)
 
+static void callbackPostSuccess (void *obj, JwcProcessError err, JsonObject &json)
 
+static void callbackPostError (void *obj, JwcProcessError err, Client *client)
 
+ + + + + + + +

+Private Member Functions

void startPolling ()
 Starts polling. More...
 
void startPosting (String Message)
 Starts posting a message. More...
 
+ + + + + + + + + + + + + + + +

+Private Attributes

long LastUpdateId = 0
 
String Token
 
bool Parallel = false
 
JsonWebClientSslPollClient
 
JsonWebClientSslPostClient
 
 TBC_CALLBACK_RECEIVE_SIGNATURE
 
 TBC_CALLBACK_ERROR_SIGNATURE
 
+

Constructor & Destructor Documentation

+ +

◆ TelegramBotClient() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TelegramBotClient::TelegramBotClient (String token,
Client & sslPollClient,
Client & sslPostClient,
TBC_CALLBACK_RECEIVE_SIGNATURE ,
TBC_CALLBACK_ERROR_SIGNATURE  
)
+
+ +

Constructor.

+

Constructor, initializing all members including callbacks using different clients for posting and polling

Parameters
+ + + + + + +
tokensecure token for your bot provided by BotFather.
sslPollClientSSL client used for polling messages from remote server
sslPostClientSSL client used for posting messages to remote server
TBC_CALLBACK_RECEIVE_SIGNATURECallback called on receiving a message
TBC_CALLBACK_ERROR_SIGNATURECallback called on error while receiving
+
+
+ +
+
+ +

◆ TelegramBotClient() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
TelegramBotClient::TelegramBotClient (String token,
Client & sslPollClient,
Client & sslPostClient 
)
+
+inline
+
+ +

Constructor.

+

Constructor, initializing only members no callbacks using different clients for posting and polling

Parameters
+ + + + +
tokensecure token for your bot provided by BotFather.
sslPollClientSSL client used for polling messages from remote server
sslPostClientSSL client used for posting messages to remote server
+
+
+ +
+
+ +

◆ TelegramBotClient() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
TelegramBotClient::TelegramBotClient (String token,
Client & sslPollClient 
)
+
+inline
+
+ +

Constructor.

+

Constructor, initializing only members no callbacks using the same client for posting and polling

Parameters
+ + + + +
tokensecure token for your bot provided by BotFather.
sslPollClientSSL client used for polling messages from remote server
sslPostClientSSL client used for posting messages to remote server
+
+
+ +
+
+ +

◆ ~TelegramBotClient()

+ +
+
+ + + + + + + +
TelegramBotClient::~TelegramBotClient ()
+
+ +

Destructor.

+

Destructor

+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::begin (TBC_CALLBACK_RECEIVE_SIGNATURE ,
TBC_CALLBACK_ERROR_SIGNATURE  
)
+
+ +

Alias for setCallbacks following Arduino convention.

+
Parameters
+ + + +
[in]TBC_CALLBACK_RECEIVE_SIGNATURECallback called on receiving a message
[in]TBC_CALLBACK_ERROR_SIGNATURECallback called on error while receiving
+
+
+
Returns
Nothing
+

Alias for setCallbacks following Arduino convention sets callbacks

+ +
+
+ +

◆ loop()

+ +
+
+ + + + + + + +
bool TelegramBotClient::loop ()
+
+ +

Handles client background tasks.

+
Returns
Return true is an action was needed and performed
+

Handles client background tasks, shall be calles in every main loop()

+ +
+
+ +

◆ pollError()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::pollError (JwcProcessError err,
Client * client 
)
+
+ +

Callback called by JSONWebClient.

+
Parameters
+ + + +
[in]errError Code from JwcProcessError
[in]clientClient that causes the problem.
+
+
+
Returns
Nothing
+

This is an internal method called by underlying JSONWebClient

+
Note
Do not call this method.
+ +
+
+ +

◆ pollSuccess()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::pollSuccess (JwcProcessError err,
JsonObject & json 
)
+
+ +

Callback called by JSONWebClient.

+
Parameters
+ + + +
[in]errError Code from JwcProcessError
[in]jsonJsonObject generated by ArduinoJSON
+
+
+
Returns
Nothing
+

This is an internal method called by underlying JSONWebClient

+
Note
Do not call this method.
+ +
+
+ +

◆ postError()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::postError (JwcProcessError err,
Client * client 
)
+
+ +

Callback called by JSONWebClient.

+
Parameters
+ + + +
[in]errError Code from JwcProcessError
[in]clientClient that causes the problem.
+
+
+
Returns
Nothing
+

This is an internal method called by underlying JSONWebClient

+
Note
Do not call this method.
+ +
+
+ +

◆ postMessage() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void TelegramBotClient::postMessage (long chatId,
String text,
TBCKeyBoardkeyBoard 
)
+
+ +

Post a message.

+
Parameters
+ + + + +
[in]chatIdId of the chat the message shall be sent to.
[in]textText of the message
[in]keyBoardOptional. Keyboard to be send with this message.
+
+
+
Returns
Nothing
+

Post a message to a given chat. (Only text messages and custom keyboards are supported, yet.)

+ +
+
+ +

◆ postMessage() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::postMessage (long chatId,
String text 
)
+
+inline
+
+ +

Post a message.

+
Parameters
+ + + +
[in]chatIdId of the chat the message shall be sent to.
[in]textText of the message
+
+
+
Returns
Nothing
+

Post a message to a given chat. (Only text messages and custom keyboards are supported, yet.)

+ +
+
+ +

◆ postSuccess()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::postSuccess (JwcProcessError err,
JsonObject & json 
)
+
+ +

Callback called by JSONWebClient.

+
Parameters
+ + + +
[in]errError Code from JwcProcessError
[in]jsonJsonObject generated by ArduinoJSON
+
+
+
Returns
Nothing
+

This is an internal method called by underlying JSONWebClient

+
Note
Do not call this method.
+ +
+
+ +

◆ setCallbacks()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void TelegramBotClient::setCallbacks (TBC_CALLBACK_RECEIVE_SIGNATURE ,
TBC_CALLBACK_ERROR_SIGNATURE  
)
+
+ +

Sets callbacks.

+
Parameters
+ + + +
[in]TBC_CALLBACK_RECEIVE_SIGNATURECallback called on receiving a message
[in]TBC_CALLBACK_ERROR_SIGNATURECallback called on error while receiving
+
+
+
Returns
Nothing
+

sets callbacks for receiving message and error handling

+ +
+
+ +

◆ startPolling()

+ +
+
+ + + + + +
+ + + + + + + +
void TelegramBotClient::startPolling ()
+
+private
+
+ +

Starts polling.

+
Returns
Nothing
+

Starts the polling by open a http long call

+ +
+
+ +

◆ startPosting()

+ +
+
+ + + + + +
+ + + + + + + + +
void TelegramBotClient::startPosting (String Message)
+
+private
+
+ +

Starts posting a message.

+
Parameters
+ + +
[in]TheMessage to post as json string
+
+
+
Returns
Nothing
+

Start the posting of a message by open a http post call

+ +
+
+

Member Data Documentation

+ +

◆ LastUpdateId

+ +
+
+ + + + + +
+ + + + +
long TelegramBotClient::LastUpdateId = 0
+
+private
+
+

Id of last update, used to generate a call returning only messages more recent than the last received.

+ +
+
+ +

◆ Parallel

+ +
+
+ + + + + +
+ + + + +
bool TelegramBotClient::Parallel = false
+
+private
+
+

Indicates if the client uses two underlying client objects allowing posting while keeping the poll call open in parallel.

+ +
+
+ +

◆ SslPollClient

+ +
+
+ + + + + +
+ + + + +
JsonWebClient* TelegramBotClient::SslPollClient
+
+private
+
+

Underlying client for polling.

+ +
+
+ +

◆ SslPostClient

+ +
+
+ + + + + +
+ + + + +
JsonWebClient* TelegramBotClient::SslPostClient
+
+private
+
+

Underlying client for posting. In case of parallel mode it uses the same Client object than SslPollClient

+ +
+
+ +

◆ TBC_CALLBACK_ERROR_SIGNATURE

+ +
+
+ + + + + +
+ + + + +
TelegramBotClient::TBC_CALLBACK_ERROR_SIGNATURE
+
+private
+
+

Callback called on error

+ +
+
+ +

◆ TBC_CALLBACK_RECEIVE_SIGNATURE

+ +
+
+ + + + + +
+ + + + +
TelegramBotClient::TBC_CALLBACK_RECEIVE_SIGNATURE
+
+private
+
+

Callback called on receiving a message

+ +
+
+ +

◆ Token

+ +
+
+ + + + + +
+ + + + +
String TelegramBotClient::Token
+
+private
+
+

Secure Token provided by BotFather

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/docs/class_telegram_process_error.html b/docs/class_telegram_process_error.html new file mode 100644 index 0000000..5df3ce0 --- /dev/null +++ b/docs/class_telegram_process_error.html @@ -0,0 +1,81 @@ + + + + + + + +Telegram Bot Api Client: TelegramProcessError Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TelegramProcessError Class Reference
+
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/docs/classes.html b/docs/classes.html new file mode 100644 index 0000000..e40bff0 --- /dev/null +++ b/docs/classes.html @@ -0,0 +1,91 @@ + + + + + + + +Telegram Bot Api Client: Class Index + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
j | m | t
+ + + + + + + +
  j  
+
JwcClientState   
  t  
+
TBCKeyBoardRow   
JwcProcessError   TelegramBotClient   
JsonWebClient   
  m  
+
TBCKeyBoard   TelegramProcessError   
Message   
+
j | m | t
+
+ + + + diff --git a/docs/closed.png b/docs/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/closed.png differ diff --git a/docs/dir_0e6fa97578a7efb5a6a9f6b09bb20da8.html b/docs/dir_0e6fa97578a7efb5a6a9f6b09bb20da8.html new file mode 100644 index 0000000..857c1b2 --- /dev/null +++ b/docs/dir_0e6fa97578a7efb5a6a9f6b09bb20da8.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: myLib Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
myLib Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_3b7e072946d6aac82486ffab9f475a77.html b/docs/dir_3b7e072946d6aac82486ffab9f475a77.html new file mode 100644 index 0000000..e902a8e --- /dev/null +++ b/docs/dir_3b7e072946d6aac82486ffab9f475a77.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: Jsp Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Jsp Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_61cd5105ec491a28bebda349ca7009a6.html b/docs/dir_61cd5105ec491a28bebda349ca7009a6.html new file mode 100644 index 0000000..890d4c0 --- /dev/null +++ b/docs/dir_61cd5105ec491a28bebda349ca7009a6.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: Documents Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Documents Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_954c988a02fc1a0da2fdec35bbdd5892.html b/docs/dir_954c988a02fc1a0da2fdec35bbdd5892.html new file mode 100644 index 0000000..8ef0660 --- /dev/null +++ b/docs/dir_954c988a02fc1a0da2fdec35bbdd5892.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: TelegramBotClient Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TelegramBotClient Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_97357dce30c4d20d2d469d3641cb1211.html b/docs/dir_97357dce30c4d20d2d469d3641cb1211.html new file mode 100644 index 0000000..a943c94 --- /dev/null +++ b/docs/dir_97357dce30c4d20d2d469d3641cb1211.html @@ -0,0 +1,95 @@ + + + + + + + +Telegram Bot Api Client: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + + + + + + +

+Files

file  JsonWebClient.cpp
 Implementation of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.
 
file  JsonWebClient.h [code]
 Header of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.
 
file  TelegramBotClient.h [code]
 Header of a simple client sending and receiving message via Telegram's Bot API. Uses one or two underlying objects implementing the Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data.
 
+
+ + + + diff --git a/docs/dir_ab48873cd42506eb3958721cc36383ff.html b/docs/dir_ab48873cd42506eb3958721cc36383ff.html new file mode 100644 index 0000000..6eeca8f --- /dev/null +++ b/docs/dir_ab48873cd42506eb3958721cc36383ff.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: Arduino Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Arduino Directory Reference
+
+
+
+ + + + diff --git a/docs/dir_ca89766f342a80ddd503a73470c4227c.html b/docs/dir_ca89766f342a80ddd503a73470c4227c.html new file mode 100644 index 0000000..61cb409 --- /dev/null +++ b/docs/dir_ca89766f342a80ddd503a73470c4227c.html @@ -0,0 +1,86 @@ + + + + + + + +Telegram Bot Api Client: trunk Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
trunk Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/docs/dir_d522931ffa1371640980b621734a4381.html b/docs/dir_d522931ffa1371640980b621734a4381.html new file mode 100644 index 0000000..30b5918 --- /dev/null +++ b/docs/dir_d522931ffa1371640980b621734a4381.html @@ -0,0 +1,82 @@ + + + + + + + +Telegram Bot Api Client: Users Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Users Directory Reference
+
+
+
+ + + + diff --git a/docs/doc.png b/docs/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/docs/doc.png differ diff --git a/docs/doxygen.css b/docs/doxygen.css new file mode 100644 index 0000000..266c8b3 --- /dev/null +++ b/docs/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/docs/doxygen.png b/docs/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/docs/doxygen.png differ diff --git a/docs/dynsections.js b/docs/dynsections.js new file mode 100644 index 0000000..c1ce122 --- /dev/null +++ b/docs/dynsections.js @@ -0,0 +1,120 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Telegram Bot Api Client: File List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+ + + + + +
 JsonWebClient.cppImplementation of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data
 JsonWebClient.hHeader of a simple web client receiving json uses an underlying implementation of Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data
 TBCDebug.h
 TelegramBotClient.hHeader of a simple client sending and receiving message via Telegram's Bot API. Uses one or two underlying objects implementing the Client interface. It implements a pseudo background behavior by providing a loop() method that can be polled and calls callback on receiving valid data
+
+
+ + + + diff --git a/docs/folderclosed.png b/docs/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/docs/folderclosed.png differ diff --git a/docs/folderopen.png b/docs/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/docs/folderopen.png differ diff --git a/docs/functions.html b/docs/functions.html new file mode 100644 index 0000000..27cd285 --- /dev/null +++ b/docs/functions.html @@ -0,0 +1,314 @@ + + + + + + + +Telegram Bot Api Client: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- ~ -

+
+ + + + diff --git a/docs/functions_func.html b/docs/functions_func.html new file mode 100644 index 0000000..d75049a --- /dev/null +++ b/docs/functions_func.html @@ -0,0 +1,193 @@ + + + + + + + +Telegram Bot Api Client: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+ + +

- f -

+ + +

- g -

+ + +

- j -

+ + +

- l -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- ~ -

+
+ + + + diff --git a/docs/functions_vars.html b/docs/functions_vars.html new file mode 100644 index 0000000..d5f6b51 --- /dev/null +++ b/docs/functions_vars.html @@ -0,0 +1,223 @@ + + + + + + + +Telegram Bot Api Client: Class Members - Variables + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- h -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+ + + + diff --git a/docs/globals.html b/docs/globals.html new file mode 100644 index 0000000..188bfc9 --- /dev/null +++ b/docs/globals.html @@ -0,0 +1,85 @@ + + + + + + + +Telegram Bot Api Client: File Members + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented file members with links to the documentation:
+
+ + + + diff --git a/docs/globals_enum.html b/docs/globals_enum.html new file mode 100644 index 0000000..c2e2f96 --- /dev/null +++ b/docs/globals_enum.html @@ -0,0 +1,85 @@ + + + + + + + +Telegram Bot Api Client: File Members + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..2bc0edd --- /dev/null +++ b/docs/index.html @@ -0,0 +1,78 @@ + + + + + + + +Telegram Bot Api Client: Main Page + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Telegram Bot Api Client Documentation
+
+
+
+ + + + diff --git a/docs/jquery.js b/docs/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/docs/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + + +
+
+
Message Member List
+
+
+ +

This is the complete list of members for Message, including all inherited members.

+
+ + + + + + + + + + + + + +
ChatFirstNameMessage
ChatIdMessage
ChatLastNameMessage
ChatTypeMessage
DateMessage
FromFirstNameMessage
FromIdMessage
FromIsBotMessage
FromLanguageCodeMessage
FromLastNameMessage
MessageIdMessage
TextMessage
UpdateIdMessage
+ + + + diff --git a/docs/struct_message.html b/docs/struct_message.html new file mode 100644 index 0000000..aa55db3 --- /dev/null +++ b/docs/struct_message.html @@ -0,0 +1,311 @@ + + + + + + + +Telegram Bot Api Client: Message Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
Message Struct Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

long UpdateId
 
long MessageId
 
long FromId
 
bool FromIsBot
 
String FromFirstName
 
String FromLastName
 
String FromLanguageCode
 
long ChatId
 
String ChatFirstName
 
String ChatLastName
 
String ChatType
 
String Text
 
long Date
 
+

Member Data Documentation

+ +

◆ ChatFirstName

+ +
+
+ + + + +
String Message::ChatFirstName
+
+

chat_first_name: chat/first_name Optional. First name of the other party in a private chat

+ +
+
+ +

◆ ChatId

+ +
+
+ + + + +
long Message::ChatId
+
+

chat_id: chat/id

+

Used to identify chat while posting a message Unique identifier for this chat. This number may be greater than 32 bits and some programming languages may have difficulty/silent defects in interpreting it. But it is smaller than 52 bits, so a signed 64 bit integer or double-precision float type are safe for storing this identifier.

+ +
+
+ +

◆ ChatLastName

+ +
+
+ + + + +
String Message::ChatLastName
+
+

chat_last_name: chat/last_name Optional. Last name of the other party in a private chat

+ +
+
+ +

◆ ChatType

+ +
+
+ + + + +
String Message::ChatType
+
+

chat_type: chat/type Type of chat, can be either “private”, “group”, “supergroup” or “channel”

+ +
+
+ +

◆ Date

+ +
+
+ + + + +
long Message::Date
+
+

date: date Date the message was sent in Unix time

+ +
+
+ +

◆ FromFirstName

+ +
+
+ + + + +
String Message::FromFirstName
+
+

from_first_name: from/first_name User‘s or bot’s first name

+ +
+
+ +

◆ FromId

+ +
+
+ + + + +
long Message::FromId
+
+

from_id : from/id Unique identifier for this user or bot

+ +
+
+ +

◆ FromIsBot

+ +
+
+ + + + +
bool Message::FromIsBot
+
+

from_is_bot: from/is_bot True, if this user is a bot

+ +
+
+ +

◆ FromLanguageCode

+ +
+
+ + + + +
String Message::FromLanguageCode
+
+

from_language_code: from/language_code Optional. IETF language tag of the user's language

+ +
+
+ +

◆ FromLastName

+ +
+
+ + + + +
String Message::FromLastName
+
+

from_last_name: from/last_name Optional. User‘s or bot’s last name

+ +
+
+ +

◆ MessageId

+ +
+
+ + + + +
long Message::MessageId
+
+

message_id : message_id Unique message identifier inside this chat

+ +
+
+ +

◆ Text

+ +
+
+ + + + +
String Message::Text
+
+

text: text Optional. For text messages, the actual UTF-8 text of the message, 0-4096 characters.

+ +
+
+ +

◆ UpdateId

+ +
+
+ + + + +
long Message::UpdateId
+
+

update_id The update‘s unique identifier. Update identifiers start from a certain positive number and increase sequentially. This ID becomes especially handy if you’re using Webhooks, since it allows you to ignore repeated updates or to restore the correct update sequence, should they get out of order. If there are no new updates for at least a week, then identifier of the next update will be chosen randomly instead of sequentially.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/struct_t_b_c_key_board_row-members.html b/docs/struct_t_b_c_key_board_row-members.html new file mode 100644 index 0000000..b97134d --- /dev/null +++ b/docs/struct_t_b_c_key_board_row-members.html @@ -0,0 +1,83 @@ + + + + + + + +Telegram Bot Api Client: Member List + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
TBCKeyBoardRow Member List
+
+
+ +

This is the complete list of members for TBCKeyBoardRow, including all inherited members.

+ + + +
Buttons (defined in TBCKeyBoardRow)TBCKeyBoardRow
Count (defined in TBCKeyBoardRow)TBCKeyBoardRow
+ + + + diff --git a/docs/struct_t_b_c_key_board_row.html b/docs/struct_t_b_c_key_board_row.html new file mode 100644 index 0000000..3878449 --- /dev/null +++ b/docs/struct_t_b_c_key_board_row.html @@ -0,0 +1,94 @@ + + + + + + + +Telegram Bot Api Client: TBCKeyBoardRow Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
Telegram Bot Api Client +  0.5.0 +
+
ClientforaccessingTelegram'sBotAPI
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
TBCKeyBoardRow Struct Reference
+
+
+ + + + + + +

+Public Attributes

+uint Count
 
+String * Buttons
 
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/docs/sync_off.png b/docs/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/sync_off.png differ diff --git a/docs/sync_on.png b/docs/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/sync_on.png differ diff --git a/docs/tab_a.png b/docs/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/tab_a.png differ diff --git a/docs/tab_b.png b/docs/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/tab_b.png differ diff --git a/docs/tab_h.png b/docs/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/tab_h.png differ diff --git a/docs/tab_s.png b/docs/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/tab_s.png differ diff --git a/docs/tabs.css b/docs/tabs.css new file mode 100644 index 0000000..a28614b --- /dev/null +++ b/docs/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file