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 ...
随机推荐
- Direct3D 11的流水线
流水线 流水线(Pipeline)是理解D3D必须要掌握的概念. 整个流水线有很多步骤,有的步骤是固定功能,不用怎么配置,有的步骤是要写代码的,也就是所谓的着色器程序(Shader). 一般来说,将流 ...
- this关键字的解析
this关键字的作用: 1.表示类中的属性. class Person{ // 定义Person类 private String name ; // 姓名 private int age ; // 年 ...
- Hibernate自增列保存失败的问题
author: hiu 更正说明:今天(2014-07-07)才发现的问题,我把@Id设置在了实体类中的id中,@Id是主键,应该设置在实体类的keyjobno中,之前发的文章可能误导了大家,如今更正 ...
- Android 编程下模拟 HOME 键效果
Android 应用开发中,有一种场景,就是我们不希望用户按 Back 键直接退出 Activity,而是希望应用隐藏到后台,类似于按 Home 键的效果.参考如下代码即可实现这样的效果: publi ...
- Hacker(23)----破解常见文件密码
Win7中,office文档.压缩文件等都是常见的文件,这些文档含有重要的信息,即使用户为这些文件设置了密码,黑客也会有办法破解. 一.破解office文档密码 破解office文档密码常用工具是Ad ...
- oracle之substr函数
substr(字符串,截取开始位置,截取长度) //返回截取的字 substr(,) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 substr(,) //返回结果为 'H' ...
- mysql 5.6 设置慢查询
mysql 5.6 开启慢查询日志 slow_query_log = on #开启慢查询 1 或者 on long_query_time = 3 #记录超过的时间,单位是秒,默认是10s slow_q ...
- 多重和嵌套if
多重if实例: 看例子,内容不解释了! 隐藏行号 复制代码 ? 多重if import java.util.Scanner; public class 多重if{ public static void ...
- cobar和tddl分享
Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务.那么具体说说我们为什么要用它,或说cobar--能干什么?以下 ...
- oracle 全文检索
一.使用 sys 用户登录oracle (1)运行—cmd—sqlplus — sys/密码 @连接字符 as sysdba 二.授权 1.grant ctxapp to 全文检索使用用户: 2.gr ...