diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2c6b1f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ + +\.cache/ + +\.idea/ + +\.settings/ + +\.project + +\.pydevproject + +\.coverage + +logs/ diff --git a/README.md b/README.md index 3a27916..4e5c9a2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,8 @@ # BOSWatch -Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG - multiple Plugin support - Forum: http://boswatch.de \ No newline at end of file +**Es wird darauf hingewiesen, dass für die Teilnahme am BOS-Funk nur nach den Technischen Richtlinien der BOS zugelassene Funkanlagen verwendet werden dürfen.** +**Der BOS-Funk ist ein nichtöffentlicher mobiler Landfunk. Privatpersonen gehören nicht zum Kreis der berechtigten Funkteilnehmer.** _(Quelle: TR-BOS)_ + +*** + +**The intercept of the German BOS radio is strictly prohibited and will be prosecuted. The use is only permitted for authorized personnel.** \ No newline at end of file diff --git a/_docu/html/annotated.html b/_docu/html/annotated.html new file mode 100644 index 0000000..6d5c5af --- /dev/null +++ b/_docu/html/annotated.html @@ -0,0 +1,139 @@ + + + + + + + +BOSWatch 3: Data Structures + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + +
 Nboswatch
 Nconfig
 CConfigConfig class
 Ndecoder
 Ndecoder
 CDecoderMain decoder class
 Nfms
 CFmsFMS decoder class
 Npocsag
 CPocsagPOCSAG decoder class
 Nzvei
 CZveiZVEI decoder class
 Nnetwork
 Nclient
 CTCPClientTCP client class
 Nserver
 CTCPHandlerRequestHandler class for our server
 CTCPServerTCP server class
 Nwatchdog
 Nwatchdog
 CBWWatchdogClass for an Watchdog to observe, if needed subprocesses still running
+
+
+
+ + + + diff --git a/_docu/html/annotated_dup.js b/_docu/html/annotated_dup.js new file mode 100644 index 0000000..e639c3e --- /dev/null +++ b/_docu/html/annotated_dup.js @@ -0,0 +1,36 @@ +var annotated_dup = +[ + [ "boswatch", null, [ + [ "config", null, [ + [ "Config", "classboswatch_1_1config_1_1_config.html", "classboswatch_1_1config_1_1_config" ] + ] ], + [ "decoder", null, [ + [ "decoder", null, [ + [ "Decoder", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html", "classboswatch_1_1decoder_1_1decoder_1_1_decoder" ] + ] ], + [ "fms", null, [ + [ "Fms", "classboswatch_1_1decoder_1_1fms_1_1_fms.html", "classboswatch_1_1decoder_1_1fms_1_1_fms" ] + ] ], + [ "pocsag", null, [ + [ "Pocsag", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag" ] + ] ], + [ "zvei", null, [ + [ "Zvei", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html", "classboswatch_1_1decoder_1_1zvei_1_1_zvei" ] + ] ] + ] ], + [ "network", null, [ + [ "client", null, [ + [ "TCPClient", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html", "classboswatch_1_1network_1_1client_1_1_t_c_p_client" ] + ] ], + [ "server", null, [ + [ "TCPHandler", "classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html", "classboswatch_1_1network_1_1server_1_1_t_c_p_handler" ], + [ "TCPServer", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html", "classboswatch_1_1network_1_1server_1_1_t_c_p_server" ] + ] ] + ] ], + [ "watchdog", null, [ + [ "watchdog", null, [ + [ "BWWatchdog", "classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html", "classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog" ] + ] ] + ] ] + ] ] +]; \ No newline at end of file diff --git a/_docu/html/bc_s.png b/_docu/html/bc_s.png new file mode 100644 index 0000000..43099b0 Binary files /dev/null and b/_docu/html/bc_s.png differ diff --git a/_docu/html/bdwn.png b/_docu/html/bdwn.png new file mode 100644 index 0000000..ce60dfc Binary files /dev/null and b/_docu/html/bdwn.png differ diff --git a/_docu/html/classboswatch_1_1config_1_1_config.html b/_docu/html/classboswatch_1_1config_1_1_config.html new file mode 100644 index 0000000..a1dbe83 --- /dev/null +++ b/_docu/html/classboswatch_1_1config_1_1_config.html @@ -0,0 +1,222 @@ + + + + + + + +BOSWatch 3: boswatch.config.Config Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.config.Config Class Reference
+
+
+ +

Config class. + More...

+ + + + + + + + + + +

+Public Member Functions

+def __init__ (self)
 init config class
 
def loadConfig (self, configFile)
 loads a given configuration in the class wide config variable More...
 
def getConfig (self, section, key)
 
+ + + +

+Static Public Attributes

file = configparser.ConfigParser()
 
+

Detailed Description

+

Config class.

+

Member Function Documentation

+ +

◆ loadConfig()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.config.Config.loadConfig ( self,
 configFile 
)
+
+ +

loads a given configuration in the class wide config variable

+
Parameters
+ + +
configFilePath to the config file
+
+
+
Returns
: status of loading
+
32  def loadConfig(self, configFile):
33  """!loads a given configuration in the class wide config variable
34 
35  @param configFile: Path to the config file
36 
37  @return: status of loading"""
38  logging.debug("load config file from: %s", configFile)
39  try:
40  self.file.read(configFile, "utf-8")
41  return True
42  except: # pragma: no cover
43  return False
44  logging.exception("cannot load config file")
45 
+
+
+ +

◆ getConfig()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def boswatch.config.Config.getConfig ( self,
 section,
 key 
)
+
+
Method to read a single config entry
+
+@param section: Section to read from
+@param key: Value to read
+
+@return: The value from config file
46  def getConfig(self, section, key):
47  """Method to read a single config entry
48 
49  @param section: Section to read from
50  @param key: Value to read
51 
52  @return: The value from config file"""
53  try:
54  return self.file.get(section, key)
55  except: # pragma: no cover
56  logging.exception("Error while reading a config entry")
57  return None
58 
+
+
+
The documentation for this class was generated from the following file:
    +
  • config.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1config_1_1_config.js b/_docu/html/classboswatch_1_1config_1_1_config.js new file mode 100644 index 0000000..1f53b9c --- /dev/null +++ b/_docu/html/classboswatch_1_1config_1_1_config.js @@ -0,0 +1,6 @@ +var classboswatch_1_1config_1_1_config = +[ + [ "__init__", "classboswatch_1_1config_1_1_config.html#a5a7fd74fa397a8c96245b51f51aa6f6a", null ], + [ "loadConfig", "classboswatch_1_1config_1_1_config.html#a24771882fd22b6c93f0924772199e6f7", null ], + [ "getConfig", "classboswatch_1_1config_1_1_config.html#ae8c521d735a864121ffb04f95bbc118e", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.html b/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.html new file mode 100644 index 0000000..e22eb19 --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.html @@ -0,0 +1,254 @@ + + + + + + + +BOSWatch 3: boswatch.decoder.decoder.Decoder Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.decoder.decoder.Decoder Class Reference
+
+
+ +

Main decoder class. + More...

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self)
 Create a new instance.
 
def decode (self, data)
 Check on keyword and call the right decoder. More...
 
- Public Member Functions inherited from boswatch.config.Config
+def __init__ (self)
 init config class
 
def loadConfig (self, configFile)
 loads a given configuration in the class wide config variable More...
 
def getConfig (self, section, key)
 
+ + + +

+Data Fields

config
 
+ + + + +

+Private Member Functions

def _getClientData (self, decoded)
 Add the client information to the decoded data. More...
 
+ + + + +

+Additional Inherited Members

- Static Public Attributes inherited from boswatch.config.Config
file = configparser.ConfigParser()
 
+

Detailed Description

+

Main decoder class.

+

This class check if any decoder keyword is in the given data. If a keyword is found in this string, the class calls the correct decoder.

+

Member Function Documentation

+ +

◆ decode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.decoder.Decoder.decode ( self,
 data 
)
+
+ +

Check on keyword and call the right decoder.

+
Parameters
+ + +
dataData for decoding
+
+
+
Returns
: Decoded data or None
+
40  def decode(self, data):
41  """!Check on keyword and call the right decoder
42 
43  @param data: Data for decoding
44 
45  @return: Decoded data or None"""
46  if "FMS:" in data:
47  logging.debug("found FMS")
49 
50  elif "ZVEI1:" in data:
51  logging.debug("found ZVEI")
53  if zvei.decode(data):
54  return self._getClientData(zvei.getDecoded())
55  return None
56 
57  elif "POCSAG" in data:
58  logging.debug("found POCSAG")
60 
61  else:
62  logging.warning("No data found")
63  return None
64 
65  return self._getClientData(dec.decode(data))
66 
POCSAG decoder class.
Definition: pocsag.py:22
+
ZVEI decoder class.
Definition: zvei.py:22
+
FMS decoder class.
Definition: fms.py:22
+
+
+
+ +

◆ _getClientData()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.decoder.Decoder._getClientData ( self,
 decoded 
)
+
+private
+
+ +

Add the client information to the decoded data.

+
Parameters
+ + +
decodedDecoded data
+
+
+
Returns
: Decoded data with client information
+
67  def _getClientData(self, decoded):
68  """!Add the client information to the decoded data
69 
70  @param decoded: Decoded data
71 
72  @return: Decoded data with client information"""
73  if decoded is None:
74  return None
75  decoded.update({"clientName": self.getConfig("Client", "Name"),
76  "clientVersion": "###",
77  "inputSource": self.getConfig("Server", "InputSource"),
78  "timestamp": time.time(),
79  "frequency": self.getConfig("Stick", "Frequency")})
80  return decoded
81 
+
+
+
The documentation for this class was generated from the following file:
    +
  • decoder.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.js b/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.js new file mode 100644 index 0000000..e4e20eb --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1decoder_1_1_decoder.js @@ -0,0 +1,7 @@ +var classboswatch_1_1decoder_1_1decoder_1_1_decoder = +[ + [ "__init__", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#ae15cb65a69572a1a59943550496f53c0", null ], + [ "decode", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#add39dbdb43ed0168c310457a7c1df493", null ], + [ "_getClientData", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#aa9fc1d1ae059e6b1f8f8a31d86d4fb9f", null ], + [ "config", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#adbb7498807175d67de1559c36b3f3dd2", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.html b/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.html new file mode 100644 index 0000000..1bde754 --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.html @@ -0,0 +1,235 @@ + + + + + + + +BOSWatch 3: boswatch.decoder.fms.Fms Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.decoder.fms.Fms Class Reference
+
+
+ +

FMS decoder class. + More...

+ + + + + + + + +

+Public Member Functions

+def __init__ (self)
 Create a new instance.
 
def decode (self, data)
 Decodes FMS. More...
 
+ + + + +

+Private Member Functions

def _validate (self, data, regex)
 Check if FMS is valid. More...
 
+

Detailed Description

+

FMS decoder class.

+

This class decodes FMS data. First step is to validate the data and check if the format is correct. In the last step a valid BOSWatch packet is created and returned

+

Member Function Documentation

+ +

◆ decode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.fms.Fms.decode ( self,
 data 
)
+
+ +

Decodes FMS.

+
Todo:
CRC check must be as config flag
+
Parameters
+ + +
dataFMS for decoding
+
+
+
Returns
BOSWatch FMS packet or None
+
34  def decode(self, data):
35  """!Decodes FMS
36 
37  @todo CRC check must be as config flag
38 
39  @param data: FMS for decoding
40 
41  @return BOSWatch FMS packet or None"""
42 
43  if "CRC correct" in data:
44  service = data[19]
45  country = data[36]
46  location = data[61:63]
47  vehicle = data[72:76]
48  status = data[84]
49  direction = data[101]
50  directionText = data[103:110]
51  tacticalInfo = data[114:117]
52  fms_id = service + country + location + vehicle + status + direction
53 
54  if self._validate(fms_id, "[0-9a-f]{8}[0-9a-f]{1}[01]{1}"):
55 
56  fms = {"type": "fms",
57  "fms": fms_id,
58  "service": service,
59  "country": country,
60  "location": location,
61  "vehilce": vehicle,
62  "status": status,
63  "direction": direction,
64  "directionText": directionText,
65  "tacticalInfo": tacticalInfo}
66 
67  logging.debug(fms)
68  return fms
69 
70  logging.warning("No valid data")
71  return None
72 
73  logging.warning("CRC Error")
74  return None
75 
+
+
+ +

◆ _validate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def boswatch.decoder.fms.Fms._validate ( self,
 data,
 regex 
)
+
+private
+
+ +

Check if FMS is valid.

+
Parameters
+ + + +
dataFMS to validate
regexRegex expression for validation
+
+
+
Returns
Status of the validation
+
76  def _validate(self, data, regex):
77  """!Check if FMS is valid
78 
79  @param data: FMS to validate
80  @param regex: Regex expression for validation
81 
82  @return Status of the validation"""
83  return re.search(regex, data)
84 
+
+
+
The documentation for this class was generated from the following file:
    +
  • fms.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.js b/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.js new file mode 100644 index 0000000..4adc48d --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1fms_1_1_fms.js @@ -0,0 +1,6 @@ +var classboswatch_1_1decoder_1_1fms_1_1_fms = +[ + [ "__init__", "classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6d2bf5793967e2cf755aa29d5d92670d", null ], + [ "decode", "classboswatch_1_1decoder_1_1fms_1_1_fms.html#a0b595db897f099237994da17f557451c", null ], + [ "_validate", "classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6df642ebc7d0ac9db8da602b1f1aee4c", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html b/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html new file mode 100644 index 0000000..962c852 --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html @@ -0,0 +1,235 @@ + + + + + + + +BOSWatch 3: boswatch.decoder.pocsag.Pocsag Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.decoder.pocsag.Pocsag Class Reference
+
+
+ +

POCSAG decoder class. + More...

+ + + + + + + + +

+Public Member Functions

+def __init__ (self)
 Create a new instance.
 
def decode (self, data)
 Decodes POCSAG. More...
 
+ + + + +

+Private Member Functions

def _validate (self, data, regex)
 Check if POCSAG is valid. More...
 
+

Detailed Description

+

POCSAG decoder class.

+

This class decodes POCSAG data. First step is to validate the data and check if the format is correct. In the last step a valid BOSWatch packet is created and returned

+

Member Function Documentation

+ +

◆ decode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.pocsag.Pocsag.decode ( self,
 data 
)
+
+ +

Decodes POCSAG.

+
Todo:
split complexe decoding in shorter functions
+
Parameters
+ + +
dataPOCSAG for decoding
+
+
+
Returns
BOSWatch POCSAG packet or None
+
34  def decode(self, data):
35  """!Decodes POCSAG
36 
37  @todo split complexe decoding in shorter functions
38 
39  @param data: POCSAG for decoding
40 
41  @return BOSWatch POCSAG packet or None"""
42  if "POCSAG512:" in data:
43  bitrate = 512
44  ric = data[20:27].replace(" ", "").zfill(7)
45  subric = str(int(data[39]) + 1)
46 
47  elif "POCSAG1200:" in data:
48  bitrate = 1200
49  ric = data[21:28].replace(" ", "").zfill(7)
50  subric = str(int(data[40]) + 1)
51 
52  elif "POCSAG2400:" in data:
53  bitrate = 2400
54  ric = data[21:28].replace(" ", "").zfill(7)
55  subric = str(int(data[40]) + 1)
56 
57  if self._validate(ric, "[0-9]{7}") and self._validate(subric, "[1-4]{1}"):
58  if "Alpha:" in data:
59  message = data.split('Alpha: ')[1].strip().replace('<NUL><NUL>', '').replace('<NUL>', '').replace('<NUL', '').replace('< NUL>', '').replace('<EOT>', '').strip()
60  else:
61  message = ""
62  subricText = subric.replace("1", "a").replace("2", "b").replace("3", "c").replace("4", "d")
63 
64  pocsag = {"type": "pocsag", "bitrate": bitrate, "ric": ric, "subric": subric, "subricText": subricText, "message": message}
65  logging.debug(pocsag)
66  return pocsag
67 
68  logging.warning("No valid data")
69  return None
70 
+
+
+ +

◆ _validate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def boswatch.decoder.pocsag.Pocsag._validate ( self,
 data,
 regex 
)
+
+private
+
+ +

Check if POCSAG is valid.

+
Parameters
+ + + +
dataPOCSAG to validate
regexRegex expression for validation
+
+
+
Returns
Status of the validation
+
71  def _validate(self, data, regex):
72  """!Check if POCSAG is valid
73 
74  @param data: POCSAG to validate
75  @param regex: Regex expression for validation
76 
77  @return Status of the validation"""
78  return re.search(regex, data)
79 
+
+
+
The documentation for this class was generated from the following file:
    +
  • pocsag.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.js b/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.js new file mode 100644 index 0000000..c7483bd --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.js @@ -0,0 +1,6 @@ +var classboswatch_1_1decoder_1_1pocsag_1_1_pocsag = +[ + [ "__init__", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a011a7f030f156ae2fe560461de759040", null ], + [ "decode", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#ab79c8c5e4eeb10107db544c4c806ef08", null ], + [ "_validate", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a6162a990f809806293ef3b996004635d", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.html b/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.html new file mode 100644 index 0000000..5586e85 --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.html @@ -0,0 +1,292 @@ + + + + + + + +BOSWatch 3: boswatch.decoder.zvei.Zvei Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.decoder.zvei.Zvei Class Reference
+
+
+ +

ZVEI decoder class. + More...

+ + + + + + + + + + +

+Public Member Functions

+def __init__ (self)
 Create a new instance.
 
def decode (self, data)
 Decodes ZVEI. More...
 
+def getDecoded (self)
 
+ + + + + + + +

+Private Member Functions

def _validate (self, data, regex)
 Check if ZVEI is valid. More...
 
def _replaceDoubleTone (self, data)
 Remove the doubleTone sign (here its the 'E') More...
 
+ + + +

+Private Attributes

_zvei
 
+

Detailed Description

+

ZVEI decoder class.

+

This class decodes ZVEI data. First step is to validate the data and check if the format is correct. After that the double-tone-sign 'E' is replaced. In the last step a valid BOSWatch packet is created and returned

+

Member Function Documentation

+ +

◆ decode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.zvei.Zvei.decode ( self,
 data 
)
+
+ +

Decodes ZVEI.

+
Parameters
+ + +
dataZVEI for decoding
+
+
+
Returns
True or False
+
34  def decode(self, data):
35  """!Decodes ZVEI
36 
37  @param data: ZVEI for decoding
38 
39  @return True or False"""
40  self._zvei = {"type": "zvei",
41  "zvei": data[7:12]}
42 
43  if self._validate(self._zvei["zvei"], "[0-9E]{5}"):
44  self._zvei["zvei"] = self._replaceDoubleTone(self._zvei["zvei"])
45  logging.debug(self._zvei)
46  return True
47 
48  logging.warning("No valid data")
49  return False
50 
+
+
+ +

◆ _validate()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
def boswatch.decoder.zvei.Zvei._validate ( self,
 data,
 regex 
)
+
+private
+
+ +

Check if ZVEI is valid.

+
Parameters
+ + + +
dataZVEI to validate
regexRegex expression for validation
+
+
+
Returns
True or False
+
54  def _validate(self, data, regex):
55  """!Check if ZVEI is valid
56 
57  @param data: ZVEI to validate
58  @param regex: Regex expression for validation
59 
60  @return True or False"""
61  return re.search(regex, data)
62 
+
+
+ +

◆ _replaceDoubleTone()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
def boswatch.decoder.zvei.Zvei._replaceDoubleTone ( self,
 data 
)
+
+private
+
+ +

Remove the doubleTone sign (here its the 'E')

+
Parameters
+ + +
dataZVEI for double tone sign replacement
+
+
+
Returns
Double Tone replaced ZVEI
+
63  def _replaceDoubleTone(self, data):
64  """!Remove the doubleTone sign (here its the 'E')
65 
66  @param data: ZVEI for double tone sign replacement
67 
68  @return Double Tone replaced ZVEI"""
69  if "E" in data:
70  data_old = data
71  for i in range(1, len(data)):
72  if data[i] == "E":
73  data = data.replace("E", data[i - 1], 1)
74  logging.debug("remove E: %s -> %s", data_old, data)
75  return data
76 
+
+
+
The documentation for this class was generated from the following file:
    +
  • zvei.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.js b/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.js new file mode 100644 index 0000000..c970994 --- /dev/null +++ b/_docu/html/classboswatch_1_1decoder_1_1zvei_1_1_zvei.js @@ -0,0 +1,9 @@ +var classboswatch_1_1decoder_1_1zvei_1_1_zvei = +[ + [ "__init__", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#af4b26213d6658508719b93488a4856e5", null ], + [ "decode", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#a022512d0e73daab5496cd6eeec71bd08", null ], + [ "getDecoded", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#aec63074e080a9a415e871e7ca2982be5", null ], + [ "_validate", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#aa0c221732f1feb54fc80ef9ba9eae403", null ], + [ "_replaceDoubleTone", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#ac470c7ddc6e7c87f186ad62d435561fe", null ], + [ "_zvei", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#a97a4c80368b8fd08c16fb7cdc11cdd3b", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.html b/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.html new file mode 100644 index 0000000..f727138 --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.html @@ -0,0 +1,279 @@ + + + + + + + +BOSWatch 3: boswatch.network.client.TCPClient Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.network.client.TCPClient Class Reference
+
+
+ +

TCP client class. + More...

+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, timeout=3)
 Create a new instance.
 
def connect (self, host="localhost", port=8080)
 Connect to the server. More...
 
def disconnect (self)
 Disconnect from the server. More...
 
def transmit (self, data)
 Send a data packet to the server. More...
 
def receive (self)
 Receive data from the server. More...
 
+ + + + + +

+Private Attributes

_timeout
 
_sock
 
+

Detailed Description

+

TCP client class.

+

Member Function Documentation

+ +

◆ connect()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def boswatch.network.client.TCPClient.connect ( self,
 host = "localhost",
 port = 8080 
)
+
+ +

Connect to the server.

+
Parameters
+ + + +
hostServer IP adress (localhost)
portServer Port (8080)
+
+
+
Returns
status as boolean
+
32  def connect(self, host="localhost", port=8080):
33  """!Connect to the server
34 
35  @param host: Server IP adress (localhost)
36  @param port: Server Port (8080)
37 
38  @return status as boolean"""
39  try:
40  self._sock = socket
41  self._sock.setdefaulttimeout(self._timeout)
42  self._sock = socket.create_connection((host, port))
43 
44  logging.debug("connected to " + str(host) + ":" + str(port))
45  return True
46  except ConnectionRefusedError:
47  logging.error("unable to connect because destination refused the connection")
48  return False
49  except: # pragma: no cover
50  logging.exception("cannot connect to " + str(host) + ":" + str(port))
51  return False
52 
+
+
+ +

◆ disconnect()

+ +
+
+ + + + + + + + +
def boswatch.network.client.TCPClient.disconnect ( self)
+
+ +

Disconnect from the server.

+
Returns
status as boolean
+
53  def disconnect(self):
54  """!Disconnect from the server
55 
56  @return status as boolean"""
57  try:
58  self._sock.close()
59  logging.debug("disconnected")
60  return True
61  except AttributeError:
62  logging.error("cannot disconnect - no connection established")
63  return False
64  except: # pragma: no cover
65  logging.exception("error while disconecting")
66  return False
67 
+
+
+ +

◆ transmit()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.network.client.TCPClient.transmit ( self,
 data 
)
+
+ +

Send a data packet to the server.

+
Parameters
+ + +
datadata to send to the server
+
+
+
Returns
status as boolean
+
68  def transmit(self, data):
69  """!Send a data packet to the server
70 
71  @param data: data to send to the server
72 
73  @return status as boolean"""
74  try:
75  logging.debug("trasmitting: " + data)
76  self._sock.sendall(bytes(data + "\n", "utf-8"))
77  logging.debug("trasmitted...")
78  return True
79  except AttributeError:
80  logging.error("cannot transmitt - no connection established")
81  return False
82  except: # pragma: no cover
83  logging.exception("error while transmitting")
84  return False
85 
+
+
+ +

◆ receive()

+ +
+
+ + + + + + + + +
def boswatch.network.client.TCPClient.receive ( self)
+
+ +

Receive data from the server.

+
Returns
received data
+
86  def receive(self):
87  """!Receive data from the server
88 
89  @return received data"""
90  try:
91  received = str(self._sock.recv(1024), "utf-8")
92  logging.debug("received: " + received)
93  return received
94  except AttributeError:
95  logging.error("cannot receive - no connection established")
96  return False
97  except: # pragma: no cover
98  logging.exception("error while receiving")
99  return False
100 
+
+
+
The documentation for this class was generated from the following file:
    +
  • client.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.js b/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.js new file mode 100644 index 0000000..0134ab9 --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1client_1_1_t_c_p_client.js @@ -0,0 +1,10 @@ +var classboswatch_1_1network_1_1client_1_1_t_c_p_client = +[ + [ "__init__", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a753e24926d2b86b302b4d5a1832e968d", null ], + [ "connect", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a269a5cc62bb8b4077c6f0d01d4e309f9", null ], + [ "disconnect", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a6bd414bfb8b3b6e7453f2ffa7b288979", null ], + [ "transmit", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae18958f9acbdbb7c9c2d2b5b4df9364c", null ], + [ "receive", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae84d2fa327a19535950d2f7c013b7e1f", null ], + [ "_timeout", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a990394e341a69aaddd00807c7d936bb9", null ], + [ "_sock", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a085df370df1ad97a2ea2b9a510590721", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html new file mode 100644 index 0000000..2b14966 --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html @@ -0,0 +1,154 @@ + + + + + + + +BOSWatch 3: boswatch.network.server.TCPHandler Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.network.server.TCPHandler Class Reference
+
+
+ +

RequestHandler class for our server. + More...

+ + + + + +

+Public Member Functions

def handle (self)
 Handles the request from an single client in a own thread. More...
 
+

Detailed Description

+

RequestHandler class for our server.

+

Member Function Documentation

+ +

◆ handle()

+ +
+
+ + + + + + + + +
def boswatch.network.server.TCPHandler.handle ( self)
+
+ +

Handles the request from an single client in a own thread.

+

Insert a request in the clients[] list and send a [ack]

+
27  def handle(self):
28  """!Handles the request from an single client in a own thread
29 
30  Insert a request in the clients[] list and send a [ack]"""
31  _data = 1
32  cur_thread = threading.current_thread()
33  req_name = str(cur_thread) + " " + self.client_address[0]
34 
35  try:
36  while _data:
37  _data = str(self.request.recv(1024).strip(), 'utf-8')
38  if _data is not "":
39  clients.insert(0, (self.client_address[0], (_data)))
40 
41  logging.debug(req_name + " recv: " + _data)
42 
43  logging.debug(req_name + " send: [ack]")
44  self.request.sendall(bytes("[ack]", "utf-8"))
45  self.request.close()
46  except (ConnectionResetError, ConnectionAbortedError): # pragma: no cover
47  logging.debug(req_name + " connection closed")
48  except: # pragma: no cover
49  logging.exception(req_name + " error while receiving")
50 
51 
+
+
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.js b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.js new file mode 100644 index 0000000..c906d3b --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_handler.js @@ -0,0 +1,4 @@ +var classboswatch_1_1network_1_1server_1_1_t_c_p_handler = +[ + [ "handle", "classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html#afe2d9a9365f886e80fbb3ee4fa85e644", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.html b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.html new file mode 100644 index 0000000..74247cb --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.html @@ -0,0 +1,265 @@ + + + + + + + +BOSWatch 3: boswatch.network.server.TCPServer Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.network.server.TCPServer Class Reference
+
+
+ +

TCP server class. + More...

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+def __init__ (self, timeout=3)
 Create a new instance.
 
def start (self, port=8080)
 Start a threaded TCP socket server. More...
 
def stop (self)
 Stops the TCP socket server. More...
 
def clientsConnected (self)
 Number of currently connected Clients. More...
 
def getData (self)
 Function to get the data packages from server must be polled by main program. More...
 
+def flushData (self)
 To flush all existing data in queue.
 
+ + + + + + + +

+Private Attributes

_timeout
 
_server
 
_server_thread
 
+

Detailed Description

+

TCP server class.

+

Member Function Documentation

+ +

◆ start()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def boswatch.network.server.TCPServer.start ( self,
 port = 8080 
)
+
+ +

Start a threaded TCP socket server.

+

Start a TCP Socket Server in a new thread that will then start one more thread for each client request. The ip adress for binding the server socket is always 'localhost'

+
Parameters
+ + +
portServer Port (8080)
+
+
+
Returns
status as boolean
+
62  def start(self, port=8080):
63  """!Start a threaded TCP socket server
64 
65  Start a TCP Socket Server in a new thread that will
66  then start one more thread for each client request.
67  The ip adress for binding the server socket is always 'localhost'
68 
69  @param port: Server Port (8080)
70 
71  @return status as boolean"""
72  try:
73  self._server = socketserver.ThreadingTCPServer(("localhost", port), TCPHandler)
74  self._server.timeout = self._timeout
75 
76  self.flushData()
77 
78  self._server_thread = threading.Thread(target=self._server.serve_forever)
79  self._server_thread.daemon = True
80  self._server_thread.start()
81  logging.debug("TCPServer started in Thread: " + self._server_thread.name)
82  return True
83  except: # pragma: no cover
84  logging.exception("cannot start the server")
85  return False
86 
+
+
+ +

◆ stop()

+ +
+
+ + + + + + + + +
def boswatch.network.server.TCPServer.stop ( self)
+
+ +

Stops the TCP socket server.

+
Returns
status as boolean
+
87  def stop(self):
88  """!Stops the TCP socket server
89 
90  @return status as boolean"""
91  try:
92  self._server.shutdown()
93  self._server_thread.join()
94  self._server.socket.close()
95  logging.debug("TCPServer stoped")
96  return True
97  except: # pragma: no cover
98  logging.exception("cannot stop the server")
99  return False
100 
+
+
+ +

◆ clientsConnected()

+ +
+
+ + + + + + + + +
def boswatch.network.server.TCPServer.clientsConnected ( self)
+
+ +

Number of currently connected Clients.

+
Todo:
works not safe atm
+
Returns
Connected clients
+
101  def clientsConnected(self): # pragma: no cover
102  """!Number of currently connected Clients
103 
104  @todo works not safe atm
105 
106  @return Connected clients"""
107  if threading.active_count() > 2:
108  # must substract the server() and the serve() Thread
109  return threading.active_count() - 2
110  else:
111  return 0
112 
+
+
+ +

◆ getData()

+ +
+
+ + + + + + + + +
def boswatch.network.server.TCPServer.getData ( self)
+
+ +

Function to get the data packages from server must be polled by main program.

+
Returns
Next data packet from intern queue
+
113  def getData(self):
114  """!Function to get the data packages from server
115  must be polled by main program
116 
117  @return Next data packet from intern queue"""
118  if clients:
119  message = clients.pop()
120  logging.debug("Get data from queue")
121  return message
122  return None
123 
+
+
+
The documentation for this class was generated from the following file:
    +
  • server.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.js b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.js new file mode 100644 index 0000000..1b47134 --- /dev/null +++ b/_docu/html/classboswatch_1_1network_1_1server_1_1_t_c_p_server.js @@ -0,0 +1,12 @@ +var classboswatch_1_1network_1_1server_1_1_t_c_p_server = +[ + [ "__init__", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a39d08376267ebba5f1306e77fd77ccc6", null ], + [ "start", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a3b311c5d86e829c45c5d494d27633bdb", null ], + [ "stop", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a427d9904084e9a4c4b2e51d54f6410c9", null ], + [ "clientsConnected", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a59b4eb3e8df63da81d3d5b824f9068b4", null ], + [ "getData", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#abeaaaf03fad1689604a79fc04d9830a1", null ], + [ "flushData", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a1c2addb2a19639987d121b2cd3ae54c9", null ], + [ "_timeout", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a34210569d9aeb0f83e23fda9ac6501c1", null ], + [ "_server", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a196dd011e76b9ffa269b1d7ae945317f", null ], + [ "_server_thread", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a069063419170444e452c49d4d3226d42", null ] +]; \ No newline at end of file diff --git a/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html b/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html new file mode 100644 index 0000000..04bee97 --- /dev/null +++ b/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html @@ -0,0 +1,133 @@ + + + + + + + +BOSWatch 3: boswatch.watchdog.watchdog.BWWatchdog Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
boswatch.watchdog.watchdog.BWWatchdog Class Reference
+
+
+ +

Class for an Watchdog to observe, if needed subprocesses still running. + More...

+ + + + + +

+Public Member Functions

+def __init__ (self)
 Create a new instance.
 
+

Detailed Description

+

Class for an Watchdog to observe, if needed subprocesses still running.

+

The documentation for this class was generated from the following file:
    +
  • watchdog.py
  • +
+
+
+ + + + diff --git a/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.js b/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.js new file mode 100644 index 0000000..ee8c441 --- /dev/null +++ b/_docu/html/classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.js @@ -0,0 +1,4 @@ +var classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog = +[ + [ "__init__", "classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html#a687a1e53b5fcccc58a2b39bbdc7f38ae", null ] +]; \ No newline at end of file diff --git a/_docu/html/classes.html b/_docu/html/classes.html new file mode 100644 index 0000000..2c8da97 --- /dev/null +++ b/_docu/html/classes.html @@ -0,0 +1,132 @@ + + + + + + + +BOSWatch 3: Data Structure Index + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Data Structure Index
+
+
+
b | c | d | f | p | t | z
+ + + + + + + + +
  b  
+
  d  
+
  p  
+
TCPHandler (boswatch.network.server)   
TCPServer (boswatch.network.server)   
BWWatchdog (boswatch.watchdog.watchdog)   Decoder (boswatch.decoder.decoder)   Pocsag (boswatch.decoder.pocsag)   
  z  
+
  c  
+
  f  
+
  t  
+
Zvei (boswatch.decoder.zvei)   
Config (boswatch.config)   Fms (boswatch.decoder.fms)   TCPClient (boswatch.network.client)   
+
b | c | d | f | p | t | z
+
+
+ + + + diff --git a/_docu/html/closed.png b/_docu/html/closed.png new file mode 100644 index 0000000..ca22860 Binary files /dev/null and b/_docu/html/closed.png differ diff --git a/_docu/html/dir_107bf879c709a2b1b9fafc30dbccce6f.html b/_docu/html/dir_107bf879c709a2b1b9fafc30dbccce6f.html new file mode 100644 index 0000000..c4e1491 --- /dev/null +++ b/_docu/html/dir_107bf879c709a2b1b9fafc30dbccce6f.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: watchdog Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
watchdog Directory Reference
+
+
+
+
+ + + + diff --git a/_docu/html/dir_2006f8608b07fda10f64d4c6574ce610.html b/_docu/html/dir_2006f8608b07fda10f64d4c6574ce610.html new file mode 100644 index 0000000..c0273d1 --- /dev/null +++ b/_docu/html/dir_2006f8608b07fda10f64d4c6574ce610.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: network Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
network Directory Reference
+
+
+
+
+ + + + diff --git a/_docu/html/dir_43da38551d4977a390038d31b18749ea.html b/_docu/html/dir_43da38551d4977a390038d31b18749ea.html new file mode 100644 index 0000000..d56eaa7 --- /dev/null +++ b/_docu/html/dir_43da38551d4977a390038d31b18749ea.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: decoder Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
decoder Directory Reference
+
+
+
+
+ + + + diff --git a/_docu/html/dir_4cd0c9eca83862460f0369248cfc2f5b.html b/_docu/html/dir_4cd0c9eca83862460f0369248cfc2f5b.html new file mode 100644 index 0000000..1a7cee0 --- /dev/null +++ b/_docu/html/dir_4cd0c9eca83862460f0369248cfc2f5b.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: utils Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utils Directory Reference
+
+
+
+
+ + + + diff --git a/_docu/html/dir_d4d240419cd9501cea0b05280f9ff763.html b/_docu/html/dir_d4d240419cd9501cea0b05280f9ff763.html new file mode 100644 index 0000000..7d765c5 --- /dev/null +++ b/_docu/html/dir_d4d240419cd9501cea0b05280f9ff763.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: filter Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
filter Directory Reference
+
+
+
+
+ + + + diff --git a/_docu/html/dir_f49b800a024456700a737074495380af.html b/_docu/html/dir_f49b800a024456700a737074495380af.html new file mode 100644 index 0000000..21a39be --- /dev/null +++ b/_docu/html/dir_f49b800a024456700a737074495380af.html @@ -0,0 +1,119 @@ + + + + + + + +BOSWatch 3: boswatch Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
boswatch Directory Reference
+
+
+ + +

+Directories

+
+
+ + + + diff --git a/_docu/html/doc.png b/_docu/html/doc.png new file mode 100644 index 0000000..e0808fa Binary files /dev/null and b/_docu/html/doc.png differ diff --git a/_docu/html/doxygen.css b/_docu/html/doxygen.css new file mode 100644 index 0000000..db26cc9 --- /dev/null +++ b/_docu/html/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 #7194D8; + color: #234382; + 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: #E8EDF8; + border: 1px solid #92ACE1; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #284D95; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #2F59AE; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #8AA6DF; + color: #ffffff; + border: 1px double #7092D8; +} + +.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: #FAFBFD; + border: 1px solid #B9CAEC; +} + +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: #E8EDF8; + font-weight: bold; + border: 1px solid #B9CAEC; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #E8EDF8; + border: 1px solid #B9CAEC; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EAEFF9; +} + +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: #F5F7FC; + border-left: 2px solid #8AA6DF; + 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 #92ACE1; +} + +th.dirtab { + background: #E8EDF8; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #325EB8; +} + +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: #F8F9FD; + 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: #2F59AE; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #98B1E3; + border-left: 1px solid #98B1E3; + border-right: 1px solid #98B1E3; + 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: #DDE5F5; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #2F59AE; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #E8EDF8; + border: 1px solid #92ACE1; + 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 #98B1E3; + border-left: 1px solid #98B1E3; + border-right: 1px solid #98B1E3; + padding: 6px 0px 6px 0px; + color: #182D58; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #D9E2F4; + /* 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 #98B1E3; + border-left: 1px solid #98B1E3; + border-right: 1px solid #98B1E3; + padding: 6px 10px 2px 10px; + background-color: #FAFBFD; + 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: #5981D1; + border-top:1px solid #3666C7; + border-left:1px solid #3666C7; + border-right:1px solid #B9CAEC; + border-bottom:1px solid #B9CAEC; + 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 #8AA6DF; + border-bottom: 1px solid #8AA6DF; + 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: #F5F7FC; +} + +.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: #284D95; +} + +.arrow { + color: #8AA6DF; + -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: #5981D1; + 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: #1B3466; +} + +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 #1D386C; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #244587; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #98B1E3; + 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 #98B1E3; + border-bottom: 1px solid #98B1E3; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #98B1E3; + /*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: #DDE5F5; + font-size: 90%; + color: #182D58; + 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 #98B1E3; +} + + +.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:#7496D9; + border:solid 1px #B6C8EB; + 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:#234384; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #1A3160; + 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:#4D78CE; +} + +.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:#234384; + 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: #F8F9FD; + margin: 0px; + border-bottom: 1px solid #B9CAEC; +} + +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 #3666C7; +} + +.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 #7B9BDB; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#213F7B; + 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: #F2F5FB; + border: 1px solid #D1DCF2; + 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: #2F59AE; + 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 #1D386C; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #1D386C; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #244587; + 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 #1D386C; + 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/_docu/html/doxygen.png b/_docu/html/doxygen.png new file mode 100644 index 0000000..372d6eb Binary files /dev/null and b/_docu/html/doxygen.png differ diff --git a/_docu/html/dynsections.js b/_docu/html/dynsections.js new file mode 100644 index 0000000..c1ce122 --- /dev/null +++ b/_docu/html/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 + + + + + + +BOSWatch 3: Data Fields + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ + + + + + diff --git a/_docu/html/functions_func.html b/_docu/html/functions_func.html new file mode 100644 index 0000000..c2ae8b4 --- /dev/null +++ b/_docu/html/functions_func.html @@ -0,0 +1,175 @@ + + + + + + + +BOSWatch 3: Data Fields - Functions + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ + + + + + diff --git a/_docu/html/hierarchy.html b/_docu/html/hierarchy.html new file mode 100644 index 0000000..8dc67c3 --- /dev/null +++ b/_docu/html/hierarchy.html @@ -0,0 +1,131 @@ + + + + + + + +BOSWatch 3: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + +
 CBaseRequestHandler
 Cboswatch.network.server.TCPHandlerRequestHandler class for our server
 Cboswatch.watchdog.watchdog.BWWatchdogClass for an Watchdog to observe, if needed subprocesses still running
 Cboswatch.config.ConfigConfig class
 Cboswatch.decoder.decoder.DecoderMain decoder class
 Cboswatch.decoder.fms.FmsFMS decoder class
 Cboswatch.decoder.pocsag.PocsagPOCSAG decoder class
 Cboswatch.network.client.TCPClientTCP client class
 CTCPServer
 Cboswatch.network.server.TCPServerTCP server class
 CThreadingMixIn
 Cboswatch.network.server.TCPServerTCP server class
 Cboswatch.decoder.zvei.ZveiZVEI decoder class
+
+
+
+ + + + diff --git a/_docu/html/hierarchy.js b/_docu/html/hierarchy.js new file mode 100644 index 0000000..6fdfcfa --- /dev/null +++ b/_docu/html/hierarchy.js @@ -0,0 +1,20 @@ +var hierarchy = +[ + [ "BaseRequestHandler", null, [ + [ "boswatch.network.server.TCPHandler", "classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html", null ] + ] ], + [ "boswatch.watchdog.watchdog.BWWatchdog", "classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html", null ], + [ "boswatch.config.Config", "classboswatch_1_1config_1_1_config.html", [ + [ "boswatch.decoder.decoder.Decoder", "classboswatch_1_1decoder_1_1decoder_1_1_decoder.html", null ] + ] ], + [ "boswatch.decoder.fms.Fms", "classboswatch_1_1decoder_1_1fms_1_1_fms.html", null ], + [ "boswatch.decoder.pocsag.Pocsag", "classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html", null ], + [ "boswatch.network.client.TCPClient", "classboswatch_1_1network_1_1client_1_1_t_c_p_client.html", null ], + [ "TCPServer", null, [ + [ "boswatch.network.server.TCPServer", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html", null ] + ] ], + [ "ThreadingMixIn", null, [ + [ "boswatch.network.server.TCPServer", "classboswatch_1_1network_1_1server_1_1_t_c_p_server.html", null ] + ] ], + [ "boswatch.decoder.zvei.Zvei", "classboswatch_1_1decoder_1_1zvei_1_1_zvei.html", null ] +]; \ No newline at end of file diff --git a/_docu/html/index.html b/_docu/html/index.html new file mode 100644 index 0000000..7f1a80a --- /dev/null +++ b/_docu/html/index.html @@ -0,0 +1,122 @@ + + + + + + + +BOSWatch 3: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BOSWatch 3 Documentation
+
+ +
+ + + + diff --git a/_docu/html/jquery.js b/_docu/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/_docu/html/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=$(' + + +
+
+
Changelog
+
+
+
+ + + + + diff --git a/_docu/html/md__r_e_a_d_m_e.html b/_docu/html/md__r_e_a_d_m_e.html new file mode 100644 index 0000000..5e09236 --- /dev/null +++ b/_docu/html/md__r_e_a_d_m_e.html @@ -0,0 +1,115 @@ + + + + + + + +BOSWatch 3: BOSWatch + + + + + + + + + + + + + + + +
+
+
+ + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
BOSWatch
+
+
+

Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG - multiple Plugin support - Forum: http://boswatch.de

+
+
+ + + + diff --git a/_docu/html/md_information_packet.html b/_docu/html/md_information_packet.html new file mode 100644 index 0000000..fb17bad --- /dev/null +++ b/_docu/html/md_information_packet.html @@ -0,0 +1,164 @@ + + + + + + + +BOSWatch 3: Format of the BOSWatch packets + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Format of the BOSWatch packets
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
field fms pocsag zvei description
clientName X X X name of the boswatch client instance
clientVersion X X X in case of new version, server can notify
inputSource X X X (rtl_fm, audio)
timestamp X X X
frequency X X X
type X X X (fms, pocsag, zvei)
bitrate X
ric X
subric X (1, 2, 3, 4)
subricText X (a, b, c, d)
message X
tone X 5-tone sequence
fms X
service X
country X
location X
vehicle X
status X
direction X
dirextionText X (Fhz->Lst, Lst->Fhz)
tacticalInfo X (I, II, III, IV)
descriptionShort X X X loaded from optional CSV file
descriptionLong X X X loaded from optional CSV file
+
+
+ + + + diff --git a/_docu/html/nav_f.png b/_docu/html/nav_f.png new file mode 100644 index 0000000..e865bca Binary files /dev/null and b/_docu/html/nav_f.png differ diff --git a/_docu/html/nav_g.png b/_docu/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/_docu/html/nav_g.png differ diff --git a/_docu/html/nav_h.png b/_docu/html/nav_h.png new file mode 100644 index 0000000..66886b8 Binary files /dev/null and b/_docu/html/nav_h.png differ diff --git a/_docu/html/navtree.css b/_docu/html/navtree.css new file mode 100644 index 0000000..9e21cd9 --- /dev/null +++ b/_docu/html/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:no-repeat; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F8F9FD; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/_docu/html/navtree.js b/_docu/html/navtree.js new file mode 100644 index 0000000..e310bc9 --- /dev/null +++ b/_docu/html/navtree.js @@ -0,0 +1,540 @@ +/* + @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 + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '▶'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +BOSWatch 3: Related Pages + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Related Pages
+
+
+
Here is a list of all related documentation pages:
+
+
+ + + + diff --git a/_docu/html/resize.js b/_docu/html/resize.js new file mode 100644 index 0000000..6617aee --- /dev/null +++ b/_docu/html/resize.js @@ -0,0 +1,136 @@ +/* + @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 initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/_docu/html/search/all_0.html b/_docu/html/search/all_0.html new file mode 100644 index 0000000..5125b94 --- /dev/null +++ b/_docu/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_0.js b/_docu/html/search/all_0.js new file mode 100644 index 0000000..a897beb --- /dev/null +++ b/_docu/html/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f',['__init__',['../classboswatch_1_1config_1_1_config.html#a5a7fd74fa397a8c96245b51f51aa6f6a',1,'boswatch.config.Config.__init__()'],['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#ae15cb65a69572a1a59943550496f53c0',1,'boswatch.decoder.decoder.Decoder.__init__()'],['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6d2bf5793967e2cf755aa29d5d92670d',1,'boswatch.decoder.fms.Fms.__init__()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a011a7f030f156ae2fe560461de759040',1,'boswatch.decoder.pocsag.Pocsag.__init__()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#af4b26213d6658508719b93488a4856e5',1,'boswatch.decoder.zvei.Zvei.__init__()'],['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a753e24926d2b86b302b4d5a1832e968d',1,'boswatch.network.client.TCPClient.__init__()'],['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a39d08376267ebba5f1306e77fd77ccc6',1,'boswatch.network.server.TCPServer.__init__()'],['../classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html#a687a1e53b5fcccc58a2b39bbdc7f38ae',1,'boswatch.watchdog.watchdog.BWWatchdog.__init__()']]], + ['_5fgetclientdata',['_getClientData',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#aa9fc1d1ae059e6b1f8f8a31d86d4fb9f',1,'boswatch::decoder::decoder::Decoder']]], + ['_5freplacedoubletone',['_replaceDoubleTone',['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#ac470c7ddc6e7c87f186ad62d435561fe',1,'boswatch::decoder::zvei::Zvei']]], + ['_5fvalidate',['_validate',['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6df642ebc7d0ac9db8da602b1f1aee4c',1,'boswatch.decoder.fms.Fms._validate()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a6162a990f809806293ef3b996004635d',1,'boswatch.decoder.pocsag.Pocsag._validate()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#aa0c221732f1feb54fc80ef9ba9eae403',1,'boswatch.decoder.zvei.Zvei._validate()']]] +]; diff --git a/_docu/html/search/all_1.html b/_docu/html/search/all_1.html new file mode 100644 index 0000000..b8ff871 --- /dev/null +++ b/_docu/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_1.js b/_docu/html/search/all_1.js new file mode 100644 index 0000000..4b63b24 --- /dev/null +++ b/_docu/html/search/all_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bwwatchdog',['BWWatchdog',['../classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html',1,'boswatch::watchdog::watchdog']]], + ['boswatch',['BOSWatch',['../md__r_e_a_d_m_e.html',1,'']]] +]; diff --git a/_docu/html/search/all_2.html b/_docu/html/search/all_2.html new file mode 100644 index 0000000..2f17735 --- /dev/null +++ b/_docu/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_2.js b/_docu/html/search/all_2.js new file mode 100644 index 0000000..3209381 --- /dev/null +++ b/_docu/html/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['clientsconnected',['clientsConnected',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a59b4eb3e8df63da81d3d5b824f9068b4',1,'boswatch::network::server::TCPServer']]], + ['config',['Config',['../classboswatch_1_1config_1_1_config.html',1,'boswatch::config']]], + ['connect',['connect',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a269a5cc62bb8b4077c6f0d01d4e309f9',1,'boswatch::network::client::TCPClient']]], + ['changelog',['Changelog',['../md__changelog.html',1,'']]] +]; diff --git a/_docu/html/search/all_3.html b/_docu/html/search/all_3.html new file mode 100644 index 0000000..a3e6f7d --- /dev/null +++ b/_docu/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_3.js b/_docu/html/search/all_3.js new file mode 100644 index 0000000..f1b0aef --- /dev/null +++ b/_docu/html/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['decode',['decode',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#add39dbdb43ed0168c310457a7c1df493',1,'boswatch.decoder.decoder.Decoder.decode()'],['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a0b595db897f099237994da17f557451c',1,'boswatch.decoder.fms.Fms.decode()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#ab79c8c5e4eeb10107db544c4c806ef08',1,'boswatch.decoder.pocsag.Pocsag.decode()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#a022512d0e73daab5496cd6eeec71bd08',1,'boswatch.decoder.zvei.Zvei.decode()']]], + ['decoder',['Decoder',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html',1,'boswatch::decoder::decoder']]], + ['disconnect',['disconnect',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a6bd414bfb8b3b6e7453f2ffa7b288979',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/all_4.html b/_docu/html/search/all_4.html new file mode 100644 index 0000000..6452295 --- /dev/null +++ b/_docu/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_4.js b/_docu/html/search/all_4.js new file mode 100644 index 0000000..44c139e --- /dev/null +++ b/_docu/html/search/all_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['flushdata',['flushData',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a1c2addb2a19639987d121b2cd3ae54c9',1,'boswatch::network::server::TCPServer']]], + ['fms',['Fms',['../classboswatch_1_1decoder_1_1fms_1_1_fms.html',1,'boswatch::decoder::fms']]], + ['format_20of_20the_20boswatch_20packets',['Format of the BOSWatch packets',['../md_information_packet.html',1,'']]] +]; diff --git a/_docu/html/search/all_5.html b/_docu/html/search/all_5.html new file mode 100644 index 0000000..e59e1d5 --- /dev/null +++ b/_docu/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_5.js b/_docu/html/search/all_5.js new file mode 100644 index 0000000..8e69bcf --- /dev/null +++ b/_docu/html/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getconfig',['getConfig',['../classboswatch_1_1config_1_1_config.html#ae8c521d735a864121ffb04f95bbc118e',1,'boswatch::config::Config']]], + ['getdata',['getData',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#abeaaaf03fad1689604a79fc04d9830a1',1,'boswatch::network::server::TCPServer']]] +]; diff --git a/_docu/html/search/all_6.html b/_docu/html/search/all_6.html new file mode 100644 index 0000000..f75a754 --- /dev/null +++ b/_docu/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_6.js b/_docu/html/search/all_6.js new file mode 100644 index 0000000..6fefccf --- /dev/null +++ b/_docu/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handle',['handle',['../classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html#afe2d9a9365f886e80fbb3ee4fa85e644',1,'boswatch::network::server::TCPHandler']]] +]; diff --git a/_docu/html/search/all_7.html b/_docu/html/search/all_7.html new file mode 100644 index 0000000..88acd94 --- /dev/null +++ b/_docu/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_7.js b/_docu/html/search/all_7.js new file mode 100644 index 0000000..7bd0c67 --- /dev/null +++ b/_docu/html/search/all_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loadconfig',['loadConfig',['../classboswatch_1_1config_1_1_config.html#a24771882fd22b6c93f0924772199e6f7',1,'boswatch::config::Config']]] +]; diff --git a/_docu/html/search/all_8.html b/_docu/html/search/all_8.html new file mode 100644 index 0000000..b74d5fd --- /dev/null +++ b/_docu/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_8.js b/_docu/html/search/all_8.js new file mode 100644 index 0000000..9a19cd3 --- /dev/null +++ b/_docu/html/search/all_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pocsag',['Pocsag',['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html',1,'boswatch::decoder::pocsag']]] +]; diff --git a/_docu/html/search/all_9.html b/_docu/html/search/all_9.html new file mode 100644 index 0000000..95e88dd --- /dev/null +++ b/_docu/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_9.js b/_docu/html/search/all_9.js new file mode 100644 index 0000000..5631c84 --- /dev/null +++ b/_docu/html/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['receive',['receive',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae84d2fa327a19535950d2f7c013b7e1f',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/all_a.html b/_docu/html/search/all_a.html new file mode 100644 index 0000000..3148a8e --- /dev/null +++ b/_docu/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_a.js b/_docu/html/search/all_a.js new file mode 100644 index 0000000..b49db4f --- /dev/null +++ b/_docu/html/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['start',['start',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a3b311c5d86e829c45c5d494d27633bdb',1,'boswatch::network::server::TCPServer']]], + ['stop',['stop',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a427d9904084e9a4c4b2e51d54f6410c9',1,'boswatch::network::server::TCPServer']]] +]; diff --git a/_docu/html/search/all_b.html b/_docu/html/search/all_b.html new file mode 100644 index 0000000..f2a3c8d --- /dev/null +++ b/_docu/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_b.js b/_docu/html/search/all_b.js new file mode 100644 index 0000000..dfd5423 --- /dev/null +++ b/_docu/html/search/all_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['tcpclient',['TCPClient',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html',1,'boswatch::network::client']]], + ['tcphandler',['TCPHandler',['../classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html',1,'boswatch::network::server']]], + ['tcpserver',['TCPServer',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html',1,'boswatch::network::server']]], + ['todo_20list',['Todo List',['../todo.html',1,'']]], + ['transmit',['transmit',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae18958f9acbdbb7c9c2d2b5b4df9364c',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/all_c.html b/_docu/html/search/all_c.html new file mode 100644 index 0000000..6376810 --- /dev/null +++ b/_docu/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/all_c.js b/_docu/html/search/all_c.js new file mode 100644 index 0000000..d9dbe1f --- /dev/null +++ b/_docu/html/search/all_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zvei',['Zvei',['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html',1,'boswatch::decoder::zvei']]] +]; diff --git a/_docu/html/search/classes_0.html b/_docu/html/search/classes_0.html new file mode 100644 index 0000000..e935fdf --- /dev/null +++ b/_docu/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_0.js b/_docu/html/search/classes_0.js new file mode 100644 index 0000000..bc3754d --- /dev/null +++ b/_docu/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bwwatchdog',['BWWatchdog',['../classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html',1,'boswatch::watchdog::watchdog']]] +]; diff --git a/_docu/html/search/classes_1.html b/_docu/html/search/classes_1.html new file mode 100644 index 0000000..3df6e80 --- /dev/null +++ b/_docu/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_1.js b/_docu/html/search/classes_1.js new file mode 100644 index 0000000..276cf72 --- /dev/null +++ b/_docu/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['config',['Config',['../classboswatch_1_1config_1_1_config.html',1,'boswatch::config']]] +]; diff --git a/_docu/html/search/classes_2.html b/_docu/html/search/classes_2.html new file mode 100644 index 0000000..028694f --- /dev/null +++ b/_docu/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_2.js b/_docu/html/search/classes_2.js new file mode 100644 index 0000000..654b8f6 --- /dev/null +++ b/_docu/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['decoder',['Decoder',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html',1,'boswatch::decoder::decoder']]] +]; diff --git a/_docu/html/search/classes_3.html b/_docu/html/search/classes_3.html new file mode 100644 index 0000000..2b1abe3 --- /dev/null +++ b/_docu/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_3.js b/_docu/html/search/classes_3.js new file mode 100644 index 0000000..f0c4c19 --- /dev/null +++ b/_docu/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fms',['Fms',['../classboswatch_1_1decoder_1_1fms_1_1_fms.html',1,'boswatch::decoder::fms']]] +]; diff --git a/_docu/html/search/classes_4.html b/_docu/html/search/classes_4.html new file mode 100644 index 0000000..8735214 --- /dev/null +++ b/_docu/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_4.js b/_docu/html/search/classes_4.js new file mode 100644 index 0000000..9a19cd3 --- /dev/null +++ b/_docu/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pocsag',['Pocsag',['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html',1,'boswatch::decoder::pocsag']]] +]; diff --git a/_docu/html/search/classes_5.html b/_docu/html/search/classes_5.html new file mode 100644 index 0000000..ba8b1c6 --- /dev/null +++ b/_docu/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_5.js b/_docu/html/search/classes_5.js new file mode 100644 index 0000000..e3af5fd --- /dev/null +++ b/_docu/html/search/classes_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tcpclient',['TCPClient',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html',1,'boswatch::network::client']]], + ['tcphandler',['TCPHandler',['../classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html',1,'boswatch::network::server']]], + ['tcpserver',['TCPServer',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html',1,'boswatch::network::server']]] +]; diff --git a/_docu/html/search/classes_6.html b/_docu/html/search/classes_6.html new file mode 100644 index 0000000..f585093 --- /dev/null +++ b/_docu/html/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/classes_6.js b/_docu/html/search/classes_6.js new file mode 100644 index 0000000..d9dbe1f --- /dev/null +++ b/_docu/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['zvei',['Zvei',['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html',1,'boswatch::decoder::zvei']]] +]; diff --git a/_docu/html/search/close.png b/_docu/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/_docu/html/search/close.png differ diff --git a/_docu/html/search/functions_0.html b/_docu/html/search/functions_0.html new file mode 100644 index 0000000..0539c8c --- /dev/null +++ b/_docu/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_0.js b/_docu/html/search/functions_0.js new file mode 100644 index 0000000..a897beb --- /dev/null +++ b/_docu/html/search/functions_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f',['__init__',['../classboswatch_1_1config_1_1_config.html#a5a7fd74fa397a8c96245b51f51aa6f6a',1,'boswatch.config.Config.__init__()'],['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#ae15cb65a69572a1a59943550496f53c0',1,'boswatch.decoder.decoder.Decoder.__init__()'],['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6d2bf5793967e2cf755aa29d5d92670d',1,'boswatch.decoder.fms.Fms.__init__()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a011a7f030f156ae2fe560461de759040',1,'boswatch.decoder.pocsag.Pocsag.__init__()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#af4b26213d6658508719b93488a4856e5',1,'boswatch.decoder.zvei.Zvei.__init__()'],['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a753e24926d2b86b302b4d5a1832e968d',1,'boswatch.network.client.TCPClient.__init__()'],['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a39d08376267ebba5f1306e77fd77ccc6',1,'boswatch.network.server.TCPServer.__init__()'],['../classboswatch_1_1watchdog_1_1watchdog_1_1_b_w_watchdog.html#a687a1e53b5fcccc58a2b39bbdc7f38ae',1,'boswatch.watchdog.watchdog.BWWatchdog.__init__()']]], + ['_5fgetclientdata',['_getClientData',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#aa9fc1d1ae059e6b1f8f8a31d86d4fb9f',1,'boswatch::decoder::decoder::Decoder']]], + ['_5freplacedoubletone',['_replaceDoubleTone',['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#ac470c7ddc6e7c87f186ad62d435561fe',1,'boswatch::decoder::zvei::Zvei']]], + ['_5fvalidate',['_validate',['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a6df642ebc7d0ac9db8da602b1f1aee4c',1,'boswatch.decoder.fms.Fms._validate()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#a6162a990f809806293ef3b996004635d',1,'boswatch.decoder.pocsag.Pocsag._validate()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#aa0c221732f1feb54fc80ef9ba9eae403',1,'boswatch.decoder.zvei.Zvei._validate()']]] +]; diff --git a/_docu/html/search/functions_1.html b/_docu/html/search/functions_1.html new file mode 100644 index 0000000..4878b3d --- /dev/null +++ b/_docu/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_1.js b/_docu/html/search/functions_1.js new file mode 100644 index 0000000..90de278 --- /dev/null +++ b/_docu/html/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['clientsconnected',['clientsConnected',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a59b4eb3e8df63da81d3d5b824f9068b4',1,'boswatch::network::server::TCPServer']]], + ['connect',['connect',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a269a5cc62bb8b4077c6f0d01d4e309f9',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/functions_2.html b/_docu/html/search/functions_2.html new file mode 100644 index 0000000..67d2a39 --- /dev/null +++ b/_docu/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_2.js b/_docu/html/search/functions_2.js new file mode 100644 index 0000000..8a47dd5 --- /dev/null +++ b/_docu/html/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['decode',['decode',['../classboswatch_1_1decoder_1_1decoder_1_1_decoder.html#add39dbdb43ed0168c310457a7c1df493',1,'boswatch.decoder.decoder.Decoder.decode()'],['../classboswatch_1_1decoder_1_1fms_1_1_fms.html#a0b595db897f099237994da17f557451c',1,'boswatch.decoder.fms.Fms.decode()'],['../classboswatch_1_1decoder_1_1pocsag_1_1_pocsag.html#ab79c8c5e4eeb10107db544c4c806ef08',1,'boswatch.decoder.pocsag.Pocsag.decode()'],['../classboswatch_1_1decoder_1_1zvei_1_1_zvei.html#a022512d0e73daab5496cd6eeec71bd08',1,'boswatch.decoder.zvei.Zvei.decode()']]], + ['disconnect',['disconnect',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#a6bd414bfb8b3b6e7453f2ffa7b288979',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/functions_3.html b/_docu/html/search/functions_3.html new file mode 100644 index 0000000..1f0eedb --- /dev/null +++ b/_docu/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_3.js b/_docu/html/search/functions_3.js new file mode 100644 index 0000000..61318eb --- /dev/null +++ b/_docu/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flushdata',['flushData',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a1c2addb2a19639987d121b2cd3ae54c9',1,'boswatch::network::server::TCPServer']]] +]; diff --git a/_docu/html/search/functions_4.html b/_docu/html/search/functions_4.html new file mode 100644 index 0000000..c5bf87a --- /dev/null +++ b/_docu/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_4.js b/_docu/html/search/functions_4.js new file mode 100644 index 0000000..8e69bcf --- /dev/null +++ b/_docu/html/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['getconfig',['getConfig',['../classboswatch_1_1config_1_1_config.html#ae8c521d735a864121ffb04f95bbc118e',1,'boswatch::config::Config']]], + ['getdata',['getData',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#abeaaaf03fad1689604a79fc04d9830a1',1,'boswatch::network::server::TCPServer']]] +]; diff --git a/_docu/html/search/functions_5.html b/_docu/html/search/functions_5.html new file mode 100644 index 0000000..a34446c --- /dev/null +++ b/_docu/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_5.js b/_docu/html/search/functions_5.js new file mode 100644 index 0000000..6fefccf --- /dev/null +++ b/_docu/html/search/functions_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['handle',['handle',['../classboswatch_1_1network_1_1server_1_1_t_c_p_handler.html#afe2d9a9365f886e80fbb3ee4fa85e644',1,'boswatch::network::server::TCPHandler']]] +]; diff --git a/_docu/html/search/functions_6.html b/_docu/html/search/functions_6.html new file mode 100644 index 0000000..6fd4b1f --- /dev/null +++ b/_docu/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_6.js b/_docu/html/search/functions_6.js new file mode 100644 index 0000000..7bd0c67 --- /dev/null +++ b/_docu/html/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loadconfig',['loadConfig',['../classboswatch_1_1config_1_1_config.html#a24771882fd22b6c93f0924772199e6f7',1,'boswatch::config::Config']]] +]; diff --git a/_docu/html/search/functions_7.html b/_docu/html/search/functions_7.html new file mode 100644 index 0000000..6e09abf --- /dev/null +++ b/_docu/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_7.js b/_docu/html/search/functions_7.js new file mode 100644 index 0000000..5631c84 --- /dev/null +++ b/_docu/html/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['receive',['receive',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae84d2fa327a19535950d2f7c013b7e1f',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/functions_8.html b/_docu/html/search/functions_8.html new file mode 100644 index 0000000..d59ea97 --- /dev/null +++ b/_docu/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_8.js b/_docu/html/search/functions_8.js new file mode 100644 index 0000000..b49db4f --- /dev/null +++ b/_docu/html/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['start',['start',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a3b311c5d86e829c45c5d494d27633bdb',1,'boswatch::network::server::TCPServer']]], + ['stop',['stop',['../classboswatch_1_1network_1_1server_1_1_t_c_p_server.html#a427d9904084e9a4c4b2e51d54f6410c9',1,'boswatch::network::server::TCPServer']]] +]; diff --git a/_docu/html/search/functions_9.html b/_docu/html/search/functions_9.html new file mode 100644 index 0000000..5ccec42 --- /dev/null +++ b/_docu/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/functions_9.js b/_docu/html/search/functions_9.js new file mode 100644 index 0000000..1c982b3 --- /dev/null +++ b/_docu/html/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['transmit',['transmit',['../classboswatch_1_1network_1_1client_1_1_t_c_p_client.html#ae18958f9acbdbb7c9c2d2b5b4df9364c',1,'boswatch::network::client::TCPClient']]] +]; diff --git a/_docu/html/search/mag_sel.png b/_docu/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/_docu/html/search/mag_sel.png differ diff --git a/_docu/html/search/nomatches.html b/_docu/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/_docu/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/_docu/html/search/pages_0.html b/_docu/html/search/pages_0.html new file mode 100644 index 0000000..d752858 --- /dev/null +++ b/_docu/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/pages_0.js b/_docu/html/search/pages_0.js new file mode 100644 index 0000000..ab694b0 --- /dev/null +++ b/_docu/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['boswatch',['BOSWatch',['../md__r_e_a_d_m_e.html',1,'']]] +]; diff --git a/_docu/html/search/pages_1.html b/_docu/html/search/pages_1.html new file mode 100644 index 0000000..924fb48 --- /dev/null +++ b/_docu/html/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/pages_1.js b/_docu/html/search/pages_1.js new file mode 100644 index 0000000..6fb0a10 --- /dev/null +++ b/_docu/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['changelog',['Changelog',['../md__changelog.html',1,'']]] +]; diff --git a/_docu/html/search/pages_2.html b/_docu/html/search/pages_2.html new file mode 100644 index 0000000..ffc6d92 --- /dev/null +++ b/_docu/html/search/pages_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/pages_2.js b/_docu/html/search/pages_2.js new file mode 100644 index 0000000..1c7932c --- /dev/null +++ b/_docu/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['format_20of_20the_20boswatch_20packets',['Format of the BOSWatch packets',['../md_information_packet.html',1,'']]] +]; diff --git a/_docu/html/search/pages_3.html b/_docu/html/search/pages_3.html new file mode 100644 index 0000000..f374624 --- /dev/null +++ b/_docu/html/search/pages_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/_docu/html/search/pages_3.js b/_docu/html/search/pages_3.js new file mode 100644 index 0000000..441b2de --- /dev/null +++ b/_docu/html/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['todo_20list',['Todo List',['../todo.html',1,'']]] +]; diff --git a/_docu/html/search/search.css b/_docu/html/search/search.css new file mode 100644 index 0000000..54a3aab --- /dev/null +++ b/_docu/html/search/search.css @@ -0,0 +1,273 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 0px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; + display: inline; + position: absolute; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #7B9BDB; + background-color: #F8F9FD; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #284D95; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EAEFF9; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #2C53A2; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #2C53A2; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #EDF1FA; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/_docu/html/search/search.js b/_docu/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/_docu/html/search/search.js @@ -0,0 +1,814 @@ +/* + @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 convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; eli>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 diff --git a/_docu/html/todo.html b/_docu/html/todo.html new file mode 100644 index 0000000..47fdae0 --- /dev/null +++ b/_docu/html/todo.html @@ -0,0 +1,122 @@ + + + + + + + +BOSWatch 3: Todo List + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
BOSWatch 3 +
+
Python Script to receive and decode German BOS Information with rtl_fm and multimon-NG
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Todo List
+
+
+
+
Global boswatch.decoder.fms.Fms.decode (self, data)
+
CRC check must be as config flag
+
Global boswatch.decoder.pocsag.Pocsag.decode (self, data)
+
split complexe decoding in shorter functions
+
Global boswatch.network.server.TCPServer.clientsConnected (self)
+
works not safe atm
+
+
+
+ + + + diff --git a/information/packet.md b/information/packet.md new file mode 100644 index 0000000..44d69ed --- /dev/null +++ b/information/packet.md @@ -0,0 +1,172 @@ +## Format of the BOSWatch packets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fieldfmspocsagzveidescription
clientNameXXXname of the boswatch client instance
clientVersionXXXin case of new version, server can notify
inputSourceXXX(rtl_fm, audio)
timestampXXX
frequencyXXX
typeXXX(fms, pocsag, zvei)
bitrateX
ricX
subricX(1, 2, 3, 4)
subricTextX(a, b, c, d)
messageX
toneX5-tone sequence
fmsX
serviceX
countryX
locationX
vehicleX
statusX
directionX
dirextionTextX(Fhz->Lst, Lst->Fhz)
tacticalInfoX(I, II, III, IV)
descriptionShortXXXloaded from optional CSV file
descriptionLongXXXloaded from optional CSV file
diff --git a/logo/bw3.png b/logo/bw3.png new file mode 100644 index 0000000..b229bbf Binary files /dev/null and b/logo/bw3.png differ