diff --git a/README.md b/README.md index c29597b..6055bb7 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,7 @@ The development server serves everything at `http://localhost:8774`. Depending on when your bttn was built, it may have shipped with an older Wi-Fi module firmware. It's recommended to upgrade this firmware, and the process is stable and safe, but as with all things, your mileage may vary. -As of this writing, version 3.5.3 is available and brings many improvements over older versions. +As of this writing, version 3.6 is available and brings many improvements over older versions. See `ReleaseNotes.pdf` for each firmware version to see what improvements have been made. #### Updating the Wi-Fi module @@ -269,12 +269,12 @@ Download the latest Wi-Fi module firmware from [here](https://my.st.com/content/ Unzip it and locate the module firmware version you wish to use. For our example, we've chosen: -> SPWF01S-170111-665d284-RELEASE-main.ota +> SPWF01S-180621-5f9a5a0-RELEASE-main.ota Move the firmware into the `ota` folder: ```console -$ mv ~/Downloads/STSW-WIFI001/Rel.\ 3.5.3/OTA/SPWF01S-170111-665d284-RELEASE-main.ota public/ota/ +$ mv ~/Downloads/STSW-WIFI001/Rel.\ 3.6/OTA/SPWF01S-180621-5f9a5a0-RELEASE-main.ota public/ota/ ``` Run the included web server (more on this in [Development server](#development-server)): diff --git a/cmd/openbttn/main.go b/cmd/openbttn/main.go index bd492cb..1421b63 100644 --- a/cmd/openbttn/main.go +++ b/cmd/openbttn/main.go @@ -141,6 +141,9 @@ func otaHandler(otaPath string) func(w http.ResponseWriter, r *http.Request) { n, err := f.Read(b) if err == io.EOF { keepGoing = false + if n == 0 { + break + } } else if err != nil { panic(err) } @@ -149,12 +152,20 @@ func otaHandler(otaPath string) func(w http.ResponseWriter, r *http.Request) { io.CopyN(w, content, int64(n)) numBytes += n - // Pause 300 ms between chunks to give more + log.Printf("Sent %d/%s OTA bytes in %v", numBytes, size, time.Now().Sub(start)) + + // Pause a bit between chunks to give some // time for the module to store each chunk. - time.Sleep(300 * time.Millisecond) + delay := 300 * time.Millisecond + select { + case <-r.Context().Done(): + log.Printf("Client disconnected, sent %d/%s OTA bytes in %v", numBytes, size, time.Now().Sub(start)) + return + case <-time.After(delay): + } } - log.Printf("Sent %d/%s OTA bytes in %v", numBytes, size, time.Now().Sub(start)) + log.Println("OTA complete!") } } diff --git a/libopencm3 b/libopencm3 index 3922cc7..6b0fd86 160000 --- a/libopencm3 +++ b/libopencm3 @@ -1 +1 @@ -Subproject commit 3922cc7d3ea362b816cc1de6d3287375afbe58aa +Subproject commit 6b0fd864a1f9ff444c1dcc412d5e25965f6b60c1 diff --git a/public/openbttn/firstset.html b/public/openbttn/firstset.html index cda0d11..71bc4fd 100644 --- a/public/openbttn/firstset.html +++ b/public/openbttn/firstset.html @@ -18,7 +18,7 @@

Firmware Upgrade (SPWF01SA)

- + diff --git a/public/openbttn/firstset.js b/public/openbttn/firstset.js index b701066..3943f30 100644 --- a/public/openbttn/firstset.js +++ b/public/openbttn/firstset.js @@ -61,7 +61,7 @@ function getFirmwareVersion(data) { function checkFirmwareVersion({ date, commit }) { if (date < 141106) { document.getElementById('fw-form').innerHTML = '

Firmware is too old for OTA update.

'; - } else if (date < 170111) { + } else if (date < 180621) { document.getElementById('fw').classList.remove('hidden'); } document.getElementById('fw-ver').textContent = date + '-' + commit; diff --git a/public/openbttn/make.sh b/public/openbttn/make.sh index 3114d8e..863e90c 100755 --- a/public/openbttn/make.sh +++ b/public/openbttn/make.sh @@ -32,6 +32,10 @@ path=($SCRIPT/node_modules/.bin $path) done print + + data_c='' + data_h_size='' + data_h_extern='' for html in *.html; do gzip -9 $html xxd -i $html.gz > $html.xxd @@ -39,22 +43,33 @@ path=($SCRIPT/node_modules/.bin $path) name=$(head -n1 $html.c) name=${(j..)${(Cs._.)${${name#unsigned char }%\[*}}} - name="const uint8_t g_Data${name}[] = {" - { print $name; tail -n +2 $html.c } >> data.c + name="const uint8_t g_Data${name}[]" + data_c+="$(print "$name = {"; tail -n +2 $html.c)"$'\n' + data_h_extern+="extern ${name};"$'\n' size=$(grep "^unsigned int" $html.xxd) sizeNum=${${size#*\= }%;} size=${(U)${${size#unsigned int }%_len \=*}} - size="#define DATA_${size}_LENGTH ${sizeNum}" - print $size >> data.h + data_h_size+="#define DATA_${size}_LENGTH ${sizeNum}"$'\n' done - { - cat data.h - cat data.c - } | pbcopy - pbpaste -) + cat < $SCRIPT/../../src/data.c +#include + +#include "data.h" +${data_c} +EOF + cat < $SCRIPT/../../src/data.h +#ifndef DATA_H +#define DATA_H + +#include + +${data_h_size} +${data_h_extern} +#endif /* DATA_H */ +EOF +) rm -r $TMP diff --git a/public/openbttn/package.json b/public/openbttn/package.json index ad76c50..57b5836 100644 --- a/public/openbttn/package.json +++ b/public/openbttn/package.json @@ -1,7 +1,10 @@ { "devDependencies": { "html-inline": "^1.2.0", - "html-minifier": "^3.1.0", + "html-minifier": "^3.5.20", "uglify-js": "github:mishoo/UglifyJS2#harmony" + }, + "dependencies": { + "uglify-es": "github:mishoo/UglifyJS2#harmony" } } diff --git a/public/openbttn/yarn.lock b/public/openbttn/yarn.lock index c704924..ecf6b2f 100644 --- a/public/openbttn/yarn.lock +++ b/public/openbttn/yarn.lock @@ -5,68 +5,78 @@ camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= dependencies: no-case "^2.2.0" upper-case "^1.1.1" -clean-css@4.1.x: - version "4.1.9" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.9.tgz#35cee8ae7687a49b98034f70de00c4edd3826301" +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== dependencies: - source-map "0.5.x" + source-map "~0.6.0" -commander@2.12.x: - version "2.12.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.12.2.tgz#0f5946c427ed9ec0d91a46bb9def53e54650e555" +commander@2.17.x, commander@~2.17.1: + version "2.17.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== -commander@~2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +commander@~2.14.1: + version "2.14.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" + integrity sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw== core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= cssauron@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + integrity sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg= dependencies: through X.X.X duplexer2@~0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= dependencies: readable-stream "~1.1.9" he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= html-inline@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/html-inline/-/html-inline-1.2.0.tgz#7854946a6f5c3122b993b81d3d37d6bd0600bec1" + integrity sha1-eFSUam9cMSK5k7gdPTfWvQYAvsE= dependencies: minimist "~1.1.0" through2 "~0.6.3" trumpet "~1.7.0" -html-minifier@^3.1.0: - version "3.5.8" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.8.tgz#5ccdb1f73a0d654e6090147511f6e6b2ee312700" +html-minifier@^3.5.20: + version "3.5.20" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.20.tgz#7b19fd3caa0cb79f7cde5ee5c3abdf8ecaa6bb14" + integrity sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA== dependencies: camel-case "3.0.x" - clean-css "4.1.x" - commander "2.12.x" + clean-css "4.2.x" + commander "2.17.x" he "1.1.x" - ncname "1.0.x" param-case "2.1.x" relateurl "0.2.x" - uglify-js "3.3.x" + uglify-js "3.4.x" html-select@^2.3.5: version "2.3.24" resolved "https://registry.yarnpkg.com/html-select/-/html-select-2.3.24.tgz#46ad6d712e732cf31c6739d5d0110a5fabf17585" + integrity sha1-Rq1tcS5zLPMcZznV0BEKX6vxdYU= dependencies: cssauron "^1.1.0" duplexer2 "~0.0.2" @@ -80,6 +90,7 @@ html-select@^2.3.5: html-tokenize@^1.1.1: version "1.2.5" resolved "https://registry.yarnpkg.com/html-tokenize/-/html-tokenize-1.2.5.tgz#7e5ba99ecb51ef906ec9a7fcdee6ca3267c7897e" + integrity sha1-flupnstR75Buyaf83ubKMmfHiX4= dependencies: inherits "~2.0.1" minimist "~0.0.8" @@ -89,52 +100,56 @@ html-tokenize@^1.1.1: indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= inherits@^2.0.0, inherits@^2.0.1, inherits@~2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= lower-case@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= minimist@~0.0.8: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= minimist@~1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.1.3.tgz#3bedfd91a92d39016fcfaa1c681e8faa1a1efda8" - -ncname@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c" - dependencies: - xml-char-classes "^1.0.0" + integrity sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag= no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== dependencies: lower-case "^1.1.1" object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= param-case@2.1.x: version "2.1.1" resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= dependencies: no-case "^2.2.0" "readable-stream@>=1.0.33-1 <1.1.0-0", readable-stream@~1.0.17, readable-stream@~1.0.27-1: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -144,6 +159,7 @@ param-case@2.1.x: "readable-stream@>=1.1.13-1 <1.2.0-0", readable-stream@^1.0.27-1, readable-stream@^1.1.13-1, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -153,30 +169,31 @@ param-case@2.1.x: readable-wrap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/readable-wrap/-/readable-wrap-1.0.0.tgz#3b5a211c631e12303a54991c806c17e7ae206bff" + integrity sha1-O1ohHGMeEjA6VJkcgGwX564ga/8= dependencies: readable-stream "^1.1.13-1" relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= -source-map@0.5.x: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@~0.6.1: +source-map@~0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== split@~0.3.0: version "0.3.3" resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8= dependencies: through "2" stream-splicer@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-1.3.2.tgz#3c0441be15b9bf4e226275e6dc83964745546661" + integrity sha1-PARBvhW5v04iYnXm3IOWR0VUZmE= dependencies: indexof "0.0.1" inherits "^2.0.1" @@ -188,10 +205,12 @@ stream-splicer@^1.2.0: string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= through2@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/through2/-/through2-1.1.1.tgz#0847cbc4449f3405574dbdccd9bb841b83ac3545" + integrity sha1-CEfLxESfNAVXTb3M2buEG4OsNUU= dependencies: readable-stream ">=1.1.13-1 <1.2.0-0" xtend ">=4.0.0 <4.1.0-0" @@ -199,6 +218,7 @@ through2@^1.0.0: through2@~0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b" + integrity sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s= dependencies: readable-stream "~1.0.17" xtend "~2.1.1" @@ -206,6 +226,7 @@ through2@~0.4.1: through2@~0.6.3: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= dependencies: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" @@ -213,10 +234,12 @@ through2@~0.6.3: through@2, through@X.X.X: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= trumpet@~1.7.0: version "1.7.2" resolved "https://registry.yarnpkg.com/trumpet/-/trumpet-1.7.2.tgz#b02c69e465d171f55e44924bf9b5bdd20974c830" + integrity sha1-sCxp5GXRcfVeRJJL+bW90gl0yDA= dependencies: duplexer2 "~0.0.2" html-select "^2.3.5" @@ -225,34 +248,34 @@ trumpet@~1.7.0: readable-stream "^1.0.27-1" through2 "^1.0.0" -uglify-js@3.3.x: - version "3.3.8" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.8.tgz#51e9a5db73afb53ac98603d08224edcd0be45fd8" +"uglify-es@github:mishoo/UglifyJS2#harmony", "uglify-js@github:mishoo/UglifyJS2#harmony": + version "3.3.10" + resolved "https://codeload.github.com/mishoo/UglifyJS2/tar.gz/569757d14dbbe04f66af65d7bf0600b3a75efd96" dependencies: - commander "~2.13.0" + commander "~2.14.1" source-map "~0.6.1" -"uglify-js@github:mishoo/UglifyJS2#harmony": - version "3.3.8" - resolved "https://codeload.github.com/mishoo/UglifyJS2/tar.gz/e0461dc3c8c5459ff11ec868f6fb8dd2d7be99f0" +uglify-js@3.4.x: + version "3.4.9" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3" + integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q== dependencies: - commander "~2.13.0" + commander "~2.17.1" source-map "~0.6.1" upper-case@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - -xml-char-classes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= "xtend@>=4.0.0 <4.1.0-0": version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= dependencies: object-keys "~0.4.0" diff --git a/resources/SPWF01SA/AT command output.log b/resources/SPWF01SA/AT command output.log new file mode 100644 index 0000000..84f92c6 --- /dev/null +++ b/resources/SPWF01SA/AT command output.log @@ -0,0 +1,233 @@ ++WIND:1:Poweron (141106-0950875-SPWF01S) ++WIND:13:ST SPWF01SA1 IWM: Copyright (c) 2012-2014 STMicroelectronics, Inc. All rights Reserved. ++WIND:3:Watchdog Running ++WIND:0:Console active + +AT&F +OK + +AT+S.SSIDTXT=MySSID +OK + +AT+S.SCFG=wifi_wpa_psk_text,MyPASSWORD +OK + +AT+S.SCFG=wifi_priv_mode,2 +OK + +AT+S.SCFG=wifi_mode,1 +OK + +AT+S.SCFG=ip_use_dhcp,1 +OK + +AT+S.SCFG=ip_use_decoder,2 +ERROR: Unrecognized key + +AT&W +OK + +AT+CFUN=1 ++WIND:2:Reset ++WIND:1:Poweron (141106-0950875-SPWF01S) ++WIND:13:ST SPWF01SA1 IWM: Copyright (c) 2012-2014 STMicroelectronics, Inc. All rights Reserved. ++WIND:3:Watchdog Running ++WIND:46:WPA: Crunching PSK... ++WIND:0:Console active ++WIND:32:WiFi Hardware Started ++WIND:21:WiFi Scanning ++WIND:35:WiFi Scan Complete (0x0) ++WIND:19:WiFi Join:00:00:00:00:00:00 ++WIND:25:WiFi Association with 'MySSID' successful ++WIND:51:WPA Handshake Complete ++WIND:24:WiFi Up:192.168.0.188 + +AT&V +# Dumping All Configuration Keys: +# nv_manuf = ST +# nv_model = SPWF01SA1 +# nv_serial = 2914D12541 +# nv_wifi_macaddr = 00:80:E1:B4:00:00 +# blink_led = 0 +# wind_off_low = 0x00000000 +# wind_off_medium = 0x00000000 +# wind_off_high = 0x00000000 +# user_desc = anonymous +# escape_seq = at+s. +# localecho1 = 0 +# console1_speed = 115200 +# console1_hwfc = 0 +# console1_enabled = 1 +# sleep_enabled = 0 +# standby_enabled = 0 +# standby_time = 10 +# wifi_tx_msdu_lifetime = 0 +# wifi_rx_msdu_lifetime = 0 +# wifi_operational_mode = 0x00000011 +# wifi_beacon_wakeup = 1 +# wifi_beacon_interval = 100 +# wifi_listen_interval = 0 +# wifi_rts_threshold = 3000 +# wifi_ssid = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_ssid_len = 14 +# wifi_channelnum = 6 +# wifi_opr_rate_mask = 0x00003FCF +# wifi_bas_rate_mask = 0x0000000F +# wifi_mode = 1 +# wifi_auth_type = 0 +# wifi_atim_window = 0 +# wifi_powersave = 0 +# wifi_tx_power = 18 +# wifi_rssi_thresh = 0 +# wifi_rssi_hyst = 0 +# wifi_ap_idle_timeout = 120 +# wifi_beacon_loss_thresh = 10 +# wifi_priv_mode = 2 +# wifi_wep_keys[0] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_wep_keys[1] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_wep_keys[2] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_wep_keys[3] = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_wep_key_lens = 00:00:00:00 +# wifi_wep_default_key = 0 +# wifi_wpa_psk_raw = 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 +# wifi_wpa_psk_text = MyPASSWORD +# ip_use_dhcp = 1 +# ip_use_httpd = 1 +# ip_mtu = 1500 +# ip_hostname = iwm-B4-00-00 +# ip_apdomainname = captiveportal.net +# ip_ipaddr = 192.168.0.50 +# ip_netmask = 255.255.255.0 +# ip_gw = 192.168.0.1 +# ip_dns = 192.168.0.1 +# ip_http_get_recv_timeout = 3000 +# ip_dhcp_timeout = 20 +# ip_sockd_timeout = 250 +OK + +AT+S.SSIDTXT +SSID = 'MySSID' +OK + +AT+S.STS +# Status & Statistics: +# version = 141106-0950875-SPWF01S +# reset_reason = 2 +# conf_flag = 5 +# system_uptime = 13 +# system_sleeptime = 0 +# gpio_enable = 0 +# captiveportal = 0 +# wifi_state = 10 +# wifi_bssid = 00:00:00:00:00:00 +# wifi_aid = 2 +# wifi_channelnum = 11 +# wifi_sup_rate_mask = 0x003FFFCF +# wifi_bas_rate_mask = 0x0000000F +# wifi_chan_activity2 = 0x00003FFF +# wifi_max_tx_power = 18 +# wifi_reg_country = FI +# wifi_dtim_period = 2 +# wifi_sleeping = 1 +# wifi_num_assoc = 0 +# ip_ipaddr = 192.168.0.188 +# ip_netmask = 255.255.255.0 +# ip_gw = 192.168.0.1 +# ip_dns = 192.168.0.1 +# ip_sock_open = 0 +# ip_sockd_port = 0 +# free_heap = 21000 +# min_heap = 20008 +# current_time = 13 +OK + +AT+S.STS=wifi_bssid +# wifi_bssid = 00:00:00:00:00:00 +OK + +AT+S.PEERS +# Size of peer table: 1 +# 0.link_id = 0 +# 0.state = 4 +# 0.addr = 00:00:00:00:00:00 +# 0.last_rx = 14 +# 0.last_tx = 9 +# 0.rx_drops = 0 +# 0.tx_drops = 0 +# 0.rx_pkts = 16 +# 0.tx_pkts = 10 +# 0.tx_errs = 0 +# 0.rate_mask = 0x003FFFCF +# 0.cur_rate_idx = 3 +# 0.cur_rate_ok = 4 +# 0.cur_rate_fail = 0 +# 0.tx_consec_fail = 0 +# 0.rx_seqnum = 0x00000030 +# 0.rx_seqnum_mc = 0x00006A10 +# 0.rx_rssi = -58 +# 0.rx_rateidx = 0 +# 0.setprot = 3 +# 0.listen_interval = 0 +# 0.capinfo = 0x00000431 +OK + +AT+S.PING=192.168.0.10 +#PING: sendto 192.168.0.10 +OK + +AT+S.PING=192.168.0.245 +#PING: sendto 192.168.0.245 +ERROR: Timed out + +AT+S.SOCKON=192.168.0.10,8775,tcp,ind + ID: 00 +OK + +helloSOCKW=00,5 +OK + +AT+S.SOCKQ=00 + DATALEN: 0 +OK + +AT+S.SOCKR=00,5 +ERROR: Not enough data in buffer + +AT+S.SOCKC=00 +OK + +AT+S.SETTIME=1000 +ERROR: Command not found + +AT+S.SOCKD=65000,t +OK + +AT+S.SOCKD=0 +OK + +AT+S.FSC=/test.html,512 +OK + +AT+S.FSA=/test.html,5 (hello) +OK + +AT+S.FSP=/test.html +hello +OK + +AT+S.FSL + D 5 /test.html + I 174 /status.shtml + I 614 /index.html + I 180 /message.shtml + I 193 /config.shtml + I 157 /peers.shtml + I 384 /output_demo.html + I 461 /input_demo.shtml + I 3447 /firstset.html + I 2898 /remote.html + I 212 /404.html +OK + +AT+S.FSD=/test.html +OK diff --git a/resources/SPWF01SA/ReleaseNotes 3.3.pdf b/resources/SPWF01SA/ReleaseNotes 3.3.pdf new file mode 100755 index 0000000..29e4c50 Binary files /dev/null and b/resources/SPWF01SA/ReleaseNotes 3.3.pdf differ diff --git a/resources/SPWF01SA/ReleaseNotes 3.4.pdf b/resources/SPWF01SA/ReleaseNotes 3.4.pdf new file mode 100755 index 0000000..8388b66 Binary files /dev/null and b/resources/SPWF01SA/ReleaseNotes 3.4.pdf differ diff --git a/resources/SPWF01SA/ReleaseNotes 3.5.0.pdf b/resources/SPWF01SA/ReleaseNotes 3.5.0.pdf new file mode 100755 index 0000000..cbc2e01 Binary files /dev/null and b/resources/SPWF01SA/ReleaseNotes 3.5.0.pdf differ diff --git a/resources/SPWF01SA/ReleaseNotes 3.5.3.pdf b/resources/SPWF01SA/ReleaseNotes 3.5.3.pdf new file mode 100755 index 0000000..9e83ed4 Binary files /dev/null and b/resources/SPWF01SA/ReleaseNotes 3.5.3.pdf differ diff --git a/resources/SPWF01SA/ReleaseNotes 3.6.pdf b/resources/SPWF01SA/ReleaseNotes 3.6.pdf new file mode 100755 index 0000000..89a6294 Binary files /dev/null and b/resources/SPWF01SA/ReleaseNotes 3.6.pdf differ diff --git a/src/data.c b/src/data.c index 6d2176b..4dbf45e 100644 --- a/src/data.c +++ b/src/data.c @@ -3,211 +3,211 @@ #include "data.h" const uint8_t g_DataFirstsetHtmlGz[] = { - 0x1f, 0x8b, 0x08, 0x08, 0x00, 0x99, 0x68, 0x5a, 0x02, 0x03, 0x66, 0x69, + 0x1f, 0x8b, 0x08, 0x08, 0x92, 0xc7, 0xae, 0x5b, 0x02, 0x03, 0x66, 0x69, 0x72, 0x73, 0x74, 0x73, 0x65, 0x74, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, - 0x9d, 0x58, 0x0b, 0x53, 0xdb, 0x3a, 0x16, 0xfe, 0x2b, 0xaa, 0x6f, 0x87, - 0xda, 0x83, 0x63, 0xc7, 0x29, 0xa1, 0xad, 0x13, 0xa7, 0x43, 0x4b, 0x68, - 0x99, 0x85, 0x92, 0x25, 0xf4, 0xb2, 0x77, 0xda, 0x6e, 0x11, 0xb6, 0x1c, - 0xeb, 0xe2, 0x48, 0xbe, 0xb2, 0x4c, 0x9a, 0x4d, 0xfd, 0xdf, 0xf7, 0x48, - 0xb6, 0xf3, 0x80, 0x50, 0xda, 0x0e, 0x43, 0xe2, 0x48, 0x47, 0xe7, 0xfd, - 0xf8, 0xe4, 0xfe, 0x93, 0xc3, 0xb3, 0xb7, 0x17, 0x7f, 0x8d, 0x86, 0x28, - 0x91, 0xd3, 0x74, 0xd0, 0xaf, 0x3f, 0x09, 0x8e, 0x06, 0xfd, 0x29, 0x91, - 0x18, 0x85, 0x09, 0x16, 0x39, 0x91, 0xc1, 0xc7, 0x8b, 0xa3, 0xd6, 0xcb, - 0x41, 0x5f, 0x52, 0x99, 0x92, 0xc1, 0x11, 0x15, 0xb9, 0x44, 0x6f, 0x39, - 0x8b, 0xe9, 0x04, 0xb5, 0xd0, 0x59, 0x46, 0xd8, 0x1b, 0x29, 0x59, 0xdf, - 0xad, 0xb6, 0xfb, 0xb9, 0x9c, 0xc3, 0xd7, 0x35, 0x8f, 0xe6, 0x8b, 0x98, - 0x33, 0xd9, 0x8a, 0xf1, 0x94, 0xa6, 0x73, 0xff, 0x3d, 0x49, 0x6f, 0x89, - 0xa4, 0x21, 0xb6, 0x0f, 0x04, 0xc5, 0xa9, 0x9d, 0x63, 0x96, 0xb7, 0x72, - 0x22, 0x68, 0xdc, 0x93, 0xe4, 0x9b, 0x6c, 0xe1, 0x94, 0x4e, 0x98, 0x1f, - 0x12, 0x26, 0x89, 0xe8, 0xe9, 0x83, 0x39, 0xfd, 0x1f, 0xf1, 0xbd, 0xbd, - 0xec, 0x5b, 0xef, 0x1a, 0x87, 0x37, 0x13, 0xc1, 0x0b, 0x16, 0xb5, 0x42, - 0x9e, 0x72, 0xe1, 0xff, 0x41, 0x5e, 0xa8, 0xbf, 0x5e, 0xfd, 0xab, 0xed, - 0x75, 0x3a, 0x5e, 0xbb, 0x94, 0xf8, 0x3a, 0x25, 0x8b, 0x29, 0x16, 0x13, - 0xca, 0xfc, 0x36, 0xc2, 0x85, 0xe4, 0xa5, 0x8c, 0xfc, 0x58, 0x29, 0xdc, - 0x0a, 0x13, 0x9a, 0x46, 0x8b, 0x35, 0x51, 0x82, 0x4e, 0x12, 0xd9, 0xcb, - 0x70, 0x14, 0x51, 0x36, 0x69, 0xe9, 0x5f, 0x3e, 0x08, 0x53, 0x27, 0x52, - 0xbc, 0xed, 0x40, 0x4a, 0x62, 0x59, 0x4a, 0xb1, 0xb6, 0x8b, 0xe4, 0x7d, - 0x8e, 0x65, 0xb6, 0xa9, 0x41, 0x23, 0xc1, 0xf7, 0xda, 0x60, 0xc9, 0x8c, - 0x46, 0x32, 0xf1, 0xf7, 0xda, 0xf0, 0x5c, 0x3a, 0x09, 0x8d, 0x22, 0xc2, - 0x16, 0x11, 0xcd, 0xb3, 0x14, 0xcf, 0x7d, 0xc6, 0x19, 0x29, 0x9d, 0x19, - 0x16, 0x6c, 0x71, 0xdf, 0xe0, 0x38, 0xde, 0xef, 0xec, 0x77, 0xca, 0x22, - 0x5d, 0xa4, 0x14, 0xc4, 0x6b, 0x27, 0xb7, 0x32, 0x9e, 0x53, 0x49, 0x39, - 0xf3, 0x29, 0xcb, 0x69, 0x44, 0x4a, 0xbc, 0xa8, 0xa9, 0xbb, 0xdd, 0x6e, - 0xd9, 0x77, 0xab, 0x48, 0xf4, 0xdd, 0x2a, 0xa2, 0x2a, 0x22, 0x10, 0x5d, - 0x6f, 0xd0, 0x44, 0xcc, 0x47, 0xeb, 0xa1, 0x04, 0x32, 0x6f, 0xd0, 0x8f, - 0xe8, 0x2d, 0xa2, 0x51, 0x10, 0xcf, 0x50, 0x08, 0x66, 0xe6, 0x41, 0xa5, - 0x22, 0x1c, 0xeb, 0xa8, 0xb8, 0x4f, 0x41, 0x39, 0x82, 0x3e, 0x66, 0x13, - 0x81, 0x23, 0x82, 0xcc, 0xf1, 0xe8, 0xf2, 0xa8, 0xed, 0x8d, 0x0f, 0x2c, - 0x38, 0xdb, 0x19, 0xf4, 0x63, 0x2e, 0xa6, 0xd5, 0xe1, 0x96, 0x7a, 0x1c, - 0xf4, 0x33, 0x95, 0x0c, 0x82, 0xb3, 0xc9, 0xe0, 0x6d, 0x21, 0x04, 0x44, - 0x16, 0xc5, 0x35, 0x0f, 0x5f, 0x29, 0xa7, 0x77, 0x50, 0x3f, 0xcf, 0x30, - 0xab, 0x8f, 0xdd, 0x12, 0x01, 0xea, 0xaa, 0x05, 0x50, 0x57, 0x0c, 0x8e, - 0x25, 0xa2, 0x39, 0x4a, 0xc0, 0xab, 0xe9, 0x1c, 0x09, 0x12, 0xf2, 0xe9, - 0x94, 0xb0, 0x88, 0x80, 0xdb, 0x13, 0x2c, 0xd1, 0x9c, 0x17, 0xa8, 0xa8, - 0x55, 0x91, 0x09, 0x41, 0x8d, 0x36, 0x4b, 0x21, 0x0e, 0xba, 0x80, 0xe5, - 0x14, 0x4b, 0x92, 0xaf, 0x24, 0xa3, 0x10, 0xa4, 0x5d, 0x13, 0x14, 0x2b, - 0xe7, 0xa2, 0x3e, 0x46, 0x89, 0x20, 0x71, 0x90, 0x48, 0x99, 0xe5, 0xbe, - 0xeb, 0x4e, 0x38, 0x77, 0x26, 0xa9, 0x7b, 0x7a, 0xfe, 0xf7, 0x8b, 0x7f, - 0xbf, 0x1b, 0x24, 0x44, 0x90, 0xbe, 0x8b, 0x07, 0xc8, 0x14, 0xe4, 0x9f, - 0x82, 0x0a, 0x92, 0xa3, 0x94, 0x43, 0x64, 0x2d, 0xa7, 0xef, 0x82, 0x6d, - 0x3a, 0xdd, 0xe0, 0x0b, 0x74, 0x96, 0xd1, 0xe0, 0xe3, 0xf9, 0x09, 0x58, - 0x05, 0x0f, 0xea, 0x47, 0x9f, 0xb2, 0xac, 0x90, 0x48, 0xce, 0x33, 0x12, - 0x14, 0x22, 0x55, 0xe6, 0x71, 0xa8, 0xa7, 0x5b, 0x9c, 0x16, 0x44, 0x0b, - 0x03, 0x59, 0xde, 0xab, 0x8e, 0xe3, 0xed, 0xbf, 0x74, 0x3c, 0xa7, 0xe3, - 0xbf, 0x7c, 0xf1, 0x62, 0xcf, 0x05, 0x0a, 0xb7, 0x36, 0xa2, 0xe5, 0xed, - 0x43, 0x4e, 0xbf, 0x6a, 0x85, 0xdd, 0xeb, 0xb8, 0x1b, 0x92, 0xd6, 0xf9, - 0xf0, 0x64, 0x78, 0x30, 0x1e, 0xb6, 0xa6, 0x98, 0x32, 0x47, 0x71, 0x52, - 0xb5, 0x11, 0xec, 0xb7, 0x07, 0x95, 0x44, 0x57, 0xeb, 0x50, 0xe9, 0xb1, - 0x55, 0x87, 0xbc, 0xb8, 0x9e, 0x52, 0x59, 0xcb, 0xaf, 0xe3, 0xb7, 0x7e, - 0xd6, 0xad, 0x6d, 0x71, 0xab, 0xc0, 0xb9, 0x90, 0x06, 0xcb, 0x5c, 0x08, - 0x21, 0x3d, 0x74, 0x02, 0x8c, 0xe7, 0xb9, 0x24, 0x53, 0x14, 0xea, 0x74, - 0x29, 0x04, 0x56, 0x99, 0xb7, 0x19, 0x79, 0xb5, 0x55, 0xc7, 0x7e, 0xd3, - 0x39, 0x97, 0xe0, 0xbc, 0x94, 0xe4, 0x39, 0x62, 0x44, 0xce, 0xb8, 0xb8, - 0xd9, 0xee, 0x29, 0x55, 0x4a, 0x8a, 0x4d, 0x0e, 0xc9, 0x8c, 0xa0, 0x24, - 0x42, 0x92, 0xf0, 0x34, 0x22, 0x22, 0x18, 0x8f, 0x8f, 0x0f, 0x2b, 0x93, - 0x3b, 0xdd, 0x2d, 0x26, 0x8f, 0x20, 0x53, 0x81, 0x6b, 0xb4, 0x9d, 0x6b, - 0x56, 0xef, 0x2a, 0xce, 0xb3, 0x0c, 0x7f, 0xcd, 0xf2, 0x9b, 0x1f, 0xf0, - 0x3a, 0x28, 0x20, 0x97, 0x98, 0xea, 0x53, 0xba, 0xb0, 0x56, 0x1c, 0x73, - 0x30, 0x20, 0xd4, 0xea, 0x65, 0x82, 0xde, 0x7e, 0x9d, 0x72, 0xe5, 0x41, - 0x9e, 0x29, 0xaa, 0xda, 0xaf, 0x6d, 0x04, 0x95, 0xac, 0xcc, 0x8e, 0x82, - 0xe6, 0x41, 0xd7, 0x5a, 0xdf, 0xad, 0xc8, 0xee, 0x90, 0x7b, 0x5b, 0xc8, - 0x2f, 0x87, 0xa3, 0x07, 0xa8, 0x3b, 0xa8, 0x52, 0x00, 0xa8, 0x9b, 0x87, - 0xc1, 0xe5, 0xe8, 0x00, 0xed, 0x20, 0xf8, 0xec, 0xa0, 0x11, 0x11, 0x39, - 0x67, 0x38, 0x5d, 0x9d, 0x76, 0x2b, 0xb2, 0x2d, 0x26, 0x2e, 0x83, 0xa1, - 0x6c, 0xd8, 0x6a, 0xe1, 0x8c, 0xc6, 0x74, 0xab, 0x85, 0x83, 0x37, 0xee, - 0xbb, 0x07, 0xcd, 0xb9, 0xaf, 0xe0, 0x87, 0x9f, 0x51, 0xe7, 0xf0, 0xfd, - 0xdb, 0xd1, 0x56, 0x2d, 0xa2, 0x24, 0xcc, 0x9a, 0xef, 0x9f, 0x10, 0x76, - 0xf6, 0xe1, 0x01, 0xcd, 0xda, 0x83, 0xb3, 0xa3, 0xa3, 0x47, 0x34, 0xa9, - 0xdb, 0x9d, 0x91, 0x4b, 0x88, 0x7b, 0x88, 0xaa, 0xb6, 0x67, 0x68, 0x8d, - 0xc6, 0xd5, 0xd2, 0xf1, 0xe8, 0xc7, 0x49, 0x4b, 0xb3, 0xaf, 0xd0, 0xe8, - 0xc5, 0x46, 0xde, 0xae, 0x4a, 0xdc, 0x6b, 0xb7, 0xab, 0xa4, 0xf3, 0xba, - 0xbf, 0x2a, 0xf8, 0x03, 0x91, 0x53, 0x9c, 0xdf, 0x3c, 0x2a, 0x9d, 0x55, - 0x74, 0x1b, 0x0a, 0x74, 0xba, 0x5d, 0xa7, 0xf9, 0xff, 0x6d, 0x05, 0xde, - 0x41, 0x07, 0x9d, 0xc1, 0x7c, 0x7a, 0x4c, 0x81, 0x49, 0x45, 0xf7, 0x90, - 0x07, 0x7e, 0x57, 0xfc, 0xe1, 0x87, 0xf1, 0xa3, 0xa2, 0x23, 0x96, 0xff, - 0x9a, 0x58, 0xcd, 0xac, 0xc6, 0x30, 0xd9, 0x4f, 0xb7, 0x8f, 0xe5, 0x73, - 0xdd, 0x3f, 0x90, 0x86, 0x3c, 0x81, 0xa1, 0xe6, 0x4c, 0xb8, 0xc9, 0x4c, - 0x4d, 0xae, 0x22, 0x87, 0x59, 0x35, 0x83, 0x76, 0xb2, 0xec, 0x99, 0x80, - 0x03, 0xf4, 0xac, 0xba, 0x86, 0xf1, 0x8b, 0x28, 0x43, 0x0c, 0x7a, 0x25, - 0x4e, 0x11, 0xcf, 0x48, 0xd5, 0x4e, 0x1d, 0xe3, 0x17, 0x3b, 0xba, 0xea, - 0x96, 0xf8, 0x96, 0xd4, 0x99, 0x3e, 0x86, 0xc7, 0x47, 0xdb, 0x7a, 0x1e, - 0x0a, 0x9a, 0xc9, 0x81, 0x01, 0xda, 0x21, 0x18, 0xc2, 0x34, 0x94, 0x06, - 0xe0, 0x28, 0x06, 0x33, 0x32, 0x53, 0x68, 0x4f, 0x04, 0x11, 0x0f, 0x0b, - 0x18, 0xb4, 0xd2, 0x09, 0x05, 0x81, 0x90, 0x0e, 0x53, 0xa2, 0x7e, 0x99, - 0x06, 0x36, 0x2c, 0x1b, 0xcb, 0x60, 0x41, 0x58, 0x08, 0xad, 0x01, 0xe6, - 0x9d, 0x29, 0xad, 0x05, 0x8d, 0x4d, 0xe9, 0x4c, 0xb1, 0x0c, 0x13, 0xd3, - 0xfd, 0xaf, 0x1e, 0xa3, 0xaf, 0xfd, 0xcf, 0xee, 0x67, 0xd7, 0xb5, 0xbe, - 0x7f, 0x37, 0x65, 0x60, 0xd4, 0xc3, 0xce, 0xd8, 0x95, 0x96, 0x5d, 0xf1, - 0x77, 0xf4, 0xc4, 0x95, 0xf6, 0x93, 0xe6, 0x27, 0xcf, 0x25, 0xc3, 0x53, - 0x62, 0x09, 0x22, 0x0b, 0xc1, 0x0c, 0xa3, 0x97, 0x12, 0x89, 0x94, 0xe3, - 0xf5, 0x76, 0xc6, 0x85, 0xec, 0x19, 0xd5, 0x80, 0x36, 0x9e, 0x04, 0xcb, - 0x65, 0xc1, 0x25, 0x07, 0xb4, 0xf3, 0xfd, 0x3b, 0x01, 0x41, 0x24, 0xd8, - 0xdb, 0x7b, 0x6e, 0xe9, 0x83, 0x22, 0xb8, 0xc3, 0x77, 0xd7, 0xb0, 0x8d, - 0xdd, 0xe6, 0x14, 0x96, 0x89, 0x5a, 0xeb, 0x81, 0xda, 0x64, 0x67, 0xc7, - 0x14, 0xbb, 0x81, 0xda, 0x25, 0x96, 0x2d, 0x9c, 0x94, 0xb0, 0x89, 0x4c, - 0x06, 0x9d, 0x76, 0xdb, 0x92, 0x89, 0xe0, 0x33, 0x98, 0x55, 0x33, 0x34, - 0x14, 0x82, 0x0b, 0xd3, 0x00, 0x63, 0x91, 0xe4, 0x1c, 0xc6, 0x3f, 0x00, - 0x39, 0xa4, 0x8c, 0xe9, 0x55, 0xda, 0x22, 0x51, 0xda, 0x11, 0x59, 0xf3, - 0x07, 0xa8, 0xf0, 0x09, 0x32, 0xc2, 0xb0, 0x85, 0xfa, 0xc0, 0xf0, 0xf1, - 0x25, 0x90, 0x0e, 0x00, 0x3c, 0x0a, 0x1e, 0xb4, 0x8d, 0xe5, 0x39, 0x0c, - 0xd2, 0x61, 0xd7, 0x37, 0x76, 0xb1, 0x65, 0xaf, 0xbc, 0x44, 0x76, 0xf1, - 0xae, 0x28, 0x4b, 0xc0, 0x89, 0x2c, 0xe2, 0x33, 0x07, 0xdc, 0x8d, 0x65, - 0x0f, 0x5a, 0x56, 0x15, 0xb3, 0xad, 0xb1, 0xd3, 0x46, 0x03, 0x3e, 0x01, - 0x94, 0xa3, 0x86, 0xd7, 0xbf, 0xc8, 0x3c, 0x60, 0x45, 0x9a, 0xf6, 0xe2, - 0x82, 0x85, 0xba, 0x0b, 0xd6, 0x9b, 0x26, 0xb1, 0x65, 0xd0, 0x25, 0xcf, - 0xb5, 0x8e, 0x28, 0x0f, 0x94, 0x79, 0xff, 0x39, 0x3d, 0x79, 0x0f, 0xa2, - 0xcf, 0x2b, 0x8a, 0x46, 0xb7, 0xdc, 0x81, 0x84, 0x64, 0xa6, 0x31, 0x3a, - 0x1b, 0x5f, 0x18, 0xf6, 0x55, 0xad, 0xdc, 0xd3, 0x45, 0xca, 0xab, 0xa9, - 0xb8, 0x74, 0x6d, 0x59, 0x01, 0x97, 0x9c, 0x87, 0x37, 0x44, 0x5e, 0x59, - 0xb6, 0x62, 0x39, 0x12, 0x7c, 0x4a, 0x73, 0x62, 0x36, 0xe2, 0xcd, 0xc2, - 0x66, 0xd6, 0x02, 0x58, 0xb2, 0x94, 0x63, 0x40, 0x79, 0xcd, 0x32, 0xb1, - 0x16, 0xe0, 0xea, 0x20, 0x08, 0x72, 0x47, 0xd5, 0x7e, 0x91, 0xbf, 0x2e, - 0xcc, 0xdc, 0x01, 0x8c, 0x95, 0x41, 0x2e, 0x92, 0x0b, 0xa8, 0x6d, 0xcb, - 0xff, 0x04, 0x40, 0xd9, 0xde, 0x6b, 0x3f, 0xb7, 0xbb, 0xed, 0xf6, 0x17, - 0x87, 0xb2, 0x30, 0x2d, 0x22, 0x92, 0x9b, 0xcd, 0x09, 0xeb, 0x35, 0x33, - 0xaf, 0x9e, 0x2e, 0x9a, 0x9f, 0xea, 0x4c, 0xe9, 0x23, 0xb5, 0xb0, 0xce, - 0xa6, 0xbc, 0xb2, 0x7c, 0xa0, 0xfb, 0xc8, 0x6e, 0x18, 0x9f, 0x29, 0x6f, - 0x54, 0x5b, 0x15, 0x61, 0x75, 0xb2, 0x44, 0x77, 0xb8, 0x20, 0xf3, 0x1e, - 0x17, 0xeb, 0xca, 0x2a, 0x6d, 0x65, 0x86, 0xa4, 0x53, 0xc2, 0x0b, 0x19, - 0x40, 0xd2, 0x0d, 0xc0, 0x49, 0xb5, 0xef, 0x90, 0x5a, 0x8e, 0x10, 0x6c, - 0x3c, 0x31, 0x2c, 0x4b, 0x13, 0x12, 0x95, 0x3b, 0x0d, 0x99, 0x4e, 0x24, - 0xa4, 0x20, 0x6c, 0xc1, 0x34, 0xb8, 0x80, 0x4e, 0x30, 0xa3, 0x32, 0xd1, - 0xad, 0xa0, 0x3e, 0xd2, 0x70, 0x96, 0xf6, 0x66, 0x3c, 0x21, 0x55, 0x20, - 0xa5, 0xe0, 0x32, 0x91, 0xa0, 0x00, 0x92, 0x6f, 0x73, 0x73, 0xd7, 0xf8, - 0xcc, 0x74, 0x06, 0x83, 0x01, 0x80, 0x8e, 0xc1, 0xaf, 0xa5, 0x55, 0x2e, - 0x63, 0x0f, 0xb7, 0xb7, 0xf3, 0x0d, 0x72, 0xe5, 0xf7, 0x3b, 0xd9, 0x42, - 0xca, 0x3a, 0xdb, 0xea, 0xf5, 0xa0, 0xfe, 0xb6, 0xeb, 0xe5, 0x7b, 0x3c, - 0x82, 0x7b, 0x2b, 0x8f, 0xa4, 0xe8, 0x52, 0x1d, 0xd5, 0x87, 0x2e, 0xf8, - 0x29, 0x80, 0x0f, 0x3c, 0x21, 0x4a, 0x15, 0x29, 0xe6, 0x8b, 0x3a, 0xeb, - 0x0e, 0x84, 0xc0, 0x73, 0x27, 0x86, 0xf4, 0x81, 0x0d, 0x27, 0xa6, 0x29, - 0x5c, 0x04, 0x95, 0xf3, 0x88, 0xa3, 0x9b, 0xdb, 0xce, 0x8e, 0x51, 0xf5, - 0x3c, 0xd5, 0x04, 0x88, 0xa3, 0x9a, 0xa0, 0x05, 0x8d, 0x27, 0x33, 0x75, - 0x53, 0xbc, 0xe0, 0xa0, 0xc5, 0x9f, 0x8a, 0x6e, 0x2c, 0x55, 0x97, 0xdd, - 0x60, 0x60, 0x39, 0x7f, 0x73, 0x0a, 0x31, 0x00, 0x47, 0x59, 0x65, 0xa8, - 0x7b, 0x95, 0x12, 0xad, 0x8b, 0x1c, 0xa7, 0x44, 0x40, 0x69, 0x54, 0xb9, - 0x5b, 0x55, 0x3b, 0x78, 0x70, 0xe5, 0xc0, 0xad, 0xdc, 0xd5, 0x71, 0x55, - 0x44, 0xcb, 0x8a, 0x81, 0x46, 0x07, 0x30, 0xdf, 0x08, 0x1a, 0xcd, 0x5e, - 0x63, 0xe9, 0xac, 0xda, 0x64, 0x6d, 0x81, 0xe5, 0xd7, 0x0f, 0xb6, 0xa1, - 0x46, 0x17, 0x5c, 0x46, 0xf0, 0xda, 0x09, 0xe9, 0x00, 0xeb, 0xa9, 0x69, - 0x35, 0xbd, 0x42, 0x29, 0xab, 0xed, 0x93, 0xc1, 0x00, 0x92, 0x9c, 0x38, - 0x34, 0x2a, 0x21, 0xfc, 0x4f, 0x17, 0x2a, 0xa1, 0xd7, 0x0c, 0xf2, 0xef, - 0x6e, 0x36, 0xd1, 0xdc, 0xf0, 0x75, 0xb0, 0xf1, 0xeb, 0x91, 0x70, 0x55, - 0xd3, 0xe0, 0xe8, 0xf8, 0xfc, 0xf4, 0xf2, 0xe0, 0x7c, 0xf8, 0xf5, 0xe2, - 0xf8, 0x74, 0x78, 0xf6, 0xf1, 0x22, 0xf0, 0x3a, 0x64, 0xcf, 0xae, 0x26, - 0xd9, 0x11, 0x70, 0x5b, 0xcd, 0x89, 0x09, 0x91, 0xf5, 0x90, 0x78, 0x33, - 0x3f, 0x8e, 0x4c, 0x63, 0x79, 0x0d, 0x80, 0x81, 0xd1, 0xdc, 0xbb, 0x7e, - 0x7c, 0xa2, 0xbe, 0x32, 0x42, 0x7b, 0x7c, 0x90, 0x44, 0xa1, 0x40, 0xf0, - 0x08, 0x60, 0xac, 0xe1, 0x2d, 0x2c, 0x9e, 0xc0, 0x2d, 0x98, 0x40, 0x89, - 0x81, 0xb4, 0x04, 0xb3, 0x09, 0x31, 0x6c, 0x88, 0xf4, 0x02, 0x98, 0x98, - 0x7a, 0x7a, 0x20, 0x1e, 0xa3, 0x25, 0x2b, 0xc8, 0x54, 0x31, 0x1f, 0x6b, - 0xd4, 0xc7, 0xc5, 0x41, 0x9a, 0x9a, 0x86, 0x53, 0xc1, 0x0d, 0x28, 0x3b, - 0xe2, 0x68, 0x00, 0xa2, 0xd8, 0x39, 0x92, 0x4f, 0x26, 0x29, 0x31, 0x8d, - 0x1a, 0x84, 0x40, 0x21, 0xad, 0x99, 0xbb, 0x45, 0x72, 0x9d, 0x8f, 0xf6, - 0x7a, 0x4f, 0x23, 0x30, 0x99, 0x88, 0x22, 0x3b, 0x24, 0x31, 0x2e, 0x52, - 0x69, 0x5a, 0x4d, 0x31, 0x9b, 0x9b, 0xc9, 0xbf, 0xe2, 0x6c, 0x59, 0x8e, - 0xba, 0x73, 0x98, 0xa6, 0x15, 0x0c, 0xaa, 0x74, 0x34, 0xc6, 0x45, 0x18, - 0x02, 0xdd, 0x13, 0xf4, 0x17, 0x2f, 0x44, 0x85, 0x16, 0x66, 0x34, 0x4d, - 0x01, 0x2f, 0xcc, 0xa0, 0x81, 0x5d, 0x73, 0x2e, 0x11, 0x86, 0xeb, 0x2b, - 0xf0, 0x60, 0x0a, 0x2c, 0x4b, 0xae, 0x51, 0x45, 0x83, 0x32, 0xa0, 0x0f, - 0x5d, 0xd2, 0xd6, 0x11, 0x6d, 0x6e, 0x5b, 0x60, 0xa6, 0x53, 0xa5, 0xbd, - 0x66, 0xaf, 0xec, 0x5a, 0x0f, 0xcb, 0xef, 0x5b, 0xb6, 0xdd, 0xc3, 0xa6, - 0xf1, 0x87, 0xd2, 0x04, 0x82, 0xb5, 0x72, 0x2d, 0x88, 0x58, 0xf9, 0x55, - 0x8f, 0x2c, 0x09, 0xf9, 0xd4, 0x86, 0x29, 0x09, 0xbd, 0xe4, 0x58, 0xbd, - 0xf3, 0x81, 0xca, 0x30, 0x99, 0xed, 0xc1, 0x7c, 0x5a, 0xb5, 0x0b, 0x66, - 0x5a, 0x8b, 0x0d, 0x4d, 0x29, 0xd8, 0x2b, 0xde, 0x5f, 0x9c, 0x9e, 0x04, - 0xc6, 0x21, 0x34, 0x73, 0x35, 0x51, 0x54, 0x23, 0x5d, 0xde, 0xf8, 0x1d, - 0x47, 0xbd, 0x37, 0x50, 0xff, 0xa3, 0x94, 0x60, 0x48, 0xe9, 0x19, 0xa6, - 0x52, 0x0f, 0xec, 0x56, 0xcb, 0x96, 0xfd, 0xf6, 0xce, 0x4e, 0x08, 0xeb, - 0x62, 0x29, 0x50, 0x58, 0xe5, 0xf6, 0xe8, 0xac, 0x4b, 0xb5, 0x6c, 0x95, - 0xf9, 0x75, 0x90, 0x54, 0x96, 0xdd, 0xe5, 0x61, 0x3f, 0xa0, 0xa3, 0xaa, - 0xcc, 0xf2, 0xbe, 0x4e, 0xea, 0x4d, 0xc6, 0x46, 0xdc, 0x9e, 0x35, 0x6f, - 0x64, 0x9e, 0x6d, 0xc6, 0x4d, 0xc7, 0x18, 0xee, 0x6a, 0x60, 0x25, 0xd0, - 0x01, 0xa0, 0xcc, 0x40, 0x35, 0xe7, 0xaa, 0x6c, 0xa2, 0xf9, 0xcb, 0xba, - 0xd8, 0x00, 0x92, 0x6b, 0x15, 0x36, 0x99, 0x6a, 0x49, 0xd0, 0x8b, 0x11, - 0x9e, 0xa8, 0x37, 0x0c, 0x8e, 0x12, 0x62, 0x83, 0xf7, 0xcb, 0x2a, 0x56, - 0xdf, 0x12, 0xb1, 0x0d, 0x2e, 0x2c, 0xe3, 0x04, 0xb5, 0xda, 0xbc, 0x1d, - 0xfa, 0x13, 0x2e, 0xa2, 0x75, 0xc2, 0x28, 0x28, 0x04, 0xa3, 0xcc, 0x66, - 0x5f, 0xa0, 0xc7, 0xd5, 0x10, 0xf1, 0xb6, 0xda, 0x86, 0x5e, 0x65, 0x7e, - 0x6a, 0xb7, 0x5e, 0x7d, 0xd9, 0xb5, 0x5a, 0xfa, 0x01, 0xb7, 0x62, 0x78, - 0x76, 0x69, 0x83, 0x8f, 0x16, 0x11, 0x20, 0x4f, 0xbf, 0xc6, 0x72, 0x60, - 0x9e, 0x29, 0x6c, 0xaf, 0xad, 0xca, 0x71, 0x0a, 0x79, 0xe9, 0xb3, 0xb5, - 0x06, 0x1d, 0x26, 0x24, 0xbc, 0xb9, 0x2b, 0xbd, 0x3a, 0x4e, 0x1a, 0x7a, - 0x98, 0xde, 0x0b, 0xd2, 0xf7, 0xf6, 0x3c, 0xaf, 0xbd, 0xff, 0xfa, 0xf1, - 0x26, 0xb4, 0xe6, 0xb6, 0x67, 0xfd, 0xac, 0xb9, 0xa1, 0xa8, 0x17, 0x73, - 0xc6, 0xea, 0x2d, 0x18, 0x78, 0x4e, 0x21, 0x42, 0xb8, 0x6f, 0xa8, 0xa9, - 0x86, 0xce, 0x2e, 0x0e, 0x50, 0x91, 0x29, 0xb1, 0xfa, 0xe5, 0xd0, 0x33, - 0x1f, 0xe4, 0xbd, 0x68, 0x7b, 0x9e, 0xb7, 0xb3, 0xf3, 0x03, 0x81, 0x1b, - 0x35, 0x22, 0xc8, 0x94, 0xdf, 0xae, 0xb5, 0x1f, 0xfb, 0x47, 0x9a, 0x82, - 0x23, 0xe1, 0xb0, 0x9a, 0x23, 0x70, 0x8b, 0x81, 0xaa, 0x95, 0x01, 0x00, - 0xdd, 0x16, 0x24, 0x7a, 0x09, 0xc1, 0xaa, 0xf1, 0xdb, 0xbb, 0x21, 0xc0, - 0x37, 0xc3, 0xad, 0x70, 0x8d, 0x93, 0xab, 0xd7, 0xbb, 0xc0, 0x55, 0xef, - 0x57, 0x60, 0x4c, 0xb7, 0x9c, 0xad, 0x0e, 0xdc, 0x12, 0x51, 0x75, 0x6e, - 0x03, 0x9e, 0x59, 0x15, 0x2f, 0x8d, 0x3a, 0x14, 0xe2, 0xb4, 0xd6, 0xc6, - 0x8a, 0x5b, 0xbd, 0x6d, 0x74, 0xf5, 0x2b, 0xe5, 0xff, 0x03, 0x91, 0xd7, - 0x3a, 0x25, 0x68, 0x16, 0x00, 0x00 + 0x9d, 0x58, 0x8b, 0x52, 0xdb, 0x3a, 0x1a, 0x7e, 0x15, 0xd5, 0xa7, 0x43, + 0xed, 0xc1, 0xb1, 0x9d, 0x94, 0xd0, 0xd6, 0x89, 0xd3, 0xa1, 0x25, 0xb4, + 0xcc, 0x42, 0x61, 0x49, 0x7a, 0xd8, 0x33, 0x6d, 0xb7, 0x08, 0x5b, 0x8e, + 0x75, 0x70, 0x24, 0x1f, 0x59, 0x26, 0xcd, 0xa6, 0x7e, 0xf7, 0xfd, 0x25, + 0xdb, 0xb9, 0x40, 0x28, 0x6d, 0x87, 0x21, 0xb6, 0x75, 0xf9, 0xef, 0x97, + 0x4f, 0xea, 0x3f, 0x39, 0x3c, 0x7b, 0x3b, 0xfe, 0xeb, 0x7c, 0x88, 0x12, + 0x39, 0x4d, 0x07, 0xfd, 0xfa, 0x97, 0xe0, 0x68, 0xd0, 0x9f, 0x12, 0x89, + 0x51, 0x98, 0x60, 0x91, 0x13, 0x19, 0x7c, 0x1c, 0x1f, 0xb5, 0x5e, 0x0e, + 0xfa, 0x92, 0xca, 0x94, 0x0c, 0x8e, 0xa8, 0xc8, 0x25, 0x7a, 0xcb, 0x59, + 0x4c, 0x27, 0xa8, 0x85, 0xce, 0x32, 0xc2, 0xde, 0x48, 0xc9, 0xfa, 0x6e, + 0x35, 0xdd, 0xcf, 0xe5, 0x1c, 0x1e, 0xd7, 0x3c, 0x9a, 0x2f, 0x62, 0xce, + 0x64, 0x2b, 0xc6, 0x53, 0x9a, 0xce, 0xfd, 0xf7, 0x24, 0xbd, 0x25, 0x92, + 0x86, 0xd8, 0x3e, 0x10, 0x14, 0xa7, 0x76, 0x8e, 0x59, 0xde, 0xca, 0x89, + 0xa0, 0x71, 0x4f, 0x92, 0x6f, 0xb2, 0x85, 0x53, 0x3a, 0x61, 0x7e, 0x48, + 0x98, 0x24, 0xa2, 0xa7, 0x37, 0xe6, 0xf4, 0x7f, 0xc4, 0x6f, 0xef, 0x65, + 0xdf, 0x7a, 0xd7, 0x38, 0xbc, 0x99, 0x08, 0x5e, 0xb0, 0xa8, 0x15, 0xf2, + 0x94, 0x0b, 0xff, 0x0f, 0xf2, 0x42, 0xfd, 0xf5, 0xea, 0x2f, 0xaf, 0xdd, + 0xe9, 0xb4, 0xbd, 0x52, 0xe2, 0xeb, 0x94, 0x2c, 0xa6, 0x58, 0x4c, 0x28, + 0xf3, 0x3d, 0x84, 0x0b, 0xc9, 0x4b, 0x19, 0xf9, 0xb1, 0x12, 0xb8, 0x15, + 0x26, 0x34, 0x8d, 0x16, 0x6b, 0xac, 0x04, 0x9d, 0x24, 0xb2, 0x97, 0xe1, + 0x28, 0xa2, 0x6c, 0xd2, 0xd2, 0x5f, 0x3e, 0x30, 0x53, 0x3b, 0x52, 0xbc, + 0x6d, 0x43, 0x4a, 0x62, 0x59, 0x4a, 0xb1, 0x36, 0x8b, 0xe4, 0x7d, 0x8a, + 0x65, 0xb6, 0x29, 0x41, 0xc3, 0xc1, 0x6f, 0x7b, 0xa0, 0xc9, 0x8c, 0x46, + 0x32, 0xf1, 0xf7, 0x3c, 0x78, 0x2f, 0x9d, 0x84, 0x46, 0x11, 0x61, 0x8b, + 0x88, 0xe6, 0x59, 0x8a, 0xe7, 0x3e, 0xe3, 0x8c, 0x94, 0xce, 0x0c, 0x0b, + 0xb6, 0xb8, 0xaf, 0x70, 0x1c, 0xef, 0x77, 0xf6, 0x3b, 0x65, 0x91, 0x2e, + 0x52, 0x0a, 0xec, 0xb5, 0x91, 0x5b, 0x19, 0xcf, 0xa9, 0xa4, 0x9c, 0xf9, + 0x94, 0xe5, 0x34, 0x22, 0x25, 0x5e, 0xd4, 0xab, 0xbb, 0xdd, 0x6e, 0xd9, + 0x77, 0x2b, 0x4f, 0xf4, 0xdd, 0xca, 0xa3, 0xca, 0x23, 0xe0, 0xdd, 0xf6, + 0xa0, 0xf1, 0x98, 0x8f, 0xd6, 0x5d, 0x09, 0xcb, 0xda, 0x83, 0x7e, 0x44, + 0x6f, 0x11, 0x8d, 0x82, 0x78, 0x86, 0x42, 0x50, 0x33, 0x0f, 0x2a, 0x11, + 0x61, 0x5b, 0x47, 0xf9, 0x7d, 0x0a, 0xc2, 0x11, 0xf4, 0x31, 0x9b, 0x08, + 0x1c, 0x11, 0x64, 0x8e, 0xce, 0x2f, 0x8f, 0xbc, 0xf6, 0xe8, 0xc0, 0x82, + 0xbd, 0x9d, 0x41, 0x3f, 0xe6, 0x62, 0x5a, 0x6d, 0x6e, 0xa9, 0xd7, 0x41, + 0x3f, 0x53, 0xc1, 0x20, 0x38, 0x9b, 0x0c, 0xde, 0x16, 0x42, 0x80, 0x67, + 0x51, 0x5c, 0xd3, 0xf0, 0x95, 0x70, 0x7a, 0x06, 0xf5, 0xf3, 0x0c, 0xb3, + 0x7a, 0xdb, 0x2d, 0x11, 0x20, 0xae, 0x1a, 0x00, 0x71, 0xc5, 0xe0, 0x58, + 0x22, 0x9a, 0xa3, 0x04, 0xac, 0x9a, 0xce, 0x91, 0x20, 0x21, 0x9f, 0x4e, + 0x09, 0x8b, 0x08, 0x98, 0x3d, 0xc1, 0x12, 0xcd, 0x79, 0x81, 0x8a, 0x5a, + 0x14, 0x99, 0x10, 0xd4, 0x48, 0xb3, 0x64, 0xe2, 0xa0, 0x31, 0x0c, 0xa7, + 0x58, 0x92, 0x7c, 0xc5, 0x19, 0x85, 0xc0, 0xed, 0x9a, 0xa0, 0x58, 0x19, + 0x17, 0xf5, 0x31, 0x4a, 0x04, 0x89, 0x83, 0x44, 0xca, 0x2c, 0xf7, 0x5d, + 0x77, 0xc2, 0xb9, 0x33, 0x49, 0xdd, 0xd3, 0x8b, 0xbf, 0x5f, 0xfc, 0xfb, + 0xdd, 0x20, 0x21, 0x82, 0xf4, 0x5d, 0x3c, 0x40, 0xa6, 0x20, 0xff, 0x14, + 0x54, 0x90, 0x1c, 0xa5, 0x1c, 0x3c, 0x6b, 0x39, 0x7d, 0x17, 0x74, 0xd3, + 0xe1, 0x06, 0x0f, 0x90, 0x59, 0x46, 0x83, 0x8f, 0x17, 0x27, 0xa0, 0x15, + 0xbc, 0xa8, 0x8f, 0x3e, 0x65, 0x59, 0x21, 0x91, 0x9c, 0x67, 0x24, 0x28, + 0x44, 0xaa, 0xd4, 0xe3, 0x90, 0x4f, 0xb7, 0x38, 0x2d, 0x88, 0x66, 0x06, + 0xbc, 0xda, 0xaf, 0x3a, 0x4e, 0x7b, 0xff, 0xa5, 0xd3, 0x76, 0x3a, 0xfe, + 0xcb, 0x17, 0x2f, 0xf6, 0x5c, 0x58, 0xe1, 0xd6, 0x4a, 0xb4, 0xda, 0x2f, + 0xbd, 0xfd, 0x4e, 0xbb, 0xd5, 0x8d, 0x5f, 0xe1, 0x2e, 0xf6, 0x5a, 0x17, + 0xc3, 0x93, 0xe1, 0xc1, 0x68, 0xd8, 0x9a, 0x62, 0xca, 0x1c, 0x45, 0x49, + 0xe5, 0x46, 0xb0, 0xef, 0x0d, 0x2a, 0x8e, 0xae, 0x96, 0xa1, 0x92, 0x63, + 0xab, 0x0c, 0x79, 0x71, 0x3d, 0xa5, 0xb2, 0xe6, 0x5f, 0xfb, 0x6f, 0x7d, + 0xaf, 0x5b, 0xeb, 0xe2, 0x56, 0x8e, 0x73, 0x21, 0x0c, 0x96, 0xb1, 0x10, + 0x42, 0x78, 0xe8, 0x00, 0x18, 0xcd, 0x73, 0x49, 0xa6, 0x28, 0xd4, 0xe1, + 0x52, 0x08, 0xac, 0x22, 0x6f, 0xd3, 0xf3, 0x6a, 0xaa, 0xf6, 0xfd, 0xa6, + 0x71, 0x2e, 0xc1, 0x78, 0x29, 0xc9, 0x73, 0xc4, 0x88, 0x9c, 0x71, 0x71, + 0xb3, 0xdd, 0x52, 0x2a, 0x95, 0x14, 0x99, 0x1c, 0x82, 0x19, 0x41, 0x4a, + 0x84, 0x24, 0xe1, 0x69, 0x44, 0x44, 0x30, 0x1a, 0x1d, 0x1f, 0x56, 0x2a, + 0x77, 0xba, 0x5b, 0x54, 0x3e, 0x87, 0x48, 0x05, 0xaa, 0xd1, 0x76, 0xaa, + 0x59, 0x3d, 0xab, 0x28, 0xcf, 0x32, 0xfc, 0x35, 0xcb, 0x6f, 0x7e, 0x40, + 0xeb, 0xa0, 0x80, 0x58, 0x62, 0xaa, 0x4e, 0xe9, 0xc4, 0x5a, 0x51, 0xcc, + 0x41, 0x81, 0x50, 0x8b, 0x97, 0x09, 0x7a, 0xfb, 0x75, 0xca, 0x95, 0x05, + 0x79, 0xa6, 0x56, 0xd5, 0x76, 0xf5, 0x10, 0x64, 0xb2, 0x52, 0x3b, 0x0a, + 0x9a, 0x17, 0x9d, 0x6b, 0x7d, 0xb7, 0x5a, 0x76, 0x67, 0x79, 0x7b, 0xcb, + 0xf2, 0xcb, 0xe1, 0xf9, 0x03, 0xab, 0x3b, 0xa8, 0x12, 0x00, 0x56, 0x37, + 0x2f, 0x83, 0xcb, 0xf3, 0x03, 0xb4, 0x83, 0xe0, 0xb7, 0x83, 0xce, 0x89, + 0xc8, 0x39, 0xc3, 0xe9, 0x6a, 0xb7, 0x5b, 0x2d, 0xdb, 0xa2, 0xe2, 0xd2, + 0x19, 0x4a, 0x87, 0xad, 0x1a, 0xce, 0x68, 0x4c, 0xb7, 0x6a, 0x38, 0x78, + 0xe3, 0xbe, 0x7b, 0x50, 0x9d, 0xfb, 0x02, 0x7e, 0xf8, 0x19, 0x71, 0x0e, + 0xdf, 0xbf, 0x3d, 0xdf, 0x2a, 0x45, 0x94, 0x84, 0x59, 0xf3, 0xfc, 0x09, + 0x66, 0x67, 0x1f, 0x1e, 0x90, 0xcc, 0x1b, 0x9c, 0x1d, 0x1d, 0x3d, 0x22, + 0x49, 0x5d, 0xee, 0x8c, 0x5c, 0x82, 0xdf, 0x43, 0x54, 0x95, 0x3d, 0x43, + 0x4b, 0x34, 0xaa, 0x86, 0x8e, 0xcf, 0x7f, 0x1c, 0xb4, 0x34, 0xfb, 0x0a, + 0x85, 0x5e, 0x6c, 0xc4, 0xed, 0x2a, 0xc5, 0xdb, 0x9e, 0x57, 0x05, 0x5d, + 0xbb, 0xfb, 0xab, 0x8c, 0x3f, 0x10, 0x39, 0xc5, 0xf9, 0xcd, 0xa3, 0xdc, + 0x59, 0xb5, 0x6e, 0x43, 0x80, 0x4e, 0xb7, 0xeb, 0x34, 0xff, 0xbf, 0x2d, + 0xc0, 0x3b, 0xa8, 0xa0, 0x33, 0xe8, 0x4f, 0x8f, 0x09, 0x30, 0xa9, 0xd6, + 0x3d, 0x64, 0x81, 0xdf, 0x65, 0x7f, 0xf8, 0x61, 0xf4, 0x28, 0xeb, 0x88, + 0xe5, 0xbf, 0xc6, 0x56, 0x13, 0xab, 0x31, 0x4c, 0xf6, 0xd3, 0xe5, 0x63, + 0xf9, 0x5e, 0xd7, 0x0f, 0xa4, 0x21, 0x4f, 0x60, 0xa8, 0x3e, 0x13, 0x6e, + 0x12, 0x53, 0x9d, 0xab, 0xc8, 0xa1, 0x57, 0xcd, 0xa0, 0x9c, 0x2c, 0x6b, + 0x26, 0xe0, 0x00, 0xdd, 0xab, 0xae, 0xa1, 0xfd, 0x22, 0xca, 0x10, 0x83, + 0x5a, 0x89, 0x53, 0xc4, 0x33, 0x52, 0x95, 0x53, 0xc7, 0xf8, 0xc5, 0x8a, + 0xae, 0xaa, 0x25, 0xbe, 0x25, 0x75, 0xa4, 0x8f, 0xe0, 0xf5, 0xd1, 0xb2, + 0x9e, 0x87, 0x82, 0x66, 0x72, 0x60, 0x80, 0x74, 0x08, 0x9a, 0x30, 0x0d, + 0xa5, 0x01, 0x38, 0x8a, 0x41, 0x8f, 0xcc, 0x14, 0xda, 0x13, 0x41, 0xc4, + 0xc3, 0x02, 0x1a, 0xad, 0x74, 0x42, 0x41, 0xc0, 0xa5, 0xc3, 0x94, 0xa8, + 0x2f, 0xd3, 0xc0, 0x86, 0x65, 0x63, 0x19, 0x2c, 0x08, 0x0b, 0xa1, 0x34, + 0x40, 0xbf, 0x33, 0xa5, 0xb5, 0xa0, 0xb1, 0x29, 0x9d, 0x29, 0x96, 0x61, + 0x62, 0xba, 0xff, 0xd5, 0x6d, 0xf4, 0xb5, 0xff, 0xd9, 0xfd, 0xec, 0xba, + 0xd6, 0xf7, 0xef, 0xa6, 0x0c, 0x8c, 0xba, 0xd9, 0x19, 0xbb, 0xd2, 0xb2, + 0x2b, 0xfa, 0x8e, 0xee, 0xb8, 0xd2, 0x7e, 0xd2, 0x7c, 0xf2, 0x5c, 0x32, + 0x3c, 0x25, 0x96, 0x20, 0xb2, 0x10, 0xcc, 0x30, 0x7a, 0x29, 0x91, 0x48, + 0x19, 0x5e, 0x4f, 0x67, 0x5c, 0xc8, 0x9e, 0x51, 0x35, 0x68, 0xe3, 0x49, + 0xb0, 0x1c, 0x16, 0x5c, 0x72, 0x40, 0x3b, 0xdf, 0xbf, 0x13, 0x60, 0x44, + 0x82, 0xbd, 0xbd, 0xe7, 0x96, 0xde, 0x28, 0x82, 0x3b, 0x74, 0x77, 0x0d, + 0xdb, 0xd8, 0x6d, 0x76, 0x61, 0x99, 0xa8, 0xb1, 0x1e, 0x88, 0x4d, 0x76, + 0x76, 0x4c, 0xb1, 0x1b, 0xa8, 0x59, 0x62, 0xd9, 0xc2, 0x49, 0x09, 0x9b, + 0xc8, 0x64, 0xd0, 0xf1, 0x3c, 0x4b, 0x26, 0x82, 0xcf, 0xa0, 0x57, 0xcd, + 0xd0, 0x50, 0x08, 0x2e, 0x4c, 0x03, 0x94, 0x45, 0x92, 0x73, 0x68, 0xff, + 0x00, 0xe4, 0x90, 0x52, 0xa6, 0x57, 0x49, 0x8b, 0x44, 0x69, 0x47, 0x64, + 0xcd, 0x1e, 0x20, 0xc2, 0x27, 0x88, 0x08, 0xc3, 0x16, 0xea, 0x07, 0xc3, + 0xcf, 0x97, 0x40, 0x3a, 0x00, 0xf0, 0x28, 0x58, 0xd0, 0x36, 0x96, 0xfb, + 0x30, 0x70, 0x87, 0x59, 0xdf, 0xd8, 0xc5, 0x96, 0xbd, 0xb2, 0x12, 0xd9, + 0xc5, 0xbb, 0xa2, 0x2c, 0x01, 0x27, 0xb2, 0x88, 0xcf, 0x1c, 0x30, 0x37, + 0x96, 0x3d, 0x28, 0x59, 0x95, 0xcf, 0xb6, 0xfa, 0x4e, 0x2b, 0x0d, 0xf8, + 0x04, 0x50, 0x8e, 0x6a, 0x5e, 0xff, 0x22, 0xf3, 0x80, 0x15, 0x69, 0xda, + 0x8b, 0x0b, 0x16, 0xea, 0x2a, 0x58, 0x4f, 0x9a, 0xc4, 0x96, 0x41, 0x97, + 0x3c, 0xd7, 0x32, 0xa2, 0x3c, 0x50, 0xea, 0xfd, 0xe7, 0xf4, 0xe4, 0x3d, + 0xb0, 0xbe, 0xa8, 0x56, 0x34, 0xb2, 0xe5, 0x0e, 0x04, 0x24, 0x33, 0x8d, + 0xf3, 0xb3, 0xd1, 0xd8, 0xb0, 0xaf, 0x6a, 0xe1, 0x9e, 0x2e, 0x52, 0x5e, + 0x75, 0xc5, 0xa5, 0x69, 0xcb, 0x0a, 0xb8, 0xe4, 0x3c, 0xbc, 0x21, 0xf2, + 0xca, 0xb2, 0x15, 0xc9, 0x73, 0xc1, 0xa7, 0x34, 0x27, 0x66, 0xc3, 0xde, + 0x2c, 0x6c, 0x66, 0x2d, 0x80, 0x24, 0x4b, 0x39, 0x06, 0x94, 0xd7, 0x0c, + 0x13, 0x6b, 0x01, 0xa6, 0x0e, 0x82, 0x20, 0x77, 0x54, 0xee, 0x17, 0xf9, + 0xeb, 0xc2, 0xcc, 0x1d, 0xc0, 0x58, 0x19, 0xc4, 0x22, 0x19, 0x43, 0x6e, + 0x5b, 0xfe, 0x27, 0x00, 0xca, 0xf6, 0x9e, 0xf7, 0xdc, 0xee, 0x7a, 0xde, + 0x17, 0x87, 0xb2, 0x30, 0x2d, 0x22, 0x92, 0x9b, 0xcd, 0x0e, 0xeb, 0x35, + 0x33, 0xaf, 0x9e, 0x2e, 0x9a, 0x4f, 0xb5, 0xa7, 0xf4, 0x91, 0x1a, 0x58, + 0x27, 0x53, 0x5e, 0x59, 0x3e, 0xac, 0xfb, 0xc8, 0x6e, 0x18, 0x9f, 0x29, + 0x6b, 0x54, 0x53, 0xd5, 0xc2, 0x6a, 0x67, 0x89, 0xee, 0x50, 0x41, 0xe6, + 0x3d, 0x2a, 0xd6, 0x95, 0x55, 0xda, 0x4a, 0x0d, 0x49, 0xa7, 0x84, 0x17, + 0x32, 0x80, 0xa0, 0x1b, 0x80, 0x91, 0x6a, 0xdb, 0x21, 0x35, 0x1c, 0x21, + 0x98, 0x78, 0x62, 0x58, 0x96, 0x5e, 0x48, 0x54, 0xec, 0x34, 0xcb, 0x74, + 0x20, 0x21, 0x05, 0x61, 0x0b, 0xa6, 0xc1, 0x05, 0x54, 0x82, 0x19, 0x95, + 0x89, 0x2e, 0x05, 0xf5, 0x96, 0x86, 0xb2, 0xb4, 0x37, 0xfd, 0x09, 0xa1, + 0x02, 0x21, 0x05, 0x87, 0x89, 0x04, 0x05, 0x10, 0x7c, 0x9b, 0x93, 0xbb, + 0xc6, 0x67, 0xa6, 0x23, 0x18, 0x14, 0x00, 0x74, 0x0c, 0x76, 0x2d, 0xad, + 0x72, 0xe9, 0x7b, 0x38, 0xbd, 0x5d, 0x6c, 0x2c, 0x57, 0x76, 0xbf, 0x13, + 0x2d, 0xa4, 0xac, 0xa3, 0xad, 0x1e, 0x0f, 0xea, 0xa7, 0x5d, 0x0f, 0xdf, + 0xa3, 0x11, 0xdc, 0x1b, 0x79, 0x24, 0x44, 0x97, 0xe2, 0xa8, 0x3a, 0x34, + 0xe6, 0xa7, 0x00, 0x3e, 0xf0, 0x84, 0x28, 0x51, 0xa4, 0x98, 0x2f, 0xea, + 0xa8, 0x3b, 0x10, 0x02, 0xcf, 0x9d, 0x18, 0xc2, 0x07, 0x26, 0x9c, 0x98, + 0xa6, 0x70, 0x10, 0x54, 0xc6, 0x23, 0x8e, 0x2e, 0x6e, 0x3b, 0x3b, 0x46, + 0x55, 0xf3, 0x54, 0x11, 0x20, 0x8e, 0x2a, 0x82, 0x16, 0x14, 0x9e, 0xcc, + 0xd4, 0x45, 0x71, 0xcc, 0x41, 0x8a, 0x3f, 0xd5, 0xba, 0x91, 0x54, 0x55, + 0x76, 0x83, 0x80, 0xe5, 0xfc, 0xcd, 0x29, 0xf8, 0x00, 0x0c, 0x65, 0x95, + 0xa1, 0xae, 0x55, 0x8a, 0xb5, 0x4e, 0x72, 0x9c, 0x12, 0x01, 0xa9, 0x51, + 0xc5, 0x6e, 0x95, 0xed, 0x60, 0xc1, 0x95, 0x01, 0xb7, 0x52, 0x57, 0xdb, + 0x55, 0x12, 0x2d, 0x33, 0x06, 0x0a, 0x1d, 0xc0, 0x7c, 0x23, 0x68, 0x24, + 0x7b, 0x8d, 0xa5, 0xb3, 0x2a, 0x93, 0xb5, 0x06, 0x96, 0x5f, 0xbf, 0xd8, + 0x86, 0x6a, 0x5d, 0x70, 0x18, 0xc1, 0x6b, 0x3b, 0xa4, 0x03, 0xa4, 0xa7, + 0xa6, 0xd5, 0xd4, 0x0a, 0x25, 0xac, 0xd6, 0x4f, 0x06, 0x03, 0x08, 0x72, + 0xe2, 0xd0, 0xa8, 0x04, 0xf7, 0x3f, 0x5d, 0xa8, 0x80, 0x5e, 0x53, 0xc8, + 0xbf, 0x3b, 0xd9, 0x78, 0x73, 0xc3, 0xd6, 0xc1, 0xc6, 0xd7, 0x23, 0xee, + 0xaa, 0xba, 0xc1, 0xd1, 0xf1, 0xc5, 0xe9, 0xe5, 0xc1, 0xc5, 0xf0, 0xeb, + 0xf8, 0xf8, 0x74, 0x78, 0xf6, 0x71, 0x1c, 0xb4, 0x3b, 0x64, 0xcf, 0xae, + 0x3a, 0xd9, 0x11, 0x50, 0x5b, 0xf5, 0x89, 0x09, 0x91, 0x75, 0x93, 0x78, + 0x33, 0x3f, 0x8e, 0x4c, 0x63, 0x79, 0x0c, 0x80, 0x86, 0xd1, 0x9c, 0xbb, + 0x7e, 0xbc, 0xa3, 0x3e, 0x32, 0x42, 0x79, 0x7c, 0x70, 0x89, 0x42, 0x81, + 0x60, 0x11, 0xc0, 0x58, 0xc3, 0x5b, 0x18, 0x3c, 0x81, 0x53, 0x30, 0x81, + 0x14, 0x03, 0x6e, 0x09, 0x66, 0x13, 0x62, 0xd8, 0xe0, 0xe9, 0x05, 0x10, + 0x31, 0x75, 0xf7, 0x40, 0x3c, 0x46, 0x4b, 0x52, 0x10, 0xa9, 0x62, 0x3e, + 0xd2, 0xa8, 0x8f, 0x8b, 0x83, 0x34, 0x35, 0x0d, 0xa7, 0x82, 0x1b, 0x90, + 0x76, 0xc4, 0xd1, 0x00, 0x44, 0x91, 0x73, 0x24, 0x9f, 0x4c, 0x52, 0x62, + 0x1a, 0x35, 0x08, 0x81, 0x44, 0x5a, 0x53, 0x77, 0x0b, 0xe7, 0x3a, 0x1e, + 0xed, 0xf5, 0x9a, 0x46, 0xa0, 0x33, 0x11, 0xb5, 0xec, 0x90, 0xc4, 0xb8, + 0x48, 0xa5, 0x69, 0x35, 0xc9, 0x6c, 0x6e, 0x06, 0xff, 0x8a, 0xb2, 0x65, + 0x39, 0xea, 0xcc, 0x61, 0x9a, 0x56, 0x30, 0xa8, 0xc2, 0xd1, 0x18, 0x15, + 0x61, 0x08, 0xeb, 0x9e, 0xa0, 0xbf, 0x78, 0x21, 0x2a, 0xb4, 0x30, 0xa3, + 0x69, 0x0a, 0x78, 0x61, 0x06, 0x05, 0xec, 0x9a, 0x73, 0x89, 0x30, 0x1c, + 0x5f, 0x81, 0x06, 0x53, 0x60, 0x59, 0x72, 0x8d, 0x2a, 0x1a, 0x94, 0x01, + 0x75, 0xe8, 0x92, 0xb6, 0x8e, 0x68, 0x73, 0xda, 0x02, 0x35, 0x9d, 0x2a, + 0xec, 0x35, 0x79, 0xa5, 0xd7, 0xba, 0x5b, 0x7e, 0x5f, 0xb3, 0xed, 0x16, + 0x36, 0x8d, 0x3f, 0x94, 0x24, 0xe0, 0xac, 0x95, 0x69, 0x81, 0xc5, 0xca, + 0xae, 0xba, 0x65, 0x49, 0x88, 0x27, 0x0f, 0xba, 0x24, 0xd4, 0x92, 0x63, + 0x75, 0xe7, 0x03, 0x99, 0x61, 0x32, 0xbb, 0x0d, 0xfd, 0x69, 0x55, 0x2e, + 0x98, 0x69, 0x2d, 0x36, 0x24, 0xa5, 0xa0, 0xaf, 0x78, 0x3f, 0x3e, 0x3d, + 0x09, 0x8c, 0x43, 0x28, 0xe6, 0xaa, 0xa3, 0xa8, 0x42, 0xba, 0x3c, 0xf1, + 0x3b, 0x8e, 0xba, 0x37, 0x50, 0xff, 0xe7, 0x29, 0xc1, 0x10, 0xd2, 0x33, + 0x4c, 0xa5, 0x6e, 0xd8, 0xad, 0x96, 0x2d, 0xfb, 0xde, 0xce, 0x4e, 0x08, + 0xe3, 0x62, 0xc9, 0x50, 0x58, 0xe5, 0x76, 0xef, 0xac, 0x73, 0xb5, 0x6c, + 0x15, 0xf9, 0xb5, 0x93, 0x54, 0x94, 0xdd, 0xa5, 0x61, 0x3f, 0x20, 0xa3, + 0xca, 0xcc, 0xf2, 0xbe, 0x4c, 0xea, 0x26, 0x63, 0xc3, 0x6f, 0xcf, 0x9a, + 0x1b, 0x99, 0x67, 0x9b, 0x7e, 0xd3, 0x3e, 0x86, 0xb3, 0x1a, 0x68, 0x09, + 0xeb, 0x00, 0x50, 0x66, 0x20, 0x9a, 0x73, 0x55, 0x36, 0xde, 0xfc, 0x65, + 0x59, 0x6c, 0x00, 0xc9, 0xb5, 0x08, 0x9b, 0x44, 0x35, 0x27, 0xa8, 0xc5, + 0x08, 0x4f, 0xd4, 0x0d, 0x83, 0xa3, 0x98, 0xd8, 0x60, 0xfd, 0xb2, 0xf2, + 0xd5, 0xb7, 0x44, 0x6c, 0x83, 0x0b, 0x4b, 0x3f, 0x41, 0xae, 0x36, 0xb7, + 0x43, 0x7f, 0xc2, 0x41, 0xb4, 0x0e, 0x18, 0x05, 0x85, 0xa0, 0x95, 0xd9, + 0xec, 0x0b, 0xd4, 0xb8, 0x1a, 0x22, 0xde, 0x56, 0xd3, 0x50, 0xab, 0xcc, + 0x4f, 0x5e, 0xeb, 0xd5, 0x97, 0x5d, 0xab, 0xa5, 0x5f, 0x70, 0x2b, 0x86, + 0x77, 0x97, 0x36, 0xf8, 0x68, 0x11, 0x01, 0xf2, 0xf4, 0x6b, 0x2c, 0x07, + 0xea, 0x99, 0xc2, 0x6e, 0x7b, 0x2a, 0x1d, 0xa7, 0x10, 0x97, 0x3e, 0x5b, + 0x2b, 0xd0, 0x61, 0x42, 0xc2, 0x9b, 0xbb, 0xdc, 0xab, 0xed, 0xa4, 0x59, + 0x0f, 0xdd, 0x7b, 0x41, 0xfa, 0xed, 0xbd, 0x76, 0xdb, 0xdb, 0x7f, 0xfd, + 0x78, 0x11, 0x5a, 0x33, 0xdb, 0xb3, 0x7e, 0xd6, 0x9c, 0x50, 0xd4, 0xc5, + 0x9c, 0xb1, 0xba, 0x05, 0x03, 0xcb, 0x29, 0x44, 0x08, 0xe7, 0x0d, 0xd5, + 0xd5, 0xd0, 0xd9, 0xf8, 0x00, 0x15, 0x99, 0x62, 0xab, 0x2f, 0x87, 0x9e, + 0xf9, 0xc0, 0x4f, 0xdf, 0xe1, 0xec, 0xec, 0xfc, 0x80, 0xe1, 0x46, 0x8e, + 0x08, 0x32, 0xe5, 0xb7, 0x6b, 0xe5, 0xc7, 0xfe, 0x91, 0xa4, 0x60, 0x48, + 0xd8, 0xac, 0xfa, 0x08, 0x9c, 0x62, 0x20, 0x6b, 0x65, 0x00, 0x40, 0xb7, + 0x05, 0x81, 0x5e, 0x82, 0xb3, 0x6a, 0xfc, 0xf6, 0x6e, 0x08, 0xf0, 0xcd, + 0x70, 0x2b, 0x5c, 0xe3, 0xe4, 0xea, 0x7a, 0x17, 0xa8, 0xea, 0xf9, 0x0a, + 0x8c, 0xe9, 0x92, 0xb3, 0xd5, 0x80, 0x5b, 0x3c, 0xaa, 0xf6, 0x6d, 0xc0, + 0x33, 0xab, 0xa2, 0xa5, 0x51, 0x87, 0x42, 0x9c, 0xd6, 0x5a, 0x5b, 0x71, + 0xab, 0xdb, 0x46, 0x57, 0x5f, 0x29, 0xff, 0x1f, 0x59, 0x95, 0xdc, 0x7e, + 0x68, 0x16, 0x00, 0x00 }; const uint8_t g_DataIndexHtmlGz[] = { - 0x1f, 0x8b, 0x08, 0x08, 0x01, 0x99, 0x68, 0x5a, 0x02, 0x03, 0x69, 0x6e, + 0x1f, 0x8b, 0x08, 0x08, 0x92, 0xc7, 0xae, 0x5b, 0x02, 0x03, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, 0x95, 0x56, 0x0d, 0x6f, 0xdb, 0x36, 0x10, 0xfd, 0x2b, 0x8a, 0x56, 0x04, 0x12, 0x2c, 0x4b, 0x8e, 0x9b, 0xb4, 0x83, 0x6c, 0xba, 0xe8, 0x47, 0x86, 0x6e, 0x4b, 0x97, @@ -338,3 +338,4 @@ const uint8_t g_DataIndexHtmlGz[] = { 0x89, 0x7b, 0x1f, 0xfd, 0x0f, 0xeb, 0xc8, 0x35, 0xf8, 0x48, 0x0d, 0x00, 0x00 }; + diff --git a/src/data.h b/src/data.h index bfa5452..c79c825 100644 --- a/src/data.h +++ b/src/data.h @@ -3,10 +3,10 @@ #include -#define DATA_FIRSTSET_HTML_GZ_LENGTH 2418 +#define DATA_FIRSTSET_HTML_GZ_LENGTH 2416 #define DATA_INDEX_HTML_GZ_LENGTH 1549 -extern const uint8_t g_DataIndexHtmlGz[]; extern const uint8_t g_DataFirstsetHtmlGz[]; +extern const uint8_t g_DataIndexHtmlGz[]; #endif /* DATA_H */ diff --git a/src/led.c b/src/led.c index 8d2e633..393a86e 100644 --- a/src/led.c +++ b/src/led.c @@ -51,7 +51,7 @@ static void ledPowerGpioConfigure(uint32_t rcc, uint32_t port, uint16_t pin) { static void powerPwmSetup(void) { rcc_periph_clock_enable(RCC_LED_TIMER); - timer_reset(LED_TIMER); + rcc_periph_reset_pulse(RST_TIM3); timer_set_mode(LED_TIMER, TIM_CR1_CKD_CK_INT, TIM_CR1_CMS_EDGE, TIM_CR1_DIR_UP); // Prescaler: 32MHz / 8MHz - 1 = 3
URL: