技术文章大纲:X航MF登录逆向分析
网址aHR0cHM6Ly93d3cueGlhbWVuYWlyLmNvbS96aC1jbi8=
登录流程抓包与协议分析
1,使用模拟数据去请求登录,观察接口。登录接口走的是verify。里面的参数有account,deviceId,keyPairid,pageToken,password,smDeviceId
打上断点,重新触发,发现cookie设置了一个shumeiBlockBox
继续跟栈,发现smDeviceId是smsdk生成的。deviceId是从缓存读取,keyPairId读取缓存值
字段解密
deviceId,keyPairId字段:全局搜索deviceId发现这两个值是请求了getPublicKey返回的值

account,password字段:进入加密方法,可以发现是RSA加密,秘钥就是getPublicKey返回的key

deviced字段:全局搜索localStorage.xmair_fingerprint,发现是指纹
跟栈,调用了一个方法,传入环境来使用。
扣代码,这个扣下来就能用,把环境copy一下
U = function (e) {
throw new Error(
'\\'new Fingerprint()\\' is deprecated, see https://github.com/Valve/fingerprintjs2#upgrade-guide-from-182-to-200'
)
};
l = function (e, t) {
t = t ||
0;
for (
var a = (e = e || '').length % 16,
n = e.length – a,
r = [
0,
t
],
i = [
0,
t
],
o = [
0,
0
],
l = [
0,
0
],
s = [
2277735313,
289559509
],
c = [
1291169091,
658871167
],
u = 0;
u < n;
u += 16
) o = [
255 & e.charCodeAt(u + 4) | (255 & e.charCodeAt(u + 5)) << 8 | (255 & e.charCodeAt(u + 6)) << 16 | (255 & e.charCodeAt(u + 7)) << 24,
255 & e.charCodeAt(u) | (255 & e.charCodeAt(u + 1)) << 8 | (255 & e.charCodeAt(u + 2)) << 16 | (255 & e.charCodeAt(u + 3)) << 24
],
l = [
255 & e.charCodeAt(u + 12) | (255 & e.charCodeAt(u + 13)) << 8 | (255 & e.charCodeAt(u + 14)) << 16 | (255 & e.charCodeAt(u + 15)) << 24,
255 & e.charCodeAt(u + 8) | (255 & e.charCodeAt(u + 9)) << 8 | (255 & e.charCodeAt(u + 10)) << 16 | (255 & e.charCodeAt(u + 11)) << 24
],
o = g(o, s),
o = f(o, 31),
o = g(o, c),
r = m(r, o),
r = f(r, 27),
r = d(r, i),
r = d(g(r, [
0,
5
]), [
0,
1390208809
]),
l = g(l, c),
l = f(l, 33),
l = g(l, s),
i = m(i, l),
i = f(i, 31),
i = d(i, r),
i = d(g(i, [
0,
5
]), [
0,
944331445
]);
switch (o = [
0,
0
], l = [
0,
0
], a) {
case 15:
l = m(l, h([0,
e.charCodeAt(u + 14)], 48));
case 14:
l = m(l, h([0,
e.charCodeAt(u + 13)], 40));
case 13:
l = m(l, h([0,
e.charCodeAt(u + 12)], 32));
case 12:
l = m(l, h([0,
e.charCodeAt(u + 11)], 24));
case 11:
l = m(l, h([0,
e.charCodeAt(u + 10)], 16));
case 10:
l = m(l, h([0,
e.charCodeAt(u + 9)], 8));
case 9:
l = m(l, [
0,
e.charCodeAt(u + 8)
]),
l = g(l, c),
l = f(l, 33),
l = g(l, s),
i = m(i, l);
case 8:
o = m(o, h([0,
e.charCodeAt(u + 7)], 56));
case 7:
o = m(o, h([0,
e.charCodeAt(u + 6)], 48));
case 6:
o = m(o, h([0,
e.charCodeAt(u + 5)], 40));
case 5:
o = m(o, h([0,
e.charCodeAt(u + 4)], 32));
case 4:
o = m(o, h([0,
e.charCodeAt(u + 3)], 24));
case 3:
o = m(o, h([0,
e.charCodeAt(u + 2)], 16));
case 2:
o = m(o, h([0,
e.charCodeAt(u + 1)], 8));
case 1:
o = m(o, [
0,
e.charCodeAt(u)
]),
o = g(o, s),
o = f(o, 31),
o = g(o, c),
r = m(r, o)
}
return r = m(r, [
0,
e.length
]),
i = m(i, [
0,
e.length
])
r = d(r, i),
i = d(i, r),
r = T(r),
i = T(i),
r = d(r, i),
i = d(i, r),
('00000000' + (r[0] >>> 0).toString(16)).slice( – 8) + ('00000000' + (r[1] >>> 0).toString(16)).slice( – 8) + ('00000000' + (i[0] >>> 0).toString(16)).slice( – 8) + ('00000000' + (i[1] >>> 0).toString(16)).slice( – 8)
},
time_s=new Date().getTime();
a='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0falsezh-CN24not available1121920,10801920,1032-480Asia/Shanghaitruetruetruefalsefalsenot availableWin32unspecifiedPDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Chrome PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Chromium PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,Microsoft Edge PDF Viewer,Portable Document Format,application/pdf,pdf,text/pdf,pdf,WebKit built-in PDF,Portable Document Format,application/pdf,pdf,text/pdf,pdfcanvas winding:yes,canvas fp:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB9AAAADICAYAAACwGnoBAAAgAElEQVR4Xu3deZycVZn28bu609nIvgCBkEASSCAkbDIJi2AAWRRlEzTguENABnB7FXWEiAvgNiAqBNCRGQVBIIyKjMgismZAQBIggQSyQchOSMjW6a73uqvrVJ6ururaq6s7v2c+x+quOs9Zvk+T+eOqc07MavyKW3xnDXFssuyTfPX3+qr0Sb4OSk5jjV7Xq2xIvq7Q67xIeSVmMX8vdan9kfpltMoolREq3tZAlQHJ1/Dzrsmb3tLr2yprkyX8vFq/L1Z5zYv6WdSKNl7eeVis9Txq/DEyPAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDmBWK1NkIF2sM1pikqx6oco7JHmcfo4fo6lW4qu5S57VRzS/XTvf3trT+NtqYnDrJ+aw5V4H+U3ty3bD0uUUsPJssDCtQ92M/rip9n8bwqdrFKsRut5v7euxgx00EAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgUwt0eKCowNxXfIew3F/37oyivvTd0+yHkq+vZpuEr533IP3o5OsEvZbnKbyslh5Idv+oAnUfUsaLAL38f2HxP00YZY3xMVZX32jxpvmxU+f4Fxy4EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgEwmUJ7otYsIKzn379VNVPq3iK847bCxFDD91iy9nv0flP1UeVil4abdvRP9Blc+qHFfKSFL3+hA8x/+VykwF6ZvSWyVAL4uzKTQfaNtiX1Frn1EJW/yHxt/QD7+wrU0/jZ31ov+ZcCGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQI0LVD20VnA+VCYXq3xeJZxdnpXp5/ai/Zs9nvj8BBtuf7Gl9op9VMvU+5dM621/z56zN+3j9qp2dd/Hbrc/20n6v9y7xq9U7z9V+YVK1qXeiRH+RmWMyuTc4/Vq56p4HDskrbovaL7uPrPvfNRs57zn7kP7ucp1CtJ9yIlr2Hk/iE+1p+3H9vvcY+oCNV61nfVsv6NvN8Q+YDedJ8TSr/id+0+0/nv9yfa9cA/rtpPZgv82W/lUS8O7vd9s5BlmG5Whv3LTXNuw5MTYGS8vKr1XWkAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgUoKZA7Qz5vxtDp9T6rjWHwfhY9X2o3TPlLsYBScezz8/1Q+odIzn3busyV2mT2jqPc0pcAtQXo5w3Nvb5j1TgToMbsxMaRcAfp81fmhyn+pbM45iZmq4bn1RJU8AvTQXoN+8LX556n4pvYrdWT7t25v+bSwAD206EO9ReVHNu3G2/zZfkm7ve8oAXpAKNcZ6PE7xvex7vUv2JS79nr8maX2yF8etFOnnmb7rbrcrPduNqfnNPvD7TPtwx87w/Yf0Wz26Kf+aY3N/6KV6Ftz/slQAQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEOkygdYA+7Ya9FZS/otE8o7D80NSozpvxpn4eZh6kzzg/6/HemWah4Hyw3r9C5XyVukJm+mV7yhbZervTtKK3AlchK9BXq//LVG5QUSRawFXACvRMrY7Tm75J+MFagX5DwSvQ01v0oV+/67QfXnh2Da5A/7KdqV3sX9YOAHMK8M2/atkC9JkTp9uAcZdvPPRXdsoRx9q2xkYbOXqU/frKw8zqe9hpn5tpb69dawMGDrSZj95v9oeDfJAXxk59wTcs4EIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgRoVaB2gt6w8313h+W5txnvujT/Wew/kuwW2gnNv+3MqV6p4iF7w9RH7a+KejgzQ/UDxm1W+ruIheuFXiQF66HCIAvRRCtB/qy3cx+S9hXvG4dZN+6GC6qftf7WFe9X38G8HMGYztAPAdbUfoN8zYZH1GjZi7cG/tdOPPiExo2HDd7dbfzjJrFtfe//ZtyZC9W4NDfbXZ/9u9sfEd1H+oQB9+64Ohf8hcQcCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRYYHt+eu6NJ2mF+Z+Ve/9EIfmXM/a7fYW6f/yM6p+dXLHe8ruvWvegfXX8S+9/ePfV/dZ2H7zINtindAJ1OMfct2C/X+eYR3/PdJ552FI9jONndoSNsn72Abuv1Tbuh9pMddxyvPd7bGhiu3e/wpnmZ9hedpe9nvoseqb6l7S1+m02v9UZ6N5PGNuxuneTVr8/kWjxRZWWs9hbriNV9lPR9uo6O90U+zpBy5btfsx7yzhan4HuXwh4Pfm+78+efoW20t9XaG7vqChA30k/H/iQ2V7qp7femnqE2fvGm81Q28+q7eO0XfzR+7Zs+X6RxuTnpvs1UmP6RnJMCtBNUoN1BP1qOzjxcdymJV5/bu/T/KfaGfasjdTp7ufbIzpvfkVqQKnzxJPvhPs8/PbrFftWon743d/zUPw1Heru7frlbU+xeanfL7c/2bft5FQf79G+A0/b99vohLH5B74F/SKN/0o9/8T55sl+fPV66DuE8ffZ/vq7uchSOyiEHRVa99B614U2vbe8Eb974s7aR2F54pd/+Q+7/XcP2ktP/82OPvVf7Zj+OlO+vrfNXHiszXnkTjtkyofsA+8bYTb7Kq+9VQF6jyzN8jYCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCNSAwPYA/bwZF2o8P1Mg/oGcq8zPm+ELzLfX80AyHrvNg3d9cNIX6p+8p74p1v0n9kJiih5i+yryEHZHfx9pfbKuMI+uQA+BuLcXzkFPX6HuoXsI0UMAH/ry+6Jbtvvvu5mvDrdWAXo4E/1mBePnJoLxcH651z1aZQ8VD8I9VD5HpeXs9JbLQ/R+KiFQ97rRFehe18PwbCvIva5v961APBXYh/page4Beri/m8ZwnH6dqe3t/UT5FQrfH3nZ7EydtT4tMqYZCur9Mw/UPVxPfO4Buo/hNutrf7MG+4H22P+zXaifd9PPb9pXU0F6CMQjk0z8mL5a3EPqMTIJ4XkI1n1b9p9ooP57CLJ/pn69L28jtB+C+Wwr0EN4Htr9iNp7wkYnxprp3jA+H1MI2FMBun/JI3xJ5LwZd2o6Z+jLH3ktxleAvr8C9Nlu0LhloB733uk0rX9f+7w19A5HnzePiJ06xx8kFwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII1KBAsQG6h47Kjqd9JPGqQD0Wt2XNN533q/tiS77xWvyd2IUKgT3g9hXoYVV4rt/TfdID8vtsSWoFutfdR0F1CNP997C63N8Ln/9ZofZJidDbEgG+r4b3sYX637PnWgXof1LtJ1Xf1z/HdQa72TKVsJo8jNBXoz+n8nGV6Ar0ln5aQnUP00OAvot+9pXnmVadR2cdvS+9nbQAPfS7m/q5Xv1s0Vh95fnOCsZDYO4r0PdPjslXqK/e0LIKPbkC3bSFu18x+4ZNUgz9mH7vplA7BNzRkaX/7AG2r1D/cbIND7g9FI+uEo/eE4Lx6OfRcD5XgO7B/jeTIX/Ls3uffU9/DbkCdF+R3mYFehhY+NJILL6PzTj/1fbmGz6LBuiv/+1I6/vhL1qsW13GW+Pbmm39nd+wvY6f1/J5s+0SO/2F7cv58+mQOggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUDWBtlu4m3bWvnHaz9sdQUvw+M3EWen6eeyKASvn/d/bt//5zZO0sfYbClW1yllXrsA8/fP0PtsL0OdrS/P07dzDKnUPzcdoJbgH7NEA3VelR3+PrkgP907QvbOTgbtlDNB9lfhGFd8/Pd8A3ev7FUL1bLotZ76bVuubvizQsuI8hO7pAbrXi9Qfr5/v032el2cK0H+vgP1VfRkgQ4CuN3XTq1pf/3v7oILpr0a2Wr8zuTV7+ohDKB3d+j0E6CHYzjZLD9/v0tbxhQTo6SveSw7Qtx9HkPvvPTKR+J8mDLRtsTX+1lvP7GFzbkmcb571OuSiR23gPokjBjZoC/e+7VbmQwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6FCB1ttWt5wN7SvLd2szqpbQ3D9rCdeT27gPXN/zQ2t+969HaXX3+KNsWOKjagTo3o8H5H5meVhRHkLwbCvQPUCP1o8G6LO0ontyq63XvYdooD1Tv3sQ6qvbl6oUsgJ9jOp7dupnqLe3Cj39DPRo4J4pQA/v6Rz0xKWV9VfoZVpyy/boCnQP0Nes12cK2dNWoIcA3VekT9DtD6j8I3luuJ81HlaZp/9NhFXhr+nM9+hKdD/rPATrfo+H3aNslb4+MMd8S3e//PxyD9FDvVwr0D1Aj66MLzlAb/lbfyK1i0L65Nr5PX7PRH/4B8abYvb4FSfY5jX+ZYq2V78Ra+1f/t/DyQ/iD8ROne3fjOBCAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEaFWgdoJ9740k6J/rPGuuyViF6S3g+pVXYeN6Mpweu6b7qG3886JCvbDlg6Je1WtvPPP+SzgyvRoC+t87wDmeqx5OhtI9hka1PnKkeXY0etnD3Fe13aSv1sO17uH9nrSbvaR+yxYkA3cNo3+I9hNkt28G3nGseziMPW7j7mehO6GTRsDt9C3cP0H1VvofwfqVvCR/+Onx1u69qz3RlCtC9Xgj2I8H8oRr7vhrvyckzz72an4seAvV2AnTTVuljtAbd175fnwy7swXoHob/XaeeHyXtaB0Pu9+jJ/F0YiN83zr/G4mfPfSOhu3+/hs2ILENu19hlfkDtm+b0D6sWo+ueI+udI8G7OHcdW/Tt4736wN2kTpIbtWuv129tXva3/id+YbpCtA/r/sTXyTZsKyfPX/D4W1C9D7D1tlBFz5uPfpvbnmYzfGzYqfPbtkznwsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBGpSoHWAHobYsjq3ZTl5y3VXerh44PF3fvf5R1d/M76pJbhND6xDWO2fvUcrlEdan0R4ne33cE566NBXi0cv33rdr/Rt20MI7p+dYXu1Cs/D/ennoD+TWEneUv/vtlw/fTz5TvoK8BCYe+0QVPvPvuLYt2UfpJLYzTt5+Rg9eg5XD/2wJfmLwmyF+y1nofuVaTv3aB+hjaH64T1p7UbH5WG+P67o4mbNo7cC9E/q3qaWudpUfTHgffpiwFcV0q8LW8r7WvO9VUYmO2v9+1B9iWBFMtyOTCr1Y7ZV4+H9ULFViK03fev2+20/nRUwNdWWB+MeqD+jsWQ7g91XvC/TFyfCNUzjC+F7NDT3VfM/seNah+fbJ/Ar/fiZDPO5y+KxRQrZv6TXn9hN530505z9vfgd47tb9/q/68dJid+1En3lnGGJMD1WF7e+w9+2wWNXWKw+nmwiPlOrz0/P1h7vI4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAbQhkDtBzjC1u8VGq8qhK263eKziv+3QuuAfoYcV5qV29pgbeq9Kyb30tXNpmPXl+/PbReEA+XGV7cNx6pP55PxU//DxcyS8CNCik/5HevzhtbtPye+z+cD0lHl0LNGljiG7hnu/wYjcmtgvIfZ03I+dq9MRZ6I2xO9XiMe03GJ9pW5s/Fjvrxa25O6YGAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh0pEB+gWJkhArPPVf18NxD9KpeHqBfpjXK6avVixmEh+YennuIXhuXh+fLVNK3d/dz2Ns7OttXraffE1bSJ1e5f0RV/kulV3KmeQboXtvDcw/Rq/pNiTweSEUC9JajCn6W2uo9j3HEZ06cqhD9k1qHfpj2iPdvMvi1VuX/9N5PtfLc9/fnQgABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBTiBQUICu8Hyw5vSIih8SXrUrup17OVafr9bI/fRyX7tdW5efgR62Vw8ji27XHt7zkT+e/CX98/Rt6JMhuu8g/xeVXVUKCNC9k/1VnlDpWyNYHp6H7d+j27jnGl7eK9BzNcTnCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQJQXyDtAVnnt++qDKoZ1Zwk8hP1bl6c48iWLH7jvB+zHnP8n7sad68n3K71XpWWzfNXAfAXoNPASGgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEANC+SdpCpAv0bzuKSG55LX0L6gWtfmVbOLVvKj1N+nx75L4fPzh+9/BJ31IkDvrE+OcSOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQHYG8AnSF5x/UcP5UnSFVrhdfQX1y5ZrvPC3X67Efp+GOLHzIf9AtHyr8tpq4gwC9Jh4Dg0AAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgZgVyBugKz8dp9E+p+NrlTnvN1cgnq/gJ4VwS8Cd/s8pnCtZ4W3ccaLHYooLv5AYEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECghgXyCdD91Gw/NrxTX77g2g9w50oT+Jl+v7Bglb8qQD++4Lu4AQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEKhhgXYDdK0+/5jGflsNjz+vof1OtabmVXMHrOR/AbernFnw3KcqRHdaLgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKBLCGQN0BWe99UMX1TZozPPdL0GP15lSWeeRKXH3k0d/FHlxII6Wqza+ytEd2IuBBDoIIH4HeO7q2uVTfVmvZr089bYWS9u7aDh0C0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0KkF2gvQr9LMvtapZ6fBX6pydWefRDXG31OdPKLyLwV1drUCdCfmQgCBKgnEzWJ297hB1hwbZA2xPtZcX9em67qmZmuMb7A+davtxBfX6h963caFAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCQSyBjgK7V5+N04/MqPXI1UMufz9XgDlTZUsuDrKWxDdBgHlXZP+9BOe0+CtF9NToXAghUWCB+97jB1txtd6uPNeTdVVO80bbElsTOmb0273uoiAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjsoALZAvRr5HFJZzf5giZwbWefRLXHP1wd+lcnBufd8bUK0J2aCwEEKiSQWHU+c9xIa+g/2EZ/0mzYkWaNG80W/17l/ra9jvig2YhTzRp6my172GzBrWYbN6zU1u582aVCz4hmEUAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoGsItAnQtfp8mKa2QKVXmOJme8c22CrbahtNSxlTM++uKj2tn/5vF6u3/BdEVoNumToZrbKp4M4W6Y63VbYl7xyoVx0trPm3kOxXcIvlveGl5Kz20uugZNM+5jKOb4qae1Al6wb/rWbkxKMVojt5xuuzz9rIWNyG1DfaphmTzSdQ1asj+5/2lO3X1GC94jFb9cuDzR8UlwTOe8YamupsN9ts6395uK2pJZTPPmGDYj3M/wOzmw+xf9TC2OJ3jN3Leg8YZEf+1qy//8sWuRbcYjb7x9vfOPhbCs/PbF1n1bNmsz6vjdwVon+IEL0WniljQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgdoUyBSgp1afNykuX2tL7F39b7g8NPfLP2tKhsz11s2GKG/yML1WruJWny/V8Jcnp+C71/vRwh6gb1UpY0BdElIVAnQf33dVvpn3QNtdhd6RAbbPoCP7J0DP/DeUctlirxOgt//fWfyOMUOtodcIm3CxvqryOZv97LN21dcvs2WLl9nxp37QvnzFt6xh1rn6J0oh+bBJ1njwL+w7X/m6PXb/wzZsxDD71o+utHETJpjN/anKzQrRGxfGTp+7Ou//uqmIAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCOxAAq0C9PTV52/anMSK8zr9Xz/b1fqbL07ffvmK9FX2WqrOLjbWupu2DO7gq/jV5/M08g0qHpqP6uBZZOu+SgG6f3fg7ypH5MXQ7ir0jgywffQd2T8Beua/n1oO0PP6i69Spfh0/eN7wPiJ+jJPvR3/F2tsGGJnHXOyrVvlX+hpuS649GI780jtADL7KjOtPr/l3lV2y08VlCevIcOG2R0P/UlbuGv39vtPVlM6E/25OXNi0625StOgGwQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECg0wikB+i+cPs/fPSrtdu0b9vu4flQ7dCdbXW5r0Rfpl25fTV6T+ujzdzHdvjkfQn9F4saRQinh+jukUW1UPmbqhSg+0R2UXlRJb/z0L+obdydvs3VkQG2D6Yj+ydAz/xfBAF6fv9SxO+euLPF4nskap/6D60+n22XnKPV5pFrwsEH27XXfs7sMb1/5E32qU9dZYsXtD7q/Bd3/NbGjdMXoO59b8udm7Ysip39yvYUPr/hUAsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6PIC6QH6U5rxJA/Fl9oLickP0DHF6SvP01XWKUJfbysSq893tr0Tq9J92/edtJJ7SNpK7nd13PEqez3RxGAboch9aKvmlts8HYu8IdWvh/NbdZK5bxHv1zp7M3UOe4P10Nh2Uz+DElvKr7aFWi+/wU7RwsrntK28jz6/IDycIZ4+s3DmeXtnjDfqpiUq61XCuem+/bv3PTzDH1A0APez1sP2+H30c/TLB96nt+lnzvtycP98T5VXVXzBd7Yz0L1PX4PvK+n98rF4At5694DtA9uoH99S8dft59u3nPeulfhTdF/0PPRNGn9c/XdveR62baVZ8wbr3vzunM/MPXpqY73OtE476ztbgO3nYNfFbey2OuvRrdm2NMds3o3v0YPM49K9w3TvYL/Xqzc024atjbZS3+Lo6+etR88cz9T/+U/bQbq3rlfMFl93sO7LcIU66udljWvj5/5hh3g1Pxfb2+zWaAOaulk3jb053mQb4t3sDa8XbSoaoPt5390bbGhjXeJhWv0227atwd7OdDZ6OCM89OH13Uj/wW5sitmSfJxC3xJdfvNk/Sed4Zo2yw7wOaQ7+Dng0bGGOXbXGQfXTbZ3QlM+zliTznlXG5nOuNfnvZPPuM7HEW+2jeF88ehw8j0j3vurj9sezc3WN9jLZJ2bxLbZ3onz5iPbwuf6AkOmzzOdgR7+hnL9aeY7j1zthM/jd++/r76Y0rKtx/EP2dwFy+zzZ32q1e0TJilAv+J4s2e/o3+9f2Tnfv4WWzB3bqs6N838rY0e0V8r0E9oeb8utiF2ygu+5QYXAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBARCAVoGv7dt+zfL5KbK2ytnd0FrivPt/DDioYLITkHnDvZvu3uj+sbPc3MwXsi+wfifrDbaLVW0NidbsH6L20ifwmjcrH1E3tRs9g9yDex6wcU/V72eF6jafC4Hy2Y/fA2YNsD5B9V2MP37UlstLYlq3cswXoniMuSN7jo/bQ2e8PQbRnux6Ke1vhCgG6f+b1/B7PjD0j2ztZaU5aGx6ge2ieyIqTn2UK0H3c3r+X9LH4+fSh/TCW6Pi9j2j7YXdnrca/Xqvxz0/eEwL0OrXX7PfrPiWiMWXIk5dfffr4Nb9ZoiD1nRmTE0l/4soWoCu89MCzX6HhebjP2/Z7FV43e3AafvdQPVeAfsHTNkpB9kAP3q8/VN/aSLs8oFegv1s0FA4Bus/Px+0BuP7QGmP11sPDeA+ZG5psQTRgDgGtjzP5RQEP27fonroQ/qd7pX2xIFHfhxeZY7PGNidXiB7m4H3fcKjOY0i7LnrK+m1qsL193Pr8ufBxsPHfwxz1gBs8sPb3FIi/qb79P5qW56uwPYTi6UG8voSwv88zOHufW/Wfd8Qs8fz05YO10TbTx+q/exivsH7vMA5/NsHR5+h1Es++AgG6Wyqg939M2lzRZ9nelxUy3dveey3bt0/Y/g/whEutccSZds4Jp9mqZSl+u/iKS+3UEffrezOz9D2ZKfb7uZPs+qt+nGp69LjRdtPMO/RP1a0t27wnHmJTc+yUl1LPvNCxUR8BBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6KoC0QB9uiZ5uU90hbJPD6u7K5McZvsVNfclyuM80A5BeGgkBOL+e3rAvkELgVfb4lb9Rut7iO4r3LO15avdv68g+tuJCr7gdrmKB8P5fgkg2xbumQJ0D709k/Sg2cPpPRMzarl8EfJrKiEgjxqGPrzeCJWwAt/b8/tDXz7u0cm2va6H1b4tcwjnMwXoXs9DcA/9w1n0a5Jt+jh9T/boqvh/6ndfNZ8pXPf8OxmQD5Cfbxrgi+pDgO5deYjeY08F6C3z7rPx+e9/bO5Bd/vPvRrt1RAkZwrQiw3PQ1vpYXVypfOoEErnCtBDeJyYRtxeSA+jFSKP9ZXi0bA4BOh+jwLhtQre/SF7sNugcHXP5JcBWoXbqVXgqudBuYLihaGvEHCne33uKT2kBtvFQ2etrH4tUj+1Yj/afwI/w+XjUtCu87MTc0ysoo9Wi3yJIDWXi561oZviNiLhW29Lo6vzw7gytRfa8vtCuB99VumBfzFbuEe/jBDdrSDq6GOrRICezdjfD18SyLQCv737cn0Wv2N8H+3RsH1bit76Msukm2zx7Ift4d//1Br1T0bvEVPs7LOnaPX5ZanmGidda7dcf6s1rFOgrmvK2RfbiHGTtMX75/VdnXXbux2w/sXYlIWbc42DzxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBHUkgGqD7nr+JsCaE1n20cfrgIs8CDyF8+hbwvsLcg3lfVXjlxd8AACAASURBVO7XyJZdsRNXuKefgt6ByaA3jKVei1+H2wGtno1vHf+2tnT3a5jtm9hCfpx+3r6cuGU1e8vKaw+Jc12FBOghoPdFua3H1dKLZ5UvZ+g/9BG2h08fky8K9bA7Gq6HOh5oh4Xd2QL0fVUnhOfhPl+t6k7Rsfr4Fqp4IJ/pCwYe6Lds42+ytc+pzZv0YypAV1u928z7n+c/E/u4h9jR4Dk9QC82PPeRhG3VoyFpmKWH6ApWHcByBeheJ2xfnr6iOi14ToXrIUDPtmo9U3sh9PWV3DMmmX9jodUVwtfoGNrbdtwD7sYmreDWtuUhwE9vM/p7arV+hm3cU9u3R77sEN7LtpI6tJdp1XzYyt3D/W5NtspXt/tYMm2TX2iAnvaFhzZfBohusV7NAD3loecbr7eXcu0K0N6zSv8sfseo/taw05hC7imobuO782NnvRZJ1Au6m8oIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQJcUSATo2r7d1xb7UuXE7+UI0EO4HV01HrZ292B+q05JD2eb+xnmfi1VvtikFdEhDI+Opb3z1MNW836iuLcUTz2qEKBHw+b2nmMhAXqom76qO9q+R/l+FrlWjqa+iJCtD7/PH4Ev9W5v1XzY3j3bGejZdgwo9MsEPp40v//TW/snz0Cv127WPXyle6ur+cS5xx05fOODW7MF2KrdGLY/LzRwDFuFZwujfSRh5Xg+AXp0pXd0G/fI9u2ttqIPAXq2c9NDiBsN2Is6g1vnq/s57snV3H5A/apig9nIivJW27iH96OWuVblu294Bunbvvtn0fvDlvXZVsoXGqBnOwYg/PVFv/RQrQA9skV+m6372/tXJt/P0gP0xsYGW7fsYOs/yb8mVNi1btZcGzKiZUV66iJALwyR2ggggAACCCCAAAIIIIAAAggggAACCCCAAAIIILBDCIQA/VTNdmaYcQjQM4XW+ar4GeVLtYI5unJ8lXa8fldnjQ+xvbT+/O3Ez2GV++bEqeuvttnWvb0wPwTyYav5ezS401oNsJIBelgp3l44n2nr9/YC9LBSPNvqdJ9c2Fo9U4AeDerTn1Sm4D1ax1ek+27O/qpTqhOvadvF+2bgTybH3019ddfZ6GnX8JW/uvjEJZ99IlOAHa2aDIfnpW8r3t7fVwi829sqOwSt+QTo0RXr0W3cQwifHpSHAP3mQ1LfLGg13Ei4nAqriwnQk2eg+9nh/k2KxOVzbtKe+vrLeCd6xno+/z2GVfvRbdwzrUyPnmXu/WVqO3redyaH6EpwD+ezfUmi0AA9jDf6XNPHF1bzVyNAj1ql72CQzzPJp06bFejaFGLW9RfYwb89W7s/hOMi8mhpY6M9e9YtNunLN7euTICeBx5VEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAYEcTCAH6DZr4tDD5EHSXcga6txXC7120k3NPbaH+ps4Mb1Qo69u2hxXqoY+1its9Qk8P7QsJ0M9XnzNaPcFKBuj5tF1ogJ6pfvqfZKhTaIAegvvofb5N+0IVXyXv28ZHL89uw3uRe36qdj6rbDVLgN73nYf++6Pzj702W4DuwbkabvRt3gs9MzrXKmQffSEButcPQW4IQUOonmmFdb4BurcbwuViAnS/38ehc9V3V2DdJxqk+2fu1l0bNuQbpIfzyaPbsmcK1aOhcD7/EGYK0KOr0LNtdR91z7QVf6a+czlmazPXfZk+jzpkmqM/G/29jPXnks9Z9PlYZqoT/5+xfa25+z7Rz2Z953itQu9fcJP9R6yySZc+3Pq+xrUvxc5amvGLEgV3wA0IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQBcRCAH6Qs0ntZw4hNtha/Rcc/XV5h50+xnkfn65h+V+hVDc3/PiK9JDYL5VK5yX6Yzw0Ed62B76LCRA31M3eby8/con5I7WL2QL90JWoPdRJ4nj5XWVugL9tYSsaRV/y4b1foVQvZAV6B6e+xbzvsrcw3I/N71n8rWHXv0ZZvAbrPG/pMxtQOYV6PUbn3/903MPOjNTgO6hdEOTLdjSzbaFALKQ1buVCNDDNtwh7I1s6742/YzxfAP06BcDiglwW/0J6xcPpTd2t4Gy6+tfPPDPkyv45+SztXsItX1b9RsOtTmp7dsVxM+YnPiDTFyZVtCnj6W935Mr5z1YTowxcWU4e93fLnQFevgSQHsr0DO1WYx/ewF6dI6FfgGkEEuvG79DG3g0TDgwet+CeybYgvsL38J99Adn2+gPzt3eVLMOCTjjhef0/wC2n3hR6ACpjwACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh0QQGlKInzzz2RTV0eiPtqcV8sPMB2s/46lby9KwTuXid6fnkIyT0072tDbbUtTm3Z7nXDmee+pfsqnf2dKbDPN0DvZfuZTuVOuyoZoFfiDPR3NH7fot2vQ7KQZ1pJHgL0aFAfvd3D8heSb+yrVw/Ll6osV+mm4uemZ9oSOpOf+v+OAvSvZg7QbdNLdvKiT07ZZdMzr//y4JbvM2QKvsN7hQTB7Z2/HWZbyBnofk/07Gzfxj0Z7Pfo1Wivpq/wTp2BnuGz6DxLPQO9vf/Woiu881297e1Nm2UHNHWzbr6Nu69s93Po07+8kM8Z6O2NLYTcHtQ31NvyTXEbkW2r/kID9Hy27w/Pp5At3FPbvsdsVerv9QkbFOuR+IZKaieB9L+v9ranb8+o0M/if9hvvDXV+zdbElfjugZ77LIPmp+Hnu/V0NBoR15xrzX0938Hklc8vjF2+pyX822DeggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDAjiLgAfpkTfbJ9AmvVva5QbG2h9q7aPW0ry7PdEXD9l5atbyztmuPXiEk963Zw/nnOyVXTq9QWLxJG7d7wL5VP2W6P98AfZFC4MPaDLCSAXo0gD4gA42fIR7yKTdpWZXf/gp0//yfKttUdlNJ/+JCtM1MK9B9Jfn+KunhWqax5touPpzH7mOK9qUAfYgC9PkK0Pu3PQPdA/Txa/7705NXXPVwewG6txpC3fa2+k6HDVuPZwqPo2F4Pmegh7aj54GLbhcPR2dMSjyIVlcIaLXy+B2t3A7fdEjViYTUb2pluANuX2kdCWijjWZaIe3vaev2Hr5aP9M27aGfQgL0EED7ivBu9TbUtx+PnvueskgG7dlWeqev2A/3RVdth3GFuWVaqV1ogB49rz7TlxvCuHw8UZfwhYpMW61H22z195IlQI9+6SPbs0n/myn19/htY3eznt1b/UOwWCvQ52oler7XuDOftRFTFrSuXhdfGjtljn+DhgsBBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAi4AH6p/T7f6areDC+XFt8+5nlHqL3s13brER/19Zo6foSa1LgW6+VzMMUYmvP4VZNhfPUw5t+/nm4oivX/b3BNkIr1Ie2uj/fAP0v6vvTbR5tJQN0X805R8WP9PZwfE+VMHcPun2rdd8evZeKr/AOV3tbuHudEHZ7GO4BddimPdqm18sUoPv7vnu2bxcfxrIy2aaPc4RK8I32Mzo5hzBGz37fSs4tva/k+H+sAP1LmQP03d597NsnLZn2n7kC9Gjo2itmi6872Hyw7V7ZQszkudSjwvbhhQToqS3NFZz7Ku1s246HAN0HGF297cG9VnXv6au6wzbpYRLFbCEeAn1vqzlmrymM94efuEJQXMjK/eR9vdWWbz+QuLJ9CSAVtHultO3X/Xk1NNhID9+jvon5N9l+bhcNqqNnhae3lX72fK7n7p9HV7hHXaLj8nrRAD3qFQ292/17yRCgRwP6fP9W85lTrjrxh/X3+M5+E6y53v9BSF15beWuleejj5/beuv2xB9vU7P1e2l2bErimzpcCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACEQEP0K/S71/LpOIhuq8S99XhfnmQ3i15vPE2hcO+xbtfDXpviI3KuErdQ3bfnt2vcP556Cts8R5+H24T2wTw+Qbo1yqkvrrNJCoZoHtnvuW6r+xscWgJy/1nD879Sg+z/b1cAbrX8cXN3nZow7OzlmfQ0qa3nylA9y3cPWv1MaSPxUP+6O4A0S8AhLH7q7edfn80eE+Of5gC9IUK0LsnhxVetAJ94OYXbzx94VnfzxWg+y0hLC5kS+zUinHd7yFzvMmaFV738lA5ruJBbiEBuo8jrGz3n32b82hoHaYWAnTvx0NkH7NOkG701eL+ezjjPbpqvJgAPXnO9v7epvftK7gTY4hZQyLgbxljapV72hPI+msYS+Jpt/OFhahvmGO07/TwPQTbmZ5h2lb984JrJAxv1vPbEu9ma8Oq/WwTSD9j3V1kX+dfmvC/g9SXJ7bY6788XP/w6Mp0j7+f+ntpsg3+xYdcK9DD30fib0zjbc88nCvf3lnq+T4zr5dpFbq/v27BEFv88GhbNXtYqy3dG3pvtCETVmnV+VzrP2Jd265YfV4IP3URQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBgBxPwAP0ezfmU9ubtIfgGLQ5utM2J1eZ+ebbn27r31OrrXGekL7HnEmF7H8XsgxOrqrdf4bOe+tS3ik+/8g3QL1CA/j9t7q50gO4demDtq7XXq4QFnR5y+9HywzOw5hOg+22+Cny1SjSM923dvZ9VKpkCdIXaiZPg/d4Nyb59LLuotF7Z3/Khj/2NZN3olwC8Dd812lfRr1WJhu+R8V+vZ3l+2hQVoPduXHr/1AUnnJdPgB4NizNts50BMPGWB7NaUdw3hKa+DXy3Jlu2VegejhYaoKdCYIWyIQBN7zt6xrb+8Pt2a7QBHmh7cFxXZ+ubYrZEIXDkoOnitnD3ft2lPm57xHVgfZhjMrzdoO8sLM+0tXs2q/B+dDX2DYfqP8p2Lg9/uzfY0GT/qSA/PejOZxeBcM54dCv35PxGNdbpP3xdhWzjH332wUTjWqhV6RO9rfSt7cMOAfoSQG9/XtF7mupsN/0jOCRXgB7dfSCX882HWOIfnrIF6P7ViTvG7mMN3RNWma6N63TEhv/laeOJ3v1TGxZkqBp/O3banLT93HPNiM8RQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgR1HwAP0pzTdSZ19yn6Q+6yKTSLXeeEV67i2G/aF6U7T9pplsZg/kqpfxWwN7oMMAXp7K7ujAXpY4Vz1CdJhVoFafD4hRA+herGPL36HNuewsWPaC9Fztl3XvM5OeXFBTN8xyFmXCggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIDADirgAfpczb3t0u9OBjJO451XsTGHAN0XgHZ6qvIq3afmTmzT5D8VoB9Y3o5aWvOttJNbfr+avto7upq9V6O9WsgqbW/X29cq5jnp7YZ51GJAWwnjztpmrT2fsMq+ucnqs+1qUIi1Uu+Y3TZ2mPWu3yX9TPR22/Ezzzc2LY9NnfdmIf1RFwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDYEQU8QF+oibfeV70TSuypMWdeDF2OyYQzyX2L9E5PVQ6Q7W2cox9/06bJeQrQ/TsNZb+mzbIDEtumN9o7CiX9wSSusE23n2cd3So82wC8vgflafe1ajP93loLaMuO28kbrLXn46vPu9XZrtpyf2khX+bI9Rjid4zvbk3bhliPukEW6+ZnNGS+6ps227tNa23XeStiU1LnS+Rqns8RQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgR1awAN0P8DbD8nu1NeuGv3yss/A17Q3qWxKthw9d7zsnXXOBntq2H5Mur9uv5YrQPdHUvYreq508izrxCHxfu65v/p7Oht9Qa7A8qKnrN+mBts7DNDva2/1udertYC27LidvMEd8fnEH7ZutmlMb9vcrcG2batLnPDec1uj9Zq/kdC8k/9BM3wEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDoEAEP0Der5+yrGDtkWIV36vltIkkt6/WcWmtW6aays8qwsrbeZRr7b83k461ms0UBeutIvYyT1arx3rFttrs2tO7tq9G9acWGWxrrbX19s72ZbQv29CGE1ex+r0L3xblC9x0xoC3jY6t4UzyfihPTAQIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQ5QUI0BOPeIWKrzb38kry1d9br7Ih+bom+ccwSK99Vfw8dH/1YN3PRQ9ln+R7Xf5vZ/sE/Qx0Pwt9+1XRAH0HkmWqCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQRYEddAv3pSJ+WOVBlYdUlpSZfA+1d2yyHKfXiuxmXuYxl9Bcve59U8W/S9ByVWwL9xJGya0IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAuwIeoC9UjZGd3WlPTWBR1kn46vEQlvvrq1We7r7qz4N0D9Xfq+Kr2LvYdY3mc0lqTvO0hfu4LjZDpoMAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAl1cwAP0uZqj7z/eqS9Pa30D9taXb79+j8p/qviK83gHzzGm/o9R+YzKaSq9Ong8Zez+BLX1v6n2/qkA/cAytk5TCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQMUFPEB/Sr1MqnhPFe5gstqflepjpX76qcovVMLZ5RUeQMHN+yr0C1UuUhla8N01d8NOGpF/X6HlmqUA3R8JFwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINBpBDxA/51G+9FOM+IsA/2Y3r/d5ut/f6jyXyqbO8mUemqcn1T5isqYTjLmLMN8Qu8flvjsdgXo/ki4EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgU4j4AH6dI328k4z4owDXW3T7TL7tt2gT5s76VTqzE68wOyJb5u9M7hzzuE7Gva/J4b+bQXo/nfFhQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHQaAQ/QP6XR+iHhnfDyM81vVvm6/dpW26c74QxaDdmfwokKz794tdnv/Jx0PzO9E13HaqwPJMb7aQXov+5EI2eoCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAgHmA7mdVP9n5LJ7VkP38cN833MwPcm/ZPbwTX/4UwsnhDx1udvZNZsv36zwT6qWhbkwM9zAF6P5IuBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIFOI+AB+gCNdm2nGXFioPep+LHt61PDfls/Dexck2g7Wn8K/jTCtbKv2am36zsCJ3Wemf1NQz1ajyIW80fChQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHQagcQe4QrRN+hlp9ofdZOG6Me1fz8x6vRrT72xqPYnkXmEI/X2wgwfNekRfeObZj+Yrg/ra352/b9ra9f9e2xQzQ+UASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJpAiFAT1/7XINQazSm01UeyTq2T+mTW2pw5HkNaZpq3dBOzbuPNjvjblWo7Wz6AyfYy3/+S6wT7Tuf19OhEgIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAII7AACvoV7nebZqOKvNXqt1LimqLzY7vh+p0+n1ugMcg5rpmqcmqPW4xPMTnpAO9fvnLO5jqrw613spU8tj43vqP7pFwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEChWwAP0Mbr51WIbqPx9C9TFCSr+2v7la9SHqjTnqlhrn/s+AD746Pnn2cY4W4/rOJ0Bv8IfW21dPo3VdbZqUHPMHwMXAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0KkEPEA/WSP+Y22O2lec+8pzX4Ge33WQqj2fX9XaqTWkoCnqrHStQJ+ilegLtSK9hq4DNZbnWsYzKGYxPxaACwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOg0Ah6gf0Wj/WHtjfg1Dem9Km8WNLTpqv3tgu6okcq+An1gAWNZuJvZpL9rJfroAm6qbNXL1bz76zpcAfqTle2N1hFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIHyCniA/ks1+ZnyNltqax6ae3juIXph13xV30clXthtHV/7FxrCBQUOY47C8/cqRH9bYXoHX759u9uPahnHZxWg/6qDh0T3CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQEECHqBrL3A7tqC7Klp5tVo/WsW3by/umqzbZhV3a8fddaS6frSI7p/cX+u9n9CNfYu4uXy3TFJTT21v7jsK0C8rX+u0hAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRewAN0T18Pq3xX+fSwXpU8y386n8pZ61yjT75YUgsddPO76rd3EX3/6RizD92rG3sWcXN5bvkPNfOF7U39TAH6ReVpmVYQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB6gh4gP68ujqgOt3l6sUj2GtzVcr5+UrVGKGyOWfNGqvwV43nuCLH9NVLdJK9f3Wg+pfH9otVhm7v+lYF6OdUfyT0iAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCBQv4AH6K7p97+KbKNedvoL65HI1llgNXXoUX7bh5NfQVar2tfyqtqm1Te8c9QezJz9UZAPF36bo3tKi+z8rQP9g8S1yJwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFB9AQ/Ql6jb4dXvOtrjXP3iJ5evK9swlqml0SqbytZiFRr6jPr4ZQn9LB9gNl4bCqweWUIjhd3aS9UXqAxrfduTCtAPL6wlaiOAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIdK+AB+ioNYXDHDsP3LX+w7EM4Xy3OKHurFWzwKLX9SInt3/l+szPvL7GR/G/PsPrcb35ZAfp++bdCTQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDjBTxAf1fD6N1xQ/mdup5ake59ZfT+Kp3mLPQxGuyrZaA4+jazv3+sDA2130SW1ed+01sK0NMWpVd8OHSAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIlCTgAXq8pBZKunm97h6v4rvIV+a6VM1eXZmmy99qHzXpJKVeL40wmzjHrKlvqS21e78f1+7Htme4NitA93ydCwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOg0Ah0coFc+3vY82lehL+4Mj6SnBump9LfLMNhr1dDFWeLtMjSvJvxbD+MtFmsT+etLGZcqQK9o5+WZAq0ggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC2wU68Az0uRrFgSpbKv48KrdJfJmHvrPaW64yXaXUEH1gD31r4BWzPlqNXplrqsJzp211KTz30V+oAH1oZbqlVQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKAyAh6gL1TTIyvTfHutfkEfXlu1bo9XT3+tWm9FdjRO972cvHe6XksN0a+4xOxb1xQ5mHZve1Dh+XHpNZLh+eV6f6EC9L0q0TFtIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAApUS8ABdh2UnDiKv4rVMfY1W2VS1PhepJ1/v/nbVeiyio5N1zx8j903Xz6WE6AN0DPmSBVqFPqyIwWS9ZZ0+magAvdWu+JHw3G+crQB9Yjk7pS0EEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECg0gIeoD+lTiZVuqPW7Vd39Xno27PpD1d3ooX19hVV/2HaLdP1eykh+ve1Cv3rZV2FfrLC83ujo0wLz/2jJxSgH1HY5KmNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIdKyAB+i+s3mb7bgrN6zqrz6PzqVjovs8NW9XvbMy1J2u94oN0QdrFfoqrUK3sqxCv1rh+aXREWYIz/3jvyhAPzHPWVMNAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqAkBD9BnaiSnVm80vhr6i9XrLkNPx+i9hzt0BFk6X633B2X5bLreLzZEv+s/zE73rw6UdP1N4fmUaAtZwnOvcpcC9I+U1Bs3I4AAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAlUW8AD9FvX5ier1O1ldzapedxl68pz6fSp++HvNXH5i+D9zjGa6Pi8mRD9TO/Tf4Tv1F329qDuPVoDudImrnfDcP/6VAvTPFt0bNyKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIdIOAB+hXq91vV6fs1dTNGJV6d7trp5U19dpSKb25eE9dVGsXX8hjJdNUpNERviJmtfsWsr9sXfPlDe6/CcydLXDnCc69ymQL07xTcEzcggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACHSjgAfpU9X9rdcYwXd0Umv5WbmQennuInkqGK9dV7paXq8rOuaslahTD+OsrzT7Z6vjyfDpzGg/PPURPXHmE517tTAXod+bTAXUQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBWhHwAP0gDebZ6gxonLqZV52u8uzlBdV7v8qKPOtXpNo5avU3BbY8XfUL+S7CyQeY/fH5QjpZqcrHKjyfHW7KMzz3OxHgnwAAIABJREFU6hMUoNfUDvmFTJy6CCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCwYwp4gN5DU99c+em/rS4GqXT89u3pc52vN05S8deqX9pd3TyiHl9Ez9N1T74hep86s3XKxOv8GeS8fHH+CQrPUzvcFxCee+M9FKBvzdkLFRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIEaEvD41rflXqKX4ZUd1z1q/rTKdlFC674C/TiV1HLrEtoq6NZPq/avCrqjdeXp+jXfEP2pmWaTTs3V2TOq8AGF574CPXEVGJ4vUHhe1GHruQbG5wgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAlBUKA/ld14vlxBa/z1faMCrZfetO+Rv4jKg+W3lR+LQxWNV/j3T+/6llrTdcn+YTo37/E7OvXtNfZQ/rwQwrPN4ZKBYbnftu9CtBPLnFG3I4AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUXSAE6Nep53+rbO97qvlFle2iDK03qY3pKt9Tqfhm8/eqkw+UYdDehA86V4h+3Fizv87N1KFP9fsqlys8d4LEVUR47rf9WAH6V8o0K5pBAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEqiYQAvRPqsdfV65XX9s9sHLNV6Dl+9TmR1XWV6DtRJMXqvyszI1PV3vthej99Pm6tfqfAdGO1+iXjys49ymnriLDc7//YwrQby/zzGgOAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqLhACNB3VU/LKtfbU2r6sMo1X6GWX1W7fkT54+Vu/31q0DfN71buhtXedJX2QvQVT5oNnRw69qmdrfB8cXQkJYTn3sxABej+jQkuBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAoFMJJAJ0vxSaztfL6MqM/tdq1qPoznf53ua/UvmayupyDN+/R+Dh+U7laCxLG9P1frYQ/fH/NDv8Uz6Vr6vcrPC81U71JYbnsxWeT6zgzGgaAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqJhANEC/Wb18tiI97X3+Eps/Y4/KHypekdEnGvXE+asqip+Ln8Ypuvl3Kj0rN85Uy9P1U1qIXqe3zvjJv73++y9ed6iC8zbfBygxPPeur1OAfnEVZkcXCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQNkFogH6VLV+a9l78Ab/susjNmr50fYj/XyLyuaK9FKVRn2ZflHT+K5u/GZVhri9k+n6USG65/WfUPl/KmM+Menl2H/N2i99JGUIz73J0xSg31PlWdIdAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUBaBaIA+TC2+WZZW0xuZ1/s522fTQYm3V6r8UGWGyjsV6a0qjeY9jZ01HP9awrFVGVarTgbpt89PN7tYIfrQ8MmHx66K/WFe6ld/u0zhuTfVTwH6+urPlB4RQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACB0gVSAbo3pSB1rl7Glt5sWgtLus+34Y1jWr27Sb/druIHjD9a9h6r1mDWafh+6eerXKnSr2rDMX+gU1T8xPkzVHp519NVwnbuR45ZH3tsfmpEZQzPn1V4fkj1ZkpPCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQHkF0gP0a9T8JeXtQq2t6rbEBjftkbVd3xf9v1R+r+IRfjUvj5LLtBI+NY1pmsaX1e7e1ZvIOHX1EZXPqYzM1O10vekh+oS9Nsdmv57I1csYnntz31WA/q3qzZieEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgfIKpAfoh6r5/ytvF2rt3brl1ju+S17tLlWtv6k8mCxL8ror/0oe4x+j4luq+1Lt4SqefF+r8muVDfk31armbvrtAhVfdT7ErCOmkXPk01Xjl0ObYktXditzeO5dj1KA/nrOMVABAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqFGBVgG6j1HB6jy97FPW8cZjW9Rej6LaXKG7XlHxUYXi7/lJ2x52++uaZMt+6HdflT7JVz9/3Dek99n4qxd/r73rKX04S+U1FT8RfrnKGypvqfi27B6Ue+i+a/LVl377xuUT22+22tPIOpofdNtmX2v8nj6/PIdEIR8/rfD8Xwq5gboIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBArQlkCtB9G+4ryjrQLXVbrHu8uAC9rAOhMduqLzP0aC73s/iCAnRfw8+FAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIdFqBTAG6r68u78bpK+pX2NDmXGu/Oy1ipxr4iroVtktTOZ9Fs+a/qwL0lZ3KgcEigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACaQJtAnT/XNu4P66Xw8umNb9hqY3e5sE8V0cLvNLjNRu7eVQZh3GfwvMPlLE9mkIAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQ6RCBbgH6BRvOLso3o2V6v20Gb9ypbezRUvMCsnebZ5A1+Gny5rrMVoN9WrsZoBwEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOgogWwB+gANaKnKTmUZ2AMDX7Rj3x5flrZopDSB/x3wkp20dr/SGknd7du2j1CAvrlM7dEMAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0GECGQN0H422cb9KL18ry8iuG/u4/dsrR5SlLRopTeDasU/YF+aWa3v+SxWeX13agLgbAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQqA2B9gL0IRriYpVeJQ/1nI88aL+569iS26GB0gU+9pG/2e2/f1/pDdnbamMPBegbytAWTSCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIdLpA1QPeRaRX6NXq5pORRHnDFY/b85UeW3A4NlC4w4btP2ZxvTi69Ibtc4fkVZWiHJhBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGaEMgVoA/TKBeqdC9ptAMemG1r3z+hpDa4uTwC/R6cZ+uPGVtiY77qfBirz0tU5HYEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEKgpgXYDdB+pVqFfr5fzSxp13do11jRoUEltcHN5BOrWbrH4gB4lNvY9hef/XmIb3I4AAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjUlEA+AfoIjXhRyaOe37DURm8bXnI7NFC8wJzub9iELbsX30DizndV/OzztSW2w+0IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBATQnkDNB9tFqFfpVevlbSyL990ON22fNHlNQGN5cm8JXDH7MfP17qWfT/T+H5j0obCHcjgAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACtSeQb4DeW0Ofr+Jnohd37ffjx+zFr5Qa3hbXN3e1CIy64Sl7fdrkEjjm6d7xCtCbSmiDWxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGaFMgrQPeRaxX6mXq5o+hZ1K1abk1Dh+r+uqLb4MbiBeKxuNWvfsfiA/sX34gdofD8iRLu51YEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEECgZgXyDtB9BgrRH9TLMUXP5oWdXrYJG/ct+n5uLF7g8T7z7Mj1Y4tvwH6j8PxfS7ifWxFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGaFig0QB+l2cxVaShqVlPPfMhuvbP4AL6oTrkpIXDK1MfsD7cWu4X+erWwjwL0t9BEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEuqpAQQG6I2gV+lV6+VpRID1eXmSb9xuhewvut6j+uKlFwLdv7z73Ldu2T7Fn2H9J4fl/wIkAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgh0ZYGCg2wF6D0F8g+V/YqCeaLfbDts/YSi7uWm4gT+PPAl++Ca4p6X2ZPq9EgF6M3Fdc5dCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQOcQKDhA92kpRB+jl3+q9C54msdf8JD95Qa2cS8YroQbjrjkSXvimsOKaGG17hmv8Hx5EfdyCwIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIINCpBIoK0H2GCtGn6uXWgmdbv3yZbdt1oO7zlexclRbYFNtsfd7abM07Dyiiq+MUnj9YxH3cggACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCHQ6gaIDdJ+pQvSb9fLZgmf9jSP/at97/P0F38cNhQtccMyjdsOD7y38RrtC4fnlRdzHLQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggECnFCg1QC/uPPRuS5falhGDrS7eq1OqdZZBb4ptsj5LNlnz7oMKHDLnnhcIRnUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEOj8AiUF6D59rULfRy//UOlTEMd33vOQ/fs/OAu9ILQCK1805RH72UNHF3iXn3d+AOeeF6hGdQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6PQCJQfoLqAQfYpeHipIo8fc123zvsN0D2ehFwSXZ+XNidXnG61p98F53uHV1qm8V+H57ALuoSoCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQJQTKEqC7hEL0D+tlpkpd3jL/dsJf7br7OQs9b7ACKn7sw4/b7f9zRAF3bFbdYxWeP1HAPVRFAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEuoxA2QJ0F1GI/lm93Jy3Tuyd9bZy4Dob3Dw873uomFtgYbc3bdSawRbv2yN35USNJpUPKDy/P8/6VEMAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQS6nEBZA3TXUYj+db18P2+pA65+yJ6/lLPQ8wbLo+KYa56xBZe8J4+aLY/M7ByF57flWZ9qCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQJcUKHuA7koK0X+mlwvzFIvbI4Nm2VFrJ+dZn2rtCdy987N2xvKDC0C6QOH5DQXUpyoCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQJQUqEqC7lEL0K/VyaV5q3efPtzX7DLGd4gPyqk+lzAKr696xXedvsm177ZIHka88v1Dh+fV51KUKAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg0OUFKhagu5xC9Av08nOV3P2MuvlxW3DuEV1evFIT9Dh82G/m2PJz9s+jiy2q81GF5/+TR12qIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAjuEQO5gu0QGheinqInbVXrkbOqrRz1oVz96bM56VGgr8LEPP263/08+X0BYp5tPUnj+JIwIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAtsFKh6ge1cK0T3YvVelf078RwY+bUe9fWjOelTYLvC7nV+wqcsn5kGyRHXer/B8Xh51qYIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgjsUAJVCdBdVCH6OL08oLJ7u8J1K1fZS3ustrFbxu5QT6LYyT7ee4G9d9GuFh+yU44mXtDnJyg8f6vYrrgPAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQ6MoCVQvQHVEh+iC93K1ydLuo3Za8YYtGN9pujXt2ZfyS5/ZijyU2cX4fax4+MEdbd+rzTyg831RynzSAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIdFGBqgbobqgQvU4v31P5mkr2/nu+/Iq9sX9fG9Q8rIvalzathfXLbe+XzbbtvUs7DW3VZ19ScP7z0jrjbgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKDrC1Q9QA+kCtJP0c+/UemTlbnPrNm2+PBdbWDz0K7/KAqY4eJ6bXE/a4NtPmRkO3e9qc9OU3j+fwW0TFUEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEBghxXosADdxRWi76WXe1X2zfoEery0wF49sM72aPS6XHN6LLaDXuhl2/Zp70sFjwjqdIXnawBDAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEMhPoEMDdB+iQvSd9OJbul+Sdcj1y96wZ0e9axM375PftLporQf6vWwnvLq7Ne/cL8sM/Yzz6QrOf9BFBZgWAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUDGBDg/Qw8wUpE/UzzeoHJZxtnVr19q9ey+wE1e/p2IatdzwzbvPtnNfmWDWO9so79IHFys8963buRBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEChSomQDdx60Q3cfzaZWrVYa0mUusqdGmfeghu/6+4/VZTY29QPf8qzfF4nbambPsj7dONqvPdN9CvXm+gvO/5N8oNRFAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE0gVqMoRWkD5AA/UQ/VyVtmMcectj9vKnD7Be8b5d+pGuqFtr429bZqvO2i/DPDcnja5UeL6lSzswOQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKAKAjUZoId5K0gfq5+/qvKZNhY958yzh4/YaJPfOagKTtXvYubgOXbm07tY015D0zpfr99/oXKNgvO3qj8wekQAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQS6pkBNB+iBXEH6rvr5EpULVPqnHkUs3mSHf/Nh+9+rDrI+8cFd4hEt1arzEy9fYC9+S2e9t3o8SzW/a1RmKDjf0CXmyiQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBGhLoFAF68FKQ3kc/n6fyBZU9Uo51K5fblcfOta/OPkrvdao5pebQFGu2i456ym64a6LFB/s8w/WCfviRym0KzrfV0N8OQ0EAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQS6lECnDJsVpNfrKXxYxcP041XqEk+l94sv2mX/usy+8vyRVh/v2Sme1KbYZvv3yf+wn/1qpG0dNzw5Zj/f/C6VGxWa/71TzINBIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAp1coFMG6FFzhem+Et2DdD8nfbfEZ/VvLbbz//VV+8GDh1rveL+afEartFX7BafPsbt/vr817zwwOcaX9HqTyq8VnL9dk+NmUAgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAXFej0AXr0uShMP1W/n6tyjEpPi218xw754bN21TUD7Ni3D6yBZxi33w57wa748lZ75fOHmvXyIa1VuVfFzzZ/rAbGyBAQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQACBHVKgSwXo0SeoMP0w/X6kip+LfrT1fOktO+frC+3S/x1lY7aOrurTntXrdbvy5GV271Wjbdso7/phFd+a/TGF5rOrOhY6QwABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBDIKNBlA/T02SpQ9xXo71XZ3wbP6WWH3dJgJ/x5Z/vovLE2tGn3sv59vNR9md297wL7+4kr7ZlPNNra/Zar/edU/q7AfEFZ+6IxBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIGyCOwwAXo2LQXro+2U3+xmx94z3A54cXcbsGaUTVyxu73cew9rbO5j3Zt727itvtf6oGQba2xD3QbbUveuDd62Tu+tsD+NXmu9e75ss8e/YQ+dstj+cPYCBeVvlOUJ0QgCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQFUEdvgAvSrKdIIAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUPMCBOg1/4gYIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBANQQI0KuhTB8IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAjUvQIBe84+IASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVEOAAL0ayvSBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDzAgToNf+IGCACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQDUECNCroUwfCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI1L0CAXvOPiAEigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRDgAC9Gsr0gQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQ8wIE6DX/iBggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA1BAjQq6FMHwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACNS9AgF7zj4gBIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUQ4AAvRrK9IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUPMCBOg1/4gYIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBANQQI0KuhTB8IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAjUvQIBe84+IASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVEOAAL0ayvSBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDzAgToNf+IGCACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQDUECNCroUwfCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI1L0CAXvOPiAEigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRDgAC9Gsr0gQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQ8wIE6DX/iBggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA1BAjQq6FMHwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACNS9AgF7zj4gBIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUQ4AAvRrK9IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUPMCBOg1/4gYIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBANQQI0KuhTB8IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAjUvQIBe84+IASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVEOAAL0ayvSBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDzAgToNf+IGCACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQDUECNCroUwfCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI1L0CAXvOPiAEigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRDgAC9Gsr0gQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQ8wIE6DX/iBggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA1BAjQq6FMHwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACNS9AgF7zj4gBIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUQ4AAvRrK9IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUPMCBOg1/4gYIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBANQQI0KuhTB8IIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAjUvQIBe84+IASKAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIVEOAAL0ayvSBAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIFDzAgToNf+IGCACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAQDUECNCroUwfCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAI1L0CAXvOPiAEigAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCFRDgADTaWU0AAABC0lEQVS9Gsr0gQACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQ8wIE6DX/iBggAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEA1BAjQq6FMHwgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACNS9AgF7zj4gBIoAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAghUQ4AAvRrK9IEAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgggUPMCBOg1/4gYIAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBANQT+P9eXpkADYZV0AAAAAElFTkSuQmCCdata:image/png;base64,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,extensions:ANGLE_instanced_arrays;EXT_blend_minmax;EXT_color_buffer_half_float;EXT_float_blend;EXT_frag_depth;EXT_shader_texture_lod;EXT_sRGB;EXT_texture_compression_bptc;EXT_texture_compression_rgtc;EXT_texture_filter_anisotropic;OES_element_index_uint;OES_fbo_render_mipmap;OES_standard_derivatives;OES_texture_float;OES_texture_float_linear;OES_texture_half_float;OES_texture_half_float_linear;OES_vertex_array_object;WEBGL_color_buffer_float;WEBGL_compressed_texture_s3tc;WEBGL_compressed_texture_s3tc_srgb;WEBGL_debug_renderer_info;WEBGL_debug_shaders;WEBGL_depth_texture;WEBGL_draw_buffers;WEBGL_lose_context;WEBGL_provoking_vertex,webgl aliased line width range:[1, 1],webgl aliased point size range:[1, 1024],webgl alpha bits:8,webgl antialiasing:yes,webgl blue bits:8,webgl depth bits:24,webgl green bits:8,webgl max anisotropy:16,webgl max combined texture image units:32,webgl max cube map texture size:16384,webgl max fragment uniform vectors:1024,webgl max render buffer size:16384,webgl max texture image units:16,webgl max texture size:16384,webgl max varying vectors:30,webgl max vertex attribs:16,webgl max vertex texture image units:16,webgl max vertex uniform vectors:4096,webgl max viewport dims:[32767, 32767],webgl red bits:8,webgl renderer:ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar,webgl shading language version:WebGL GLSL ES 1.0,webgl stencil bits:0,webgl vendor:Mozilla,webgl version:WebGL 1.0,webgl unmasked vendor:Google Inc. (Intel),webgl unmasked renderer:ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similar,webgl vertex shader high float precision:23,webgl vertex shader high float precision rangeMin:127,webgl vertex shader high float precision rangeMax:127,webgl vertex shader medium float precision:23,webgl vertex shader medium float precision rangeMin:127,webgl vertex shader medium float precision rangeMax:127,webgl vertex shader low float precision:23,webgl vertex shader low float precision rangeMin:127,webgl vertex shader low float precision rangeMax:127,webgl fragment shader high float precision:23,webgl fragment shader high float precision rangeMin:127,webgl fragment shader high float precision rangeMax:127,webgl fragment shader medium float precision:23,webgl fragment shader medium float precision rangeMin:127,webgl fragment shader medium float precision rangeMax:127,webgl fragment shader low float precision:23,webgl fragment shader low float precision rangeMin:127,webgl fragment shader low float precision rangeMax:127,webgl vertex shader high int precision:0,webgl vertex shader high int precision rangeMin:31,webgl vertex shader high int precision rangeMax:30,webgl vertex shader medium int precision:0,webgl vertex shader medium int precision rangeMin:31,webgl vertex shader medium int precision rangeMax:30,webgl vertex shader low int precision:0,webgl vertex shader low int precision rangeMin:31,webgl vertex shader low int precision rangeMax:30,webgl fragment shader high int precision:0,webgl fragment shader high int precision rangeMin:31,webgl fragment shader high int precision rangeMax:30,webgl fragment shader medium int precision:0,webgl fragment shader medium int precision rangeMin:31,webgl fragment shader medium int precision rangeMax:30,webgl fragment shader low int precision:0,webgl fragment shader low int precision rangeMin:31,webgl fragment shader low int precision rangeMax:30Google Inc. (Intel)~ANGLE (Intel, Intel(R) HD Graphics Direct3D11 vs_5_0 ps_5_0), or similartruefalsefalsefalsefalse0,false,falseswf object not loaded35.749972093850374'+time_s
s= l(a,31)
console.log(s)
function getDevoceId(){
return s
}
payToken:页面元素的值,写一个正则提取
smDeviceId:数美风控。跟栈
断点,发现调用window.ready来触发。扣代码。部环境。缺什么补什么
风控源码
补环境部分源码
整合代码
1.获取paytoken
2获取key和pairID

3生成deviceId
4生成smidV2
5发送,并刷新获取走短信接口
6获取短信
7登录请求并验证
结果验证

安全防护与对抗措施:一定要挂代理,不然会封ip很严重
法律与伦理边界
- 逆向技术的合法使用场景(授权测试、学术研究)
- 风险提示(数据隐私、服务滥用责任)



