前言

在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里面有非常详细的介绍以及是怎么找到加密js代码和api接口。

Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法

QQ群聊

855262907

最新版本

Python3爬取今日头条文章视频数据,完美解决_signature的加密方法(2020-10-16版)

破解as和cp参数

今日头条某用户的链接:https://www.toutiao.com/c/user/token/MS4wLjABAAAAaezOXkHVr0_i2JvWXprb4zLGpRInnKStptFm5WsXHKU/#mid=50044041847

直接搜索getHoney关键字(搜索关键字尽量用字多的参数),发现as和cp还是由getHoney函数生成的,不多说,直接拿过来逆向。

JS代码:

e.getHoney = function() {var i = Math.floor((new Date).getTime() / 1e3), e = i.toString(16).toUpperCase(), t = md5(i).toString().toUpperCase();if (8 != e.length)return {as: "479BB4B7254C150",cp: "7E0AC8874BB0985"};for (var o = t.slice(0, 5), n = t.slice(-5), a = "", s = 0; 5 > s; s++)a += o[s] + e[s];for (var r = "", c = 0; 5 > c; c++)r += e[c + 3] + n[c];return {as: "A1" + a + e.slice(-3),cp: e.slice(0, 3) + r + "E1"}
}

Python代码:

import time
import hashlibdef getHoney():i = int(time.time())e = '%x'.upper() % imd5 = hashlib.md5()md5.update(e.encode('utf-8'))t = md5.hexdigest()if 8 != len(t):return {'as':'479BB4B7254C150','cp':'7E0AC8874BB0985'}o = t[0:5]n = t[:-5]a = ''r = ''for i in range(5):a += o[i] + e[i]r += e[i+3] + n[i]return {'as':'A1' + a + e[:-3],'cp':e[0:3] + r + 'E1'}

破解_signature参数

搜索_signature关键词。

得知_signature是由utils.tacSign(o.url,o.data)生成的,先找到tacSign函数。

通过调式得知返回值i是由window.byted_acrawler.sign(o)返回的,o={url:e}e=o.urlo.url=链接地址(无_signature参数),如:https://www.toutiao.com/c/user/article/?page_type=1&user_id=4492956276&max_behot_time=0&count=20&as=A1251EFFB42ADCE&cp=5EF4AA0D2C4E8E1,所以我们只需要找到window.byted_acrawler.sign()就可以了,通过控制台,直接把代码找到,然后点击一下就能找到代码所在了。


发现window.byted_acrawler.sign()函数是由这里的代码生成的,我们把他直接扣下来。

sign.js

var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(f) {return typeof f
}
: function(f) {return f && "function" == typeof Symbol && f.constructor === Symbol && f !== Symbol.prototype ? "symbol" : typeof f
}
;
TAC = function() {function f(f, a, b, d, c, r) {null == r && (r = this);var n, i, o = {}, l = o.d = c ? c.d + 1 : 0;for (o["$" + l] = o,i = 0; i < l; i++)o[n = "$" + i] = c[n];for (i = 0,l = o.length = d.length; i < l; i++)o[i] = d[i];return e(f, a, b, o, r)[1]}function e(r, o, l, t, v, y) {function h(f) {S[++A] = f}function k() {return S[A--]}function m(f, e) {for (var a = b, d = "", c = 0; c < f.length; c++) {var r = f.charCodeAt(c);d += String.fromCharCode(a ^ r),a = (a << 1) + c + e + 1 + (a >> 1) & 255}return d}null == v && (v = this);var g, C, x, I, S = [], A = 0;y && (g = y);for (var w = o + 2 * l; o < w; ) {var z = 13 * i(r, o) % 241;if (o += 2,0 == (3 & z))if (0 == (3 & (z >>= 2))) {if (0 == (z >>= 2))return [1, S[A--]];if (2 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = +I;else if (4 == z)g = S[A--],S[A] = S[A] * g;else if (6 == z)g = S[A--],S[A] = S[A] != g;else if (13 == z)C = S[A--],x = S[A--],(I = S[A--]).x === e ? S[++A] = f(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);else {if (15 != z)break;oprand = n(r, o),I = oprand[1],S[A] = function(a, b) {var d = function e() {var a = arguments;return f(r, e.pc, e.len, a, e.z, this)};return d.pc = a,d.len = b,d.x = e,d.z = t,d}(o + 6, I - 4),o += 2 * I - 2}} else if (1 == (3 & z))if (3 == (z >>= 2))g = S[--A],S[A] = g(S[A + 1]);else if (5 == z)S[A -= 1] = S[A][S[A + 1]];else if (7 == z)S[A] = --S[A];else {if (9 != z)break;g = S[A--],S[A] = typeof g}else if (2 == (3 & z))if (6 == (z >>= 2))S[A] = u(S[A]);else if (8 == z)g = S[A--],oprand = n(r, o),o += 2 * oprand[0],S[A--][m(a[oprand[1]], oprand[1])] = g;else {if (10 != z) {if (12 == z)throw S[A--];break}S[A] = ~S[A]}else if (0 == (z >>= 2))S[++A] = null;else if (2 == z)g = S[A--],S[A] = S[A] >= g;else if (9 == z)g = k(),C = k(),t[0] = 65599 * t[0] + t[g].charCodeAt(C) >>> 0;else if (11 == z)S[++A] = void 0;else {if (13 != z)break;g = S[A--],S[A] = S[A] && g}else if (1 == (3 & z))if (0 == (3 & (z >>= 2))) {if (4 == (z >>= 2)) {oprand = n(r, o),I = oprand[1];try {if (d[c][2] = 1,1 == (g = e(r, o + 6, I - 4, t, v))[0])return g} catch (y) {if (d[c] && d[c][1] && 1 == (g = e(r, d[c][1][0], d[c][1][1], t, v, y))[0])return g} finally {if (d[c] && d[c][0] && 1 == (g = e(r, d[c][0][0], d[c][0][1], t, v))[0])return g;d[c] = 0,c--}o += 2 * I - 2} else if (6 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[A -= I] = p("x,y", "return new x[y](" + Array(I + 1).join(",x[++y]").substr(1) + ")")(S, A);else if (8 == z)g = S[A--],S[A] = S[A] & g;else if (10 != z)break} else if (1 == (3 & z))if (0 == (z >>= 2))S[A] = !S[A];else if (7 == z)C = S[A--],g = delete S[A--][C];else if (9 == z)oprand = n(r, o),o += 2 * oprand[0],S[A] = S[A][m(a[oprand[1]], oprand[1])];else {if (11 != z)break;g = S[A--],S[A] = S[A] << g}else if (2 == (3 & z))if (1 == (z >>= 2))S[++A] = g;else if (3 == z)g = S[A--],S[A] = S[A] <= g;else if (10 == z)g = S[A -= 2][S[A + 1]] = S[A + 2],A--;else if (12 == z)g = S[A],S[++A] = g;else {if (14 != z)break;g = S[A--],S[A] = S[A] || g}else if (0 == (z >>= 2))S[A] = !S[A];else if (2 == z)oprand = n(r, o),o += 2 * (I = oprand[1]) - 2;else if (4 == z)g = S[A--],S[A] = S[A] / g;else if (6 == z)g = S[A--],S[A] = S[A] !== g;else {if (13 != z)break;S[++A] = v}else if (2 == (3 & z))if (0 == (3 & (z >>= 2)))if (1 == (z >>= 2))g = S[A--],S[A] = S[A] > g;else if (8 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],C = A + 1,S[A -= I - 1] = I ? S.slice(A, C) : [];else if (10 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],g = S[A--],t[I] = g;else {if (12 != z)break;g = S[A--],S[A] = S[A] >> g}else if (1 == (3 & z))if (0 == (z >>= 2))S[++A] = s;else if (2 == z)g = S[A--],S[A] = S[A] + g;else if (4 == z)g = S[A--],S[A] = S[A] == g;else if (11 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[--A] = p("x,y", "return x " + m(a[I], I) + " y")(S[A], S[A + 1]);else {if (13 != z)break;g = S[A - 1],C = S[A],S[++A] = g,S[++A] = C}else if (2 == (3 & z))if (1 == (z >>= 2))oprand = n(r, o),o += 2 * oprand[0],S[++A] = m(a[oprand[1]], oprand[1]);else if (3 == z)S[A--] ? o += 6 : (oprand = n(r, o),o += 2 * (I = oprand[1]) - 2);else if (5 == z)g = S[A--],S[A] = S[A] % g;else if (7 == z)g = S[A--],S[A] = S[A]instanceof g;else {if (14 != z)break;S[++A] = !1}else if (4 == (z >>= 2))oprand = n(r, o),I = oprand[1],d[c][0] && !d[c][2] ? d[c][1] = [o + 6, I - 4] : d[c++] = [0, [o + 6, I - 4], 0],o += 2 * I - 2;else if (6 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = t["$" + I];else {if (8 != z)break;g = S[A--],S[A] = S[A] | g}else if (0 == (3 & (z >>= 2)))if (1 == (z >>= 2))oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = +m(a[I], I);else if (3 == z)g = S[A--],S[A] = S[A] - g;else if (5 == z)g = S[A--],S[A] = S[A] === g;else if (12 == z)C = S[A--],x = S[A--],(I = S[A--]).x === e ? S[++A] = f(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);else {if (14 != z)break;g = S[A],S[A] = S[A - 1],S[A - 1] = g}else if (1 == (3 & z))if (2 == (z >>= 2))h(function(f) {var e = 0, a = f.length;return function() {var b = e < a;b && h(f[e++]),h(b)}}(S[A]));else if (4 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],g = t[I],S[++A] = g;else if (6 == z)S[A] = ++S[A];else {if (8 != z)break;g = S[A--],S[A] = S[A]in g}else if (2 == (3 & z))if (5 == (z >>= 2));else if (7 == z)g = S[A--];else if (9 == z)g = S[A--],S[A] = S[A] ^ g;else {if (11 != z)break;oprand = n(r, o),I = oprand[1],d[++c] = [[o + 6, I - 4], 0, 0],o += 2 * I - 2}else if (1 == (z >>= 2))g = S[A--],S[A] = S[A] < g;else if (8 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[A] = S[A][I];else if (10 == z)S[++A] = !0;else {if (12 != z)break;g = S[A--],S[A] = S[A] >>> g}}return [0, null]}var a = [], b = 0, d = [], c = 0, r = function(f, e) {var a = "" + f[e++] + f[e];return parseInt(a, 16)}, n = function(f, e) {var a = f[e++], b = f[e], d = parseInt("" + a + b, 16);if (d >> 7 == 0)return d >> 6 != 0 && (d = -64 | 63 & d),[1, d];if (d >> 6 == 2) {var c = parseInt("" + f[++e] + f[++e], 16);return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,d <<= 8,c = d + c,[2, c]}if (d >> 6 == 3) {var r = parseInt("" + f[++e] + f[++e], 16), n = parseInt("" + f[++e] + f[++e], 16);return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,d <<= 16,r <<= 8,n = d + r + n,[3, n]}}, i = function(f, e) {var a = f[e++], b = f[e];return parseInt("" + a + b, 16)}, o = function(f, e) {var a = "" + f[e++] + f[e];return a = parseInt(a, 16),String.fromCharCode(a)}, l = function(f, e, a) {for (var b = "", d = 0; d < a; d++)b += o(f, e),e += 2;return b}, t = function(f, e, b) {for (var d = 0; d < b; d++) {var c = n(f, e);e += 2 * c[0];var r = l(f, e, c[1]);a.push(r),e += 2 * c[1]}}, s = this, p = s.Function, u = Object.keys || function(f) {var e = {}, a = 0;for (var b in f)e[a++] = b;return e.length = a,e};return function(e) {e.length;for (var d = 0, c = "", i = d; i < d + 16; )c += o(e, i),i += 2;if ("HNOJ@?RC" != c)throw new Error("error magic number " + c);n(e, d += 16);d += 8,b = 0;for (var l = 0; l < 4; l++) {var s = r(e, d + 2 * l);b += (3 & s) << 2 * l}d += 16;var p = n(e, d += 16), u = p[1], v = d += 2 * p[0];d += p[1];var y = n(e, d);y[1];d += 2 * y[0],a = [],t(e, d, y[1]),f(e, v, u, [])}
}(),
TAC("484e4f4a403f52430024061052f876cc0e1e4e000000000000000000c097c6020025806d4421131e014302023e22170d44441c21131e0343020440170f44441801131e01041c1680474421131e054302063e22170a44441c131e051e0717164444131e052602010a0118010a02101c161e444418002201170644441c131f0018011800131e081a001d0927041c002611020025c04b6b020a250c4444131e0b1e0c0101001f06020d250d444421131e0e43020440001f07020f25805144131e10021102121a02221e1324131e140a010f2201173744441c0200251144441800221e15240a000f02163e00131e17012201171844441c21131e174302044022170a44441c131e171e1804001f08021925114444131e1a1a00221e1b240a000f001f09021c253a44442118004302043e2201170944441c1800263e1707444402000021180043021d3e171344441800170a4444021e16064444021f001800001f0a022025804b441801011708444402211f0102001f0618001f071807150039172c444418061801131e22221e2324131e22221e24240a000f18011e252a0a010f19281f0618072e1f0716511806001f0b02262580ce4402041f0621134318063e2201171044441c13221e15240a000f0227402201171744441c131e081e281e15221e2924130a010f0227402201170d44441c21131e0b4318063e2201171b44441c131e0b221e15240a000f221e2a24022b0a010f15003a2201170d44441c21131e2c4318063e2201171244441c131e2c221e15240a000f022d402201170d44441c21131e2e4318063e1706444420001b010b06260a0010011726444421131e2f4318063e2201171244441c131e2f221e15240a000f02304017064444200012001f0c023125809744131e321a001f06131e08221e332418060234131e081a00220200250c44441b020b00201d35001d360a030f1c131e37221e3824023918060a020f1c1322170844441c131e3722170a44441c131e371e3a170944441800201d351b010b07260a0010173144441322172244441c131e3b131e3c29158064392201171044441c131e3d131e3e2915806439170944441800201d35001f0d023f252d444421131e80404302044022171e44441c131e081e281e15221e2924131e80401e80410a010f0280423e001f0e028043258065441b010b06260a00100117805644028044131e2c42012201171144441c131e2c1e8044131e804541012201170a44441c02804613422201170a44441c02804713422201170a44441c02804813422201171044441c028049134202804a13423a0012001f0f02804b25815e44131e2c1e804c17064444200002804d131e0842173f4444131e08221e804d24131e2c0a010f1f061806221e2a2402804c0a010f15003b2201171444441c1806221e2a2402804e0a010f15003b1706444420001322170944441c131e804f22170c44441c131e804f1e805022170f44441c131e804f1e80501e8051172844444604444406044444051c4444131e804f1e8050221e8051240a000f213e1706444420000702805202805302805402805502805602805702805802805902805a02805b02805c0a0b1f0602805d02805e02805f0a031f07180708031f0818082104171944441f0918071809191f0a13180a191706444420001665180608031f0818082104171b44441f0918061809191f0a131e0b180a191706444420001663131e0b08031f0818082104173144441f091809221e806024131e1002806102001a020a010f22170e44441c131e0b1809191e8062170644442000164d12001f100280632580c9441b010b07260a001017284444131e8064221e80652402130a010f1f0618060200250d44441b020b00201d8066001d80671b010b08260a001017805c4446044444062d4444271f0618061e8068131e80691e806a3e22170e44441c131e806b1e2515003e170a44441800201d806605274444131e806b221e806c2402806d02000a020f1c131e806b221e806e2402806d0a010f1c071b010b06260a001017284444131e80640122171444441c131e806f2201170944441c131e8070170a44441800201d8066001f1102807125809f441b010b06260a00100117809044131e0b221e8072240280730a010f1f0618061e8074221e15240a000f221e807524131e100280760280771a0202000a020f221e2a240280780a010f15003a2201173344441c131e2c1e15221e15240a000f221e807524131e100280760280771a0202000a020f221e2a240280780a010f15003a2201171644441c131e2c1e8044221e15240a000f028079400012001f1202807a25807144131e1002807b02001a021f061322170844441c131e2e22170b44441c131e2e1e807c17804944131e2e1e807c1f071807221e2a2402807d0a010f15003e2201171444441c1807221e2a2402807e0a010f15003e2201171044441c1806221e132418070a010f17064444200012001f1302807f258095441b010b806c1e8080170d44441b010b806c1e80800046044444060a4444271f0602000005806d44131e0b221e8072240280730a010f1f061806221e8081240280820a010f1f071807221e8083240280840a010f1f081807221e80852418081e80860a010f1f091807221e80852418081e80870a010f1f0a180902808828180a281f0b1b010b806c180b1d8080180b0007001f140280892581204402001f061b010b806c1e808a171244441b010b806c1e808a1f061680f24415051f070a001f08131e2c1e80441f0918092201170744441c0a001f0a15001f0b180b18073a1780af44460444440604444405809b44180a180b191f0c0a001f0d15001f0e180e180c1e253a17354444180c221e808b24180e0a010f171e4444180d221e808c24180c221e808b24180e0a010f1e808d0a010f1c180e2d1f0e1646180c1e808e0200281f0e180c1e808f17114444180e180c1e808f020028281f0e180e180c1e8090020028281f0e180e180d221e80912402000a010f281f0e1808221e808c24180e0a010f1c07180b2d1f0b16bf4f1808221e8091240280920a010f1f061b010b806c18061d808a1806221e80932415001584000a020f001f1502809425844e44131e2c1e8095221e8096240a000f1f06131e2c1e8097221e8096240a000f1f0715001f0815011f0915021f0a15031f0b15041f0c15051f0d180d1f0e0280981f0f0280991f1002809a1f1102809b1f1202809c1f1302809d1f1402809e1f1502809f1f161806221e2a240280a00a010f15003b2201171444441c1806221e2a240280a10a010f15003b170c4444180c1f0e1680f2441806221e2a24180f0a010f15003b170c444418081f0e1680d8441806221e2a2418110a010f15003b170c444418091f0e1680be441806221e2a2418120a010f15003b2201171444441c1806221e2a240280a20a010f15003b2201171444441c1806221e2a240280a30a010f15003b170c4444180a1f0e168078441806221e2a2418130a010f15003b2201171344441c1806221e2a2418140a010f15003b2201171344441c1806221e2a2418150a010f15003b2201171444441c1806221e2a240280a40a010f15003b2201171444441c1806221e2a240280a50a010f15003b170c4444180b1f0e16084444180d1f0e1807221e2a2418100a010f15003b22170a44441c180e180840170a4444200016814c441807221e2a2418120a010f15003b2201171344441c1807221e2a2418110a010f15003b2201171444441c1807221e2a240280a60a010f15003b22170a44441c180e180a4022170a44441c180e180940170a444420001680f3441807221e2a2418160a010f15003b2201171344441c1807221e2a2418140a010f15003b2201171344441c1807221e2a2418150a010f15003b2201171344441c1807221e2a2418130a010f15003b22170a44441c180e180c4022170a44441c180e180b40170a44442000168086441807221e2a2418100a010f15003a22171344441c1807221e2a2418120a010f15003a22171344441c1807221e2a2418160a010f15003a22171344441c1807221e2a2418130a010f15003a22171344441c1807221e2a2418140a010f15003a22171344441c1807221e2a2418150a010f15003a1f171817180e180d3e4017064444200015001f1715011f1815021f1915041f1a15051f1b181b1f1c1806221e2a240280a70a010f15003b170c444418191f1c168085441806221e2a240280a80a010f15003b2201171444441c1806221e2a240280a90a010f15003b170c444418181f1c168054441806221e2a240280aa0a010f15003b170c444418171f1c163944441806221e2a240280ab0a010f15003b2201171444441c1806221e2a240280ac0a010f15003b170c4444181a1f1c16084444181b1f1c1b010b15260a0010221e8096240a000f1f1d1b010b14260a0010221e8096240a000f1f1e181c18173f22170a44441c181c18183f22172a44441c131e804f2201171f44441c131e2c1e80ad221e15240a000f221e2a240280ae0a010f15003b170644442000181c18173f22170a44441c181c18183f22171444441c181d221e2a2402804f0a010f15003b170644442000181c181a3e22170a44441c181e02003f17064444200012001f160280af2580d144261f0646044444060f4444271f07131e0b1e80b01f0605174444131e0b221e80b1240280b20a010f0b001f06071806263e1705444400131e0b221e8072240280b30a010f1f070280b4131e80b52615c02710131e22221e24240a000f2a150a0a0210280280b428131e1a1a00221e1b240a000f281f0818000280b6180828281f00180718001d80b71318080200253144441b020b011800041c4604444406044444051c44441b020b06221e80b8241b020b070a010f1c131b020b080907000d1806221e80b92418070a010f1c001f170280ba2580bf4418001e251f0618061502331f0718011733444418001806150129191f0818071504291f07180818071503293a2201170a44441c180818073917064444260018081f0715001f08180818063a17804a4418001808131e80bb221e80bc2418001808191580ff2f18001808191508351580ff2f18001808191510351580ff2f18001808191518351580ff2f0a040f0d18082d1f0816bfb41800221e80912402000a010f1f081801171344441808221e80bd24150018070a020f001808001f180280be2580814418001e251f0618061502341f07180615032f1500401709444418072d1f071801171c4444131e80bf18071501281a011f081808180718060d160e4444131e80bf18071a011f0815001f09180918063a172b44441808180915023423191800221e80c02418090a010f180915032f15033333300d18092d1f0916521808001f190280c1250b444418001480c22f001f1a0280c325314444180215053518011502333118011503351802150433312818001801311805180315032f180431191802312831001f1b0280c42518444418001e2515043a170a4444180015041d251800001f1c0280c52580d24418001e251f0618061501291f0718001807191f0915001f0a131e22221e23241506153418062b280a010f1500301f0d180d150039178097441b010b1a180a1b010b806d28041f0a180a15023515032f1f0b15001f0c180c18073a173c44441800180c150128191f081800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061028040d271f09180c2d1f0c164118000b001f08180018071b010b1a18001807191b010b1b26180a180818091807180b18010a061028040d271f09180d2e1f0d16bf671800001f1d0280c62580d34418001e251f0618061501291f0718000b001f08131e22221e23241506153418062b280a010f1f0d1b010b1a180d1b010b806d2a041f0a180a15004017809144180a15023515032f1f0b18071f0c180c150039173c44441800180c150129191f091800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061029040d271f08180c2e1f0c164118001807191f0918001b010b1a18000b001b010b1b26180a180818091500180b18010a061029041d1f271f081b010b1a180a1b010b806d29041f0a16bf6d1800001f1e0280c72581a744131e100280c802001a02221e132418000a010f170744441800000a001f0618001e251f0715001f0815001f09180818073a178165441800221e80c02418080a010f1f0a180a1580803a17194444180618091800221e80c92418080a010f0d16812b44180a1588003a172b444418061809131e80bb221e80bc241580c0180a15063430158080180a153f2f300a020f0d1680fa44180a15c0d8003a2201170c44441c180a15c0dfff391737444418061809131e80bb221e80bc241580e0180a150c3430158080180a150634153f2f30158080180a153f2f300a030f0d1680ae44180815012818073a178098441800221e80c02418081501280a010f1f0b180a15c0dc003a22170c44441c15c0dc00180b3c22170c44441c180b15c0dfff3c17806244180a1583ff2f150a33180b1583ff2f3015c10000281f0c18061809131e80bb221e80bc241580f0180c151234153f2f30158080180c150c34153f2f30158080180c150634153f2f30158080180c153f2f300a040f0d18082d1f08160e4444131e80ca0280cb1a014718082d1f0818092d1f0916be991806221e80912402000a010f001f1f0280cc25825c44131e80bf18011a011f0615001f0715001f0818001e251f09180718013a22170a44441c180818093a178212441800221e80c0241808222d1f080a010f1f0a180a1504341f0b180b15004017806f44180b15014017806644180b15024017805d44180b15034017805444180b15044017804b44180b15054017804244180b15064017394444180b15074017304444180b150c4017324444180b150d4017294444180b150e4017805c44180b150f401780a94416816b4416817d4418061807180a0d16817244180818093a1729444418061807180a151f2f1506331800221e80c0241808222d1f080a010f153f2f300d160e4444131e80ca0280cd1a014716813644180815012818093a1780404418061807180a150f2f150c331800221e80c0241808222d1f080a010f153f2f150633301800221e80c0241808222d1f080a010f153f2f300d160e4444131e80ca0280cd1a01471680e044180815022818093a1780b044180a15072f1512331800221e80c0241808222d1f080a010f153f2f150c33301800221e80c0241808222d1f080a010f153f2f150633301800221e80c0241808222d1f080a010f153f2f3015c10000291f0c1500180c3c22170c44441c180c15cfffff3c172f444418061807222d1f07180c150a341583ff2f15c0d800300d18061807180c1583ff2f15c0dc00300d161a4444131e80ca0280ce180c221e152415100a010f281a0147160e4444131e80ca0280cd1a0147161a4444131e80ca0280cf180a221e152415100a010f281a014718072d1f0716bde1180718013a170a4444180618071d25131e80bb1e80bc131e80bb180610001f200280d02582ad440a001f06131e80bf15c080001a011f0715001f0815001f0918001e251f0a180818013a22170a44441c1809180a3a17824a441800221e80c0241809222d1f090a010f1f0b180b1504341f0c180c15004017806f44180c15014017806644180c15024017805d44180c15034017805444180c15044017804b44180c15054017804244180c15064017394444180c15074017304444180c150c4017324444180c150d4017294444180c150e4017805c44180c150f401780a94416816b4416817d4418071808180b0d168172441809180a3a1729444418071808180b151f2f1506331800221e80c0241809222d1f090a010f153f2f300d160e4444131e80ca0280cd1a0147168136441809150128180a3a1780404418071808180b150f2f150c331800221e80c0241809222d1f090a010f153f2f150633301800221e80c0241809222d1f090a010f153f2f300d160e4444131e80ca0280cd1a01471680e0441809150228180a3a1780b044180b15072f1512331800221e80c0241809222d1f090a010f153f2f150c33301800221e80c0241809222d1f090a010f153f2f150633301800221e80c0241809222d1f090a010f153f2f3015c10000291f0d1500180d3c22170c44441c180d15cfffff3c172f444418071808222d1f08180d150a341583ff2f15c0d800300d18071808180d1583ff2f15c0dc00300d161a4444131e80ca0280ce180d221e152415100a010f281a0147160e4444131e80ca0280cd1a0147161a4444131e80ca0280cf180b221e152415100a010f281a0147180815c07ffe3b1731444418081501281f0d1807180d1d25180618061e25131e80bb1e80bc131e80bb1807100d1801180d291f01157f1f0818082d1f0816bda91808150039171f4444180718081d25180618061e25131e80bb1e80bc131e80bb1807100d1806221e80912402000a010f001f210280d12580ac441801213e2201170944441c1801263e2201170a44441c180115003a170a444418001e251f01180115003e17074444020000131e100280c802001a02221e132418000a010f2201171944441c131e100280d202001a02221e132418000a010f0117214444180118001e253e170744441800001800221e80d324150018010a020f00180115c0ffff3a171444441b010b2026180018010a0210161044441b010b2126180018010a0210001f220280d4258067441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1800041f001b010b1f1801041f011b010b18261b010b1d261b010b19261800200a02101b010b1c1b010b19261801120a0210040a0210120a0210001f230280d5258063441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1801041f011b010b221b010b18261b010b1e261b010b19261800120a02101b010b1c1b010b19261801120a0210040a0210200a021004001f240280d6258181440280d71f0618011708444418011f0602001f0715001f0918001e2518091503283b1780aa441800221e80c0241809222d1f090a010f1580ff2f1510331800221e80c0241809222d1f090a010f1580ff2f150833301800221e80c0241809222d1f090a010f1580ff2f301f0818071806221e80c92418081480d82f1512340a010f281f0718071806221e80c924180815c3f0002f150c340a010f281f0718071806221e80c9241808158fc02f1506340a010f281f0718071806221e80c9241808153f2f0a010f281f0716bf4f18001e251809291500391780a5441800221e80c0241809222d1f090a010f1580ff2f15103318001e25180939171b44441800221e80c02418090a010f1580ff2f150833160644441500301f0818071806221e80c92418081480d82f1512340a010f281f0718071806221e80c924180815c3f0002f150c340a010f281f07180718001e25180939171b44441806221e80c9241808158fc02f1506340a010f160744440280d9281f0718070280d9281f071807001f250280da251144440280db221e2a2418000a010f001f260280dc2581094402001f0615001f07180718001e251503293a1780f0441b010b261800221e80c92418071500280a010f041f081b010b261800221e80c92418071501280a010f041f091b010b261800221e80c92418071502280a010f041f0a1b010b261800221e80c92418071503280a010f041f0b1806131e80bb221e80bc2418081502331809150435300a010f281f061800221e80c92418071502280a010f0280d93f172744441806131e80bb221e80bc2418091504331580f02f180a150235150f2f300a010f281f061800221e80c92418071503280a010f0280d93f172144441806131e80bb221e80bc24180a1506331580c02f180b300a010f281f0618071504281f0716bf091806001f270280dd25804c441800153f2f1f00131e80bb221e80bc2418001800151a3a170b444415804116254444180015343a170b4444158047161544441800153e3a170a4444157c16064444156f280a010f001f280280de253444441b010b281f06180618001518340418061800151234042818061800150c340428180618001506340428180618000428001f290280df258097441b010b806b1e80e00280e1281f061b010b1726180602002580774418001e2515083a1705444400460444440604444405805e441b010b24261b010b271800221e80932415080a010f041800221e809324150015080a020f0a02101f0618060280e23e171444441b010b2b262018000a02101c161a444418060280e33e171044441b010b2b261218000a02101c07000a02101c001f2a0280e4258050441b010b806b18001d80e5460444440604444405394444131e806b17164444131e806b221e806c240280e618010a020f1c131e80e717164444131e80e7221e806c240280e618010a020f1c07001f2b0280e82580ab4402001f06460444440604444405804144131e806b17154444131e806b221e80e9240280e60a010f1f061806012201170944441c131e80e717154444131e80e7221e80e9240280e60a010f1f0607180617805644460444440604444405804a441b010b24261b010b271806221e80932415080a010f041806221e809324150015080a020f0a02101f0718070280e23e170a444420001610444418070280e33e1706444412000712001f2c0280ea2580fa44121f061b010b806b1e80e5203e170b4444201f06162344441b010b806b1e80e5123e170b4444121f06160e44441b010b2c260a00101f06131e081a0022121d80eb22121d2e2218061d80ec22121d80ed22121d3522121d80ee22121d80ef22121d804c22121d806622121d80f0220280f12506444420001f0818081d131f0718071b010b0c260a00101d80ed18071e80ed01178061441b010b0d1807041c1b010b111807041c18071b010b0e260a00101d80ee18071b010b0f260a00101d80ef18071b010b10260a00101d804c18071b010b12260a00101d80f018071b010b13260a00101d2e18071b010b16260a00101d80eb1807001f2d0280f225805b44131e08221e80f32418000a010f1f0615001f0718061e251501291f08180815003b173344441800180618081919170a444415011606444415001f09180918061e25180829150129331807301f0718082e1f08164a1807001f2e0280f42536444415001f06180618011e253a17244444180015c1003f2a1801221e80c02418060a010f281500351f0018062d1f0616571800001f2f0280f52536444415001f06180618011e253a1724444418001801221e80c02418060a010f3115c1003f2a1500351f0018062d1f0616571800001f300280f625809f4415001f06180618011e253a17808d441801221e80c02418060a010f1f07180715c0d8003b22170c44441c180715c0dbff3c22170c44441c180618011e253a178043441801221e80c02418061501280a010f1f08180815c0fc002f15c0dc003d1722444418071583ff2f150a3318081583ff2f2815c10000281f0718061501281f06180015c1003f2a1807281500351f0018062d1f0616bf6f1800001f310280f72580704418002201170744441c02001f061806221e807524131e100280f802001a0202000a020f1f061806221e2a240280e10a010f157f40172044441806221e80d32415001806221e2a240280e10a010f0a020f1606444418061f061806170a44441806160744440280881f061806001f320280f92580aa4418002201170744441c02001f061806221e806024131e100280fa02001a020a010f1f0718071716444418070b00221e80d32415010a010f1606444402001f061806171544441806221e80fb240280fc0a010f16054444261f08131e081a001f0918081780414415001f0a180a18081e253a1732444418091808180a19221e80fb240280d90a010f0b001808180a19221e80fb240280d90a010f0b010d180a2d1f0a16491809001f330280fd25808e441800012201171744441c131e80fe221e80ff2418000a010f0281003e170a4444131e081a0000131e08221e80f32418000a010f221e8101240a000f1f06131e081a001f0715001f08180818061e253a173844441801171b44441807180618081918001806180819190200280d161444441807180618081918001806180819190d18082d1f0816431807001f3402810225807344131e80bf221e81032418000a010f171344441800221e8104241b010b350a010f001800131e084117804544131e08221e80f32418000a010f221e8101240a000f1f061806221e810524020025184444180018011b010b351b020b00180119040d180000131e081a000a020f001800001f35028106258078441800012201171744441c131e80fe221e80ff2418000a010f0281003e17074444020000131e08221e80f32418000a010f221e8101240a000f1f0602001f0715001f08180818061e253a17284444180718061808190a010280d9281800180618081919280280fc28281f0718082d1f0816531807001f360281072580c244131e0b221e8072240280730a010f1f07180715301d8108180715101d81091807221e80812402810a0a010f1f08180802810b1d810c1808221e810d2402810e1502150c0a030f1c180815021d810f180815011d811018080281111d81121808221e811324150815081508150015020a050f1c1808221e8114240a000f1c1807221e8074240a000f1f0615001f09180915203a17294444180015c1003f2a1806221e80c024180018061e252c0a010f281500351f0018092d1f0916541800001f370281152521444446044444060a4444271f06157f00050e44441b010b37148116040007001f3802811725124444110281171d808e1118001d8118001f39028119251e44444604444406094444271f062000050c4444131e806b01010007001f3a02811a251e44444604444406094444271f062000050c4444131e80e701010007001f3b02811b251e44444604444406094444271f062000050c4444131e806401010007001f3c02811c252e44441b010b0a1b010b3c260a0010041b010b0a1b010b3b260a001004281b010b0a1b010b3a260a00100428001f3d02811d25244444131e811e1f0618061e81080280b42818061e8109280280b42818061e811f28001f3e028120251a4444131e811e1f0618061e81210280b42818061e812228001f3f02812325806b44131e8124020025805e44028125131e2c4217804c44131e2c221e8125240a000f221e8126240200252e44441b030b0018001e81270280b42818001e8128280280b42818001e8129280280b42818001e812a28041c000a010f1c160a444418000200041c001a01001f804002812b25807c4402812c1f0615001f0721131e2c1806194302044017104444131e2c1806191f07161b444421131e2c18061943020440170c4444131e2c1806191f0746044444060a4444271f09121f0805174444131e0b221e812d2402812e0a010f1c201f080702812f13421f0918070280b4281808280280b428180928001f804102813025806044131e1a1a001f061806221e81312415010a010f1c1806221e81322415050a010f1c15001806221e8133240a000f291f071806221e813224150b0a010f1c15001806221e8133240a000f291f08131e22221e813424180718080a020f001f80420281352581c3440281360281370281380a031f06131e081a001f07131e081a001f081806031f091809210417806c441f0a131e0b221e8072240281390a010f1f0b180b02813a1d813b180b1e813c02813d1d813e180b1e813c180a1d813f131e0b1e80b0221e80b924180b0a010f1c1807180a180b1e81400d1808180a180b1e81410d131e0b1e80b0221e80b824180b0a010f1c16bf9302814202814302814402814502814602814702814802814902814a02814b02814c02814d02814e02814f02815002815102815202815302815402815502815602815702815802815902815a02815b02815c02815d02815e0a1d1f0915001f0b271f0a271f0c15001f0d180d18091e253a1780b3441806031f0e180e210417809e441f0f131e0b221e8072240281390a010f1f10181002813a1d813b18101e813c02813d1d813e18101e813c1809180d1902815f28180f281d813f131e0b1e80b0221e80b92418100a010f1c18101e81401807180f19402201171044441c18101e81411808180f19401f11131e0b1e80b0221e80b82418100a010f1c1811171b4444180d151e3a170e44441501180d33180a301f0a1607444416bf61180d2d1f0d16bf49180a221e152415100a010f001f804302816025809b442118014302816140170544440018000280d9281f061801221e80fb24131e1002816202001a020a010f1f0715001f09180918071e253a1780604418071809191f081808221e80c92415000a010f0281633e171844441808221e80bd24150118081e250a020f1f08165a1808221e2a2418060a010f15003e171744441808221e80bd2418061e2518081e250a020f0018092d1f0916bf9c001f80440281642580744446044444060a4444271f060200000580614402001f06131e806b171d4444131e806b221e80e92418000a010f1f06180617074444180600131e80e7171d4444131e80e7221e80e92418000a010f1f061806170744441806001b010b8044261800131e0b1e81650a02101f0618060007001f804502816625808944460444440604444405807c44131e806b17154444131e806b221e806c24180018010a020f1c131e80e717154444131e80e7221e806c24180018010a020f1c1481671f06131e0b1800028168281d8165131e0b18000280d92818012802816928131e1a131e1a1a00221e1b240a000f1806281a01221e816a240a000f2802816b281d816507001f804602816c2525444446044444060d4444271f0618061e811800050f4444131e816d02816e1a011c07001f804702816f25124444131e8170221e15240a000f1e25001f80480281712581bb441b010b06260a00102201170d44441c1b010b08260a001017074444020000131e81722201170944441c131e81732201170944441c131e81741f06131e812402002581744446044444060d4444271f0618000200041c05815e441b020b0617814f441b020b06131e081a0022131e081a00220281751d81760a011d81771a011f06020025054444001f07131e1002817802001a021f08131e100281790280771a021f091806221e817a2402000a010f1c131e817b260200250d44441b030b000200041c001581f40a02101c1806221e817c240a000f1f0a180a131e81244117374444180a221e8126240200251344441b030b06221e817d2418000a010f000a010f221e812624020025054444000a010f1c162f44441806221e817c240200251c44441b030b06221e817d2418001b030b071b030b070a030f1c0018070a020f1c1806020025806244180022170a44441c18001e817e22170d44441c18001e817e1e817e178042441b030b08221e817f2418001e817e1e817e0a010f1f0618061726444418060b00221e8060241b030b090a010f1f071807170e44441b030b0018060b00041c001d8180160a444418000200041c07001a01001f804902818125805944028182221e807524131e100281830280771a020200253c4444131e22221e24240a000f15102a1500301f0618000281843d170a44441806160c4444180615032f1508301f071807221e152415100a010f000a020f001f804a0281852580504418001e2515223e178043441b010b2f2615001800221e80bd24150015200a020f0a02101f061806221e15240a000f221e80bd24150015020a020f1800221e80bd24152015220a020f3e0012001f804b028186258060441b010b8045028187041f06180622170d44441c1b010b804b180604170744441806001b010b804a260a00101f0618061b010b2f26150018060a021028221e80bd24150015220a020f1f061b010b80462602818718060a02101c1806001f804c02818825324444180001170744440200001b010b0b1504041f0618061b010b25261b010b2326180018060a02100281890a021028001f804d02818a258155441801173b444415001f0615001f07180718001e253a1728444418001807191e818b17154444180018071918011806222d1f06191d818c18072d1f07165302001f061800221e818d240200251c44441b02220b061b010b0a18001e818c0402818e28281d818f000a010f1c18061b010b09260a0010281f061b010b804a260a00101f07131e22221e23241807221e80c02415030a010f15082b0a010f1807221e80c02415030a010f15082c281f081807221e80bd24150415041808280a020f1f091b010b251b010b2326180618090a0210180728041f061b010b806b221e8190028191131e8192180604280280fc28281d8190271f0a1b010b1726180a020025804e4418001e819315003d22170a44441c18001e8194173644441b010b806b1b010b804d18001e8194041d81951b010b806b18001e81941d81961b010b80462602819718001e81940a02101c000a02101c001f804e02819825848744131e2c22170644441c1322170844441c131e0b011705444400131e081a00220281991d819a2215041d819b2218001e81991d818c131e081a002202819c1d819a2215031d819b221b010b091d819d131e081a002202819e1d819a2215031d819b221b010b3d1d819d131e081a00220280731d819a2215031d819b221b010b381d819d131e081a002202819f1d819a2215031d819b221b010b091d819d131e081a00220280971d819a2215001d819b131e081a00220281a01d819a2215001d819b131e081a00220281a11d819a2215001d819b131e081a00220281a21d819a2215001d819b131e081a002202804e1d819a2215001d819b131e081a00220281a31d819a2215031d819b221b010b3e1d819d131e081a00220281a41d819a2215031d819b221b010b3f1d819d131e081a00220281a51d819a2215011d819b131e081a00220281a61d819a2215011d819b131e081a00220281a71d819a2215011d819b131e081a00220281a81d819a2215001d819b131e081a00220281a91d819a2215031d819b221b010b80401d819d2215011d818b131e081a00220281aa1d819a2215031d819b221b010b80411d819d131e081a00220281ab1d819a2215031d819b221b010b80421d819d131e081a00220281ac1d819a2215031d819b221b010b091d819d131e081a00220281ad1d819a2215031d819b221b010b141d819d131e081a00220281ae1d819a2215031d819b221b010b80431d819d131e081a00220281af1d819a2215031d819b221b010b151d819d131e081a00220281b01d819a2215031d819b221b010b091d819d131e081a00220280951d819a2215001d819b131e081a00220281b11d819a2215031d819b221b010b80451d819d220281971d81b2131e081a00220281b31d819a2215031d819b221b010b80471d819d131e081a00220281b41d819a2215031d819b221b010b80481d819d131e081a00220281b51d819a2215031d819b221b010b80491d819d2215011d818b131e081a0022022e1d819a2215011d819b131e081a00220281b61d819a2215041d819b221b010b806a1e81b71d818c131e081a00220281b81d819a2215031d819b221b010b804c1d819d131e081a00220281b91d819a2215031d819b221b010b091d819d131e081a00220281ba1d819a2215041d819b0a221f060a001f07180608031f08180821041780e0441f0918061809191e819b1f0a180a15004017234444180a15014017374444180a15024017804444180a150340178053441680a94418061809191b010b0a131e2c18061809191e819a19041d818c16808c4418061809191318061809191e819a191d818c168076441806180919131e0b18061809191e819a191d818c16805e4418061809191e818b17324444131e8124172644441807221e808c2418061809191e819d221e292418061809191e81b20a010f0a010f1c16244444180618091918061809191e819d221e29242618061809191e81b20a020f1d818c16bf1f131e812417364444131e8124221e81bb2418070a010f221e8126240200251544441b010b804e261b020b0618000a02101c000a010f1c160d44441b010b804e1806041c001f804f0281bc25804544131e0b22170b44441c131e0b1e81bd0117054444001b010b807408031f0618062104171e44441f07131e0b221e81bd2418071b010b80741807190a020f1c1660001f80500281be2580874418001e251580c839171444441800221e81bf2415001580640a020f1c18001e2515003917805244180018001e25150129191f0618011e81c018061e81c02915003c2201172d44441c0281c118014222171044441c18011e818418061e81843d22171044441c18011e81c118061e81c13d17054444001800221e808c2418010a010f1c001f80510281c22580634415001f0618001e81c32201170a44441c18001e81c42201170a44441c18001e81c52201170a44441c18001e81c61708444415011f061b010b8051261b010b8078131e081a002218061d818422131e1a221e81c7240a000f1d81c00a02101c001f80520281c825806d4418001f0618001e808d1f0718001e81c922170b44441c18070281ca3e1713444418001e81cb0b001f061b01201d81cc131e081a002218061e81cd1d81842218061e81ce1d81c122131e1a221e81c7240a000f1d81c01f081b010b8051261b010b807618080a02101c001f80530281cf25806d4418001f0618001e808d1f0718001e81c922170b44441c18070281d03e1713444418001e81cb0b001f061b01201d81cc131e081a002218061e81cd1d81842218061e81ce1d81c122131e1a221e81c7240a000f1d81c01f081b010b8051261b010b807718080a02101c001f80540281d1251944441800221e8105241b010b80790a010f18001e252b001f80550281d22580664418001e2515013c170744441500001b010b80551800041f061800221e8104240200250c444418001b020b0629000a010f1f07131e22221e81d3241807221e8104241b010b807a0a010f221e8105241b010b80790a010f18001e251501292b0a010f001f80560281d42580d84415001f0615001f0718001e251801391780be440a001f0815001f09180918001e251501293a1780864418001809150128191f0a18001809191f0b180a1e81c0180b1e81c0291f0c180c17805a441802171844441808221e808c241501180c2b0a010f1c168040441808221e808c24131e22221e81d3241b010b807a180a1e8184180b1e818429041b010b807a180a1e81c1180b1e81c12904280a010f180c2b0a010f1c18092d1f0916bf731b010b80551808041f061b010b80561808041f07180715003d170944441481d51f07180618070a02001f80570281d625812144121f064604444406044444052a4444131e0b22170b44441c131e0b1e812d17164444131e0b221e812d2402812e0a010f1c201f06071b010b8057261b010b807615010a02101f071b010b8057261b010b80781505200a03101f0815011f0918060122170a44441c1b010b8075170c44441809158040301f091b010b80761e2515003e170f444418091502301f091616444418070b00153239170b444418091510301f091b010b80771e2515003e170b444418091504301f091b010b80781e2515003e170f444418091508301f091617444418080b001481d739170b444418091520301f091809221e152415200a010f1f0a180a1e2515013e171044440281d8180a281f0a16164444180a1e2515023e170b4444021f180a281f0a180a001f80580281d92583d4442118014302043e22170c44441c2118004302024022170b44441c18001e81da01170e44441b010b390281db1a014715001f0615001f0715c0fff11f08131e1a1a00221e1b240a000f1583e82b1500351f091b010b806a1e81dc0122173844441c1b010b30261b010b3026150018090200280a0210131e2e1e807c221e80bd24131e2e1e81dd1e251502280a010f0a021018082c1f071809180718082a31150035221e152415020a010f1f0a180a1f0b180a1e25152039171b4444180a221e80bd24180a1e251520290a010f1f0b163a4444180a1e2515203a172f444402001f0c15001f0d180d1520180a1e25293a17124444180c021f281f0c180d2d1f0d1666180c180b281f0b0281de1f0c0281df1f0d0281e01f0e180e180d28180c28180b281f06131e80b526180615020a02101f061b010b3026150018060200280a02101f0f1b010b2d260a00101f1002001f111801170c444418011f1116811b441b010b80731e81e1221e2924110281e218000a030f1c18001e80b022171a44441c131e80fe221e80ff2418001e80b00a010f0281004017806d4415001f1218001e81e3173244441b010b31261500131e80fe221e80ff241b010b342618001e80b018001e81e30a02100a010f0a02101f12162644441b010b31261500131e80fe221e80ff241b010b3518001e80b0040a010f0a02101f120281e41812280280fc281f111b010b3318001e81da041f1218001e81e5171a4444131e08221e81e624181218001e81e50a020f1606444418121f1218111b010b36181204281f1118110281e7281b010b3218001e81da04280280fc281f1118110281e8280281e9281f111b010b80731e81e1221e2924110281ea18110a030f1c1b010b2e1810041f121b010b806a1e81dc0122170d44441c1b010b38260a00101f131b010b806a1e81dc0122172344441c1b010b806b1e81952201171444441c1b010b804d1b010b804502819704041f141b010b806f1806041b010b806f18061481eb2b15003504281b010b806f181318063104281b010b806f1b010b3026180f1b010b806a1e81dc0122170b44441c131e2c1e8095221e15240a000f0a021018082c1510331b010b3026180f18110200280a021018082c3004281b010b806f18121508331b010b806a1e81ec1504333018063104281b010b29180704281f151b010b806f1500041c1814170b444418151814281f151b010b8058260a00102201170844441c0281ed1f160281ee1b010b806a1e81ef281816280281f0281815281f171b010b3126150018170a0210221e152415100a010f1f181818221e80932418181e2515022918181e250a020f1f1918171819281f171817001f80590281f1253c444415001f0618061b010b806b1e81f21e253a172544441b010b806b1e81f2180619221e132418000a010f17064444200018062d1f06165012001f805a0281f325836a44131e81f41e281f0618061e80651f0718061e81f51f0818061e81f61f0918061e81f71f0a18061e81f81709444400160a44441806201d81f81806020025806e44111e81f90117805c44111e81fa221e808c24131e081a00220281f51d81fb221b031d81fc0a010f1c131e100281fd02121a02221e132418000a010f17264444111801221e15240a000f221e8096240a000f221e80fb240281fe0a010f0b001d81ff1b020b08111b0310001d81f51806020025134444111b031d82001b020b0a111b0310001d81f718060200253e4444110a001d81fa111e81fa221e808c24131e081a00220280651d81fb221b031d81fc0a010f1c1118001d82011118011d82021b020b07111b0310001d80650282030280670282040282050282060282070282080a071f0b180602002582394411201d81f91b010b805a111e82020417821d44111e8202221e2a240282090a010f157f39170d44441b020b09111b0310001118001d820a111e820b1f06111e82031f07111e80671f08111e82041f09111e82051f0a111e82061f0b111e82071f0c111e82081f0d111e820c1f0e111e820d1f0f131e081a001f1015001f1118111b020b0b1e253a1721444418101b020b0b181119111e820e1b020b0b181119190d18112d1f111658131e081a00221b010b8061261b020b00111e82020a02101d81da1f11111e820102820f3d17804044111e81ff0282103e2201170d44441c111e81ff0282113e171c44441b010b805f261811111e81ff111e820a0a03101c160d44441b020b09111b0310001b010b80641b020b0004171644441b020b00221e82122418110a010f160c44441b010b80591811041f121b010b806226111e820218120a02101f13111e81fa22171244441c111e81fa0b001e81fb0280653f170644442600111e81fa1f1415001f15181518141e253a17354444181515003e1710444418141815191e81fc18131d1e1118141815191e81fb191118141815191e81fc101c18152d1f151646111e8200170f4444111e81f711111e8200101c110281fa091118061d820b1118071d82031118081d80671118091d820411180a1d820511180b1d820611180c1d820711180d1d820811180e1d820c11180f1d820d15001f1518151b020b0b1e253a17214444111e820e1b020b0b18151918101b020b0b181519190d18152d1f1516581b020b09111b0310001d81f6001f805b0282132582e4440282142582ad4418012201170a44441c131e081a001f011b010b807b22170c44441c1800131e8215411f0602001f070282161f0818061716444418001e81da1f0718001e82171f081626444418001f0718011e82171715444418011e8217221e8218240a000f1606444418081f0818080282164022170b44441c180802820f402201170e44441c1b010b805a18070401171144441b020b0726180018010a021000131e081a00221b010b8061261b020b0018070a02101d81da1f09180802820f3d178166441b010b805e26180018010a0210221e80fb240281fe0a010f0b00221e8096240a000f1f0a180a0282103e2201170b44441c180a0282113e17811a4418061780b7441800221e8219240a000f221e821a240a000f221e8126240200258079441b010b805f261b030b091b030b0a18000a03101c1b010b80641b020b0004171844441b020b00221e8212241b030b090a010f160e44441b010b80591b030b09041f061b010b8062261b030b0718060a02101f071b010b8060261b030b00180718000a03101f081b020b072618081b030b010a021000020025174444131e81240200250a44441b040b0047001a01000a020f0016805d441b010b805f261809180a18011e80b00a03101c1b010b80641b020b0004171644441b020b00221e82122418090a010f160c44441b010b80591809041f0b1b010b8062261807180b0a02101f0c1b020b0726180c18010a021000161144441b020b0726180018010a02100016808c4418080282163e178075441b010b80641b020b0004171644441b020b00221e82122418090a010f160c44441b010b80591809041f0a1b010b8062261807180a0a02101f0b1806172544441b010b8060261800180b210a03101f0c1b020b0726180c18010a021000161144441b020b0726180b18010a021000161144441b020b0726180018010a021000001f061b010b805d260a0010011705444400131e821b17094444001609444413201d821b131e821c1f071318061d821c001f805c02821d25094444131e821c001f805d02821e2581114402001f061b010b807b22170c44441c1800131e8215411722444418001e821f221e36240282200a010f1f0718071708444418071f06180600180122170a44441c18011e821f1780c7441b010b807c22170f44441c18011e8221131e8222411722444418011e821f221e36240282200a010f1f0718071708444418071f0618060018011e821f131e80bf411780424415001f07180718011e821f1e253a1730444418011e821f1807190b00221e8096240a000f0282203d170f444418011e821f1807190b010018072d1f07164818011e821f131e08411737444418011e821f08031f0718072104172344441f081808221e8096240a000f0282203e170d444418011e821f18081900165b180600001f805e0282232580a9441802263e170744441800001802221e15240a000f1f0218010282103e178073441800201d81e31802221e80fb240280fc0a010f1f06131e081a001f0718061780464415001f08180818061e253a1737444418071806180819221e80fb240280d90a010f0b00131e82241806180819221e80fb240280d90a010f0b01040d18082d1f081644180018071d80b0161744441800131e80fe221e82252418020a010f1d80b01800001f805f02822625806944131e82151801131e081a002218001e82171d82172218001e821f1d821f2218021d80b02218001e82271d82272218001e82281d82282218001e82291d82292218001e822a1d822a2218001e822b1d822b2218001e822c1d822c2218001e822d1d822d1a02001f806002822e2580af4418011f061b010b806b1e822f1e251500391780804415001f0718071b010b806b1e822f1e253a17806b441b010b806b1e822f1807190b001f081808221e132418010a010f178045441801221e80752418081b010b806b1e822f1807190b010a020f1f061b010b80731e81e1221e29241800028230028231180128028232281806280a030f1c160c444418072d1f0716bf8b131e822418060418063d170d4444131e82331806041f061806001f8061028234252b444418001800221e2a240280e10a010f157f40170e4444028235180128160a444402823618012828001f8062028237251744441b010b805b1800041c1b010b805c1800041c001f8063028238250d444418001b010b806541001f8064028239251a444411131e80fe221e8225241b010b807d0a010f1d823a001f806502823b2580b5441b010b806a1e81dc1706444426001b010b80641104170c4444111e823a160944441b010b806b1f06131e08221e81e624180618000a020f1c1b010b80671806041c18061e8237172444441b010b806818061e823c041c1b010b806918061e823d041c1b010b806311041c1b010b8050260a00101c1b010b806b1e823e0122170a44441c18061e8198172844441b010b806b201d823e1b010b2a260a00101c131e817b261b010b804f150018060a03101c001f806602823f2580684418001e819915003e2201171a44441c131e22221e232418001e81990a010f18001e81993f170e44441b010b390282401a014718001e8237172c444418001e823c1e2515003e2201170e44441c18001e823c1e808c01170e44441b010b390282411a0147001f80670282422536444415001f06180618001e253a172644441b010b806b1e81f2221e808c24131e1018001806191a010a010f1c18062d1f061655001f80680282432580414415001f06180618001e253a173144441b010b806b1e822f221e808c24131e1018001806190b001a0118001806190b010a020a010f1c18062d1f06164a001f806921131e081e81e6430206401780c044131e08221e3324131e080281e6131e081a00220281e625808f441800263e2201170944441c1800213e170e4444131e82440282451a0147131e081800041f0615011f0718071b021e253a178058441b021807191f081808264022170944441c1808214017374444180808031f0918092104172944441f0a131e081e281e8246221e29241808180a0a020f170e44441806180a1808180a190d165518072d1f0716bfa41806001f806a18806a1d824722201d824822201d82490a030f1c131e081e80f30117810644131e0802002580f644131e081e281e82461f06131e081a0022261d15221e824a2402150a010f011f07021502824b02824c02824602824d02824a02110a071f0818081e251f0902002580b2442118004302064022171744441c211800430202402201170944441c1800263e170e4444131e824402824e1a01470a001f06180008031f0918092104172844441f071b020b06221e2924180018070a020f171144441806221e808c2418070a010f1c16561b020b071780444415001f0818081b020b093a173544441b020b06221e292418001b020b081808190a020f171644441806221e808c241b020b081808190a010f1c18082d1f08164618060000260a00101d80f3131e081a002202824f1d81b72215021d81ec22121d81dc220282501d81ef1f806a131e081a0022121d82512215001d819922121d819822121d8237220a001d823c220a001d81f2220a001d823d220a001d822f220282521d8190220282531d80e0220282541d82551f806b131e081a001f806c1482561f806d15001f806e0200252044441b011b010b80711d82571b0118001d82581b010b29180015023404001f8070271f806f0200252d44441b011b010b80721d82571b010b806e151c331800150435301f061b0118001d82581b010b29180604001f80710200252a44441b011b010b80701d82571b010b291b010b806e151a33180015063530041b010b2818000428001f8072131e081a0022020025804c44121f061b010b8064110417114444111e823a1e82511f06160e44441b010b806b1e82511f06180622171e44441c131e37221e382402825918002802825a2802825b18010a030f1c001d81e11f8073131e081a00221880531d825c221880531d81ca221880521d825d221880541d81d0221880541d825e1f8074121f80750a001f80760a001f80770a001f80780200250a44441800180128001f80790200250a4444180018002a001f807a131e821522170d44441c131e8215131e08411f807b131e822222170d44441c131e8222131e08411f807c131e80fe221e80ff2418806b0a010f1f807d1880591f807e1880651e281880661d823b1880651e2818807e1d821218806a1222170b44441c180c260a00101d81dc18001880651d823918001880661d823b180018807e1d8212131e08221e3324180002825f131e081a0022201d82470a030f1c000a02101c0082600007472fac451c6d36064d3a8a50e914064f368748f3f0095734832ddab659f11a06463e8c38bd7c084429803f840a6c7a03433095066d3c9f0a422b0e40268c1d5dc3f4e729940051c8b4044b13b5c608460e9cfe077c21a30c460d60632aa7990807a17d30094b1040762c98ed00520e6b0a795e1a2aafa8fe1c5bc8aa52084b165e53f61d39b80670037678d4b30b41087a35b0726232973e97014b04560c682d0b6a3e5228572aac7c23a26808560471195be93598217903441223a96171bb02713b7143dfe01f2ba653ff8a1c58ceba5caf41de92c3bb06510c4fe1299610521b5ee33929b9760b58ffc8be771e2f0c450a44c0e6ee036c1a54cab504661140fa07451443f3a96d440845174fe4bc25ad5a07401c51d791e503011301120c501727bd2da74c00388b317f3e12467ed16e320e83d34c2e93e41b0958ab58c2b50947cfa356b85ec384d395062e58eac945124c291c6ee849065935c7e14e1c73fd56321e47d1fb522fdf046f1924850544153c9af906501b396447e0064e1e346e4baf0946133350396533674c0f791203761425a874565bc081003eb609520c0a53e2f9f7e2f804411e045c074bee085eb95e3c0866ee0c36bb228c13094ce3052794f1eedb841279ec143d6f289aa7c8e4f516110059c399d4084eeb190353fdc9ba074aec0e1e53b8571079e9e31f3d721407d1de70368e1d2a530e46e2e60b17299fdb9b0248b72983056be5e9eee90e46ecedf8cfaf62c56b3689fee9b1024bee0846eef0d0b2299bc50345e9e20741e2f7cb682198034ee1fa0207ec0744f9d6b2356d1b0a4de4d3ba1e196d28752e0a4bfcc58ffbc0d2720f100b4de6da96d29a35650455ab0b4bfadc9bcf53e2ffda77e10a4cfad16316741b3e49c50645fad6730f340752e5d379e3e6c81079f7a24fc7bf1a7c40b15caf297e03340d52f1a243c37e1e2d3462e1fbbf0752f6b25fbd355e0b72f7bf2682fbfe5bc16c16087deca62d662b56b60b41fcbd384dfcde45ce4ece0b7dc1bb365eb30504375ad30563eabc013e1861c1b2050c2c6f8cf6ab3c41bc0504134dde60eabb323dc20f55c4bd1ff0fcb35b9ce393c94aae2d0955c781e2edb70beedd1345c692c0c177c1cc5fbe3f4b93e290e6c374fa094ec584fda6032e6e020641cd9fcd85fd0750d39fd96d32260741c89ad879ffa9147df78fa45a87fdd743bafbec78d1600f2c207211137df688ac217dfba72b2a51e4d793d2489aa31b1b7df588b108063d49da6e0bd2b322760404f3e85695f78bdb48d025177df475382398a30f2a217b29fbd558a41516032859b6e4157df3710d3c227911fcdd5e9014072c395eaed6d929137df26f081709f9b02b51e74ba01af497fd9ad9127df16909e6b426743003e7ce4083eb9ad447157df067e1c59baeefc67fd6a195f8a9e1b9f6ca5861117def70fdaa306af4ee78da72f9aeeab031147dee64f2b419f9b2f3de7bb5296ed56af6cb256a147ded7dda91b72750a63e7bb42455cd2950cd237a097dc07bc769eeca8eb50c41d54eda7aac36237bf29ed9167de640d25b918bee87ee6a85087389f4bae1a6e0d83e054fd75daa320a7e9377b35ff9f37fcf470641d953b5eb950f4bd7508ac4918fdd7ed281dc76fc8a094bd45395b82c44ff7d044dcb5f97094bd25d6b13e3a51f16074dd3247efbad200441d121720c66f00565c5257bcb3075d62c127395037f98d29521e3463eec5ffc1b6683d70e51a43c4087ac361d42949adb2f490751a727777fe9bd1051ac3b2269a21d26edb815d298d84c860a50a1373d4975d58f8cd00c72aa34342023569509d053660e6f95310a19e3a2eba9d9761ec1460a4aa80b05ccaf04f582d80d41ba0d18d074e762f86ee6aa1c0641a805f7d8350956a52beda2f1b7e2780750ae02f98ca911037ebf5c01450a4caf09da4d75c571af191479a0e2d6362e4b3d9914da5e7adb0a314263e9a90e4ebfe7a61bfd9db0e95677e987b5804a7cb9f3bbf4b945891e06b7feb9a9d6e4b893ebc7dac4872bc63b92bcd8c552c449e4a2759a24bd78d302e2c09121fe8024a1ff9d5dcb50e485becf8d3290a8796ec139c6612fabfdc1b3044aa0eebc0444bae286104aa0e69eefb8d2919161ec85b8fc88740645b0e1b19ab8076586cc48c892d70a45b2e849f17fc52756890555bdc272d60c45bcd758b7f98cbee0926fe019759fe56fa088c74783ca0cc563de0beb9c71f86dbabcc028300c45bede6162e3949d80beed96157792e37d7390ea066c58f61e1e3be4032b88da5282177793fc05665bf0160324fd103a8ac85282ff7e45d958a6010d0a45bacc0805e166fb907e0672ace924cc95044b95da06045297b01e04569ab61a044c85a7ef075480bfe169fb6908448fbdf872bad400044888bdc80201cb055185b2da000c4185b1b7ebadb1c485888d9909579887bfd87fb2db150b5683aab7c107e344ce27170852818894adf864b8075587838f88a9ba0355869e07439e908d748bb1054e989972c8064b82937da3c4044b839f7f044b846dc2034f9466094f976ad01cb6e471c50c4f966f9dfa905367dc2df03204418a7fbe035ac8220541887e8fab05448373869c045295759108449453994791503d064d8e4075dcaa0502905862fa074168de34fc7cc1085673c607c32102f6044f71da0b065466d813b5a106656bd5e59b79054876d2e47c044069a5ec144562b0db2c33e37e9244407929d26f84b64f5b2e044a6da9cd06516ab9d801a6017d08526aa0b6c01ffc5d09416dbabca0c12f10cc03517fba0b506bb08c857947a1dfe4720b437f908965bd9e806ca2a20e567fa69e494162905ba3af847899067165959652310c446084679ab78e6a43aad6e10951668c6084686da0af0d567ba7776397c80a13e6483bd205636787475b0a417e98437d0fd2eb6a40054b798809640a162a39f18bb225c40870024f610444737fb31247756993824d1796ddfe436a9dc6565c29f31246796d9e6177a9a05b22fa0766e4029f474f0a576977cc685200aadfc60e7c45498779b3385fafdd7d4b21d4064177797aa0740567526e7c8f106f40737d7d8f24ed43152ac0eb3fdef5155756451e6b23e27a6c8c4f754f5b34287b708a78701f774d404628e866608c783d757d065637228c75637f571a066c8d28b59f27f029614c4b4802a9b9b098004748068b21f52db339c7ed4c24a5670a8b7d5a0b64cf31f709952a82e0e57215604449622d5493c71808581c9b27f521fd2886b15d1457525775d022e447580aa35f3ac8c03ad11160610a5753526ee8e14245261a0e7c736419f8fbfeb466405d2ddc6206515c591aa972055a524b119b07464e210f6874910e404d35ed187acc1e864e5438b2a7804066462de024eb106220987d1293bf65d2127c75dc76d40298c756de16dc1afbabad55b811a422f2f71797a716c7bb8a01d29e753fb27f2711bb27627516b4b61f08131878aa6afae0ca011f10405127caa57afc1b6667810dfe2bc8e18040637314f3edc26c05ea31536e71306b14c4328e427319e1e1988c6d764a3a81521a5c1651f9017c421e6e21bc79552e9b2c971b792676f0c4487ff82e6dd54c3414405328a7f3f9b16c415b0e9132ed04ee24f11d780940522daeea3ca82ecd0640025689ca61084550118e6f7597200852571b88471bdbe1011d024d56034d5f1509515f03436778607e5c0e7d4b1b6b4626f5fc21d6e752cd590f7d5e075021f13fad77542edbe6b2a10c4e52e24d359992422dbc7e5512455bf16402786c483392769201409c0c657c07455afc09f92bdf0f4625f82ecae1258552e62ed6ae8d4f0a412ee120d7b89825fd17065135fa2ab87c03462cfb044c2bfe1707522dfc145021d5044a29ceee0b5622d7fa1eb765768b077a0e433bdbfc197b5ae568e929ab451104492cd2d20b512ecdc1f9eb024333ab8a04512fd0d8105128d4ad856f36c3f102766f0a5be82d074528cd988e25af220a26c9a77b2266bf342a724e17880c4e9ac5a703d6071d9e9625024114846b8ff59708452ab48d5630a1760e796f99cf63ebad6de4d65c09a44d055121ab86200104074d31a45067644e0468079d40095121a77f54f21052f002592b045138ae5e08482b8f5bd90f8a01074b2aa24fedf404034f3b9706503e8e24b07c074d3e846ea3177112413c9f12646b16a290102bb569279c007314055537911b49064a3a911f51e80210040a13558ff34a6a2aa545e404440d6d6208440a6a730a98f31b04ba752a970a510d6c56ff0b09bd54180b510e7e4ae3a59bfc1825bc044e0e79230951007726a328a5604d03431b7806511e6d0b792309450e562e48ee2d9ee90a115b154d7ff82d64dd5a0f610247e63298dfe7cfab5408306d44074f0b5ef81621a8114a0e43c7eaf01576015bf4b17e228e1a040f4a1147d3c4a978335c3cb733a97c0e0c4a1044eeae64440c20b469d40c45174ff3bf20b456b56e52c30d45164ae991f70258d2b3710b4d06511730a374230a411a29a154c70944dda61245133d9834ab761818872c770444dcba50a00a43012d8b365051d09f1d0b430e31841a068e1d2b81060e451c27b7eaf70427a24de68d0040077208386d41feef0a451e2e4b5eb36817389e0456143b7a084115006e162fb2330c41160455eae4e0f5c9d06d560f46161b53cdab5af3caa74ecedf90ca054ee51a5ead0c45e41b17b932810f7dd89ac30e4fe30b1a9ce5f9dca6f3d5632c660b41f113367e2eabf1e3ebf70a76eb0f014fd1d0b1269f0c4deb090549a946daa9015bd40b45e3f521317c055df6d9660751e2f03a113a9f0851edfcc4e3fbd88f1145ecffc5c8a757cd6b2889c3fbae46a346034fe3e10845eee6e3ba208ac4094fe3f8df81e8d96a310a51ecf7cb2a3e98c46f290551ebefaa450451ffc1a20d4ffdc9ba3a75111a06236b3a74094bffc9ba1e0650014d0551e6d286ec0415a1de8b0844fbdc8aee72fdf30a44fadb721470023246c80b4df0df620b2c75f5aa38600c4df1da69e3e1f37ee5cf87d50c76eaa547d7bf063944e37e9f0975f0ad4ad3781d0e220771e3ab5eb53e430871fead2e8eb5ea600a61f3a03f7c3e57af18080b71f4bc0768fa926ec255e1086fcaf51a41af03080565eab4013c0a6ec5b91f0c285c8dfdaa0576d4b11ce3066fc78af4e6b10674d18fe1d2780961cb98feba031c5b320963d58cd089f2b81426076bd498de510f000872c698d768f5b3ef0a61c794ae568dee9e788b0872c59ab02f71f9a20868c594b1180f2e4e0972ca703e2991b408280a6fff26272b326717e5d30976da29331615b08b1a066dfe5932c2830664da64f1d59e0663e651c18a140c63c37ef6b45cdfbee4c141b70a71d36dcd8ca06e6a86180961d26ddf69eccf9aaa0a6fed70ff688d7a1647d4010e0a45d35d8f282978c89fc60651c35ebb1ce4047983168001020945df43b3af264bd25a0641d45592bee60951d94a471be2a7021c0b118c743fbff2620b3245a5311f856572dd79edcb5b7fad96f880e54dbafd5aff4f969d65696e5fb830b5e8a4cac0cbce27cb4d8eabd970f277f421f2fb0a199f2d58cd2f6cde37210b56af0b668ddea40bc96d1c0919e13f529aab65610d0e45a7276d72e2a41adf53df55b6e50975a634144da40f0bfc1061b63f334b75bcac8cdf032e7faa3b1c0f45a0291435324da61af9587ccf54a50447b000090845a2103cfca939e011709c2b29c174d04df26deda10bf7ae1df1144fa611d3ed0578bbc369833104e7b2f872fa9b861755af0de7bfe4b0e477af9e97afea4789ab14c363a804fb1c51bf07fbd7b900eb66bc80e0e3a3eea118cd059087a3b4dedbf046850457be1ad30a4bae1cfb7abb05f875e23e0a954d9e024ddd2fe74fc567151542f559926874806b0c51d7778336330116ed1ef5abd3b8a28d59f0f6d521bc87c885effbf8d077fa8561f9d25e38a4fa357ce7b1856111112cff40f3176f847d7a6c2ca2c1dbbfe803ffa55b8b4d218847e15c9059fa063ae0e203d288d3138f25d4d5b8c1d81141a2e1a61bf1b6bfd95240e485af04f79b0a51b4f39beda71fdc375d0b41a0eebbd576fe5b7aaef31351b6faafd72d275f40f59cbec32d4564dc3d320941b5fc8abcf39c899b0447adf0950e4db8f062e3b7f96deb87b9d23f2d0457a2f56e205aa0d86dc2201cfba9ed78f5da9abd05b3f48a8a8b8e876ea9dd40517cd13e280479a1da40015a0d41b3cf5268d2999980a4fcadaf0b45b9da7f4cb2ca2c4747d70556a9d22d510d47b0d63d282713c39d9e4ec5268040639dfb1c2cd246dab747f81f29deb0459cc84fb687fd1d012685b1ce3011aec527220dcc2700d0e66aceff659d7db8cef27eb3cfb1318dae7d4dd92e3bf4ea970e4393cf06e8b9df350a15c43d11be0152015007448cb43aaff66f027cba01140c449681ef73bdd009f15ec733031d96e9124786bbde343ad0b79ff13616a1c6283504d808508cafe606fb6fd002449a0e7d899bb9fc7c88c604f358d532e10c7d9e87afe911f464f0301bda075699b693a8fe720346889d03438694014c01440951869a60b9f55d486501560943966bca28313908c50a569c68cb250fb9affc37134a977bdd05a3f967ee36e69c5c61afb2a7c42a0c46927aabe99a6967c332e162084e997eaad32730e70a509c60bad70ea8b9dc050f438c7689b497f3516ec316d22619b7095198688c8a917c7fa50a519f6c9169a7ee27350a1046985795429b787ba4b3a4f433f59e700a528c4a63c8e68e7375d307409e5c64b0b0ed09566fd938f9508062d3085668c206dc2018bc0a566bde0bb0ec4f4b63d6074573c33eb4b5ad0b4877fced9968896a7c98770b5269c8ed65bcb1d7533a1b0a566facf05b6d957486130a4771a1ec0339e1709555014f0b5170a5c510aa83db13c1020c4c6bbbd5f8794cdee145678605507fb18cf509447c80b5b0d325149f0b7d52afbda5a6b8a7dd20a1084162b4869d684dad0a56668d8978adbc8575fa0b47689092494456806dbbb903437d8b1051668a78ad8c867570acd4ed779264271043778a56867f6aba84d3eb3016877484094370964a62af924b26065165994f417c0146015b134a796ea1dee15993482717984e0189b9b282560643757786a2c007416e75b4af66a8074f7e7e80b0581a085174678a6c4cb88c034c7266134a7f7b9b25e6456ca4836f7f649e6b3cf42df50e417779668665ab818a7b95530da909564f6970952aee656407564e6a787a983a0313131407414f4f4a28f54d074148435f0dbe94104a44432614659686494b56378e2dff3c0a5649442efc34f3494e1b0841465835e1e1404415414954029bbfb2867a474914b223f92ff039cd104d045158491d09414b5317a93af62ff1041205724c15454932db4723ef068e46593ca496a9b2736d46049a0312037c02121e0c454a24f71e609e59198732e1035742382c4c5e39d4cda44638d00f3840595e452ab50fbf7c432cc299b6bf787c093fc4410f585f4be0026149036a29ef0b465d368caab9b4794c5c0e08524131bfb36b982104120452e608120555ee3e37c67c0213060546520e8725054c571e9e3b0b4056177ca526f6598527ce0a405513694f79756e5c5205534e1f6b5e06434f0d4d23fb09525cf54437ab8b486209564ada401073714f6606044afd29e973084c2fe228ccc610990a1673b66787fddb72aa55094427c53ba9674d22da031273a6037d74a80b5230ee12722bcab1b5712a0212770d4b34e1e039b068679a257e3ddb147d2dc6f8167553d05bf83292401688254e0972460c4b27dfc4fb2dd9a0775b4c5a0e7a07e3e4d2ec067034b69a31a17a10512ec6e7d8a37d75562ea85518541e45045129d8a4104d3bdcba9d38a38a19bb63400b882f960f7d2fde8c62764ef51a666b56179918057d3ca5b247157d32bd935af8d939a4881f44ee02796b08882fcf90044424a98c094320ac8f1c7e2bdbca0e7c30a16d7c7354e15440f02e914801190e7d37ac625ff12657e6308009773e117d39af4424ae4511493a5ae7005d5d19730d7d35a55e0b7d1ad9ae717f2add0a7d3a9941ef04a7005c12074d37825ff0e709064d348b27ddbb094d35863eb27d2cac960b4d3282339107706021ddb10a4d3381166a7f3ba18a0d094d3081064c3a94f7210b7d2c911f57fde1f129904a0b7d0285f7308718a0981833124d0f8dee0b7d36a458e32e92e330941031960c5007706628ac84191eb7693007560a6b7a3188ff06571466451a2204722a5e662143166151c5a09cfb143e8a7a885835b37d17d58d2b6e00e2d3d798cda07b047a19104317642aad6376258a3e8b7793ff12360451017f3f0e4b076f3c871f2aaf3c96400e33800955187e145423bd722e07700e53184cf32f03652972064f085de8349b0b560178fb0723bf5c0c42f90541035ffaea0456154ceb167d2e56c49f694f0020a24ef3eec78d0a61a17b0d3e700544174fd1b50d51064ecb9bf61947e1a26c074b147d1327b25728903c7b1590c8bd44101c66d5ae39074a1024aa43f11f0c411927ad27a46b593e9b2f7d064a122d863f75076a1d3189133c980b57093794ffe63e2dbe57ca12461f346f4ce8dfd63f176f42d5a25cd582f705521a287a5a0f40093778385f33736ade724ddb7d2308501807790334b9260e501b0342ffffebe0cdd66c5ad08d044f100c550b41f2095fa47f2e7b3e4cf70541e00c2bb30850e7172781f5f9c0094bed02326d3987f3ff0e45e10e3042e3d4bd3c8ee7d50800107df00f066eaf59dbb4144cf2be5ba35e0b50e3f60731650572ebdb23086dd5cd393900c0890b28dacddededcf8a23f546f0947e7e8fec5af67e54d0840ffe6f0da411e250c04d4e1ccb2209fc3733f9a800c1dd3e5d995f6d97d21630f77094be3eddd752e98c672194bfdd4ad50e0d199ca82ccecdfb43293cbbfa645b4162c8ad70d60f6d4a95f902a84c991eeece9074de0d0be38760f044bffceab0e47fcca88e5f2eb770f103e0d319a0f57e1c2a1c5a5226517588d00013f5f047df0d48e0f54f4d96f36701b3e65c177387aeefe1e4de6cd78013602fda728201657af140e335a9f3afcba6c7be9d247d77dba274de7c873e9fb9b7ee2c98dcdba2be3e1ad7287d482956ebf2b599eb4c5f393b0a73d5a650203491045fdae75c3a8061059b0479e296a15111245fcad78c57d210c2664edecae1969170e270976e3b75d91295fd46d2a61faa42f84e19f4adc6319003f66a0e1a9236d0a0e355b93e6226d8d7ff9ad2a34ec8cbf99b31ff5b6f60e4afdbd037f3169a91e19335ac2630554fcbd21780855ecbc2b58b91d0c0c41f0b60e387ffed99daa2b601452d2b303082d4990d1bc1c5da006062243d278ea0e56ce9314e1f4a95bbdd384d441aa0754c38ff3fa911b0d4bd0b6fdd96dfeca49be3f7681206dc680ffb016676014080156e2fc88fbb21cacd051200a303d1b80dc2f72c67d05108bdc8cdf066092ab9b73300340c891294adc8cb14bd9a0914da7ebd433d46f102a256d5aebd456d397fe8db1375524fae154c073d96eb7f19c234add8fb93e22bae1263f6ce68f81d04e88b3158f9ab9ed8563fb9aa9f4b3a2a4b19b47234ade8ba41958600fd4731beaee326a1e07e3dc1e83f6858056da2959bde4f8fae3adcf0557c9572f2d0a109a335c6a753e4fbc8103139c3803139f3d0307cc30020f8e0d41de7bf8aa46b4b9b78211a475094fdd6ed190a82150a60749d667cf63f7cd094fdb57c54cad35317b0a7dea40cd739086ee86d4", []);

放到浏览器里面实验一下,看看能不能成功。
index.html

<script src="sign.js"><script>

发现没有问题。

接下来就直接实现他吧 ,先用nodejs执行他一下,看看能不能获取到值。

发现提示没有window对象,那么我们给他一个window=global

这个时候提示没有hrefhrefdocument.href,那么我们还需要定义document对象,这些需要你参照浏览器跟编辑器的提示和调式一个一个得出来,这里过程省略,直接给你们上代码。

window = global;
var document = new Object();
var params = {location:{hash: "",host: "localhost:63342",hostname: "localhost",href: "http://localhost:63342/SpiderTest/index.html?_ijt=cbm25vhb9cva9uad3qdo901n7u",origin: "http://localhost:63342",pathname: "/SpiderTest/index.html",port: "63342",protocol: "http:",search: "?_ijt=cbm25vhb9cva9uad3qdo901n7u"},navigator:{appCodeName: "Mozilla",appName: "Netscape",appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",cookieEnabled: true,deviceMemory: 8,doNotTrack: null,hardwareConcurrency: 4,language: "zh-CN",languages: ["zh-CN", "zh"],maxTouchPoints: 0,onLine: true,platform: "Win32",product: "Gecko",productSub: "20030107",userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",vendor: "Google Inc.",vendorSub: "",}
};Object.assign(window,params);
Object.assign(document,param);
document.cookie = "";var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(f) {return typeof f
}
: function(f) {return f && "function" == typeof Symbol && f.constructor === Symbol && f !== Symbol.prototype ? "symbol" : typeof f
}
;
TAC = function() {function f(f, a, b, d, c, r) {null == r && (r = this);var n, i, o = {}, l = o.d = c ? c.d + 1 : 0;for (o["$" + l] = o,i = 0; i < l; i++)o[n = "$" + i] = c[n];for (i = 0,l = o.length = d.length; i < l; i++)o[i] = d[i];return e(f, a, b, o, r)[1]}function e(r, o, l, t, v, y) {function h(f) {S[++A] = f}function k() {return S[A--]}function m(f, e) {for (var a = b, d = "", c = 0; c < f.length; c++) {var r = f.charCodeAt(c);d += String.fromCharCode(a ^ r),a = (a << 1) + c + e + 1 + (a >> 1) & 255}return d}null == v && (v = this);var g, C, x, I, S = [], A = 0;y && (g = y);for (var w = o + 2 * l; o < w; ) {var z = 13 * i(r, o) % 241;if (o += 2,0 == (3 & z))if (0 == (3 & (z >>= 2))) {if (0 == (z >>= 2))return [1, S[A--]];if (2 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = +I;else if (4 == z)g = S[A--],S[A] = S[A] * g;else if (6 == z)g = S[A--],S[A] = S[A] != g;else if (13 == z)C = S[A--],x = S[A--],(I = S[A--]).x === e ? S[++A] = f(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);else {if (15 != z)break;oprand = n(r, o),I = oprand[1],S[A] = function(a, b) {var d = function e() {var a = arguments;return f(r, e.pc, e.len, a, e.z, this)};return d.pc = a,d.len = b,d.x = e,d.z = t,d}(o + 6, I - 4),o += 2 * I - 2}} else if (1 == (3 & z))if (3 == (z >>= 2))g = S[--A],S[A] = g(S[A + 1]);else if (5 == z)S[A -= 1] = S[A][S[A + 1]];else if (7 == z)S[A] = --S[A];else {if (9 != z)break;g = S[A--],S[A] = typeof g}else if (2 == (3 & z))if (6 == (z >>= 2))S[A] = u(S[A]);else if (8 == z)g = S[A--],oprand = n(r, o),o += 2 * oprand[0],S[A--][m(a[oprand[1]], oprand[1])] = g;else {if (10 != z) {if (12 == z)throw S[A--];break}S[A] = ~S[A]}else if (0 == (z >>= 2))S[++A] = null;else if (2 == z)g = S[A--],S[A] = S[A] >= g;else if (9 == z)g = k(),C = k(),t[0] = 65599 * t[0] + t[g].charCodeAt(C) >>> 0;else if (11 == z)S[++A] = void 0;else {if (13 != z)break;g = S[A--],S[A] = S[A] && g}else if (1 == (3 & z))if (0 == (3 & (z >>= 2))) {if (4 == (z >>= 2)) {oprand = n(r, o),I = oprand[1];try {if (d[c][2] = 1,1 == (g = e(r, o + 6, I - 4, t, v))[0])return g} catch (y) {if (d[c] && d[c][1] && 1 == (g = e(r, d[c][1][0], d[c][1][1], t, v, y))[0])return g} finally {if (d[c] && d[c][0] && 1 == (g = e(r, d[c][0][0], d[c][0][1], t, v))[0])return g;d[c] = 0,c--}o += 2 * I - 2} else if (6 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[A -= I] = p("x,y", "return new x[y](" + Array(I + 1).join(",x[++y]").substr(1) + ")")(S, A);else if (8 == z)g = S[A--],S[A] = S[A] & g;else if (10 != z)break} else if (1 == (3 & z))if (0 == (z >>= 2))S[A] = !S[A];else if (7 == z)C = S[A--],g = delete S[A--][C];else if (9 == z)oprand = n(r, o),o += 2 * oprand[0],S[A] = S[A][m(a[oprand[1]], oprand[1])];else {if (11 != z)break;g = S[A--],S[A] = S[A] << g}else if (2 == (3 & z))if (1 == (z >>= 2))S[++A] = g;else if (3 == z)g = S[A--],S[A] = S[A] <= g;else if (10 == z)g = S[A -= 2][S[A + 1]] = S[A + 2],A--;else if (12 == z)g = S[A],S[++A] = g;else {if (14 != z)break;g = S[A--],S[A] = S[A] || g}else if (0 == (z >>= 2))S[A] = !S[A];else if (2 == z)oprand = n(r, o),o += 2 * (I = oprand[1]) - 2;else if (4 == z)g = S[A--],S[A] = S[A] / g;else if (6 == z)g = S[A--],S[A] = S[A] !== g;else {if (13 != z)break;S[++A] = v}else if (2 == (3 & z))if (0 == (3 & (z >>= 2)))if (1 == (z >>= 2))g = S[A--],S[A] = S[A] > g;else if (8 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],C = A + 1,S[A -= I - 1] = I ? S.slice(A, C) : [];else if (10 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],g = S[A--],t[I] = g;else {if (12 != z)break;g = S[A--],S[A] = S[A] >> g}else if (1 == (3 & z))if (0 == (z >>= 2))S[++A] = s;else if (2 == z)g = S[A--],S[A] = S[A] + g;else if (4 == z)g = S[A--],S[A] = S[A] == g;else if (11 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[--A] = p("x,y", "return x " + m(a[I], I) + " y")(S[A], S[A + 1]);else {if (13 != z)break;g = S[A - 1],C = S[A],S[++A] = g,S[++A] = C}else if (2 == (3 & z))if (1 == (z >>= 2))oprand = n(r, o),o += 2 * oprand[0],S[++A] = m(a[oprand[1]], oprand[1]);else if (3 == z)S[A--] ? o += 6 : (oprand = n(r, o),o += 2 * (I = oprand[1]) - 2);else if (5 == z)g = S[A--],S[A] = S[A] % g;else if (7 == z)g = S[A--],S[A] = S[A]instanceof g;else {if (14 != z)break;S[++A] = !1}else if (4 == (z >>= 2))oprand = n(r, o),I = oprand[1],d[c][0] && !d[c][2] ? d[c][1] = [o + 6, I - 4] : d[c++] = [0, [o + 6, I - 4], 0],o += 2 * I - 2;else if (6 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = t["$" + I];else {if (8 != z)break;g = S[A--],S[A] = S[A] | g}else if (0 == (3 & (z >>= 2)))if (1 == (z >>= 2))oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[++A] = +m(a[I], I);else if (3 == z)g = S[A--],S[A] = S[A] - g;else if (5 == z)g = S[A--],S[A] = S[A] === g;else if (12 == z)C = S[A--],x = S[A--],(I = S[A--]).x === e ? S[++A] = f(r, I.pc, I.len, C, I.z, x) : S[++A] = I.apply(x, C);else {if (14 != z)break;g = S[A],S[A] = S[A - 1],S[A - 1] = g}else if (1 == (3 & z))if (2 == (z >>= 2))h(function(f) {var e = 0, a = f.length;return function() {var b = e < a;b && h(f[e++]),h(b)}}(S[A]));else if (4 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],g = t[I],S[++A] = g;else if (6 == z)S[A] = ++S[A];else {if (8 != z)break;g = S[A--],S[A] = S[A]in g}else if (2 == (3 & z))if (5 == (z >>= 2));else if (7 == z)g = S[A--];else if (9 == z)g = S[A--],S[A] = S[A] ^ g;else {if (11 != z)break;oprand = n(r, o),I = oprand[1],d[++c] = [[o + 6, I - 4], 0, 0],o += 2 * I - 2}else if (1 == (z >>= 2))g = S[A--],S[A] = S[A] < g;else if (8 == z)oprand = n(r, o),o += 2 * oprand[0],I = oprand[1],S[A] = S[A][I];else if (10 == z)S[++A] = !0;else {if (12 != z)break;g = S[A--],S[A] = S[A] >>> g}}return [0, null]}var a = [], b = 0, d = [], c = 0, r = function(f, e) {var a = "" + f[e++] + f[e];return parseInt(a, 16)}, n = function(f, e) {var a = f[e++], b = f[e], d = parseInt("" + a + b, 16);if (d >> 7 == 0)return d >> 6 != 0 && (d = -64 | 63 & d),[1, d];if (d >> 6 == 2) {var c = parseInt("" + f[++e] + f[++e], 16);return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,d <<= 8,c = d + c,[2, c]}if (d >> 6 == 3) {var r = parseInt("" + f[++e] + f[++e], 16), n = parseInt("" + f[++e] + f[++e], 16);return 0 != (32 & d) ? d = -32 | 31 & d : d &= 31,d <<= 16,r <<= 8,n = d + r + n,[3, n]}}, i = function(f, e) {var a = f[e++], b = f[e];return parseInt("" + a + b, 16)}, o = function(f, e) {var a = "" + f[e++] + f[e];return a = parseInt(a, 16),String.fromCharCode(a)}, l = function(f, e, a) {for (var b = "", d = 0; d < a; d++)b += o(f, e),e += 2;return b}, t = function(f, e, b) {for (var d = 0; d < b; d++) {var c = n(f, e);e += 2 * c[0];var r = l(f, e, c[1]);a.push(r),e += 2 * c[1]}}, s = this, p = s.Function, u = Object.keys || function(f) {var e = {}, a = 0;for (var b in f)e[a++] = b;return e.length = a,e};return function(e) {e.length;for (var d = 0, c = "", i = d; i < d + 16; )c += o(e, i),i += 2;if ("HNOJ@?RC" != c)throw new Error("error magic number " + c);n(e, d += 16);d += 8,b = 0;for (var l = 0; l < 4; l++) {var s = r(e, d + 2 * l);b += (3 & s) << 2 * l}d += 16;var p = n(e, d += 16), u = p[1], v = d += 2 * p[0];d += p[1];var y = n(e, d);y[1];d += 2 * y[0],a = [],t(e, d, y[1]),f(e, v, u, [])}
}(),
TAC("484e4f4a403f52430024061052f876cc0e1e4e000000000000000000c097c6020025806d4421131e014302023e22170d44441c21131e0343020440170f44441801131e01041c1680474421131e054302063e22170a44441c131e051e0717164444131e052602010a0118010a02101c161e444418002201170644441c131f0018011800131e081a001d0927041c002611020025c04b6b020a250c4444131e0b1e0c0101001f06020d250d444421131e0e43020440001f07020f25805144131e10021102121a02221e1324131e140a010f2201173744441c0200251144441800221e15240a000f02163e00131e17012201171844441c21131e174302044022170a44441c131e171e1804001f08021925114444131e1a1a00221e1b240a000f001f09021c253a44442118004302043e2201170944441c1800263e1707444402000021180043021d3e171344441800170a4444021e16064444021f001800001f0a022025804b441801011708444402211f0102001f0618001f071807150039172c444418061801131e22221e2324131e22221e24240a000f18011e252a0a010f19281f0618072e1f0716511806001f0b02262580ce4402041f0621134318063e2201171044441c13221e15240a000f0227402201171744441c131e081e281e15221e2924130a010f0227402201170d44441c21131e0b4318063e2201171b44441c131e0b221e15240a000f221e2a24022b0a010f15003a2201170d44441c21131e2c4318063e2201171244441c131e2c221e15240a000f022d402201170d44441c21131e2e4318063e1706444420001b010b06260a0010011726444421131e2f4318063e2201171244441c131e2f221e15240a000f02304017064444200012001f0c023125809744131e321a001f06131e08221e332418060234131e081a00220200250c44441b020b00201d35001d360a030f1c131e37221e3824023918060a020f1c1322170844441c131e3722170a44441c131e371e3a170944441800201d351b010b07260a0010173144441322172244441c131e3b131e3c29158064392201171044441c131e3d131e3e2915806439170944441800201d35001f0d023f252d444421131e80404302044022171e44441c131e081e281e15221e2924131e80401e80410a010f0280423e001f0e028043258065441b010b06260a00100117805644028044131e2c42012201171144441c131e2c1e8044131e804541012201170a44441c02804613422201170a44441c02804713422201170a44441c02804813422201171044441c028049134202804a13423a0012001f0f02804b25815e44131e2c1e804c17064444200002804d131e0842173f4444131e08221e804d24131e2c0a010f1f061806221e2a2402804c0a010f15003b2201171444441c1806221e2a2402804e0a010f15003b1706444420001322170944441c131e804f22170c44441c131e804f1e805022170f44441c131e804f1e80501e8051172844444604444406044444051c4444131e804f1e8050221e8051240a000f213e1706444420000702805202805302805402805502805602805702805802805902805a02805b02805c0a0b1f0602805d02805e02805f0a031f07180708031f0818082104171944441f0918071809191f0a13180a191706444420001665180608031f0818082104171b44441f0918061809191f0a131e0b180a191706444420001663131e0b08031f0818082104173144441f091809221e806024131e1002806102001a020a010f22170e44441c131e0b1809191e8062170644442000164d12001f100280632580c9441b010b07260a001017284444131e8064221e80652402130a010f1f0618060200250d44441b020b00201d8066001d80671b010b08260a001017805c4446044444062d4444271f0618061e8068131e80691e806a3e22170e44441c131e806b1e2515003e170a44441800201d806605274444131e806b221e806c2402806d02000a020f1c131e806b221e806e2402806d0a010f1c071b010b06260a001017284444131e80640122171444441c131e806f2201170944441c131e8070170a44441800201d8066001f1102807125809f441b010b06260a00100117809044131e0b221e8072240280730a010f1f0618061e8074221e15240a000f221e807524131e100280760280771a0202000a020f221e2a240280780a010f15003a2201173344441c131e2c1e15221e15240a000f221e807524131e100280760280771a0202000a020f221e2a240280780a010f15003a2201171644441c131e2c1e8044221e15240a000f028079400012001f1202807a25807144131e1002807b02001a021f061322170844441c131e2e22170b44441c131e2e1e807c17804944131e2e1e807c1f071807221e2a2402807d0a010f15003e2201171444441c1807221e2a2402807e0a010f15003e2201171044441c1806221e132418070a010f17064444200012001f1302807f258095441b010b806c1e8080170d44441b010b806c1e80800046044444060a4444271f0602000005806d44131e0b221e8072240280730a010f1f061806221e8081240280820a010f1f071807221e8083240280840a010f1f081807221e80852418081e80860a010f1f091807221e80852418081e80870a010f1f0a180902808828180a281f0b1b010b806c180b1d8080180b0007001f140280892581204402001f061b010b806c1e808a171244441b010b806c1e808a1f061680f24415051f070a001f08131e2c1e80441f0918092201170744441c0a001f0a15001f0b180b18073a1780af44460444440604444405809b44180a180b191f0c0a001f0d15001f0e180e180c1e253a17354444180c221e808b24180e0a010f171e4444180d221e808c24180c221e808b24180e0a010f1e808d0a010f1c180e2d1f0e1646180c1e808e0200281f0e180c1e808f17114444180e180c1e808f020028281f0e180e180c1e8090020028281f0e180e180d221e80912402000a010f281f0e1808221e808c24180e0a010f1c07180b2d1f0b16bf4f1808221e8091240280920a010f1f061b010b806c18061d808a1806221e80932415001584000a020f001f1502809425844e44131e2c1e8095221e8096240a000f1f06131e2c1e8097221e8096240a000f1f0715001f0815011f0915021f0a15031f0b15041f0c15051f0d180d1f0e0280981f0f0280991f1002809a1f1102809b1f1202809c1f1302809d1f1402809e1f1502809f1f161806221e2a240280a00a010f15003b2201171444441c1806221e2a240280a10a010f15003b170c4444180c1f0e1680f2441806221e2a24180f0a010f15003b170c444418081f0e1680d8441806221e2a2418110a010f15003b170c444418091f0e1680be441806221e2a2418120a010f15003b2201171444441c1806221e2a240280a20a010f15003b2201171444441c1806221e2a240280a30a010f15003b170c4444180a1f0e168078441806221e2a2418130a010f15003b2201171344441c1806221e2a2418140a010f15003b2201171344441c1806221e2a2418150a010f15003b2201171444441c1806221e2a240280a40a010f15003b2201171444441c1806221e2a240280a50a010f15003b170c4444180b1f0e16084444180d1f0e1807221e2a2418100a010f15003b22170a44441c180e180840170a4444200016814c441807221e2a2418120a010f15003b2201171344441c1807221e2a2418110a010f15003b2201171444441c1807221e2a240280a60a010f15003b22170a44441c180e180a4022170a44441c180e180940170a444420001680f3441807221e2a2418160a010f15003b2201171344441c1807221e2a2418140a010f15003b2201171344441c1807221e2a2418150a010f15003b2201171344441c1807221e2a2418130a010f15003b22170a44441c180e180c4022170a44441c180e180b40170a44442000168086441807221e2a2418100a010f15003a22171344441c1807221e2a2418120a010f15003a22171344441c1807221e2a2418160a010f15003a22171344441c1807221e2a2418130a010f15003a22171344441c1807221e2a2418140a010f15003a22171344441c1807221e2a2418150a010f15003a1f171817180e180d3e4017064444200015001f1715011f1815021f1915041f1a15051f1b181b1f1c1806221e2a240280a70a010f15003b170c444418191f1c168085441806221e2a240280a80a010f15003b2201171444441c1806221e2a240280a90a010f15003b170c444418181f1c168054441806221e2a240280aa0a010f15003b170c444418171f1c163944441806221e2a240280ab0a010f15003b2201171444441c1806221e2a240280ac0a010f15003b170c4444181a1f1c16084444181b1f1c1b010b15260a0010221e8096240a000f1f1d1b010b14260a0010221e8096240a000f1f1e181c18173f22170a44441c181c18183f22172a44441c131e804f2201171f44441c131e2c1e80ad221e15240a000f221e2a240280ae0a010f15003b170644442000181c18173f22170a44441c181c18183f22171444441c181d221e2a2402804f0a010f15003b170644442000181c181a3e22170a44441c181e02003f17064444200012001f160280af2580d144261f0646044444060f4444271f07131e0b1e80b01f0605174444131e0b221e80b1240280b20a010f0b001f06071806263e1705444400131e0b221e8072240280b30a010f1f070280b4131e80b52615c02710131e22221e24240a000f2a150a0a0210280280b428131e1a1a00221e1b240a000f281f0818000280b6180828281f00180718001d80b71318080200253144441b020b011800041c4604444406044444051c44441b020b06221e80b8241b020b070a010f1c131b020b080907000d1806221e80b92418070a010f1c001f170280ba2580bf4418001e251f0618061502331f0718011733444418001806150129191f0818071504291f07180818071503293a2201170a44441c180818073917064444260018081f0715001f08180818063a17804a4418001808131e80bb221e80bc2418001808191580ff2f18001808191508351580ff2f18001808191510351580ff2f18001808191518351580ff2f0a040f0d18082d1f0816bfb41800221e80912402000a010f1f081801171344441808221e80bd24150018070a020f001808001f180280be2580814418001e251f0618061502341f07180615032f1500401709444418072d1f071801171c4444131e80bf18071501281a011f081808180718060d160e4444131e80bf18071a011f0815001f09180918063a172b44441808180915023423191800221e80c02418090a010f180915032f15033333300d18092d1f0916521808001f190280c1250b444418001480c22f001f1a0280c325314444180215053518011502333118011503351802150433312818001801311805180315032f180431191802312831001f1b0280c42518444418001e2515043a170a4444180015041d251800001f1c0280c52580d24418001e251f0618061501291f0718001807191f0915001f0a131e22221e23241506153418062b280a010f1500301f0d180d150039178097441b010b1a180a1b010b806d28041f0a180a15023515032f1f0b15001f0c180c18073a173c44441800180c150128191f081800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061028040d271f09180c2d1f0c164118000b001f08180018071b010b1a18001807191b010b1b26180a180818091807180b18010a061028040d271f09180d2e1f0d16bf671800001f1d0280c62580d34418001e251f0618061501291f0718000b001f08131e22221e23241506153418062b280a010f1f0d1b010b1a180d1b010b806d2a041f0a180a15004017809144180a15023515032f1f0b18071f0c180c150039173c44441800180c150129191f091800180c1b010b1a1800180c191b010b1b26180a18081809180c180b18010a061029040d271f08180c2e1f0c164118001807191f0918001b010b1a18000b001b010b1b26180a180818091500180b18010a061029041d1f271f081b010b1a180a1b010b806d29041f0a16bf6d1800001f1e0280c72581a744131e100280c802001a02221e132418000a010f170744441800000a001f0618001e251f0715001f0815001f09180818073a178165441800221e80c02418080a010f1f0a180a1580803a17194444180618091800221e80c92418080a010f0d16812b44180a1588003a172b444418061809131e80bb221e80bc241580c0180a15063430158080180a153f2f300a020f0d1680fa44180a15c0d8003a2201170c44441c180a15c0dfff391737444418061809131e80bb221e80bc241580e0180a150c3430158080180a150634153f2f30158080180a153f2f300a030f0d1680ae44180815012818073a178098441800221e80c02418081501280a010f1f0b180a15c0dc003a22170c44441c15c0dc00180b3c22170c44441c180b15c0dfff3c17806244180a1583ff2f150a33180b1583ff2f3015c10000281f0c18061809131e80bb221e80bc241580f0180c151234153f2f30158080180c150c34153f2f30158080180c150634153f2f30158080180c153f2f300a040f0d18082d1f08160e4444131e80ca0280cb1a014718082d1f0818092d1f0916be991806221e80912402000a010f001f1f0280cc25825c44131e80bf18011a011f0615001f0715001f0818001e251f09180718013a22170a44441c180818093a178212441800221e80c0241808222d1f080a010f1f0a180a1504341f0b180b15004017806f44180b15014017806644180b15024017805d44180b15034017805444180b15044017804b44180b15054017804244180b15064017394444180b15074017304444180b150c4017324444180b150d4017294444180b150e4017805c44180b150f401780a94416816b4416817d4418061807180a0d16817244180818093a1729444418061807180a151f2f1506331800221e80c0241808222d1f080a010f153f2f300d160e4444131e80ca0280cd1a014716813644180815012818093a1780404418061807180a150f2f150c331800221e80c0241808222d1f080a010f153f2f150633301800221e80c0241808222d1f080a010f153f2f300d160e4444131e80ca0280cd1a01471680e044180815022818093a1780b044180a15072f1512331800221e80c0241808222d1f080a010f153f2f150c33301800221e80c0241808222d1f080a010f153f2f150633301800221e80c0241808222d1f080a010f153f2f3015c10000291f0c1500180c3c22170c44441c180c15cfffff3c172f444418061807222d1f07180c150a341583ff2f15c0d800300d18061807180c1583ff2f15c0dc00300d161a4444131e80ca0280ce180c221e152415100a010f281a0147160e4444131e80ca0280cd1a0147161a4444131e80ca0280cf180a221e152415100a010f281a014718072d1f0716bde1180718013a170a4444180618071d25131e80bb1e80bc131e80bb180610001f200280d02582ad440a001f06131e80bf15c080001a011f0715001f0815001f0918001e251f0a180818013a22170a44441c1809180a3a17824a441800221e80c0241809222d1f090a010f1f0b180b1504341f0c180c15004017806f44180c15014017806644180c15024017805d44180c15034017805444180c15044017804b44180c15054017804244180c15064017394444180c15074017304444180c150c4017324444180c150d4017294444180c150e4017805c44180c150f401780a94416816b4416817d4418071808180b0d168172441809180a3a1729444418071808180b151f2f1506331800221e80c0241809222d1f090a010f153f2f300d160e4444131e80ca0280cd1a0147168136441809150128180a3a1780404418071808180b150f2f150c331800221e80c0241809222d1f090a010f153f2f150633301800221e80c0241809222d1f090a010f153f2f300d160e4444131e80ca0280cd1a01471680e0441809150228180a3a1780b044180b15072f1512331800221e80c0241809222d1f090a010f153f2f150c33301800221e80c0241809222d1f090a010f153f2f150633301800221e80c0241809222d1f090a010f153f2f3015c10000291f0d1500180d3c22170c44441c180d15cfffff3c172f444418071808222d1f08180d150a341583ff2f15c0d800300d18071808180d1583ff2f15c0dc00300d161a4444131e80ca0280ce180d221e152415100a010f281a0147160e4444131e80ca0280cd1a0147161a4444131e80ca0280cf180b221e152415100a010f281a0147180815c07ffe3b1731444418081501281f0d1807180d1d25180618061e25131e80bb1e80bc131e80bb1807100d1801180d291f01157f1f0818082d1f0816bda91808150039171f4444180718081d25180618061e25131e80bb1e80bc131e80bb1807100d1806221e80912402000a010f001f210280d12580ac441801213e2201170944441c1801263e2201170a44441c180115003a170a444418001e251f01180115003e17074444020000131e100280c802001a02221e132418000a010f2201171944441c131e100280d202001a02221e132418000a010f0117214444180118001e253e170744441800001800221e80d324150018010a020f00180115c0ffff3a171444441b010b2026180018010a0210161044441b010b2126180018010a0210001f220280d4258067441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1800041f001b010b1f1801041f011b010b18261b010b1d261b010b19261800200a02101b010b1c1b010b19261801120a0210040a0210120a0210001f230280d5258063441800213e2201170944441c1800263e2201170c44441c18001e2515003e170744441800001b010b1f1801041f011b010b221b010b18261b010b1e261b010b19261800120a02101b010b1c1b010b19261801120a0210040a0210200a021004001f240280d6258181440280d71f0618011708444418011f0602001f0715001f0918001e2518091503283b1780aa441800221e80c0241809222d1f090a010f1580ff2f1510331800221e80c0241809222d1f090a010f1580ff2f150833301800221e80c0241809222d1f090a010f1580ff2f301f0818071806221e80c92418081480d82f1512340a010f281f0718071806221e80c924180815c3f0002f150c340a010f281f0718071806221e80c9241808158fc02f1506340a010f281f0718071806221e80c9241808153f2f0a010f281f0716bf4f18001e251809291500391780a5441800221e80c0241809222d1f090a010f1580ff2f15103318001e25180939171b44441800221e80c02418090a010f1580ff2f150833160644441500301f0818071806221e80c92418081480d82f1512340a010f281f0718071806221e80c924180815c3f0002f150c340a010f281f07180718001e25180939171b44441806221e80c9241808158fc02f1506340a010f160744440280d9281f0718070280d9281f071807001f250280da251144440280db221e2a2418000a010f001f260280dc2581094402001f0615001f07180718001e251503293a1780f0441b010b261800221e80c92418071500280a010f041f081b010b261800221e80c92418071501280a010f041f091b010b261800221e80c92418071502280a010f041f0a1b010b261800221e80c92418071503280a010f041f0b1806131e80bb221e80bc2418081502331809150435300a010f281f061800221e80c92418071502280a010f0280d93f172744441806131e80bb221e80bc2418091504331580f02f180a150235150f2f300a010f281f061800221e80c92418071503280a010f0280d93f172144441806131e80bb221e80bc24180a1506331580c02f180b300a010f281f0618071504281f0716bf091806001f270280dd25804c441800153f2f1f00131e80bb221e80bc2418001800151a3a170b444415804116254444180015343a170b4444158047161544441800153e3a170a4444157c16064444156f280a010f001f280280de253444441b010b281f06180618001518340418061800151234042818061800150c340428180618001506340428180618000428001f290280df258097441b010b806b1e80e00280e1281f061b010b1726180602002580774418001e2515083a1705444400460444440604444405805e441b010b24261b010b271800221e80932415080a010f041800221e809324150015080a020f0a02101f0618060280e23e171444441b010b2b262018000a02101c161a444418060280e33e171044441b010b2b261218000a02101c07000a02101c001f2a0280e4258050441b010b806b18001d80e5460444440604444405394444131e806b17164444131e806b221e806c240280e618010a020f1c131e80e717164444131e80e7221e806c240280e618010a020f1c07001f2b0280e82580ab4402001f06460444440604444405804144131e806b17154444131e806b221e80e9240280e60a010f1f061806012201170944441c131e80e717154444131e80e7221e80e9240280e60a010f1f0607180617805644460444440604444405804a441b010b24261b010b271806221e80932415080a010f041806221e809324150015080a020f0a02101f0718070280e23e170a444420001610444418070280e33e1706444412000712001f2c0280ea2580fa44121f061b010b806b1e80e5203e170b4444201f06162344441b010b806b1e80e5123e170b4444121f06160e44441b010b2c260a00101f06131e081a0022121d80eb22121d2e2218061d80ec22121d80ed22121d3522121d80ee22121d80ef22121d804c22121d806622121d80f0220280f12506444420001f0818081d131f0718071b010b0c260a00101d80ed18071e80ed01178061441b010b0d1807041c1b010b111807041c18071b010b0e260a00101d80ee18071b010b0f260a00101d80ef18071b010b10260a00101d804c18071b010b12260a00101d80f018071b010b13260a00101d2e18071b010b16260a00101d80eb1807001f2d0280f225805b44131e08221e80f32418000a010f1f0615001f0718061e251501291f08180815003b173344441800180618081919170a444415011606444415001f09180918061e25180829150129331807301f0718082e1f08164a1807001f2e0280f42536444415001f06180618011e253a17244444180015c1003f2a1801221e80c02418060a010f281500351f0018062d1f0616571800001f2f0280f52536444415001f06180618011e253a1724444418001801221e80c02418060a010f3115c1003f2a1500351f0018062d1f0616571800001f300280f625809f4415001f06180618011e253a17808d441801221e80c02418060a010f1f07180715c0d8003b22170c44441c180715c0dbff3c22170c44441c180618011e253a178043441801221e80c02418061501280a010f1f08180815c0fc002f15c0dc003d1722444418071583ff2f150a3318081583ff2f2815c10000281f0718061501281f06180015c1003f2a1807281500351f0018062d1f0616bf6f1800001f310280f72580704418002201170744441c02001f061806221e807524131e100280f802001a0202000a020f1f061806221e2a240280e10a010f157f40172044441806221e80d32415001806221e2a240280e10a010f0a020f1606444418061f061806170a44441806160744440280881f061806001f320280f92580aa4418002201170744441c02001f061806221e806024131e100280fa02001a020a010f1f0718071716444418070b00221e80d32415010a010f1606444402001f061806171544441806221e80fb240280fc0a010f16054444261f08131e081a001f0918081780414415001f0a180a18081e253a1732444418091808180a19221e80fb240280d90a010f0b001808180a19221e80fb240280d90a010f0b010d180a2d1f0a16491809001f330280fd25808e441800012201171744441c131e80fe221e80ff2418000a010f0281003e170a4444131e081a0000131e08221e80f32418000a010f221e8101240a000f1f06131e081a001f0715001f08180818061e253a173844441801171b44441807180618081918001806180819190200280d161444441807180618081918001806180819190d18082d1f0816431807001f3402810225807344131e80bf221e81032418000a010f171344441800221e8104241b010b350a010f001800131e084117804544131e08221e80f32418000a010f221e8101240a000f1f061806221e810524020025184444180018011b010b351b020b00180119040d180000131e081a000a020f001800001f35028106258078441800012201171744441c131e80fe221e80ff2418000a010f0281003e17074444020000131e08221e80f32418000a010f221e8101240a000f1f0602001f0715001f08180818061e253a17284444180718061808190a010280d9281800180618081919280280fc28281f0718082d1f0816531807001f360281072580c244131e0b221e8072240280730a010f1f07180715301d8108180715101d81091807221e80812402810a0a010f1f08180802810b1d810c1808221e810d2402810e1502150c0a030f1c180815021d810f180815011d811018080281111d81121808221e811324150815081508150015020a050f1c1808221e8114240a000f1c1807221e8074240a000f1f0615001f09180915203a17294444180015c1003f2a1806221e80c024180018061e252c0a010f281500351f0018092d1f0916541800001f370281152521444446044444060a4444271f06157f00050e44441b010b37148116040007001f3802811725124444110281171d808e1118001d8118001f39028119251e44444604444406094444271f062000050c4444131e806b01010007001f3a02811a251e44444604444406094444271f062000050c4444131e80e701010007001f3b02811b251e44444604444406094444271f062000050c4444131e806401010007001f3c02811c252e44441b010b0a1b010b3c260a0010041b010b0a1b010b3b260a001004281b010b0a1b010b3a260a00100428001f3d02811d25244444131e811e1f0618061e81080280b42818061e8109280280b42818061e811f28001f3e028120251a4444131e811e1f0618061e81210280b42818061e812228001f3f02812325806b44131e8124020025805e44028125131e2c4217804c44131e2c221e8125240a000f221e8126240200252e44441b030b0018001e81270280b42818001e8128280280b42818001e8129280280b42818001e812a28041c000a010f1c160a444418000200041c001a01001f804002812b25807c4402812c1f0615001f0721131e2c1806194302044017104444131e2c1806191f07161b444421131e2c18061943020440170c4444131e2c1806191f0746044444060a4444271f09121f0805174444131e0b221e812d2402812e0a010f1c201f080702812f13421f0918070280b4281808280280b428180928001f804102813025806044131e1a1a001f061806221e81312415010a010f1c1806221e81322415050a010f1c15001806221e8133240a000f291f071806221e813224150b0a010f1c15001806221e8133240a000f291f08131e22221e813424180718080a020f001f80420281352581c3440281360281370281380a031f06131e081a001f07131e081a001f081806031f091809210417806c441f0a131e0b221e8072240281390a010f1f0b180b02813a1d813b180b1e813c02813d1d813e180b1e813c180a1d813f131e0b1e80b0221e80b924180b0a010f1c1807180a180b1e81400d1808180a180b1e81410d131e0b1e80b0221e80b824180b0a010f1c16bf9302814202814302814402814502814602814702814802814902814a02814b02814c02814d02814e02814f02815002815102815202815302815402815502815602815702815802815902815a02815b02815c02815d02815e0a1d1f0915001f0b271f0a271f0c15001f0d180d18091e253a1780b3441806031f0e180e210417809e441f0f131e0b221e8072240281390a010f1f10181002813a1d813b18101e813c02813d1d813e18101e813c1809180d1902815f28180f281d813f131e0b1e80b0221e80b92418100a010f1c18101e81401807180f19402201171044441c18101e81411808180f19401f11131e0b1e80b0221e80b82418100a010f1c1811171b4444180d151e3a170e44441501180d33180a301f0a1607444416bf61180d2d1f0d16bf49180a221e152415100a010f001f804302816025809b442118014302816140170544440018000280d9281f061801221e80fb24131e1002816202001a020a010f1f0715001f09180918071e253a1780604418071809191f081808221e80c92415000a010f0281633e171844441808221e80bd24150118081e250a020f1f08165a1808221e2a2418060a010f15003e171744441808221e80bd2418061e2518081e250a020f0018092d1f0916bf9c001f80440281642580744446044444060a4444271f060200000580614402001f06131e806b171d4444131e806b221e80e92418000a010f1f06180617074444180600131e80e7171d4444131e80e7221e80e92418000a010f1f061806170744441806001b010b8044261800131e0b1e81650a02101f0618060007001f804502816625808944460444440604444405807c44131e806b17154444131e806b221e806c24180018010a020f1c131e80e717154444131e80e7221e806c24180018010a020f1c1481671f06131e0b1800028168281d8165131e0b18000280d92818012802816928131e1a131e1a1a00221e1b240a000f1806281a01221e816a240a000f2802816b281d816507001f804602816c2525444446044444060d4444271f0618061e811800050f4444131e816d02816e1a011c07001f804702816f25124444131e8170221e15240a000f1e25001f80480281712581bb441b010b06260a00102201170d44441c1b010b08260a001017074444020000131e81722201170944441c131e81732201170944441c131e81741f06131e812402002581744446044444060d4444271f0618000200041c05815e441b020b0617814f441b020b06131e081a0022131e081a00220281751d81760a011d81771a011f06020025054444001f07131e1002817802001a021f08131e100281790280771a021f091806221e817a2402000a010f1c131e817b260200250d44441b030b000200041c001581f40a02101c1806221e817c240a000f1f0a180a131e81244117374444180a221e8126240200251344441b030b06221e817d2418000a010f000a010f221e812624020025054444000a010f1c162f44441806221e817c240200251c44441b030b06221e817d2418001b030b071b030b070a030f1c0018070a020f1c1806020025806244180022170a44441c18001e817e22170d44441c18001e817e1e817e178042441b030b08221e817f2418001e817e1e817e0a010f1f0618061726444418060b00221e8060241b030b090a010f1f071807170e44441b030b0018060b00041c001d8180160a444418000200041c07001a01001f804902818125805944028182221e807524131e100281830280771a020200253c4444131e22221e24240a000f15102a1500301f0618000281843d170a44441806160c4444180615032f1508301f071807221e152415100a010f000a020f001f804a0281852580504418001e2515223e178043441b010b2f2615001800221e80bd24150015200a020f0a02101f061806221e15240a000f221e80bd24150015020a020f1800221e80bd24152015220a020f3e0012001f804b028186258060441b010b8045028187041f06180622170d44441c1b010b804b180604170744441806001b010b804a260a00101f0618061b010b2f26150018060a021028221e80bd24150015220a020f1f061b010b80462602818718060a02101c1806001f804c02818825324444180001170744440200001b010b0b1504041f0618061b010b25261b010b2326180018060a02100281890a021028001f804d02818a258155441801173b444415001f0615001f07180718001e253a1728444418001807191e818b17154444180018071918011806222d1f06191d818c18072d1f07165302001f061800221e818d240200251c44441b02220b061b010b0a18001e818c0402818e28281d818f000a010f1c18061b010b09260a0010281f061b010b804a260a00101f07131e22221e23241807221e80c02415030a010f15082b0a010f1807221e80c02415030a010f15082c281f081807221e80bd24150415041808280a020f1f091b010b251b010b2326180618090a0210180728041f061b010b806b221e8190028191131e8192180604280280fc28281d8190271f0a1b010b1726180a020025804e4418001e819315003d22170a44441c18001e8194173644441b010b806b1b010b804d18001e8194041d81951b010b806b18001e81941d81961b010b80462602819718001e81940a02101c000a02101c001f804e02819825848744131e2c22170644441c1322170844441c131e0b011705444400131e081a00220281991d819a2215041d819b2218001e81991d818c131e081a002202819c1d819a2215031d819b221b010b091d819d131e081a002202819e1d819a2215031d819b221b010b3d1d819d131e081a00220280731d819a2215031d819b221b010b381d819d131e081a002202819f1d819a2215031d819b221b010b091d819d131e081a00220280971d819a2215001d819b131e081a00220281a01d819a2215001d819b131e081a00220281a11d819a2215001d819b131e081a00220281a21d819a2215001d819b131e081a002202804e1d819a2215001d819b131e081a00220281a31d819a2215031d819b221b010b3e1d819d131e081a00220281a41d819a2215031d819b221b010b3f1d819d131e081a00220281a51d819a2215011d819b131e081a00220281a61d819a2215011d819b131e081a00220281a71d819a2215011d819b131e081a00220281a81d819a2215001d819b131e081a00220281a91d819a2215031d819b221b010b80401d819d2215011d818b131e081a00220281aa1d819a2215031d819b221b010b80411d819d131e081a00220281ab1d819a2215031d819b221b010b80421d819d131e081a00220281ac1d819a2215031d819b221b010b091d819d131e081a00220281ad1d819a2215031d819b221b010b141d819d131e081a00220281ae1d819a2215031d819b221b010b80431d819d131e081a00220281af1d819a2215031d819b221b010b151d819d131e081a00220281b01d819a2215031d819b221b010b091d819d131e081a00220280951d819a2215001d819b131e081a00220281b11d819a2215031d819b221b010b80451d819d220281971d81b2131e081a00220281b31d819a2215031d819b221b010b80471d819d131e081a00220281b41d819a2215031d819b221b010b80481d819d131e081a00220281b51d819a2215031d819b221b010b80491d819d2215011d818b131e081a0022022e1d819a2215011d819b131e081a00220281b61d819a2215041d819b221b010b806a1e81b71d818c131e081a00220281b81d819a2215031d819b221b010b804c1d819d131e081a00220281b91d819a2215031d819b221b010b091d819d131e081a00220281ba1d819a2215041d819b0a221f060a001f07180608031f08180821041780e0441f0918061809191e819b1f0a180a15004017234444180a15014017374444180a15024017804444180a150340178053441680a94418061809191b010b0a131e2c18061809191e819a19041d818c16808c4418061809191318061809191e819a191d818c168076441806180919131e0b18061809191e819a191d818c16805e4418061809191e818b17324444131e8124172644441807221e808c2418061809191e819d221e292418061809191e81b20a010f0a010f1c16244444180618091918061809191e819d221e29242618061809191e81b20a020f1d818c16bf1f131e812417364444131e8124221e81bb2418070a010f221e8126240200251544441b010b804e261b020b0618000a02101c000a010f1c160d44441b010b804e1806041c001f804f0281bc25804544131e0b22170b44441c131e0b1e81bd0117054444001b010b807408031f0618062104171e44441f07131e0b221e81bd2418071b010b80741807190a020f1c1660001f80500281be2580874418001e251580c839171444441800221e81bf2415001580640a020f1c18001e2515003917805244180018001e25150129191f0618011e81c018061e81c02915003c2201172d44441c0281c118014222171044441c18011e818418061e81843d22171044441c18011e81c118061e81c13d17054444001800221e808c2418010a010f1c001f80510281c22580634415001f0618001e81c32201170a44441c18001e81c42201170a44441c18001e81c52201170a44441c18001e81c61708444415011f061b010b8051261b010b8078131e081a002218061d818422131e1a221e81c7240a000f1d81c00a02101c001f80520281c825806d4418001f0618001e808d1f0718001e81c922170b44441c18070281ca3e1713444418001e81cb0b001f061b01201d81cc131e081a002218061e81cd1d81842218061e81ce1d81c122131e1a221e81c7240a000f1d81c01f081b010b8051261b010b807618080a02101c001f80530281cf25806d4418001f0618001e808d1f0718001e81c922170b44441c18070281d03e1713444418001e81cb0b001f061b01201d81cc131e081a002218061e81cd1d81842218061e81ce1d81c122131e1a221e81c7240a000f1d81c01f081b010b8051261b010b807718080a02101c001f80540281d1251944441800221e8105241b010b80790a010f18001e252b001f80550281d22580664418001e2515013c170744441500001b010b80551800041f061800221e8104240200250c444418001b020b0629000a010f1f07131e22221e81d3241807221e8104241b010b807a0a010f221e8105241b010b80790a010f18001e251501292b0a010f001f80560281d42580d84415001f0615001f0718001e251801391780be440a001f0815001f09180918001e251501293a1780864418001809150128191f0a18001809191f0b180a1e81c0180b1e81c0291f0c180c17805a441802171844441808221e808c241501180c2b0a010f1c168040441808221e808c24131e22221e81d3241b010b807a180a1e8184180b1e818429041b010b807a180a1e81c1180b1e81c12904280a010f180c2b0a010f1c18092d1f0916bf731b010b80551808041f061b010b80561808041f07180715003d170944441481d51f07180618070a02001f80570281d625812144121f064604444406044444052a4444131e0b22170b44441c131e0b1e812d17164444131e0b221e812d2402812e0a010f1c201f06071b010b8057261b010b807615010a02101f071b010b8057261b010b80781505200a03101f0815011f0918060122170a44441c1b010b8075170c44441809158040301f091b010b80761e2515003e170f444418091502301f091616444418070b00153239170b444418091510301f091b010b80771e2515003e170b444418091504301f091b010b80781e2515003e170f444418091508301f091617444418080b001481d739170b444418091520301f091809221e152415200a010f1f0a180a1e2515013e171044440281d8180a281f0a16164444180a1e2515023e170b4444021f180a281f0a180a001f80580281d92583d4442118014302043e22170c44441c2118004302024022170b44441c18001e81da01170e44441b010b390281db1a014715001f0615001f0715c0fff11f08131e1a1a00221e1b240a000f1583e82b1500351f091b010b806a1e81dc0122173844441c1b010b30261b010b3026150018090200280a0210131e2e1e807c221e80bd24131e2e1e81dd1e251502280a010f0a021018082c1f071809180718082a31150035221e152415020a010f1f0a180a1f0b180a1e25152039171b4444180a221e80bd24180a1e251520290a010f1f0b163a4444180a1e2515203a172f444402001f0c15001f0d180d1520180a1e25293a17124444180c021f281f0c180d2d1f0d1666180c180b281f0b0281de1f0c0281df1f0d0281e01f0e180e180d28180c28180b281f06131e80b526180615020a02101f061b010b3026150018060200280a02101f0f1b010b2d260a00101f1002001f111801170c444418011f1116811b441b010b80731e81e1221e2924110281e218000a030f1c18001e80b022171a44441c131e80fe221e80ff2418001e80b00a010f0281004017806d4415001f1218001e81e3173244441b010b31261500131e80fe221e80ff241b010b342618001e80b018001e81e30a02100a010f0a02101f12162644441b010b31261500131e80fe221e80ff241b010b3518001e80b0040a010f0a02101f120281e41812280280fc281f111b010b3318001e81da041f1218001e81e5171a4444131e08221e81e624181218001e81e50a020f1606444418121f1218111b010b36181204281f1118110281e7281b010b3218001e81da04280280fc281f1118110281e8280281e9281f111b010b80731e81e1221e2924110281ea18110a030f1c1b010b2e1810041f121b010b806a1e81dc0122170d44441c1b010b38260a00101f131b010b806a1e81dc0122172344441c1b010b806b1e81952201171444441c1b010b804d1b010b804502819704041f141b010b806f1806041b010b806f18061481eb2b15003504281b010b806f181318063104281b010b806f1b010b3026180f1b010b806a1e81dc0122170b44441c131e2c1e8095221e15240a000f0a021018082c1510331b010b3026180f18110200280a021018082c3004281b010b806f18121508331b010b806a1e81ec1504333018063104281b010b29180704281f151b010b806f1500041c1814170b444418151814281f151b010b8058260a00102201170844441c0281ed1f160281ee1b010b806a1e81ef281816280281f0281815281f171b010b3126150018170a0210221e152415100a010f1f181818221e80932418181e2515022918181e250a020f1f1918171819281f171817001f80590281f1253c444415001f0618061b010b806b1e81f21e253a172544441b010b806b1e81f2180619221e132418000a010f17064444200018062d1f06165012001f805a0281f325836a44131e81f41e281f0618061e80651f0718061e81f51f0818061e81f61f0918061e81f71f0a18061e81f81709444400160a44441806201d81f81806020025806e44111e81f90117805c44111e81fa221e808c24131e081a00220281f51d81fb221b031d81fc0a010f1c131e100281fd02121a02221e132418000a010f17264444111801221e15240a000f221e8096240a000f221e80fb240281fe0a010f0b001d81ff1b020b08111b0310001d81f51806020025134444111b031d82001b020b0a111b0310001d81f718060200253e4444110a001d81fa111e81fa221e808c24131e081a00220280651d81fb221b031d81fc0a010f1c1118001d82011118011d82021b020b07111b0310001d80650282030280670282040282050282060282070282080a071f0b180602002582394411201d81f91b010b805a111e82020417821d44111e8202221e2a240282090a010f157f39170d44441b020b09111b0310001118001d820a111e820b1f06111e82031f07111e80671f08111e82041f09111e82051f0a111e82061f0b111e82071f0c111e82081f0d111e820c1f0e111e820d1f0f131e081a001f1015001f1118111b020b0b1e253a1721444418101b020b0b181119111e820e1b020b0b181119190d18112d1f111658131e081a00221b010b8061261b020b00111e82020a02101d81da1f11111e820102820f3d17804044111e81ff0282103e2201170d44441c111e81ff0282113e171c44441b010b805f261811111e81ff111e820a0a03101c160d44441b020b09111b0310001b010b80641b020b0004171644441b020b00221e82122418110a010f160c44441b010b80591811041f121b010b806226111e820218120a02101f13111e81fa22171244441c111e81fa0b001e81fb0280653f170644442600111e81fa1f1415001f15181518141e253a17354444181515003e1710444418141815191e81fc18131d1e1118141815191e81fb191118141815191e81fc101c18152d1f151646111e8200170f4444111e81f711111e8200101c110281fa091118061d820b1118071d82031118081d80671118091d820411180a1d820511180b1d820611180c1d820711180d1d820811180e1d820c11180f1d820d15001f1518151b020b0b1e253a17214444111e820e1b020b0b18151918101b020b0b181519190d18152d1f1516581b020b09111b0310001d81f6001f805b0282132582e4440282142582ad4418012201170a44441c131e081a001f011b010b807b22170c44441c1800131e8215411f0602001f070282161f0818061716444418001e81da1f0718001e82171f081626444418001f0718011e82171715444418011e8217221e8218240a000f1606444418081f0818080282164022170b44441c180802820f402201170e44441c1b010b805a18070401171144441b020b0726180018010a021000131e081a00221b010b8061261b020b0018070a02101d81da1f09180802820f3d178166441b010b805e26180018010a0210221e80fb240281fe0a010f0b00221e8096240a000f1f0a180a0282103e2201170b44441c180a0282113e17811a4418061780b7441800221e8219240a000f221e821a240a000f221e8126240200258079441b010b805f261b030b091b030b0a18000a03101c1b010b80641b020b0004171844441b020b00221e8212241b030b090a010f160e44441b010b80591b030b09041f061b010b8062261b030b0718060a02101f071b010b8060261b030b00180718000a03101f081b020b072618081b030b010a021000020025174444131e81240200250a44441b040b0047001a01000a020f0016805d441b010b805f261809180a18011e80b00a03101c1b010b80641b020b0004171644441b020b00221e82122418090a010f160c44441b010b80591809041f0b1b010b8062261807180b0a02101f0c1b020b0726180c18010a021000161144441b020b0726180018010a02100016808c4418080282163e178075441b010b80641b020b0004171644441b020b00221e82122418090a010f160c44441b010b80591809041f0a1b010b8062261807180a0a02101f0b1806172544441b010b8060261800180b210a03101f0c1b020b0726180c18010a021000161144441b020b0726180b18010a021000161144441b020b0726180018010a021000001f061b010b805d260a0010011705444400131e821b17094444001609444413201d821b131e821c1f071318061d821c001f805c02821d25094444131e821c001f805d02821e2581114402001f061b010b807b22170c44441c1800131e8215411722444418001e821f221e36240282200a010f1f0718071708444418071f06180600180122170a44441c18011e821f1780c7441b010b807c22170f44441c18011e8221131e8222411722444418011e821f221e36240282200a010f1f0718071708444418071f0618060018011e821f131e80bf411780424415001f07180718011e821f1e253a1730444418011e821f1807190b00221e8096240a000f0282203d170f444418011e821f1807190b010018072d1f07164818011e821f131e08411737444418011e821f08031f0718072104172344441f081808221e8096240a000f0282203e170d444418011e821f18081900165b180600001f805e0282232580a9441802263e170744441800001802221e15240a000f1f0218010282103e178073441800201d81e31802221e80fb240280fc0a010f1f06131e081a001f0718061780464415001f08180818061e253a1737444418071806180819221e80fb240280d90a010f0b00131e82241806180819221e80fb240280d90a010f0b01040d18082d1f081644180018071d80b0161744441800131e80fe221e82252418020a010f1d80b01800001f805f02822625806944131e82151801131e081a002218001e82171d82172218001e821f1d821f2218021d80b02218001e82271d82272218001e82281d82282218001e82291d82292218001e822a1d822a2218001e822b1d822b2218001e822c1d822c2218001e822d1d822d1a02001f806002822e2580af4418011f061b010b806b1e822f1e251500391780804415001f0718071b010b806b1e822f1e253a17806b441b010b806b1e822f1807190b001f081808221e132418010a010f178045441801221e80752418081b010b806b1e822f1807190b010a020f1f061b010b80731e81e1221e29241800028230028231180128028232281806280a030f1c160c444418072d1f0716bf8b131e822418060418063d170d4444131e82331806041f061806001f8061028234252b444418001800221e2a240280e10a010f157f40170e4444028235180128160a444402823618012828001f8062028237251744441b010b805b1800041c1b010b805c1800041c001f8063028238250d444418001b010b806541001f8064028239251a444411131e80fe221e8225241b010b807d0a010f1d823a001f806502823b2580b5441b010b806a1e81dc1706444426001b010b80641104170c4444111e823a160944441b010b806b1f06131e08221e81e624180618000a020f1c1b010b80671806041c18061e8237172444441b010b806818061e823c041c1b010b806918061e823d041c1b010b806311041c1b010b8050260a00101c1b010b806b1e823e0122170a44441c18061e8198172844441b010b806b201d823e1b010b2a260a00101c131e817b261b010b804f150018060a03101c001f806602823f2580684418001e819915003e2201171a44441c131e22221e232418001e81990a010f18001e81993f170e44441b010b390282401a014718001e8237172c444418001e823c1e2515003e2201170e44441c18001e823c1e808c01170e44441b010b390282411a0147001f80670282422536444415001f06180618001e253a172644441b010b806b1e81f2221e808c24131e1018001806191a010a010f1c18062d1f061655001f80680282432580414415001f06180618001e253a173144441b010b806b1e822f221e808c24131e1018001806190b001a0118001806190b010a020a010f1c18062d1f06164a001f806921131e081e81e6430206401780c044131e08221e3324131e080281e6131e081a00220281e625808f441800263e2201170944441c1800213e170e4444131e82440282451a0147131e081800041f0615011f0718071b021e253a178058441b021807191f081808264022170944441c1808214017374444180808031f0918092104172944441f0a131e081e281e8246221e29241808180a0a020f170e44441806180a1808180a190d165518072d1f0716bfa41806001f806a18806a1d824722201d824822201d82490a030f1c131e081e80f30117810644131e0802002580f644131e081e281e82461f06131e081a0022261d15221e824a2402150a010f011f07021502824b02824c02824602824d02824a02110a071f0818081e251f0902002580b2442118004302064022171744441c211800430202402201170944441c1800263e170e4444131e824402824e1a01470a001f06180008031f0918092104172844441f071b020b06221e2924180018070a020f171144441806221e808c2418070a010f1c16561b020b071780444415001f0818081b020b093a173544441b020b06221e292418001b020b081808190a020f171644441806221e808c241b020b081808190a010f1c18082d1f08164618060000260a00101d80f3131e081a002202824f1d81b72215021d81ec22121d81dc220282501d81ef1f806a131e081a0022121d82512215001d819922121d819822121d8237220a001d823c220a001d81f2220a001d823d220a001d822f220282521d8190220282531d80e0220282541d82551f806b131e081a001f806c1482561f806d15001f806e0200252044441b011b010b80711d82571b0118001d82581b010b29180015023404001f8070271f806f0200252d44441b011b010b80721d82571b010b806e151c331800150435301f061b0118001d82581b010b29180604001f80710200252a44441b011b010b80701d82571b010b291b010b806e151a33180015063530041b010b2818000428001f8072131e081a0022020025804c44121f061b010b8064110417114444111e823a1e82511f06160e44441b010b806b1e82511f06180622171e44441c131e37221e382402825918002802825a2802825b18010a030f1c001d81e11f8073131e081a00221880531d825c221880531d81ca221880521d825d221880541d81d0221880541d825e1f8074121f80750a001f80760a001f80770a001f80780200250a44441800180128001f80790200250a4444180018002a001f807a131e821522170d44441c131e8215131e08411f807b131e822222170d44441c131e8222131e08411f807c131e80fe221e80ff2418806b0a010f1f807d1880591f807e1880651e281880661d823b1880651e2818807e1d821218806a1222170b44441c180c260a00101d81dc18001880651d823918001880661d823b180018807e1d8212131e08221e3324180002825f131e081a0022201d82470a030f1c000a02101c0082600007472fac451c6d36064d3a8a50e914064f368748f3f0095734832ddab659f11a06463e8c38bd7c084429803f840a6c7a03433095066d3c9f0a422b0e40268c1d5dc3f4e729940051c8b4044b13b5c608460e9cfe077c21a30c460d60632aa7990807a17d30094b1040762c98ed00520e6b0a795e1a2aafa8fe1c5bc8aa52084b165e53f61d39b80670037678d4b30b41087a35b0726232973e97014b04560c682d0b6a3e5228572aac7c23a26808560471195be93598217903441223a96171bb02713b7143dfe01f2ba653ff8a1c58ceba5caf41de92c3bb06510c4fe1299610521b5ee33929b9760b58ffc8be771e2f0c450a44c0e6ee036c1a54cab504661140fa07451443f3a96d440845174fe4bc25ad5a07401c51d791e503011301120c501727bd2da74c00388b317f3e12467ed16e320e83d34c2e93e41b0958ab58c2b50947cfa356b85ec384d395062e58eac945124c291c6ee849065935c7e14e1c73fd56321e47d1fb522fdf046f1924850544153c9af906501b396447e0064e1e346e4baf0946133350396533674c0f791203761425a874565bc081003eb609520c0a53e2f9f7e2f804411e045c074bee085eb95e3c0866ee0c36bb228c13094ce3052794f1eedb841279ec143d6f289aa7c8e4f516110059c399d4084eeb190353fdc9ba074aec0e1e53b8571079e9e31f3d721407d1de70368e1d2a530e46e2e60b17299fdb9b0248b72983056be5e9eee90e46ecedf8cfaf62c56b3689fee9b1024bee0846eef0d0b2299bc50345e9e20741e2f7cb682198034ee1fa0207ec0744f9d6b2356d1b0a4de4d3ba1e196d28752e0a4bfcc58ffbc0d2720f100b4de6da96d29a35650455ab0b4bfadc9bcf53e2ffda77e10a4cfad16316741b3e49c50645fad6730f340752e5d379e3e6c81079f7a24fc7bf1a7c40b15caf297e03340d52f1a243c37e1e2d3462e1fbbf0752f6b25fbd355e0b72f7bf2682fbfe5bc16c16087deca62d662b56b60b41fcbd384dfcde45ce4ece0b7dc1bb365eb30504375ad30563eabc013e1861c1b2050c2c6f8cf6ab3c41bc0504134dde60eabb323dc20f55c4bd1ff0fcb35b9ce393c94aae2d0955c781e2edb70beedd1345c692c0c177c1cc5fbe3f4b93e290e6c374fa094ec584fda6032e6e020641cd9fcd85fd0750d39fd96d32260741c89ad879ffa9147df78fa45a87fdd743bafbec78d1600f2c207211137df688ac217dfba72b2a51e4d793d2489aa31b1b7df588b108063d49da6e0bd2b322760404f3e85695f78bdb48d025177df475382398a30f2a217b29fbd558a41516032859b6e4157df3710d3c227911fcdd5e9014072c395eaed6d929137df26f081709f9b02b51e74ba01af497fd9ad9127df16909e6b426743003e7ce4083eb9ad447157df067e1c59baeefc67fd6a195f8a9e1b9f6ca5861117def70fdaa306af4ee78da72f9aeeab031147dee64f2b419f9b2f3de7bb5296ed56af6cb256a147ded7dda91b72750a63e7bb42455cd2950cd237a097dc07bc769eeca8eb50c41d54eda7aac36237bf29ed9167de640d25b918bee87ee6a85087389f4bae1a6e0d83e054fd75daa320a7e9377b35ff9f37fcf470641d953b5eb950f4bd7508ac4918fdd7ed281dc76fc8a094bd45395b82c44ff7d044dcb5f97094bd25d6b13e3a51f16074dd3247efbad200441d121720c66f00565c5257bcb3075d62c127395037f98d29521e3463eec5ffc1b6683d70e51a43c4087ac361d42949adb2f490751a727777fe9bd1051ac3b2269a21d26edb815d298d84c860a50a1373d4975d58f8cd00c72aa34342023569509d053660e6f95310a19e3a2eba9d9761ec1460a4aa80b05ccaf04f582d80d41ba0d18d074e762f86ee6aa1c0641a805f7d8350956a52beda2f1b7e2780750ae02f98ca911037ebf5c01450a4caf09da4d75c571af191479a0e2d6362e4b3d9914da5e7adb0a314263e9a90e4ebfe7a61bfd9db0e95677e987b5804a7cb9f3bbf4b945891e06b7feb9a9d6e4b893ebc7dac4872bc63b92bcd8c552c449e4a2759a24bd78d302e2c09121fe8024a1ff9d5dcb50e485becf8d3290a8796ec139c6612fabfdc1b3044aa0eebc0444bae286104aa0e69eefb8d2919161ec85b8fc88740645b0e1b19ab8076586cc48c892d70a45b2e849f17fc52756890555bdc272d60c45bcd758b7f98cbee0926fe019759fe56fa088c74783ca0cc563de0beb9c71f86dbabcc028300c45bede6162e3949d80beed96157792e37d7390ea066c58f61e1e3be4032b88da5282177793fc05665bf0160324fd103a8ac85282ff7e45d958a6010d0a45bacc0805e166fb907e0672ace924cc95044b95da06045297b01e04569ab61a044c85a7ef075480bfe169fb6908448fbdf872bad400044888bdc80201cb055185b2da000c4185b1b7ebadb1c485888d9909579887bfd87fb2db150b5683aab7c107e344ce27170852818894adf864b8075587838f88a9ba0355869e07439e908d748bb1054e989972c8064b82937da3c4044b839f7f044b846dc2034f9466094f976ad01cb6e471c50c4f966f9dfa905367dc2df03204418a7fbe035ac8220541887e8fab05448373869c045295759108449453994791503d064d8e4075dcaa0502905862fa074168de34fc7cc1085673c607c32102f6044f71da0b065466d813b5a106656bd5e59b79054876d2e47c044069a5ec144562b0db2c33e37e9244407929d26f84b64f5b2e044a6da9cd06516ab9d801a6017d08526aa0b6c01ffc5d09416dbabca0c12f10cc03517fba0b506bb08c857947a1dfe4720b437f908965bd9e806ca2a20e567fa69e494162905ba3af847899067165959652310c446084679ab78e6a43aad6e10951668c6084686da0af0d567ba7776397c80a13e6483bd205636787475b0a417e98437d0fd2eb6a40054b798809640a162a39f18bb225c40870024f610444737fb31247756993824d1796ddfe436a9dc6565c29f31246796d9e6177a9a05b22fa0766e4029f474f0a576977cc685200aadfc60e7c45498779b3385fafdd7d4b21d4064177797aa0740567526e7c8f106f40737d7d8f24ed43152ac0eb3fdef5155756451e6b23e27a6c8c4f754f5b34287b708a78701f774d404628e866608c783d757d065637228c75637f571a066c8d28b59f27f029614c4b4802a9b9b098004748068b21f52db339c7ed4c24a5670a8b7d5a0b64cf31f709952a82e0e57215604449622d5493c71808581c9b27f521fd2886b15d1457525775d022e447580aa35f3ac8c03ad11160610a5753526ee8e14245261a0e7c736419f8fbfeb466405d2ddc6206515c591aa972055a524b119b07464e210f6874910e404d35ed187acc1e864e5438b2a7804066462de024eb106220987d1293bf65d2127c75dc76d40298c756de16dc1afbabad55b811a422f2f71797a716c7bb8a01d29e753fb27f2711bb27627516b4b61f08131878aa6afae0ca011f10405127caa57afc1b6667810dfe2bc8e18040637314f3edc26c05ea31536e71306b14c4328e427319e1e1988c6d764a3a81521a5c1651f9017c421e6e21bc79552e9b2c971b792676f0c4487ff82e6dd54c3414405328a7f3f9b16c415b0e9132ed04ee24f11d780940522daeea3ca82ecd0640025689ca61084550118e6f7597200852571b88471bdbe1011d024d56034d5f1509515f03436778607e5c0e7d4b1b6b4626f5fc21d6e752cd590f7d5e075021f13fad77542edbe6b2a10c4e52e24d359992422dbc7e5512455bf16402786c483392769201409c0c657c07455afc09f92bdf0f4625f82ecae1258552e62ed6ae8d4f0a412ee120d7b89825fd17065135fa2ab87c03462cfb044c2bfe1707522dfc145021d5044a29ceee0b5622d7fa1eb765768b077a0e433bdbfc197b5ae568e929ab451104492cd2d20b512ecdc1f9eb024333ab8a04512fd0d8105128d4ad856f36c3f102766f0a5be82d074528cd988e25af220a26c9a77b2266bf342a724e17880c4e9ac5a703d6071d9e9625024114846b8ff59708452ab48d5630a1760e796f99cf63ebad6de4d65c09a44d055121ab86200104074d31a45067644e0468079d40095121a77f54f21052f002592b045138ae5e08482b8f5bd90f8a01074b2aa24fedf404034f3b9706503e8e24b07c074d3e846ea3177112413c9f12646b16a290102bb569279c007314055537911b49064a3a911f51e80210040a13558ff34a6a2aa545e404440d6d6208440a6a730a98f31b04ba752a970a510d6c56ff0b09bd54180b510e7e4ae3a59bfc1825bc044e0e79230951007726a328a5604d03431b7806511e6d0b792309450e562e48ee2d9ee90a115b154d7ff82d64dd5a0f610247e63298dfe7cfab5408306d44074f0b5ef81621a8114a0e43c7eaf01576015bf4b17e228e1a040f4a1147d3c4a978335c3cb733a97c0e0c4a1044eeae64440c20b469d40c45174ff3bf20b456b56e52c30d45164ae991f70258d2b3710b4d06511730a374230a411a29a154c70944dda61245133d9834ab761818872c770444dcba50a00a43012d8b365051d09f1d0b430e31841a068e1d2b81060e451c27b7eaf70427a24de68d0040077208386d41feef0a451e2e4b5eb36817389e0456143b7a084115006e162fb2330c41160455eae4e0f5c9d06d560f46161b53cdab5af3caa74ecedf90ca054ee51a5ead0c45e41b17b932810f7dd89ac30e4fe30b1a9ce5f9dca6f3d5632c660b41f113367e2eabf1e3ebf70a76eb0f014fd1d0b1269f0c4deb090549a946daa9015bd40b45e3f521317c055df6d9660751e2f03a113a9f0851edfcc4e3fbd88f1145ecffc5c8a757cd6b2889c3fbae46a346034fe3e10845eee6e3ba208ac4094fe3f8df81e8d96a310a51ecf7cb2a3e98c46f290551ebefaa450451ffc1a20d4ffdc9ba3a75111a06236b3a74094bffc9ba1e0650014d0551e6d286ec0415a1de8b0844fbdc8aee72fdf30a44fadb721470023246c80b4df0df620b2c75f5aa38600c4df1da69e3e1f37ee5cf87d50c76eaa547d7bf063944e37e9f0975f0ad4ad3781d0e220771e3ab5eb53e430871fead2e8eb5ea600a61f3a03f7c3e57af18080b71f4bc0768fa926ec255e1086fcaf51a41af03080565eab4013c0a6ec5b91f0c285c8dfdaa0576d4b11ce3066fc78af4e6b10674d18fe1d2780961cb98feba031c5b320963d58cd089f2b81426076bd498de510f000872c698d768f5b3ef0a61c794ae568dee9e788b0872c59ab02f71f9a20868c594b1180f2e4e0972ca703e2991b408280a6fff26272b326717e5d30976da29331615b08b1a066dfe5932c2830664da64f1d59e0663e651c18a140c63c37ef6b45cdfbee4c141b70a71d36dcd8ca06e6a86180961d26ddf69eccf9aaa0a6fed70ff688d7a1647d4010e0a45d35d8f282978c89fc60651c35ebb1ce4047983168001020945df43b3af264bd25a0641d45592bee60951d94a471be2a7021c0b118c743fbff2620b3245a5311f856572dd79edcb5b7fad96f880e54dbafd5aff4f969d65696e5fb830b5e8a4cac0cbce27cb4d8eabd970f277f421f2fb0a199f2d58cd2f6cde37210b56af0b668ddea40bc96d1c0919e13f529aab65610d0e45a7276d72e2a41adf53df55b6e50975a634144da40f0bfc1061b63f334b75bcac8cdf032e7faa3b1c0f45a0291435324da61af9587ccf54a50447b000090845a2103cfca939e011709c2b29c174d04df26deda10bf7ae1df1144fa611d3ed0578bbc369833104e7b2f872fa9b861755af0de7bfe4b0e477af9e97afea4789ab14c363a804fb1c51bf07fbd7b900eb66bc80e0e3a3eea118cd059087a3b4dedbf046850457be1ad30a4bae1cfb7abb05f875e23e0a954d9e024ddd2fe74fc567151542f559926874806b0c51d7778336330116ed1ef5abd3b8a28d59f0f6d521bc87c885effbf8d077fa8561f9d25e38a4fa357ce7b1856111112cff40f3176f847d7a6c2ca2c1dbbfe803ffa55b8b4d218847e15c9059fa063ae0e203d288d3138f25d4d5b8c1d81141a2e1a61bf1b6bfd95240e485af04f79b0a51b4f39beda71fdc375d0b41a0eebbd576fe5b7aaef31351b6faafd72d275f40f59cbec32d4564dc3d320941b5fc8abcf39c899b0447adf0950e4db8f062e3b7f96deb87b9d23f2d0457a2f56e205aa0d86dc2201cfba9ed78f5da9abd05b3f48a8a8b8e876ea9dd40517cd13e280479a1da40015a0d41b3cf5268d2999980a4fcadaf0b45b9da7f4cb2ca2c4747d70556a9d22d510d47b0d63d282713c39d9e4ec5268040639dfb1c2cd246dab747f81f29deb0459cc84fb687fd1d012685b1ce3011aec527220dcc2700d0e66aceff659d7db8cef27eb3cfb1318dae7d4dd92e3bf4ea970e4393cf06e8b9df350a15c43d11be0152015007448cb43aaff66f027cba01140c449681ef73bdd009f15ec733031d96e9124786bbde343ad0b79ff13616a1c6283504d808508cafe606fb6fd002449a0e7d899bb9fc7c88c604f358d532e10c7d9e87afe911f464f0301bda075699b693a8fe720346889d03438694014c01440951869a60b9f55d486501560943966bca28313908c50a569c68cb250fb9affc37134a977bdd05a3f967ee36e69c5c61afb2a7c42a0c46927aabe99a6967c332e162084e997eaad32730e70a509c60bad70ea8b9dc050f438c7689b497f3516ec316d22619b7095198688c8a917c7fa50a519f6c9169a7ee27350a1046985795429b787ba4b3a4f433f59e700a528c4a63c8e68e7375d307409e5c64b0b0ed09566fd938f9508062d3085668c206dc2018bc0a566bde0bb0ec4f4b63d6074573c33eb4b5ad0b4877fced9968896a7c98770b5269c8ed65bcb1d7533a1b0a566facf05b6d957486130a4771a1ec0339e1709555014f0b5170a5c510aa83db13c1020c4c6bbbd5f8794cdee145678605507fb18cf509447c80b5b0d325149f0b7d52afbda5a6b8a7dd20a1084162b4869d684dad0a56668d8978adbc8575fa0b47689092494456806dbbb903437d8b1051668a78ad8c867570acd4ed779264271043778a56867f6aba84d3eb3016877484094370964a62af924b26065165994f417c0146015b134a796ea1dee15993482717984e0189b9b282560643757786a2c007416e75b4af66a8074f7e7e80b0581a085174678a6c4cb88c034c7266134a7f7b9b25e6456ca4836f7f649e6b3cf42df50e417779668665ab818a7b95530da909564f6970952aee656407564e6a787a983a0313131407414f4f4a28f54d074148435f0dbe94104a44432614659686494b56378e2dff3c0a5649442efc34f3494e1b0841465835e1e1404415414954029bbfb2867a474914b223f92ff039cd104d045158491d09414b5317a93af62ff1041205724c15454932db4723ef068e46593ca496a9b2736d46049a0312037c02121e0c454a24f71e609e59198732e1035742382c4c5e39d4cda44638d00f3840595e452ab50fbf7c432cc299b6bf787c093fc4410f585f4be0026149036a29ef0b465d368caab9b4794c5c0e08524131bfb36b982104120452e608120555ee3e37c67c0213060546520e8725054c571e9e3b0b4056177ca526f6598527ce0a405513694f79756e5c5205534e1f6b5e06434f0d4d23fb09525cf54437ab8b486209564ada401073714f6606044afd29e973084c2fe228ccc610990a1673b66787fddb72aa55094427c53ba9674d22da031273a6037d74a80b5230ee12722bcab1b5712a0212770d4b34e1e039b068679a257e3ddb147d2dc6f8167553d05bf83292401688254e0972460c4b27dfc4fb2dd9a0775b4c5a0e7a07e3e4d2ec067034b69a31a17a10512ec6e7d8a37d75562ea85518541e45045129d8a4104d3bdcba9d38a38a19bb63400b882f960f7d2fde8c62764ef51a666b56179918057d3ca5b247157d32bd935af8d939a4881f44ee02796b08882fcf90044424a98c094320ac8f1c7e2bdbca0e7c30a16d7c7354e15440f02e914801190e7d37ac625ff12657e6308009773e117d39af4424ae4511493a5ae7005d5d19730d7d35a55e0b7d1ad9ae717f2add0a7d3a9941ef04a7005c12074d37825ff0e709064d348b27ddbb094d35863eb27d2cac960b4d3282339107706021ddb10a4d3381166a7f3ba18a0d094d3081064c3a94f7210b7d2c911f57fde1f129904a0b7d0285f7308718a0981833124d0f8dee0b7d36a458e32e92e330941031960c5007706628ac84191eb7693007560a6b7a3188ff06571466451a2204722a5e662143166151c5a09cfb143e8a7a885835b37d17d58d2b6e00e2d3d798cda07b047a19104317642aad6376258a3e8b7793ff12360451017f3f0e4b076f3c871f2aaf3c96400e33800955187e145423bd722e07700e53184cf32f03652972064f085de8349b0b560178fb0723bf5c0c42f90541035ffaea0456154ceb167d2e56c49f694f0020a24ef3eec78d0a61a17b0d3e700544174fd1b50d51064ecb9bf61947e1a26c074b147d1327b25728903c7b1590c8bd44101c66d5ae39074a1024aa43f11f0c411927ad27a46b593e9b2f7d064a122d863f75076a1d3189133c980b57093794ffe63e2dbe57ca12461f346f4ce8dfd63f176f42d5a25cd582f705521a287a5a0f40093778385f33736ade724ddb7d2308501807790334b9260e501b0342ffffebe0cdd66c5ad08d044f100c550b41f2095fa47f2e7b3e4cf70541e00c2bb30850e7172781f5f9c0094bed02326d3987f3ff0e45e10e3042e3d4bd3c8ee7d50800107df00f066eaf59dbb4144cf2be5ba35e0b50e3f60731650572ebdb23086dd5cd393900c0890b28dacddededcf8a23f546f0947e7e8fec5af67e54d0840ffe6f0da411e250c04d4e1ccb2209fc3733f9a800c1dd3e5d995f6d97d21630f77094be3eddd752e98c672194bfdd4ad50e0d199ca82ccecdfb43293cbbfa645b4162c8ad70d60f6d4a95f902a84c991eeece9074de0d0be38760f044bffceab0e47fcca88e5f2eb770f103e0d319a0f57e1c2a1c5a5226517588d00013f5f047df0d48e0f54f4d96f36701b3e65c177387aeefe1e4de6cd78013602fda728201657af140e335a9f3afcba6c7be9d247d77dba274de7c873e9fb9b7ee2c98dcdba2be3e1ad7287d482956ebf2b599eb4c5f393b0a73d5a650203491045fdae75c3a8061059b0479e296a15111245fcad78c57d210c2664edecae1969170e270976e3b75d91295fd46d2a61faa42f84e19f4adc6319003f66a0e1a9236d0a0e355b93e6226d8d7ff9ad2a34ec8cbf99b31ff5b6f60e4afdbd037f3169a91e19335ac2630554fcbd21780855ecbc2b58b91d0c0c41f0b60e387ffed99daa2b601452d2b303082d4990d1bc1c5da006062243d278ea0e56ce9314e1f4a95bbdd384d441aa0754c38ff3fa911b0d4bd0b6fdd96dfeca49be3f7681206dc680ffb016676014080156e2fc88fbb21cacd051200a303d1b80dc2f72c67d05108bdc8cdf066092ab9b73300340c891294adc8cb14bd9a0914da7ebd433d46f102a256d5aebd456d397fe8db1375524fae154c073d96eb7f19c234add8fb93e22bae1263f6ce68f81d04e88b3158f9ab9ed8563fb9aa9f4b3a2a4b19b47234ade8ba41958600fd4731beaee326a1e07e3dc1e83f6858056da2959bde4f8fae3adcf0557c9572f2d0a109a335c6a753e4fbc8103139c3803139f3d0307cc30020f8e0d41de7bf8aa46b4b9b78211a475094fdd6ed190a82150a60749d667cf63f7cd094fdb57c54cad35317b0a7dea40cd739086ee86d4", []);//sign = window.byted_acrawler.sign({url:process.argv[2]});        //此处是与Python代码交互的,下面那行去掉,只是测试用的
sign = window.byted_acrawler.sign({url:"https://www.toutiao.com/c/user/article/?page_type=1&user_id=50025817786&max_behot_time=0&count=20&as=A115EEAF9937AD9&cp=5EF937BAFDE96E1"});
console.log(sign);


已经成功获取到值了,现在只需要拼接一下就可以了,来吧上Python代码

import os
import time
import math
import hashlibdef getHoney():i = math.floor(time.time())e = str('%X' % i)md5 = hashlib.md5()md5.update(str(i).encode('utf-8'))t = str(md5.hexdigest()).upper()if 8 != len(e):return {'as':"479BB4B7254C150",'cp':"7E0AC8874BB0985"}o = t[0:5]n = t[-5:]a = ''r = ''for i in range(5):a += o[i] + e[i]r += e[i + 3] + n[i]return {'as':"A1" + a + e[-3:],'cp':e[0:3] + r + "E1"}def get_signature(url):sign = os.popen('node sign.js {url}'.format(url='"'+url+'"')).read()return url + "&_signature=" + signif __name__ == '__main__':url = 'https://www.toutiao.com/toutiao/c/user/article/?page_type=1&user_id=50025817786&max_behot_time=0&count=20&as={as}&cp={cp}'.format(**getHoney())url = get_signature(url)print(url)


浏览器查看结果。

我们发现短的仍然可以使用,但是对比一下官方的请求就知道他的_signature是长的,而我们得到的是短的,这是为什么呢,是因为他带有Cookie,而我们自己用nodejs模拟的没有Cookie,所以得自己添加个Cookie


设置Cookie后的JS代码:需要安装jsdom,命令:npm i -g jsdom

const jsdom = require("jsdom");
const { JSDOM } = jsdom;
const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`);
window = global;
var document = dom.window.document;
var params = {location:{hash: "#mid=5954781019",host: "www.toutiao.com",hostname: "www.toutiao.com",href: "https://www.toutiao.com/c/user/token/MS4wLjABAAAAvazHMceCo3MeM9IJbll231AC8GkJDcrd__iZFw2hi4o/#mid=5954781019",origin: "https://www.toutiao.com",pathname: "/c/user/token/MS4wLjABAAAAvazHMceCo3MeM9IJbll231AC8GkJDcrd__iZFw2hi4o/",port: "",protocol: "https:",search: "",},navigator:{appCodeName: "Mozilla",appName: "Netscape",appVersion: "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",cookieEnabled: true,deviceMemory: 8,doNotTrack: null,hardwareConcurrency: 4,language: "zh-CN",languages: ["zh-CN", "zh"],maxTouchPoints: 0,onLine: true,platform: "Win32",product: "Gecko",productSub: "20030107",userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",vendor: "Google Inc.",vendorSub: "",},"screen":{availHeight: 1040,availLeft: 0,availTop: 0,availWidth: 1920,colorDepth: 24,height: 1080,pixelDepth: 24,width: 1920,}
};
Object.assign(window,params);
function setCookie(name, value, seconds) {seconds = seconds || 0;var expires = "";if (seconds != 0 ) {var date = new Date();date.setTime(date.getTime()+(seconds*1000));expires = "; expires="+date.toGMTString();}document.cookie = name+"="+escape(value)+expires+"; path=/";
}
cookies = "ttcid=905d4227745d4bc5b1012b141030a03424;WEATHER_CITY=%E5%8C%97%E4%BA%AC;SLARDAR_WEB_ID=2ad88390-74f4-4d16-88c3-adec28511963;csrftoken=a36cc765af3273df681c6f2f75562aa6;tt_webid=6844026241293796877;s_v_web_id=verify_kc1k6wcz_8JdlB4ZI_DPn1_432W_Aeul_xMWqTd1IsSTX;__tasessionId=pj1440jfa1593499051248;tt_webid=6844026241293796877;tt_scid=RM8rNVkofFuscNNX1nWIA4R-3D37E1ppsjECemd.JlDHff9foJSV1v0TdLcHwOV2c364";
for(let cookie of cookies.split(";")){tmp = cookie.split("=");setCookie(tmp[0],tmp[1],1800);
}
window.document = document;var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(f) {return typeof f
}
: function(f) {return f && "function" == typeof Symbol && f.constructor === Symbol && f !== Symbol.prototype ? "symbol" : typeof f
}
;
TAC = function() {...      //被限制字数了,所以这里省略了,你们复制之前的JS代码,或者自己按照我的方式把代码扣下来就可以了。
}
window.byted_acrawler && window.byted_acrawler.init({aid: 24,dfp: true
});//sign = window.byted_acrawler.sign({url:process.argv[2]});     //此处是与Python代码交互的,下面那行去掉,只是测试用的
sign = window.byted_acrawler.sign({url:"https://www.toutiao.com/toutiao/c/user/article/?page_type=1&user_id=50025817786&max_behot_time=0&count=20&as=A105BEFFDA2F4FB&cp=5EFA3F44EF5B2E1"});
console.log(sign);

运行后发现有错误提示,没事,注释掉他就可以了。



长的_signature不就出来了吗,你们只需要修改JS文件即可,Python文件不用修改。来看看结果。


Python代码:

import os
import time
import math
import hashlib
import requestsdef getHoney():i = math.floor(time.time())e = str('%X' % i)md5 = hashlib.md5()md5.update(str(i).encode('utf-8'))t = str(md5.hexdigest()).upper()if 8 != len(e):return {'as':"479BB4B7254C150",'cp':"7E0AC8874BB0985"}o = t[0:5]n = t[-5:]a = ''r = ''for i in range(5):a += o[i] + e[i]r += e[i + 3] + n[i]return {'as':"A1" + a + e[-3:],'cp':e[0:3] + r + "E1"}def get_signature(url):sign = os.popen('node sign.js {url}'.format(url='"'+url+'"')).read()return "&_signature=" + signif __name__ == '__main__':headers = {'Referer':'https://www.toutiao.com/','authority': 'www.toutiao.com','method': 'GET','path': '/c/user/article/?page_type=1&user_id=50025817786&max_behot_time=0&count=20&as=A1353EDF6CD73B8&cp=5EFCE7435B08EE1&_signature=_02B4Z6wo00f01Uqk1TwAAIBCtVsqwfqSjaVKptGAAAxWvpbZsM2s5i5SDopBRRN1gepc-oLFZ8U7Sg2NxBIeNQxLFHV3oh7OToF-gGDJmcow5ga1WH.fUY8D-3hDrs2d48np9GmwK93teS-03c','scheme': 'https','accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','accept-encoding': 'gzip, deflate, br','accept-language': 'zh-CN,zh;q=0.9','cache-control': 'max-age=0','cookie': 'WEATHER_CITY=%E5%8C%97%E4%BA%AC; csrftoken=c4160cf9a6a4d887adb7f784849a0c5e; ttcid=864839082b36468fa1d79a09b162fb7b11; SLARDAR_WEB_ID=bf374b0c-5f61-48cd-8140-77596a21cbb3; tt_webid=6842259247737308686; tt_webid=6842259247737308686; tt_scid=CTNNhi4a9y5GvhqNIYxZxtHrnN7ojIrl4QTuVtVX-VhtAhpBJ4.OsRum6BSf9d7N5de9','sec-fetch-dest': 'document','sec-fetch-mode': 'navigate','sec-fetch-site': 'none','sec-fetch-user': '?1','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}base_url = 'https://www.toutiao.com/toutiao'param = '/c/user/article/?page_type=1&user_id=50025817786&max_behot_time=0&count=20&as={as}&cp={cp}'.format(**getHoney())base_url += paramsignature = get_signature(base_url).replace('\n','')path = param + signatureheaders['path'] = pathurl = base_url + signatureresponse = requests.get(url=url,headers=headers)print(response.text)

声明:本文仅供学习交流使用,请勿用于商业用途,违者后果自负。

Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法(2020-6-29版)相关推荐

  1. python3 爬取今日头条文章(巧妙避开as,cp,_signature)

    使用环境: python3 scrapy win10 爬取思路 (一)关于as.cp的生成与_signature的想法 对于今日头条的爬虫,网上搜索出来的文章大多是基于崔庆才(通过搜索爬取美女街拍的方 ...

  2. 博客搬家系列(六)-爬取今日头条文章

    博客搬家系列(六)-爬取今日头条文章 一.前情回顾 博客搬家系列(一)-简介:https://blog.csdn.net/rico_zhou/article/details/83619152 博客搬家 ...

  3. python分析并爬取今日头条的视频链接

    如题,分析并爬取今日头条的视频链接 代码仅供交流使用 一.分析 1.进入现在的官网http://www.365yg.com/,然后通过抓包发现首页数据的走向,一般来说首页数据放在网页中,要不然就是用j ...

  4. Python3 爬取今日头条(模拟ajax请求)

    Python3 爬取今日头条(模拟ajax请求) 注:本文是跟据博主崔庆才的博客来写的,不单单是思路值得学习,还有代码规范更值得去学习.路漫漫其修远兮,吾将上下而求索. 新建一个config.py文件 ...

  5. [爬虫笔记01] Ajax爬取今日头条文章

    1.爬取分析 我们首先打开今日头条,搜索"罗志祥" 打开浏览器的开发者工具,红色框中就是我们请求到的数据 将搜索界面的滚动条滑到底,在开发者工具中就可以看到所有请求到的数据,加上前 ...

  6. java爬取今日头条文章

    闲来无事,写了个爬虫爬取今日头条的文章信息,然后使用ECharts展示出统计结果. 那么怎样爬取今日头条的信息呢? 首先,分析头条页面 文章是通过ajax获取的 所以要找到调用的url,然后跟踪代码查 ...

  7. 用python爬取头条文章_AI第四课:Python爬取今日头条文章

    到目前为止,能使用python写一点简单的程序了,本次的任务是爬取今日头条的文章信息. 大致涉及的知识点:json数据格式,浏览器插件jsonView,浏览器开发者模式,html基础,http代理,h ...

  8. 今日头条python_GitHub - a57571735/headlines_today: 基于Python的爬取今日头条文章及视频...

    分析所抓到的文章列表数据包:大致分为两类,一类是有视频的文章,一类则是没有视频的文章. 有视频的文章json内容里均有video_id这个key,如下图所示: 没有视频的文章:json文件内容均包含t ...

  9. python爬虫爬今日头条_GitHub - striver-ing/headlines_today: 基于Python的爬取今日头条文章及视频...

    分析所抓到的文章列表数据包:大致分为两类,一类是有视频的文章,一类则是没有视频的文章. 有视频的文章json内容里均有video_id这个key,如下图所示: 没有视频的文章:json文件内容均包含t ...

最新文章

  1. 巨头抱团后 奢侈品电商还有前途吗?
  2. canvas arcTo()用法详解 – CodePlayer
  3. Mac下github的使用
  4. 102 二叉树层序遍历
  5. mahout贝叶斯分类器测试样例
  6. 容器源码解析之LinkedHashMap(九)
  7. SAP CRM my task 6个roundtrip的原理讲解
  8. 锁定计算机在哪里设置方法,怎样锁定电脑?如何设置电脑锁屏【步骤详解】
  9. (49)FPGA线性单驱动(wire型)
  10. oracle中的多表连接
  11. border做三角符号
  12. php创建ceph桶,手动部署ceph jewel
  13. QTcpSocket简单使用
  14. 《FLUENT 14流场分析自学手册》——2.4 FLUENT14.5的功能模块和分析过程
  15. flash 林度_还记得闪客帝国吗?当年有名的 Flash 作者们,现在都去哪儿了?......
  16. 千层浪软件下载_千层浪视频软件app
  17. 关于dumper和mysqldump的
  18. WPS-系统右键:开启后无法显示
  19. NodeJs之邮件(email)发送
  20. 西门子PC ADAPTER USB A2无法连接PLC的坑

热门文章

  1. 4年4篇顶刊顶会论文 清华开源肖像线条画生成代码,惟妙惟肖模仿人类作画
  2. AndroidStudio 快捷键格式化代码
  3. 安徽基础教育资源应用平台.html,安徽省基础教育资源应用平台
  4. 华为软件测试工程师分享的自动化测试经验,纯干货!
  5. Object方法实践之对象数组转化
  6. php接受get参数乱码,如何解决php get 参数乱码问题,php中文乱码解决办法
  7. catia曲面扫掠命令详解_扫掠曲面在CATIA曲面造型中的应用
  8. 输入月份,输出对应的季节(春夏秋冬)
  9. 南瑞服务器在线客服,国电南瑞服务器NSC332远动通讯管理器
  10. 实用教程 | 03—合并:字幕与视频合并