WifiDog系统
WifiDog:A captive portal suite
What is it composed of ?
A: It is composed of 2 components:
- The client is a daemon process - this gets installed on every wireless router
- The auth server is a web application - this gets installed in a central location
What do I need ?
- Basic proficiency in a GNU/Linux environment
- A GNU/Linux OS with netfilter compiled into the kernel
- The iptables package
- The GNU C compiler (gcc). Other compilers may work, but we have not tested and will not support them.
- The latest Wifidog tarball which can be obtained from SourceForge
Pre-installation
This is where a lot of people run into problems, so let's state this in bold:
MAKE SURE EVERYTHING WORKS FIRST BEFORE INTRODUCING Wifidog INTO THE ENVIRONMENT
That especially means:
- The router must boot properly
- The router must bring up the interfaces properly
- The router must set up the routes properly
- The router must connect to the internet properly
- DNS settings must be set or obtained properly. DNS must work.
- DHCP settings (client, server or both) must be set or obtained properly.
- The ipt_mac.o kernel module must be loaded.
- If using NAT, the router must setup NAT/masquerading rules with iptables properly
- Clients on the desired (WIFI) network must be able to bind, associate, lease and connect the internet properly
- All the above must happen automatically when the router starts or gets rebooted
Do NOT proceed with installing Wifidog until you've satisfied the above. It will not work otherwise and you will waste lots of time.
Installation
Wifidog, like many open source projects, is distributed with standard autotools utilities to make installation easy. Unpack the tarball (from Sourceforge) or get the lastest source from SVN (see Download menu), then follow the standard:
./autogen.sh
make
make installIf you do not install it with make install, then you will find the compiled wifidog gateway binary in src/wifidog (also don't forget to copy wifidog.conf to /etc).
OpenWrt? ipkg
More details can be found in the README.openwrt file.
mkdir ~/wifidog.openwrt
cd ~/wifidog.openwrt
wget http://downloads.openwrt.org/whiterussian/newest/OpenWrt-SDK-Linux-i686-1.tar.bz2
tar -jxvf OpenWrt-SDK-Linux-i686-1.tar.bz2
svn checkout https://dev.wifidog.org/svn/trunk/wifidog
cd wifidog
./autogen.sh
make ipk OPENWRTSDK=~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1If there were no errors, your package should be in ~/wifidog.openwrt/OpenWrt-SDK-Linux-i686-1/bin/packages
Configuration
Edit /etc/wifidog.conf and follow the instructions in the file. Things should be self-explanatory.
Running Wifidog for the first time
Run Wifidog with the following switches:
wifidog -f -d 7
-f means to run in foreground (do not become a background daemon)
-d 7 increases debug output level to the maximumTesting
As a client on the WiFi network (or whatever interface is configured as the LAN interface in /etc/wifidog.conf), open a web browser and try to browse to your favourite web site.
Monitor the output of the running Wifidog to see what it's doing.
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGoAAAJGCAIAAACMa/QmAAAgAElEQVR4nO3dbW4rubJg0RqPRlPD6im8sdyBvKEIMBq4/aO6hDxJMhhkfstrY+MgnWKSwSAlZ1i2zl8///e/JEmSJMmuf10eAUmSJEk+QuUTSZIkSaZUPpEkSZJkSuUTSZIkSaacKZ/+/pddIsh3tRp3KIxVy32nQJIkSfI3eHH5NFECTZRPZUvlE0mSJMlRf2n5RJIkSZKj7lA+Lb/8e0HZvnVh95LuuMGF1VGS11an3GpDkiRJ8rvds3yKC5VkYdO6JBi3DCwmf22m58uXkCRJkuQ57lw+lQ3imqdVqFTHynSVubA7hWBGQeQkSZIkv9udf3mvPFMWHkFXrUcz5VP+wtEpZBqQJEmS/HoPL59+/ixmVvVGqwj5uyAzbvLCLVPoRk6SJEnyWz2jfPppV1BxCRQcd8dVPpEkSZLc15PKp9X5ubolvjZ/4cQUlE8kSZIkz/vbp4lrt3Q1Vz6t2ufjJEmSJPn1nvrREUFZkmkfj5u5sNVV6/LWlKtnSJIkSX63F3x0xKrkKM/HxU9m3L+LGil4qHp566HgDEmSJMnvdqZ8IkmSJMlfqPKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFN+Vfn0er2Wx/98uTxZbbnXoOUBH+c5azcxysbddfTmHO326GfloWtxYbSnRZV8WbtnEjaGt/ukJp59N0/syQ5l426v4ZnVr966fJMHTeq2ibrJK8+DfOK2f1L5tHqJqR63zow2mItq9855c09b68xAe7WZmNouRciWqvLQxB4x9EGvUVuiShZIu1dox3mTO+lk+fS4bxyrgI+Lf+jJcs4TZ8fyaXvwQ2F/OHSgLbm9T+dDI955E16YrjtEVd32rZevuNlS5dOeUe3eOW+u8mljHpRP+/avfDp5iMwoyqfTMjwdxm8on05br425vU/nQyPeeRNemK7LowrKpNb5LyyfPjMp/109uiw0Vw2qNWj5w5hqy3htqqvSHag1YhxVd0bdtU92NdQyeVUc53L6+a66a5fvNrkxqgN107JxVwTXrlqu5ltGWCanTFR3atXeWmvaWuUgn/G+ygTZ6rOVh2pmqkO0gtwlvZmpZcZqxdkN6ZVesni4VgzJCbbaz2Ujk5nVlLsDZSZSJrO74nG0rcC6mc+cbCUt3kXdvGWSORdSmbr8QPnduOx8aJTqLOJt+VrsgW5U1bln1isZdjmFZEjTue1uoeS8MgPF2yAznb02YWsztC7PJLZ7STdd1QRu3xVx6vK9rebVzWpwvpxOfPnPV5ZPB52MQ4oPMn3ONY6vyuybI/JTnhzqPD+pfCYzrwITEx/aKnGHo8vUTfJBqzyxDY54jsQJ3GsDJ7fNjjFsbLDL1ppYsu7JZAzdFRldvl0ujyeV34Qbh5t7Bc4Puno0v8P3jTl4me2mepeMtaLacRN2c5gccfTVadXnaM/dkKZfyrasYP4pUJ3+RBLyPSSnkDmZXLj8JfH5o3dFMNY52z7usLvcP8qnuV0eL0AZ2Gf9PgT9xMerHvK7tjtW8MRIDrqKc3rE1oVbMpmJZ2jirdWJd0t1lG6z6kSSSR7Neevk3Dao/tsdOugw3h7JIINB4xXvRrhLDFsa7LK14pUaer6MxhAsfea4mvlgk8RjBTNtxRZvgPxmm9s83Tkm16iat3hRpmOO85CMp7s98ouejGpiOslxhx7qTryVrkzG4pOtlUpu7GS3mRXsJjZegtFBW53suwmr48aJGr0k2BIn7IpM6obCiNc3nmMwStCn8mnmm1O8ANVdku9nl1DjhZ9+YgzlZ/U0nhux+lScyGTmOTk08eDMUITBJcmJZPbtEc+CZIPqs3XL62Bmyke8FEznZO4bwPaprXK1Mc6JF4qJGIYSm4mqHD3/9IyfUBMrdcS2TL5S5afzeXTidWz32QXrmJlaZn/O9bDlGZTJ4ZYRM/PdZWmqK3VCbqcHHd1C+SfXxDRHV+TzZf51IL4k3/KIXZFJ3VAYmYEm5hX0+bDyKZnog745xc+l+OUy388uobZGOTQ/meQMnay2mctk8rvUaMBDSxmc3PINYGgz7PgsyGyD6U627Ksd55vcNnvFsO/U9o1zy2vC3CveUONk8ENjJSeVj+2IbblxfVtn4i/jNrvPLtjeo0swlLFg6I2bMJPn6RHPWa94pYaC3DLToQVt7Z8tSejmf2IT7vXKM5SB0blv3BWZ1I1mcvQp9s+X8YhBxn5R+fTJxSoj5ZmgZRBPfvShecXxj76mBMFUp9xq2c1Jpp/ujLqhxlOL42zFMzqLz5fdDqt7JphInJ8gvGAzVJMTJC0zXLwWmeMy5lbegil3t1M5aHW+rcvzU870nE/v6G6c3lrVtWhl8lVbstas4xgyjatz7K5pt2U8Vj6x1YlkctjNf7zKq+N4b7Riq6aivHBoFwV564ZURpWf7/Si5xdxdDqtHrqrWV2UTKpH12tot2RCCoLMNEjuinimyYGmB6129TkfrEvr2lbLZfLjSLYEH7RsnXxt2xXBxIfWMbO+1ZVtZaMMu7Vhnlc+nWxmbe7paLTPmt1BE9k9CV+TVZK/R6+Ez031N9lNzhHZsyLMqHyqG9e793ci2mdNcPeJxD9mODMSkrxQt6RfkPBHG79ZcVDekoOS/6h8IkmSJMmUyieSJEmSTKl8IkmSJMmUzyufHvebqRsDvmS+l//pVPwryMFHvpw/8fsswd2mQJIk+X0+rHw66E9ag481vDzmq+6GM+Me9NEa+T8Y3WXQI2axvR/lE0mS5A1VPmX/g4urYlY+BQ2UT0cMTZIkyZZPKp9a/+NV+b9clRVR8M5Stdt4iOAg/sTzfHjxG2KrR5PdZsKLM5OJYS6M4NEg5ji3ZbNyxOlZBFsxOYV4oMzUqkNUM0CSJMldfHD5VL0VLo+7d5NBP8l78dH23UiGYs7PejQ/3ZvvHcOY63Z6pbbPIk5UK3V7ZSYok5RPJEmSx/ns8in4yX31p/I7lk/lv3H71qOrCOOWrcurgya7Pbp8Omh2G1dq+yxWPcSp27gW8eWZlJIkSXIXH1w+fU627imDk3GD6Zvy5L3+3MlWzN0e8i2PKJ/yV010e1r5FOfh0yxTCO1+MpNSkiRJ7uLjy6efqbvPoNvuje/o8eXl0/RYZ4Yx122+XGmNNT2LuKublE9KKZIkyX19Uvn0U9waLn/eP3qyfLTaptVh/jgfc7XlXIFRHavbMrjzjrO3SxjB0K0eMrntTmFuFplNsoxz1WZ0LYLL84tIkiTJjT64fOKZqZZ5kiRJ8mHl04/7+CuSLOckSZLkzxPLJ5IkSZK8ROUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaa8pnz6XwAAAAB4GpeVT28AAAAAeBTKJwAAAABIoXwCAAAAgBTKJwAAAABIoXwCAAAAgBTPKJ9er9cx0wcAAACALA8on76jdnq9Xt8xEQAAAODX8s3l093KlbvFAwAAAGCIu5dPW0qOu5Urd4sHAAAAwBDPK59e/7L8cnX8+pPg8tXJ5fnWQMlfwyv7HLocAAAAwN24dflUrZ3K4+rJicu7/ZS1UCbyicsBAAAA3JCHlU+f861SZMfyqfX2URzbqofu6AAAAACewn3Lp6B2ah0Ex92WQamT7DyOdu5yAAAAAPfhFuVT9c+B8gXMXu8+zQ3UDX7uzSsAAAAAd+Om5VNQXbR+ra482eq52qbbsvpldYhqn63LAQAAADyFW5RPJWeWFt4UAgAAAJDhpuXTyVTffQIAAACAJconAAAAAEihfAIAAACAFMonAAAAAEihfAIAAACAFE8qn3y6AwAAAIALeVL59PbB4gAAAACuQ/kEAAAAACmuL59ef7IMrjz5z3H1vF/tAwAAAHAo15dP70VR9F68v1RWTd1H396eAgAAAHAY9y2fPg8t31aK23gDCgAAAMBx3Lp8qr7pVP0dvyNTBAAAAADv953LJ7+8BwAAAOBWXF8+fd5NWn4sxPKhklWzd+NdKQAAAADYkevLJwAAAAB4BMonAAAAAEihfAIAAACAFMonAAAAAEihfAIAAACAFMonAAAAAEjxpPJpr48mP+HzzVv/va9PVwcAAACey5PKp/cN/lfcoQCqjS+fAgAAAIA5lE8HBqB8AgAAAL6J68un158sgytP/nNcPZ/5vbjWhe/abwauohqKcxlt5iQAAACA+3N9+fReFEXvRXVRVk3dR9+54qRa/Ez3HzyqfAIAAAC+ifuWT5+HyvImeJtornxqHSffUCrjDBornwAAAICHcuvyqfqmULJKCUiWT93GQZyZxgAAAACexX3LpzN/eS8YqNu/X94DAAAAfgnXl0+fd5M+/5bvNZW/nrd6Dyr5m3utflYjrlpWO0l2G0xnbKEAAAAAXM315RMAAAAAPALlEwAAAACkUD4BAAAAQArlEwAAAACkUD4BAAAAQArlEwAAAACkuKx8AgAAAIBncU35RJIkSZKPU/lEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkin3KZ9er9fr9Ton4tMGOmKsT4fVnrcMt3uHmRHPXIvp2EbjvO2kugHHu2uZivwcuy1vmK5uHrbPYtk+zuoN87N7nk+e7/kpnX6te/3LEZ1PJGevgSb6yVxy5+8p9/H8TXVOzBMd7tLP5cnhQ50pn1bPhJP33xHDnfZNJZm0veqo25ZPG29HhpplLjktaYd6RHHe7erO6TqufMpfeFp+LikqTh7xKvOvV8ErT6uTHW8rT9uNW8qn1rXHbafzR9w9/gs31b7x77UEyW/rybuFy1PEJzr57tOF90/Kp3wMty2fjh5U+RTPcaLPJ6ZL+fRlI17imT/rOXpFlE/njHic52+qQ2O+wzPrPonis9xaPr0WtNqUx+VPUKrHq96qF8bPzGqD1cnMFDJdlW2CmVZjbvUTXL46WF0bdFXOa3VJMvnlcX7cVgytfqotR2Pr7pNuMEPTbB2XXVWP80sf765yjvEUgqlNp6vVTz7DySWo5mF0mpkMt7Iab8uhGJJdlW0yaYljax3nkx/Pd3VJK43xusSpCzKzPIi7qmY+7mfVYdms2iCZt9Z8W5G38hkMnU9m3E8QUjC75D5JxrNlxEw+M3NvHd9/U3WT3B09GCJo3FqCVUIyXbVOri6PRyRLj3336RV+O1zu6bi3o68KXjiGrsr3Ewc80U83La0RV68s5XG3/arxdD+Za4PX1tG5tBZubtvES7bjU2B0DxwxryOe0UP9JOPfa5q79LxvqrfkanSfxHt7KDOtyFcNkuNmhmi9hnxoNQtiW13VerVZXZtpNnrcWo5uxqppSa5Xdwniroa2U7BP5uIZGjFuPDT37pa+7aaqruAunY8uQau3iVwFYZBJlU/RFLpXlU/j1ZcfMiMm4yn/zaSl++LYfd0p57I6U208PW61h+5w3bnECx2vdWs1k0sW999dqfzSBz1kxk0GM5quVg8TkSTj37h8Qznf8WQy1fF0Wg2q06l2WG2WX7K5yIfGzWSvOqlV49YujRuXB8FxstnocWs5uqmuzqubzOQSxF0NbadWt0GbzAZLjthNb37u3S19203V2lfbOx9dglZvr4JurrqLS3ZVPkVTyIy1eromR48DjuMp/82E2n1xnDtuvZa1tkS+/+oQwQtiss94oYd2SOZZsO9TILn0Oz4dhibe3cBBt0ORJOPfuHzTT7ejU33cFqoex3s7k/P8yaFxk0/A+DWkeiZ46HOmPAiOk81Gj1vLkUz1qts4mXttxaHtFAffbbNxxLiTobl3t/RtN1V14rt0ProErd6SwSfDIJMe/tERoy95G1+4567qPqnisZIvnd0Ru/EMDZFM0fYX3PhFanrcbuOJmIe2Sjer+Zf77liZrvbaXdvnNb0Jg6vmNnMyDyfkfMeT+67aluMgM/nkD50cGjf5BPzpvchUX3aS55OvSMFDW46DjCVTfeZWjFdq6Lk2Hc/QiHHj0blPb9GTN1V3s+21Y0eXIBPPai1auUqGQQYe/sHlrb1evrJUz8cNupe0jlsBtHoInpxBP2XMcdIyT/XMy83n2u6LQus1rpXnifbBamaOWxmuNkvGFocUZzWT/2DJujsnTlp8XB50L+9Odsd0dZOQz3C8SVqzOzTnmQROxxB0VZ6Mx6oeB2FkVnBjZqpDxON2p5PM0kTLap5HH1qN2F3ZoH2QtCDV8RCjK16eyaxLMvigq2Q8Q0uZmX7mTHeCt91UmWuDk92Yty9BsDStCcZh55eJ/LjPf5sbaC/yVp6/IT0F5HaXuVwy2asyfPnKxrdx9wzsngGfk5PLY+hGcp8gq7HdObxDg7z/xHlPjy2f7EveSrXTl/kF6U3+wFXtdMm6XB7GKp5uVLeK+bScXB5JN/+3CrJM4D3Dq0a7e5+Xz4sP9fB3n0iSJEnyO1Q+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmRK5RNJkiRJplQ+kSRJkmTKreXT//zP//l4cujVcfMnywbB1IJr//6XZNij7UmSJEnexPnyaVVdnF9E7VU+xZd0p6Z8IkmSJH+Jk+VTq3Y6s4Iqh2uFMVo+lZ3sODXlE0mSJPlQt5ZP8cnlmVYFEpRe1cuDumjVOI4hqP2GCrBVObT8sloplSdHeyBJkiR5iTPlU1BLtN606b4vlH80eFMoXz4NvXUWP9oqflZ02ycvJ0mSJHmV55VPwZfJy4MGo8fJd5ZalywN6p/yy5/wzaXutSRJkiQv9KTyqdogXz5lGoweD02nVTv99N5NChp0W1bPkCRJkrzKW5RPrd+gmyifVi1bI85Np6ryiSRJkvwlKp+uL5/y15IkSZK80PM+ea880y1OhjrMnB8tnzJOl08T15IkSZK80GP/36fVydaXZfvql/GZI8qnLe8+/Z346IifRjXVupYkSZLkhU6WTz+JDyXPtEk+mjlTFjmj5dPcG1NB+VStf5LVVOtykiRJklc5Xz79Y1C9/OR+VW+oejmifAo62VI+lQ9V20/0QJIkSfISt5ZPsZny48vct+BRPpEkSZL3Ufm0s1sKnu4bUyRJkiQvVPm0s7uUT/7wiSRJkryhyqed3VjzqJ1IkiTJ23ps+USSJEmSX6PyiSRJkiRTKp9IkiRJMqXyacz//vXXP14eCUmSJMmTVQZMqo4iSZIkf5vu/rf6qaNKL4+NJEmS5I66xT/QoLLa0cunSZIkSf4S3XyTJEmSZErlE0mSJEmmVD6RJEmSZErlE0mSJEmmVD6RJEmSZErlE0mSJEmmVD6RJEmSZErlE0mSJEmmVD6RJEmSZMq7l0+v12uXyzf2c1rYr9dr91CrHc6NcnIaf7OfnXDVHiZJkmTpTPm0usU/4o5/2fn0o3MtTwj75CD3KkGnu/rPX399bJ2vPjTXePllcNUdbIW0Y8VLkiTJHVU+XRD2yUHeoXzqHpeXlDVS0GdQPh2R0r1UPpEkST7LyfKp+u/n0bK++vmzyirblENU+6l2EnRb/cWnePTuuK3wuvHHQw9NZzW1eKzWcMlmy0cn5vUzXj5Vi5+y8apZ+W8wxKqfagEWvAMWtyxHL0MN3hYrc15d/SDhJEmSPMidy6fg/r48vzqOG3RPVnsIDuILqy3jYOamkBk9n4SJsQ6KamlQPiXLj58N5VP8y3v5cSdOVg8yBWSc527CSZIkeZDz5VN80Dr58+cP14dqj/KqoOcgwuCOsxVPMO7GKXSvGkrvVeVTPK/gzZzqKsyVT/FBy6GiqJxIcHnm3bDp8ilOOEmSJA/ymvIp2X/QSdCyG9hPu4gqT24sTrpTmJvO3Ml4EbcnueVQ8dD6xbY7lE9Dlx9aPsWTIkmS5EFuKp/KM6Pl01zt0b31z9xxJoc+qHz6snef4h6G/vapVWAEhUemsso02Otkfsr7/vKesookSfJody6ffha/WRS3j3/vqPq7SdWrlmfKq6oHyaGDYDIlRxBta/RM43wwrRhamWnNZZnk7ljVy4OKqPsuU+avmOLyqXrV6rh8tDVQ3M/Q8bLPYCe0Vqq6N6r5J0mS5F7OlE/kd9v9lT+SJEn+Tt0mkmuVTyRJkqzqNpEkSZIkUyqfeLj/+c9//Nv9lyRJkvdX+USSJEmSKZVPJEmSJJlS+USSJEmSKZVPJEmSJJlS+USSJEmSKZVPJEmSJJlS+USSJEmSKZVPJEmSJJlS+USSJEmSKZVPJEmSJJlS+USSJEmSKZVPJEmSJJnymvLpfwEAAADgaVxWPr0BAAAA4FEonwAAAAAghfIJAAAAAFIonwAAAAAghfLp/X6/X6/X1SEAAAAAuDvKp/9fO30qqLKUUlwBAAAAeN+2fHq9XnHRUjbYXuRUB012W232+pdMh90pAwAAALiWm5ZP70Tdck6xMT1K8HbW7mPdja+ZCAAAALBE+XTUEBPXfk3V8TUTAQAAAJZcXz69/mR5/l37/beycet35JY9zGWnHHcVWDfC6vlylGTjastW5NUUBX2W06yerLYps5EJEgAAAHgW15dP7z8/vGF5y746CI7LL9+b/5qo2mEZZ9y42211RvHJTO002ufqZGvQcu7VJCucAAAA8JXcvXzKFBvVL6tnhvgl5VP5ZlFwebV86s4RAAAA+A5uXT6V72ycVj4FVcFV5dM7/X7a3LtPmcuVTwAAAPjN3Lp8Wh0Ex+WX1TN54uInM9Zx7z6tLo+HzveZTHg37a2TAAAAwNO5vnz6FACff1e/TraqEFoNVu9WlWfyBJdU335Jjl5t2e2h2qzMXhln5vKyZfXLzNyrAdRSCAAAADyV68unG3LP+/5X8UbQ9OUAAAAAJlA+PYnWWz3HXQgAAADgg/IJAAAAAFIonwAAAAAgxZeUT34tDQAAAMDRfEP5tPpEuOqnwO04HAAAAIDfyQPKp/xnHrQ+QTt5bavD8pO+N8YJAAAA4Ik8oHx6H/Mf4OYvzPfwNeXT10wEAAAA2JEvL59Orru+pur4mokAAAAAO3KX8um1ID45RNnbe/G3UsuD1rjV80PBd1u2Il82a4XUavn+85cJ47lXs5EJEgAAAPhV3KJ8WlUdwckhqnXO6t9u4263+eCrj3aHSPa5OtkatJx7qyCMIwQAAAB+Ibcrn6onlU/ByfLNouDyavnUnSMAAACA9xeXT0GfV5VP7/Sn8829+5S5XPkEAAAATHO78mmvX96Li59MsXTcu0+ry+Oh5355L+iqWze2TgIAAAC/nFuUT+/EBy0M3dAHjatvv1R//60ctxVP3EO12epkNc7M5WXL6peZuVcDqKUQAAAA+KXcpXzal3ve978abwpNXA4AAADgfL6zfLotrbd6jrsQAAAAwF4onwAAAAAghfIJAAAAAFIonwAAAAAghfLpcFofrHd+JDgIq7nihgm5YUgAAOCJ/KLy6ZKPXsjXTjuGt9fnTPiwigxxiuIc3jC9u2ybXSLZkepn/e/Y+fK/BDjiibzsedV/2aDbW+vRXWLuErz6teYVtxwa6GhGV99nAgHAE/mS8in57Wfo1mGXb2lDPe/7TfS4+G/OyTF3hxu9ndoWzvVcNYVkmfo53reCWv3bbZzsc3VcDT4/o3vuruTsWg1afW78pjBNvsPWNAEAN0f51Dy//fvZaLfKp104M+bdfwr+xIQvuTD+zLN71WavaI8un6onV7XEbd+QiRmd5saep5vtPu473JkAgDtzffn0+THh59/l98vuL3W8/iSebTzExMnVFKrDdU/mp7mawvJktdvWQPmT1ZAyeR5KXXWa8dyDg2SQ1bm3UhrEX702+DIeOpOlOAnJ4MuTrbxVm5WjxAmJZxTkKk7Isn0Qf/V4NVw8UDyjVfCtxnGcJcm5JHurdljOsTXNOA+ZSbUyXJ3CKplBy6HJVuPprvu7vfRxt5mxktECAO7D9eXTu33zsTpIHges7gDiy5P3Lu/GN9QtfQYnyyxVr4q/zAyUOVll+0CtPVC9o0pmPhlntc9khltx5teoeyYZZyvmzGom+0xujGA1qydbLwKZ4DPPuMzKnrw/XwXlo/F8ywtbfQZPjWDcZJbKeFoz6g4UTGrZcmig5MRb03w3VjPuMM7haKgAgJvwvPKp+s1y4jtl9/L8t9XuWKN9BidbWSo7D76s3sF0+9zl7mF1slzN/NzLiQQnk3FWL2/d+rRaTq9R60xyzw8tXGs1WyeTOyQTUrDuZepac8+krjzZ+nL7/vxEvtf+HIoz2W3QJkhUZt3zk5oeqJvYeKDRZplnXLfDePsNdQsAuA/3LZ/ete/Kwbe6zGzzt33Vk/lvpflvk6N3D+X9Zav/zG1Ktat4mt1Uz90PZS6v7pC4h9E4gz7zd0LTa5Q8k2mZ7GcogH1Xs9oySF03+Ilk7jWjMvJkD0mScQ49N+OHhgqY8tmRj2Hu5SIz3MTrwPZB40smXk4BADfkFuXTe+rOeMdvbBvLp6F760yf+Vu0jeXT9pPJLG2/Sdpye5qPs3V5ZpRWnBtvp+binL4T3WXbTFz+Tqdur4WbG+iI/VklHj2/BN0+u18mB50rV3bZtMmBtr/OlxAp8K8AACAASURBVC0nLh/NGADgbty6fPqwatn6phV/N1pduGqf6TMOaTWX6gTjwMrwqrcarTaf42qHQZ/B6NU+46RVB4pT151ROfegzzKwjXFW81P2Vo2zNaMyw0G0E/msDpSfZnC+OqNqQlpzb131KpZ4aO7lEGVIZbO4z3iy5XATccZBVkevjtLt9lVQPd+dZpXMpKqjl8ONnozHWp0JGsehBpEH04zn3koIAODm3KV8Kll97zkwB2mSYVSb3WQKV/Ho6Zdb8dHTOYIbJmQopBvGDwAA7sl9y6f3yM8aT+BWwTyLL0jdF0wBLSwuAADIc+vyCVjx37/+eoRX5wkAAACHoHzCxXxlWfJ9MwJwIV5JAOA+KJ9wIOqHLpe/UcajvXqL4QHYRQDwIL65fPId6Ex8yweqXF6/8f5evUkBAAN8c/lU8vkuteXPxJN/aL7vH6MvPz93e+fHffuPk3PaX+e3Pvyw9WnC3ZZDAx3N6Or7aAQAAIC9uEv5dNq93eU/ZbyD1bQv/zeSzKMt7nmbnpxdq0Grzy2fZb+FfIetaQIAAGCCX1c+bWTiHYm9prZ692kohqFmQS1x2zdkYkanubHn6Wa7j/tWPgEAAOzK9eXT60+WwbV+2+o98oP/Fas+Vx0Gx0Gc5RDll/lptuZYLZ/Kxvk4q9G+23VFMuHVZsmljPOQTH41w9UprJIZtByabDWe7rq/20sfd5sZKxktAAAAYq4vn/4heRP/zt3avgoynQcjBnFWR69+mR90VUUsD6p3/PEE372ElHfhrZCCm/XqjDJRVafZOlnG05pRd6BgUsuWQwMlJ96a5ruxmnGHcQ5HQwUAAEDAfcunz/ng5n6auH54h3e3E50H/XQrkFXLMtq97pUzBczE9IOH4hqgPM5PanqgjWs92mx6eweXqJ0AAACO49bl0/RNbZdu+fRuFAxHlE9xD+XxQbfLyTi7PSufks22bO+h8kntBAAAsBf3LZ+2vP/TJVPJTJdPrT6338TvXj7lK6W58ikOdSIhc+XKaeVTq8bbsr2D2j44Hs0YAAAAMtylfHrXbhNff7I6s2Xay5vLVefVZmU8mSGSl69OVr9cxrO6XW6FlImzvLzaYZylVoetbl9/LmV1mlUyk6qOXg43ejIea3UmaByHGkQeTDOeeyshAAAAmOBG5dOZXHIf6eYVAAAAeDS/q3y68GfwfvwPAAAAPJ3fVT4BAAAAwDTKJwAAAABIoXwCAAAAgBTKJ0RU/1jLX3DtyxH5vHaN7BAAAPCt/KLyaeMnN5z2wQ/3+YSJfO10TszB0OVngrd6uEluPzyudurmMDn6V64mAAD4en5R+fTefFu5/V5ty51l6/xxd5BDw137WfD50e92w31C+bT7ELuUT8GFz11NAADw9Sifzrs838MdyqfRsZ7yX2nd6ob7nLeeziyfNr7Be8IlAAAAW7hL+fRasPxy9dDyTHduq6ve/95sVX87KDhZvXzZuGxWHpeziCOv9lMdKHOyNaNqNpYxdE8GfZYhlQ9VeyszEAwRDz0UZ9AyiLaazCDaVQ9xnNXj1ihln3GWWgHHj77/XJ1gRsvLy97ycXazFDSutgQAAJjmFuVTeWcWnKw2KMlfPjR68OhQg5jWNKuXV28uh0KKe9hloHwSVjfc+QCC8xuXuDtEnM9WnxvzuWWHxHF2Bxqd0f1XEwAAIMktyqf3yM1ctUFJ9z5ydYP4oXv5ljjz5VP+8uRd+LtRKXUDGB2om8+vL59aLbvTeW9+IgyVT8GZTJYyy/GU1QQAAEhyl/LpH6r3SXOlyFD5lL/8iLvbZJz5UJN385nR8ye7t6qte+6g2fk33O90kTm6RpnaqfVo8omQzEbr5FBZkpzRU1YTAAAgyS3Kp/i+cHv5lPwRdf7k0I3sTcqn/P3ljuVTdzW799xxDLvfcCeLn9bl+SDz+Xw3UpcMPh/Ajk+Estv7rCYAAMAW7lI+VX+e/a7dbS/vjboVVNm+enl19ODyVeP48mrj0bDjy1vxdE9Wr62G1I22m8+yn1YqPklOjtJtmY8zuDaYe+by1bhlb63Ly0u6s2j13B3o1aD66LLbYPSyQbfzuGW3h+40AQAAprlF+YR92XKzWL3299x9rm6+D+rziHxeu0b33CFHrCYAAPjlKJ++DT9u38gRCbQoVyHzAABgX5RPqPDfv/4iufTqJyUAALgFyqffhTtFAAAAYBrl09n4CToAAADwUC4rn774hl4BAwAAAHwl17/7dPmfNHiHBwAAAECG68unDDt+cNbyf4k5f3QAAAAAz+X3lk+XjA4AAADgudylfHotiE9WL3wv/kPS5UGrt+r5oZC6LQEAAAB8Gbcon1b1SXCyyqp8avUcdxVcGIc08duAAAAAAJ7I7cqn6knlEwAAAIDLUT7Vzw+9IebX9gAAAIDfwO3Kp4lf3ns3aqfkmer5iXefAAAAAHw3tyif3omPZMi/ARVcG38aROZ83Gwk8wAAAAAexl3Kp+cy9C4ZAAAAgOeifNoB7z4BAAAAvwHlEwAAAACkUD4BAAAAQArlEwAAAACkeEb55M+KAAAAAFzOA8qn76idfLYEAAAA8HS+uXy6W7lyt3gAAAAADHH38mlLyXG3cuVu8QAAAAAY4nnl0+o/Waoev/4kuHx1cvV/4AadZyIve8hfDgAAAOBu3Lp8qtZO5XH15MTl3X7KWigT+cTlAAAAAG7Iw8qnz/lWKbJj+dR6+yiObdVDd3QAAAAAT+G+5VNQO7UOguNuy6DUSXYeRzt3OQAAAID7cIvyqfrnQPkCZq93n+YG6gY/9+YVAAAAgLtx0/IpqC5av1ZXnmz1XG3TbVn9sjpEtc/W5QAAAACewi3Kp5IzSwtvCgEAAADIcNPy6WSq7z4BAAAAwBLlEwAAAACkUD4BAAAAQArlE7L45UYAAAD8cpRPSPH5mMHll2UD7IV8AgAA3JAnlU97fbpDt5PRgYJPQm99tPryQ89Xx8sz1Qu7Y72LT06P2wxNudoyf22rw9VDrQ7zcT6aMhs7zrq6wXbsea9dV90Yy0d3iblLctO2oo1n0R0IAADcjSeVT++r75nilqt7qWSD5a3V6mD5b9xnvmUmtgmmL58I4GvuMuPKoTzet4J6F9smE0yy2V677p5rnZxdq0Grz3tOFgAArFA+bRpo1WziZnFj+ZT5shvSVbXT3LVfc5eZeV8ls7LTQx9XPlVPTuy6G6716DQ39gwAAO7G9eXT60+WwZUnPzde5fnMj2+DC5MDlR1Wvxz9SXy1UipPtuIZPbPqc9UsWJEqZT7ffybwPZj51hyTjfPBr5oFE6+2fP+ZwHju1Wy0Zlo9XvU8Heeyn+UQo3FW85mZS7K3aoflHFvTjPOQmVQrw9UprJIZtByaLAAAuBvXl0/vkTdb4kffuVuQ6n1PZqB8V9WbztbJd2Puwck4jOVw3Wnmb++qtO6Yq9HGt9fB+XiNqie7k5ro812krtqyeiednHucsTvE+SooH61eG+y6Vp/BIgbjju6Q7oy6AwWTWrYcGggAANyT+5ZPn4eqdyHVNuUdSZXgriUeKN9V9cLgrm413Gci3ZvCYLjuoOW4E7SCaa1U9/Lq+fg+uHpyaO26fZYbrJvPaoNgjtWTmQ02F2e5wYbijNlr12U2dneg6nF+Utu3YtlJZiAAAHBPbl0+Ve+Jy1uf0duO5P1Q5h4rc3cbx1ne0S7Pd2/Lgp6Dq4Ji41XQ6jmeUfUWOR/5CTfHc/fBmcuDtWv1kDyzV5zVIPNxdhnddd1+ug8pnwAAwDnct3wqbz7++9dfv8pqEsrj+Mv4njV/I1slLn4myoPW+e2lTjz0xH3wEWVJ3Ky7GU6Ls8oRu26vPd8NKRnD3EDJsZRPAAA8guvLp8+t7ev1isuJ178sr1p2krkbW1KeLHvLdxsH8yooW646ubx+Y2l1ictFrO6HciO1Vj/eYEGfwU7eK844yOrorWdH3O2roHq+O80qmUlVRy+HGz0Zj9VtCQAAruXi8ql6b3oyblnmuGfeVre5Wy6vcnn9FhR1AAAAOJrLyqeb3Pb5oe/3Mb2mT9kMZZxqqieiVAYA4IlcUz65DwCO5vL3xBh79QYBAAAzXFY+XT1xAAAAABjj+o+OAAAAAIBHoHwCAAAAgBSXlU8AAAAA8CyuKZ9IkiRJ8nEqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEkypfKJJEmSJFMqn0iSJEky5T7l0+v1er1ecYPLp8rLPX8bbByxenn+5PkJ6T4T4wu7z+Lf9kT+hVPmhMt9stee2X3v2cwkuZcz5dPqTqv1irw871WbP8qnU+abjCS44Wt18q23X8G8qpnJlJrbI8nfkWeCqYYdTGfj6OdslVbYrZOtODOh5pOw19Nn9xx+6/OXJM938t2n1ffg6Tb8VZ6/DTaO2LoNusPUqjHMhbHLHeRzTd7vxl/uHsnGAiaeSHeIz5ejnd9tHTNzTPYcfKfbfWMcvbtIklvcWj69FqwaLM93m616Lr/nBd+6Wgd79Z+MvHVha+hMJKPRlmlJJqSaw+pAQwlZncxH1RpoNO35aIM8xF1t2SfdOIes5qp6UJ5cjt7KeXC+lYpg4nGHQZ/JwEYn3ho08+XukWeOu/G3Ih+d0dCuyydnaLLdoTNzzPecz2ErjZn5BhlO9hmsVHk+mH6mk9H2+dyS5OO84N2n5St49WT3wuoowcEu/Xd7zlxVfgcavWR0jXZZhaGlD3quPpS8djTtE1MOTh69T5JPqKBZ61amehAcJ5uNHrdCPfQ4mPiHVpxBPg/NUhx8Pv4y8uUlyRnF3QarfFByuqNUww7mvnGa3X0yN8d8n0NtPieDKR+3WCT5TV5cPpXfwILvfK3vGdV/9+2/jDyefnLooYF+Br8/rbIxNJdglKDDeL7VkDLXxgsa52duyuXJzIrPBTzaf35vfM6UB8FxstnocSvU/HGZye5xd+JBnN1mR0RevSQYt9tDq9vkjFppCTrZZat0p3DcRq0OndzMu8x9qM/kysZTy3TSSlEmdST5fd7l3adWb90X4tfijnz57779B5FnRskMPZSizPenVTaG5hL0v6WT6jfXXaJq5Weu8/Lk0IrnA57ov9V5NbGfPbA6CI6TzUaPgwU6rp/uxIP+u82OiPzz5erR1rjxKK0tFw+9Grfbczd7E4lKjr5llMwyZZIcL8fc6Ef0GWR1x3QlF44kn+5dyqfqyb0G2tJ/PvKhq5KRjE45aLZlFbZ38vr3LnZimfJp39JPfPLofTLaf3AD1Dq/ajPx0B2OV0nbOLuhfG7MUjLyoUfj1e9unkyWMp3Hudpx6S8ZJb8ldhn9iD7jNd0ecCYtJPlNHvjB5T9/vl4vT7a6qvZWtikbtC7f3n8+8m63ZWwTl5SDJjMT9zC6pplO4q1SbZY/OZHzbj9xHloTT6YlXqBWnEnjqKptkg+tppZJSLV95trWQHH7jbOrLlOcz0MjH3o0uc2mEx5no9rJq7hBD7qqBjA69NCGzJxPZq+7FtXwNu7PeBZxNrqDxp3EnQ/lkySf7j7/bS4vNPhedcS3sfO/Nfpm3M3PPVM0GthNJjIRxk0i55keseitPi/fYJcHQJK3Uvn0bE+unY7rtjqQ79n5RF0exiqe5xYhz42cZ/obyidvKJFkVeUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSaZUPpEkSZJkSuUTSZIkSabcWj79vWD34P5ucFWyVqNfHg9JkiTJM50vn46ubVr9X1WulKMrn0iSJMlf5WT5dEJtc7fi5G7xkCRJkjzZreVTeWZVYLSKq+WZskG1Kkt20o2wdW0QcDKe6fmSJEmSvL8z5VPr1r9bS8QFSavAaJUrweXVILuXBwFn4tkyX5IkSZL3d8/yqdWsrEDKL8tug+Jkoreg/9WZbvtkhxMRkiRJkryzZ5RP1TP5auSIy7uzyFQ7+wZMkiRJ8uYqn+q/grhkusOhgEmSJEne3AP/9unQ+mfj5a1ZBEMcHTBJkiTJm3vgJ+8dWv9svHyiwdEBkyRJkry5B/6/T6uTrS/L9tUvfxrVSPXLoLdk/6PxbJ8vSZIkyZs7WT79tCuobpvVQ2Xj0QZx/xMBZDrM95CcDkmSJMmbO18+/WNZJwQN4uJhot7IFzOZ/vOXtEbcMl+SJEmSN3dr+XQfVSMkSZIkD/Wp5ZM3c0iSJEme7OPLp9Yvy5EkSZLkvj61fPpp//+2JEmSJHmEDy6fSJIkSfJMlU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIpv6p8er1eq4P8JdsHzTR4vV7/fFm9answGyeyVwCtfuIhJpZvrzXa8aprY75PEsqtvuOMrnr6bBwiH/ahc6m+It0qUSRJ3tknlU+vP6k26J7JN0jeAexYql14z7Hv0HN3hPveZ6/uER+Rw5vcdG5P3V4lwavGhYn6svLpuFGO/kEMSZIX+rDyabRBfMmWR/NttsR/n9xu7035dPIqXJi63UuC1bXKp13CUD6RJDnhN5RP5VtSnx9RB29V/RS3iaseWmeqPXQPgh+fV+NsDdedUbefYGrVbjM9dPvJ5LNMXbJZd7huwPH2yFxejvg5Wc4o38P0EkxMZ6/UtSYSzyi2NXo1sd2Y85GsHs1noxVYdwWn17e7VVbxxAEMTarbshVSPLuyWTyXVoQkSe7rw8qn6jfUZYPWQbW3+HiuQeZgx5PxjOY672Zsr/A2ZiwOfnp9pzNW3iCOBrDjDhmdzkGpyy9rbHmfPdr/loxNZGNjBranfTSMzIWf46EdsmUimYGqeyO5r0iSnPBh5VN8csv9wZKg53jo8t9WMHudjPOzy31kMjM73pRnBqqmenS4cmrVHobu26oZSOZ8+w7JbPhdViqZutayxpfHHWb63ytjo+uYPDm3BJm0lwGXl7TCWLVpjTWRk1YAW1q2svdSPpEkD/aXlk/xDUHQc9xD+W8rmL1OxrOY63x7D0P5DBIVNKumem64lpmpZW718gHsku3yfve4leqmrrusSYfyuVfGkks8cXJuCZJ5awU81GH+ob3WYmjVuk+iiT1GkmRS5VO/k+px8t632+FBdxJlkPnO5zKz4015fsqjkc8FHLdM3qAft17xVjx0pYZ6GFrWeEZ73bJnhp7r+ejyaZeAkwlPbtSNa7H9Ra+VnDhXJEmO+rDyaUn1/OfM6tFVP0Hn5cmywb43nfGkWhmIu4rPxLEFaZ+YSCvtQWCZPMSruVq+fLqqo7SCDDZM2WdylVsxJxdxejoHpW56WYMOu/3n92d3Fpm0x5thNVy8H7qPjgYczyJIeH761VC7aU+2/JzMhJTZLSRJbvdJ5dNebv9uevn348sDIJ+rp893J/OGIZEkv8nfWD491/hnzyQDPX0OyurlMdw5HpLk96l8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTKl8IkmSJMmUyieSJEmSTDlTPv3d5szQDxq02m33ZNlgKEVHJ/CIZVp2tXv8u2+w7uWHTockSZLf4c7l05l3nAeNWO22e3LVYDQ/h2bviDVqzfeggDf237380OmQJEnya9y/fHr6TWc5i9bsgvmOpuLQ1B3R+aH1xu4Bj5ZPJEmSZNVN5VN8Pq43qsfdxtO9xZdkJrI8iCf7d8FQNsoGmTi7Uw4C6AbW7bMaSffCeHcFs6tG2Jpp63xyOt3dle954rlGkiTJW3l9+dS9Zx29qW3ds3YbxBP5+bOWGAomaD8UbTXIeDqtBsG1E30G5GcUjJ4JvtV/d9Bu8Pnh/h6fL0mSJB/kgb+8F9xQrjqpts83mOgtvqOttgyOu1/G0QbBTzdoTSdzedzb9sVqnckEPDfc9HS6w+0yX5IkST7FAz86Ij7TbT/UYHtv1Qkmj0eH23fuQ9OZC6/b58kBBw2SHQ5NZzSBo/MlSZLkU9yzfGo1q57ZfgO6b2+tyKtXdfs/c+5D05kLr9tnPuCSiYCr1wbddmcU99+NZ+N8SZIk+RR3+Nun/D3r8kz+BjTTYHtvrcirV3X7P3PuQ9OZCy+/BzKbZMVEwK1rWz13ZxT3n+lwy3xJkiT5FPf56IjkPevyTP4GNNNge2+tOQYznR5u37l3p5NpHIfX7XMi4LkNNrp2ydHj9qMJHJ0vSZIkn+Jun7yXv6H8+9LyadW+dYP795/kz2eC7wazvUFyaeJ48nsgnm+mwdxeSjbozmj08n3nS5Ikyae4f/lU3kGWVDsZvQEd6i2IJ55j2aD60HTwrWC6oeank788aB8kIY4/P6PMtXOL2x00eXk+wqH5kiRJ8ike8v8+VW9bfwYLnqEGmdvZ7iXxXOKHRoPPBPP3n8QLkWyW6T/OTOvyTCfdGU0sfRBPckG708nMbst8SZIk+RRnyqfv8Mtuar9sOiRJkuQN/S3lU/Ltgqf4ZdMhSZIkH+GvK5++4/epvmw6JEmS5CP8LeXTT+9vYx7nl02HJEmSvL+/qHz65f73r79WXh4SSZIk+Sz3uYde3YuXd+q83Mu3GkmSJPl0dyuf3KmTJEmS/G6VOiRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvlEkiRJkimVTyRJkiSZUvnU9PV6LY//+XJ5stryuBjmhpuO7TPluNst/R+UtOmxzgyJJEmST/RJ5dNrwS69dY9bZ0YbHBft9sZzM9pePl1iHO2z5kKSJMnzfVj5VD3etzfl09AQzyo5lE8kSZLc4jeUT9XjzFtVy9/HK38373Nm2U/5G32rIaqDxsGUpcjqoIwh7i3TON9DtXEZarJZ9WAiaeVwo2ms9pDPVTBZkiRJfqvfXD5VG5Qdlv9mutp4sjqvzMFQh9tD6vaQnPv0hZkI90rj3JrGcZIkSfKbfFj51HofoDx+XPlUDeO48qmVzHwP+blPTC0zx+o2mEvjaK5aeSNJkuR3+7DyaXVQfql8yjTu3vrfv3z6PLR9rOlcKaJIkiR/m48snzLH+fvvVrPTyqct09lePm3sYSjCfZO211if44lI8nGSJEnyC3xq+fRT3Ll+qD6a6XOofKoOujy56qp6vhtG2XNyat3G+XiqjVvJqc49Ph5K78axlpkpO8nnqjs6SZIkv9InlU9foDtsSSNJkuRzVT6dYfxWDyWNJEmSj1D5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmfKa8ul/AQAAAOBpXFY+vQEAAADgUSifAAAAACCF8gkAAAAAUiifAAAAACCF8gkAAAAAUiifAAAAACDF3cun1+tVPfkP3ZafxoNpGaYa0kQPmSHOmREAAACAFXcvn0o+lUO+hDi62JgIKe7n0FEAAAAAzPHg8unQSy7pP9mP8gkAAAC4hOvLp8+von3+XR4sS4XWb6+1fp8t33j6l+J2+YW60R6UTwAAAMAlXF8+vReF07uoDapFUXUmwYXVX3srTw796VG1q4nLJ/rptgEAAABwBMqnHf6maEtJo3wCAAAAnoLy6f8f71UCbblW+QQAAADcmVuUT+9G7ZQ8Uz0/8e7TNMonAAAA4Ddw3/Kp9ZdC1T89yp+Pm01kcOPlQfytxnOjAAAAANjIXcqnCxl9/wcAAADA70T59H63P/ocAAAAAD4onwAAAAAghfIJAAAAAFIonwAAAAAghfIJGMAfyOG52L0AAGzne8onH/8wzcakPT3z+eCrzW4y95uEMcfG4O8z96G9dEnMN0kUAADP5UvKp+V/67Rvz/ty8/AmeErmY7aUT/nLp9kY3iPYXsPvFclG8pEonwAAeCLfVj7dnKfEmec7ZpSZRdBG+bQd5dNp3CdXAAA8kceXT68/mWuZOfk5DlrGd9hDo7d6aEUSP9qNKhhllxm1uo0v7ya/1SyZkFb8rfkGGYhnVL0wDqkcohtkq2UyyUOjD+XthOCX+azO6HWbvVRtmZn760+6LatxfnIFAADmeFL59CpYPpTsYfXv6truybLBUBjxrUzyxqt7eTXOfFRDl+dnlA++G1Xm8veuC1eNJzl6q7d8SEPbO9Pn6MnMUyYf0qHBdy95X7qXTluO4Fmc3E4AAKDKk8qngKH7y/LmY8mqfesuJC4M8nEO3SUnLz+iMNgYUqtlmfn8Pd8R1ULA9A13t7fMBuuGF/QZJDkZUv4p0wqs2zKYbz741hrdZy8NTbO1cOVyDIWU3E4AAKCK8ql5bXxDH9+B5eMcukvectuX7/aIkLotV+czjU+75a22OeI2Op+6uT7jDoPLk0+ZOKq5uiJ+Gi6btbbNrfbS9mm+w+VQPgEAcDTKp1PvwpVP3ZbdajZ/+b7lU3DJU8qn6ZOZp0w+pEODz4x4t/LpiOXYuJcAAECLbyifXgu6zd6Lm4/lrUZ5+atB2Vtm9DKMcqC5aSbj7Pa5ms7oPCHXNAAAAw9JREFU5fGMNrbMXz6UkGqDgHigIKSyn25I1Uu64U1kKRPYa7E38tMsowrad4MPRl9+WT3/utNeimfUneY7sRxxnEFsAACgyzeUT/gmVne6F0ZS5YYhocXN99L5SAIAANtRPuF2ZH6ED2SwlwAAwL4onwAAAAAghfIJAAAAAFIonwAAAAAghfIJAAAAAFJ8Vfk095HBcfv9orsL8dx/z9/ZH/GhAhd+UMFNFu4OMQAAABzHV5VP7/T/WfnLb/KSWbqKjQEMXX7EZJN97j7NyxcOAADg6/ld5dNos29F+bTXWFv6VD4BAAA8ji8pn4Z+Je+duNEse/t8WY5Sjt5qXA0yPpm/PD+puM9gOsGMRlMapKvacvryblSZOFf9t1LX6rM1RHl5JvjW5a/altvYZ3l5PhvVPuOuunECAABcy5PKp1fB5/yyTaaf/IhlAKuHWqNXb0PL4yNOduey++jdlA4FX/a28fJkYEMDBSMmA0hOc+jy/P5sdbj8t3V5sO7VVOT7XLUEAAC4G08qn1qcWT6Vx63eWne31R+xlyeDNt2W3XiWwZd9/vLyKZ+QYDUnhm4NtPHyIM7q5ct/lw8ld101Fas+g9Wsjg4AAHAflE8DLbs38fEo3ZZb7qe3FzD5ljsWb3GDvS5PBhZcW97WB6PcrXzKBPP+c46ZhCufAADAL0T5NNDytBpg48nuXI4YPeaJ5VN5nBzxtuVTZofkS51uDBN9Kp8AAMDN+Yby6f3vz8I/dBtPdLjqvDwufzZfBhOfLMfqXp6fdXWgueC7ccajd0N6/5neoZCql+ez0Yrz3SgVgjjzOYn7TF6+ujB4KO7qtVjZ6qSWvQXNJvqstgQAALgVX1I+4RJWlcM5AwEAAABXoXzCJobeLbntEAAAAEAG5RMAAAAApFA+AQAAAEAK5RMAAAAApFA+AQAAAECKy8onAAAAAHgW15RPJEmSJPk4lU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIplU8kSZIkmVL5RJIkSZIp/x/45nu20zTsTgAAAABJRU5ErkJggg==" alt="" />
WifiDog系统的更多相关文章
- 2012高校GIS论坛
江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...
- 海蜘蛛WiFiDog固件 MTK7620 OEM,带云AC功能、探针、广告插入,MTK7620解包打包维修默认参数
修改内容: 1.系统默认管理员员帐号密码 2.系统默认LAN 接口地址 3.系统默认DHCP及保留地址 4.系统默认云AC远程地址及协议内容 5.系统默认JS插入地址 6.系统默认探针位置 7.默认顶 ...
- 极路由1s,固件需要刷入RipOS系统的加40块
极路由1s,固件需要刷入RipOS系统的加40块,集成wifidog功能,wifi广告路由器的理想选择功能. 经过测试,无线性能稳定,无线可带32个手机客户端. 具体配置: 7620CPU ,主频58 ...
- wifidog源码分析 - 认证服务器心跳检测线程
引言 但wifidog启动时,会自动启动认证服务器心跳检测线程,此线程默认每隔60s与认证服务器交互一次,会将路由器的信息(系统启动时长,内存使用情况和系统平均负载)告知认证服务器,并通过一个&quo ...
- wifidog接口文档(转)
目录(?)[-] 网关心跳协议 请求信息 回复格式 例子 用户状态心跳协议 请求格式 注意 回复格式 状态码 例子 跳转协议 请求格式 例子 注册协议 请求格式 例子 wifidog是搭建无线热点认证 ...
- Wifidog的协议梳理
上篇文章结合wifidog的协议,讲解了如何实现wifi认证.这篇文章会详细讲解一下wifidog的协议. wifidog的认证流程图 用户连接WIFI会跳转到以下地址: 1 2 3 4 5 6 7 ...
- Wifidog初分析
一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交互,在路由器方(客户端 ...
- Wifidog及认证过程初分析
Wifidog初分析 一.综述 wifidog是搭建无线热点认证系统的解决方案之一,他比nocat.nodog更适合互联网营销思路.常见的使用在openwrt系统上,它实现了路由器和认证服务器的数据交 ...
- wifidog用php实现验证流程
原创性声明 此博文的出处 为 http://blog.csdn.net/zhujunxxxxx/article/details/25384909假设进行转载请注明出处.本文作者原创,邮箱zhujunx ...
随机推荐
- Mysql 时间操作
Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度) 1 . 查看当天日期 select current_date(); 2. 查看当天时间 select current_time(); ...
- Perl 多线程模块 Parallel::ForkManager
Perl 多线程模块 Parallel::ForkManager 一个简单的并行处理模块.这个是用来对付循环的多线程处理. 放在循环前面. Table of Contents 1 Synops内容简介 ...
- DDMS files not found: tools\hprof-conv.exe
最近在Eclipse下每次更新ADT和SDK后都报一些错误,比如 DDMS files not found: D:\android-sdk-windows-1.6_r1\android-sdk-win ...
- Gunplot 命令大全
在linux命令提示符下运行gnuplot命令启动,输入quit或q或exit退出. plot命令 gnuplot> plot sin(x) with line linetype 3 linew ...
- CentOS6.6修改主机名和网络信息
1.修改主机名称 [root@centos ~]# vim /etc/sysconfig/network #打开文件,修改以下内容并保存 NETWORKING=yes #使用网络HOSTNAME=ce ...
- (转)单例模式(Singleton)
首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了, 比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个, 这里就可以通过单例模式来避免两个打印作业同时输 ...
- NVelocity引擎
NVelocity引擎输出HTML流***(一般处理程序中) VelocityEngine vltEngine = new VelocityEngine(); vltEngine.SetPropert ...
- July-程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大经典原创系列集锦与总结 http://blog.csdn.net/v_july_v/article/details/6543438
- C#基本语句与C++区别
条件语句必须为bool表达式 int a = 1; if(a) { ... } 在c++中可以,但c#报错 但 bool b = true;//不能写成b = 1了: if(b) { ... } 是可 ...
- [Leetcode] Remove Duplicates From Sorted Array II (C++)
题目: Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For ex ...