├── another_script ├── test_small_fragment.js ├── res_json.json ├── fuck_js.html ├── pinduoduo.py ├── pdd.py └── SearchGoods - 副本.vue ├── .idea ├── .gitignore ├── vcs.xml ├── inspectionProfiles │ └── profiles_settings.xml ├── modules.xml ├── misc.xml └── pdd_spider.iml ├── Workplace ├── chromedriver.exe ├── chromedriver.py ├── get_anticontent.html ├── instruction.md ├── pdd_不登录.py ├── pdd_登录.py └── 上次可用的文件 │ └── pdd_登录_bk.py ├── 源文件 └── 测试.js ├── 别人的 ├── pdd.py └── antiContent_Js.js └── README.md /another_script/test_small_fragment.js: -------------------------------------------------------------------------------- 1 | fuck_l[n[v("0xf5", "eVth")]](u[v("0xe4", "BHlB")]("")) -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /workspace.xml 3 | # Default ignored files 4 | /workspace.xml -------------------------------------------------------------------------------- /Workplace/chromedriver.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jynvch/pdd_spider/HEAD/Workplace/chromedriver.exe -------------------------------------------------------------------------------- /源文件/测试.js: -------------------------------------------------------------------------------- 1 | window._plt = [ 2 | ["tm", "ps", 1564718639663], 3 | ["tm", "fp", 1564718675941], 4 | ]; -------------------------------------------------------------------------------- /another_script/res_json.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jynvch/pdd_spider/HEAD/another_script/res_json.json -------------------------------------------------------------------------------- /Workplace/chromedriver.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | 3 | browser = webdriver.Chrome() 4 | browser.get('http://mobile.yangkeduo.com/search_result.html?search_key=%E6%9C%88%E9%A5%BC') -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /another_script/fuck_js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | inverse_js 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Workplace/get_anticontent.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | inverse_js 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/pdd_spider.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /Workplace/instruction.md: -------------------------------------------------------------------------------- 1 | # 拼多多js解密 2 | const getContent = (search_key, P, F, next_scrollTop_timestamp, user_agent, _nano_fp) => { 3 | 4 | ### search_key 5 | 搜索关键词. e.g. '月饼' 6 | 7 | ### P 8 | 1564808831636 9 | 当前时间的时间戳, 13位数字 10 | 11 | ### F 12 | 另一个时间戳, 在P的基础上加20秒, 13位数字 13 | 14 | ### next_scrollTop_timestamp 15 | 这是python实现的next_scrollTop_timestamp参数的值, 其中E是另一个时间戳, 在P的基础上加10秒, 13位数字 16 | P E F 的值不随翻页而改变 17 | 18 | def yield_scrollTop_timestamp(): 19 | data = [ 20 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E}, 21 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E}, 22 | ] 23 | while True: 24 | yield data 25 | data = data[-1:] # 截取最后一个,作为下一次的第一个值 26 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E}) 27 | 28 | 第一次请求 传入下面这个数组即可 29 | [{'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E}, 30 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E}] 31 | 32 | 以后每次请求, 数组第一个值为上一次的最后一个值, 第二个值的scrollTop加3000, timestamp用当前时间戳-E即可 33 | 34 | 35 | ### user_agent 36 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" 37 | 传入请求头里的user_agent即可 38 | 39 | 40 | ### _nano_fp 41 | "Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L" 42 | 传入cookie里_nano_fp的值 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /another_script/pinduoduo.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import re 3 | import execjs 4 | from urllib.request import quote # py3: from urllib import quote 会失败 5 | 6 | headers = { 7 | 'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " 8 | "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36" 9 | } 10 | with open('get_anticontent.js', 'r', encoding='utf-8') as f: 11 | js = f.read() 12 | 13 | key_name = quote('情侣衣服') # 搜索的关键字 14 | url = 'http://yangkeduo.com/search_result.html?search_key=' + key_name 15 | 16 | response = requests.get(url, headers=headers) 17 | list_id = re.search('"listID":"([^"]+)"', response.text).group(1) 18 | flip = re.search('"flip":"([^"]+)"', response.text).group(1) 19 | 20 | ctx = execjs.compile(js) 21 | anti_content = ctx.call('get_anti', url) 22 | # 获取下一页 23 | next_url = 'http://apiv3.yangkeduo.com/search?page={0}&size=50&sort=default&requery=0&list_id={1}&q={2}&flip={3}&anti_content={4}&pdduid=0' 24 | # 获取下一页的参数有这几个,其中第一个参数为页数,最后一个参数为加密参数,其他的从搜索页第一页获取,上面代码获取,都是不变的 25 | r = requests.get(next_url.format(2, list_id, key_name, flip, anti_content), headers=headers) 26 | print(r.text) 27 | 28 | # 不断获取下一页 29 | # def get_next_page(page, url): 30 | # ctx = execjs.compile(js) 31 | # anti_content = ctx.call('get_anti', url) # 每一页的anti-content 都不一样 32 | # url = next_url.format(page, list_id, key_name, flip, anti_content) 33 | # r = requests.get(url, headers=headers) 34 | # for item in r.json()['items']: 35 | # print(item) 36 | # 37 | # 38 | # for i in range(2, 11): 39 | # get_next_page(i, url) 40 | -------------------------------------------------------------------------------- /别人的/pdd.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from lxml import etree 3 | import json 4 | import urllib.parse 5 | from antiContent_Js import js 6 | import execjs 7 | 8 | 9 | def get_next_msg(html): 10 | parse_html = etree.HTML(html) 11 | data = json.loads(parse_html.xpath('//script[@id="__NEXT_DATA__"]/text()')[0]) 12 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \ 13 | data['props']['pageProps']['data']['ssrListData']['flip'] 14 | req_params = dict(json.loads(req_params), **{"flip": flip}) 15 | return req_params 16 | 17 | 18 | def get_anticontent(q): 19 | ctx = execjs.compile(js) 20 | anti_content = ctx.call('result', q) 21 | return anti_content 22 | 23 | 24 | def get_json_msg(session, req_params): 25 | url = "http://mobile.yangkeduo.com/proxy/api/search" 26 | headers = { 27 | 'Host': 'mobile.yangkeduo.com', 28 | 'Connection': 'keep-alive', 29 | 'AccessToken': '', 30 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 31 | 'VerifyAuthToken': 'oUa4c7ABPA_2S-6i_70a6w', 32 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 33 | 'Accept': '*/*', 34 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(req_params['q']), 35 | 'Accept-Encoding': 'gzip, deflate', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | 'Cookie': 'api_uid=rBUoFl0B72BSXB6ppHvaAg==' 38 | 39 | } 40 | flip_temp = '' 41 | for page in range(2, 5): 42 | anti_content = get_anticontent(headers['Referer']) 43 | params = dict(req_params, **{"anti_content": anti_content, "pdduid": ""}) 44 | params['page'] = page 45 | if page != 2: 46 | params['flip'] = flip_temp 47 | res = session.get(url, headers=headers, params=params) 48 | # print(res.text) 49 | flip_temp = res.json()['flip'] 50 | with open('res_json.json', 'a', encoding='GBK') as f: 51 | f.write(res.text) 52 | f.write('\n\n') 53 | 54 | 55 | def get_data(): 56 | session = requests.session() 57 | url = "http://mobile.yangkeduo.com/search_result.html?search_key=学生文具用品笔" 58 | headers = { 59 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 60 | 'Accept-Encoding': 'gzip, deflate', 61 | 'Accept-Language': 'zh-CN,zh;q=0.9', 62 | 'Connection': 'keep-alive', 63 | 'Host': 'mobile.yangkeduo.com', 64 | 'Upgrade-Insecure-Requests': '1', 65 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' 66 | } 67 | res = session.get(url, headers=headers) 68 | req_params = get_next_msg(res.text) 69 | # print(req_params) 70 | get_json_msg(session, req_params) 71 | 72 | 73 | if __name__ == '__main__': 74 | get_data() 75 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # pdd_spider 2 | 通过requests方式请求获得拼多多h5页面异步加载的信息, 3 | http://mobile.yangkeduo.com/search_result.html?search_key=%E6%9C%88%E9%A5%BC 4 | 5 | 查找加密位置: 6 | 7 | [找加密位置](https://sergiojune.com/2019/03/26/pinduoduo_anti_content/) 8 | 9 | [通过F11逐步查找](https://www.cnblogs.com/pupilheart/p/11065797.html) 10 | 11 | 在GoodList.js下搜 getAntiContent, 12 | 在case 0到case 4之间他已经加密完成了, 13 | 接下来就再一次在case 0到case 4之间一直按F11观察情况了。 14 | 在GoodList.js的第482行, 进入RiskControl.js 15 | case 3: 16 | return t = e.sent, 17 | e.abrupt("return", t.messagePackSync()); 18 | 此时e的值为 19 | e = { 20 | arg: Dt {} 21 | delegate: null 22 | done: false 23 | method: "next" 24 | next: 3 25 | prev: 3 26 | sent: Dt {} 27 | tryEntries: (2) [{…}, {…}] 28 | _sent: Dt {} 29 | __proto__: Object 30 | } 31 | 然后按着按着就来到了RiskControl.js的1260行 32 | Dt[v("0x108", "([hh")][v("0x109", "*B)d")] = function() { // v("0x108", "([hh")为prototype, v("0x109", "*B)d")为messagePackSync 33 | var t = {}; 34 | return t[v("0x10a", "Tadf")] = function(t, n) { 35 | return t(n) 36 | } 37 | 38 | RiskControl.js里 39 | 13个变量大部分都是在第一页的时候执行了初始化, 翻页的时候不再初始化, 40 | 有几个变量是每次都初始化一次, 41 | Dt[v("0xff", "%ilK")][v("0x100", "@!cA")] = function(t) { // v("0xff", "%ilK")为prototype,v("0x100", "@!cA")为updateServerTime 42 | F = G[m](), 43 | P = t 44 | } 45 | 46 | 涉及到js解密, 主要解决anti_content参数 47 | 简单说一下 这个算法: 它获取了href,push,屏幕宽高,打开网页的时间,当前时间戳,使用math随机生成一个与时间有关的字符串,Referer,User-Agent 等等, 48 | 49 | 拼多多策略修改, 列表页及搜索页都需要在请求头中加 'AccessToken': "登录后的 token", 才可以访问!!! 50 | 或者 IP 质量较好,直接访问也是可以获取数据的!!! 51 | 拼多多对请求的请求头检查比较严格 52 | 如图 ,我见过拼多多所有系列都是用的同一套加密方式,有个0a开头。加密是他自己写的一套加密方式,涉及到的加密参数有:鼠标点击位置、href、ua、cookie和时间戳 53 | 54 | { 55 | key: "initRiskController", 56 | value: function() { 57 | this.riskControlCrawler || (this.riskControlCrawler = new n.a({ 58 | serverTime: this.serverTime, 59 | _2827c887a48a351a: !1 60 | }), 61 | this.riskControlCrawler.init()) 62 | } 63 | } 64 | 爬虫控制风险,看名字就知道不简单,这里先做了一次初始化,初始化的时候记录了一个serverTime的时间戳,而且以后的每一次下拉页面都有拿时间作比较.等等… 65 | 66 | js破解之再战pdd(搜索商品列表页anti_content参数破解)(不是吧,好像历时一天多就凉了?) 67 | 2019-07-01 测试发现,单个ip若首次使用示例py代码调用为不成功时,此时使用浏览器访问搜索链接则需要登录,此时用户完成登录,后再使用py示例代码调用则正确返回数据。(猜测ip与用户登录态存在某些权重绑定,欢迎大家测试)(测试环境为本机ip,本机chrome浏览器) 68 | 2019-07-05 测试发现,首先用浏览器成功访问一下pdd的搜索,不管是登录也好,滑块也罢,只要浏览器能成功展示页面,此时使用py代码调用亦可成功。(还是猜测ip存在某些权重绑定,需要验证一下)(测试环境为本机ip,本机chrome浏览器) 69 | 特殊说明:本人测试同一anti_content有效调用次数为2次,目前ip限制较为严重,但代理不在本文讨论之列,请合理安排策略 70 | 71 | 嗯,最近跟风在看pdd的那个anti参数,扣代码的各位有没有头大😂。大致看了一下,随便说两句,仿照webpackJsonp打包的方式,去处理模块,保留那个i函数和数组内好像大约19个函数,这样就不用考虑模块间的引用问题,处理下异常就好了,也就是url,cookie和一个浏览器宽高的数值,然后找到目标模块,把目标函数的返回值return出来,也就达到所谓的秒破效果了。 72 | 73 | 增加浏览器scrollTop和一个timestamp检测,scrollTop就不说了,稍微提一下timestamp,timestamp是触发ajax时的一个Date.now()-J的差值(ps:J的值为js加载的时候记录的一个时间戳也是由Date.now()得到),类似于这样 74 | var st = {}; 75 | st['data'] = [ 76 | {"scrollTop": 1.5, "timestamp": 954}, 77 | {"scrollTop": 13.5, "timestamp": 966}, 78 | {"scrollTop": 43.5, "timestamp": 1015}, 79 | {"scrollTop": 174, "timestamp": 1029}, 80 | {"scrollTop": 457.5, "timestamp": 1055}]; 81 | 82 | 83 | 参考文章: 84 | https://zhuanlan.zhihu.com/p/64242695 85 | https://blog.csdn.net/weixin_44472296/article/details/92181707 86 | [Js解密](https://sergiojune.com/2019/04/10/how_to_code/) 87 | 88 | -------------------------------------------------------------------------------- /another_script/pdd.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from lxml import html 3 | import json 4 | import urllib.parse 5 | import execjs 6 | 7 | """ 8 | 使用基于 Token 的身份验证方法,大概的流程是这样的: 9 |   1. 客户端使用用户名跟密码请求登录 10 |   2. 服务端收到请求,去验证用户名与密码 11 |   3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 12 |   4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 13 |   5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 14 |   6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 15 | 16 |   总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了, 17 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。 18 | """ 19 | cookies = { 20 | ' PDDAccessToken': 'TS3PENFODKSZRTJVRK6MJ6INWF6WYXWLV2TDIUVUSQIINQJ5TKGQ102e177', 21 | ' _nano_fp': 'Xpdjn0Tolp9JnqTqXT_00tbGBlJQr7tqieXhl6_1', 22 | 'api_uid': 'rBQFFF09DZ2SYjQcFPR2Ag==', 23 | ' goods_detail': 'goods_detail_xvWOXv', 24 | ' goods_detail_mall': 'goods_detail_mall_Omt5sQ', 25 | ' msec': '1800000', 26 | ' pdd_user_id': '4277963319009', 27 | ' pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA', 28 | ' ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36', 29 | ' webp': '1', 30 | } 31 | 32 | 33 | def get_anticontent(q): # 只需要传一个 搜索页的 url 即可 34 | # ctx = execjs.compile(js) 35 | # anti_content = ctx.call('result', q) 36 | anti_content = input("输入anti_content: ") 37 | return anti_content 38 | 39 | 40 | def query_second_page(session, req_params): 41 | url = "http://mobile.yangkeduo.com/proxy/api/search" 42 | headers = { 43 | 'Accept': '*/*', 44 | 'Accept-Encoding': 'gzip, deflate', 45 | 'Accept-Language': 'zh-CN,zh;q=0.9', 46 | 'AccessToken': 'TS3PENFODKSZRTJVRK6MJ6INWF6WYXWLV2TDIUVUSQIINQJ5TKGQ102e177', 47 | 'Connection': 'keep-alive', 48 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 49 | 'Host': 'mobile.yangkeduo.com', 50 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(req_params['q']), 51 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 52 | 'VerifyAuthToken': 'c0dZLte5V81nRIainPtbRw', 53 | } 54 | flip_temp = '' 55 | anti_content = get_anticontent(headers['Referer']) 56 | for page in range(2, 3): 57 | # print('anti_content', anti_content) 58 | params = dict(req_params, **{"anti_content": anti_content}) 59 | params['page'] = page 60 | if page != 2: 61 | params['flip'] = flip_temp 62 | print('params', params) 63 | res = session.get(url, headers=headers, params=params) 64 | print(res.status_code, res.text) 65 | flip_temp = res.json()['flip'] 66 | with open('res_json.json', 'a', encoding='GBK') as f: 67 | f.write(res.text) 68 | f.write('\n\n') 69 | 70 | 71 | def query_first_page(): 72 | session = requests.session() 73 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key=月饼' 74 | headers = { 75 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 76 | 'Accept-Encoding': 'gzip, deflate', 77 | 'Accept-Language': 'zh-CN,zh;q=0.9', 78 | 'Connection': 'keep-alive', 79 | 'Host': 'mobile.yangkeduo.com', 80 | 'Upgrade-Insecure-Requests': '1', 81 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 82 | } 83 | session.cookies.update(cookies) 84 | res = session.get(url, headers=headers) 85 | tree = html.fromstring(res.text) 86 | # with open('first_page.html', 'w', encoding='utf-8') as f: 87 | # f.write(res.text) 88 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0]) 89 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \ 90 | data['props']['pageProps']['data']['ssrListData']['flip'] 91 | req_params = dict(json.loads(req_params), **{"flip": flip}) 92 | query_second_page(session, req_params) 93 | 94 | 95 | if __name__ == '__main__': 96 | query_first_page() 97 | # with open('get_anticontent.js', encoding='utf-8') as f: 98 | # js = f.read() 99 | # ctx = execjs.compile(js) 100 | # anti_content = ctx.call('start') 101 | -------------------------------------------------------------------------------- /Workplace/pdd_不登录.py: -------------------------------------------------------------------------------- 1 | """ 2 | 不登陆 3 | """ 4 | import os 5 | import time 6 | 7 | import requests 8 | from lxml import html 9 | import json 10 | import urllib.parse 11 | import execjs 12 | 13 | """ 14 | 使用基于 Token 的身份验证方法,大概的流程是这样的: 15 |   1. 客户端使用用户名跟密码请求登录 16 |   2. 服务端收到请求,去验证用户名与密码 17 |   3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 18 |   4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 19 |   5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 20 |   6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 21 | 22 |   总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了, 23 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。 24 | """ 25 | cookies = { 26 | '_nano_fp': 'Xpdjn0EylpgxX0TblT_Ck2gblydHufJpSZGHsEc7', 27 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==', 28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36', 29 | 'webp': '1', 30 | } 31 | headers = { 32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 33 | 'Accept-Encoding': 'gzip, deflate', 34 | 'Accept-Language': 'zh-CN,zh;q=0.9', 35 | 'Cache-Control': 'no-cache', 36 | 'Connection': 'keep-alive', 37 | 'Host': 'mobile.yangkeduo.com', 38 | 'Upgrade-Insecure-Requests': '1', 39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 40 | } 41 | 42 | 43 | def get_anticontent(search_key, cookie_dict, user_agent): 44 | with open('get_anticontent.js', encoding='utf-8') as f: 45 | js = f.read() 46 | ctx = execjs.compile(js) 47 | # 处理cookie_dict, 转为cookie_arr 48 | cookie_arr = [] 49 | for key, value in cookie_dict.items(): 50 | cookie_arr.append(' ' + key + '=' + value) 51 | print('传入js的参数', 'search_key:', search_key) 52 | print('传入js的参数', 'cookie_arr:', cookie_arr) 53 | print('传入js的参数', 'user_agent:', user_agent) 54 | anti_content = ctx.call('getContent', search_key, cookie_arr, user_agent) 55 | return anti_content 56 | 57 | 58 | def query_second_page(key, session, req_params): 59 | headers.update({ 60 | 'Accept': '*/*', 61 | 'AccessToken': '', 62 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 63 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key), 64 | 'VerifyAuthToken': 'rKx3sBDN7CtHa3-bn--g_A', 65 | }) 66 | session.cookies.update(cookies) 67 | flip_temp = '' 68 | for page in range(2, 10): 69 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent']) 70 | # anti_content = input("请输入anti_content:") 71 | req_params.update({"anti_content": anti_content}) 72 | req_params['page'] = page 73 | if page != 2: 74 | req_params['flip'] = flip_temp 75 | print('第 {} 页的请求头 '.format(page), req_params) 76 | url = "http://mobile.yangkeduo.com/proxy/api/search" 77 | while True: 78 | try: 79 | res = session.get(url, headers=headers, params=req_params) 80 | except Exception as e: 81 | print('出现异常') 82 | print(e) 83 | time.sleep(5) 84 | else: 85 | if res.status_code != 200: 86 | print(res.status_code, res.json()) 87 | time.sleep(5) 88 | else: 89 | break 90 | 91 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie']) 92 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text) 93 | flip_temp = res.json()['flip'] 94 | # with open('res_json.json', 'a', encoding='GBK') as f: 95 | # f.write(res.text) 96 | # f.write('\n\n') 97 | time.sleep(5) 98 | 99 | 100 | def query_first_page(key): 101 | session = requests.session() 102 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key) 103 | res = session.get(url, headers=headers) 104 | tree = html.fromstring(res.text) 105 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0]) 106 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \ 107 | data['props']['pageProps']['data']['ssrListData']['flip'] 108 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 0}) 109 | return session, req_params 110 | 111 | 112 | def query(key): 113 | session, req_params = query_first_page(key) 114 | query_second_page(key, session, req_params) 115 | 116 | 117 | if __name__ == '__main__': 118 | search_key = "月饼" 119 | query(search_key) 120 | 121 | # with open('get_anticontent.js', encoding='utf-8') as f: 122 | # js = f.read() 123 | # os.environ['EXECJS_RUNTIME'] = "Node" 124 | # ctx = execjs.compile(js) 125 | # anti_content = ctx.call('start') 126 | -------------------------------------------------------------------------------- /Workplace/pdd_登录.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | 4 | import requests 5 | from lxml import html 6 | import json 7 | import urllib.parse 8 | import execjs 9 | 10 | """ 11 | 使用基于 Token 的身份验证方法,大概的流程是这样的: 12 |   1. 客户端使用用户名跟密码请求登录 13 |   2. 服务端收到请求,去验证用户名与密码 14 |   3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 15 |   4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 16 |   5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 17 |   6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 18 | 19 |   总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了, 20 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。 21 | """ 22 | cookies = { 23 | 'PDDAccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', 24 | '_nano_fp': 'Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L', 25 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==', 26 | 'pdd_user_id': '4277963319009', 27 | 'pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA', 28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36', 29 | 'webp': '1', 30 | } 31 | headers = { 32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 33 | 'Accept-Encoding': 'gzip, deflate', 34 | 'Accept-Language': 'zh-CN,zh;q=0.9', 35 | 'Cache-Control': 'no-cache', 36 | 'Connection': 'keep-alive', 37 | 'Host': 'mobile.yangkeduo.com', 38 | 'Upgrade-Insecure-Requests': '1', 39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 40 | } 41 | 42 | P = int(time.time() * 1000) - 20 * 1000 43 | E = P + 10 * 1000 44 | F = P + 20 * 1000 45 | 46 | 47 | def yield_scrollTop_timestamp(): 48 | data = [ 49 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E}, 50 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E}, 51 | ] 52 | while True: 53 | yield data 54 | data = data[-1:] # 截取最后一个,作为下一次的第一个值 55 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E}) 56 | 57 | 58 | next_scrollTop_timestamp = yield_scrollTop_timestamp() 59 | 60 | 61 | def get_anticontent(search_key, cookie_dict, user_agent): 62 | with open('get_anticontent.js', encoding='utf-8') as f: 63 | js = f.read() 64 | ctx = execjs.compile(js) 65 | 66 | scrollTop_timestamp = next(next_scrollTop_timestamp) 67 | 68 | print('传入js的参数', 'search_key:', search_key) 69 | print('传入js的参数', 'P:', P) 70 | print('传入js的参数', 'F:', F) 71 | print('传入js的参数', 'scrollTop_timestamp:', scrollTop_timestamp) 72 | print('传入js的参数', 'user_agent:', user_agent) 73 | print('传入js的参数', '_nano_fp:', cookie_dict['_nano_fp']) 74 | 75 | anti_content = ctx.call('getContent', 76 | search_key, # 查询关键词 77 | P, # 时间戳 78 | F, # 时间戳 79 | scrollTop_timestamp, # 向下滚动 80 | user_agent, # UA 81 | cookie_dict['_nano_fp']) 82 | return anti_content 83 | 84 | 85 | def query_second_page(key, session, req_params): 86 | headers.update({ 87 | 'Accept': '*/*', 88 | 'AccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', # 貌似跟cookie里的PDDAccessToken一样 89 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 90 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key), 91 | 'VerifyAuthToken': 'UyLUw5WRIhP4WmEG_anvLw', 92 | }) 93 | session.cookies.update(cookies) 94 | flip_temp = '' 95 | for page in range(2, 25): 96 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent']) 97 | # anti_content = input("请输入anti_content:") 98 | req_params.update({"anti_content": anti_content}) 99 | req_params['page'] = page 100 | if page != 2: 101 | req_params['flip'] = flip_temp 102 | print('第 {} 页的请求头 '.format(page), req_params) 103 | url = "http://mobile.yangkeduo.com/proxy/api/search" 104 | res = session.get(url, headers=headers, params=req_params) 105 | 106 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie']) 107 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text) 108 | flip_temp = res.json()['flip'] 109 | print(end='\n\n') 110 | # with open('res_json.json', 'a', encoding='GBK') as f: 111 | # f.write(res.text) 112 | # f.write('\n\n') 113 | time.sleep(3) 114 | 115 | 116 | def query_first_page(key): 117 | session = requests.session() 118 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key) 119 | res = session.get(url, headers=headers, cookies=cookies) 120 | tree = html.fromstring(res.text) 121 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0]) 122 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \ 123 | data['props']['pageProps']['data']['ssrListData']['flip'] 124 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 4277963319009}) 125 | print(req_params) 126 | return session, req_params 127 | 128 | 129 | def query(key): 130 | session, req_params = query_first_page(key) 131 | query_second_page(key, session, req_params) 132 | 133 | 134 | if __name__ == '__main__': 135 | search_key = "饼干" 136 | query(search_key) 137 | 138 | # with open('get_anticontent.js', encoding='utf-8') as f: 139 | # js = f.read() 140 | # os.environ['EXECJS_RUNTIME'] = "Node" 141 | # ctx = execjs.compile(js) 142 | # anti_content = ctx.call('start') 143 | -------------------------------------------------------------------------------- /Workplace/上次可用的文件/pdd_登录_bk.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | 4 | import requests 5 | from lxml import html 6 | import json 7 | import urllib.parse 8 | import execjs 9 | 10 | """ 11 | 使用基于 Token 的身份验证方法,大概的流程是这样的: 12 |   1. 客户端使用用户名跟密码请求登录 13 |   2. 服务端收到请求,去验证用户名与密码 14 |   3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端 15 |   4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里 16 |   5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token 17 |   6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据 18 | 19 |   总的来说就是客户端在首次登陆以后,服务端再次接收http请求的时候,就只认token了,请求只要每次把token带上就行了, 20 | 服务器端会拦截所有的请求,然后校验token的合法性,合法就放行,不合法就返回401(鉴权失败)。 21 | """ 22 | cookies = { 23 | 'PDDAccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', 24 | '_nano_fp': 'Xpdjn0mqlpdYnqdynT_d6emNmFhxcEOldPDixU_L', 25 | # 'api_uid': 'rBRc111Csa6Kz0pCFMyNAg==', 26 | 'pdd_user_id': '4277963319009', 27 | 'pdd_user_uin': 'BWJHWNDA2V7EQQJNZTBKD7HSLA_GEXDA', 28 | 'ua': 'Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F75.0.3770.142%20Safari%2F537.36', 29 | 'webp': '1', 30 | } 31 | headers = { 32 | 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', 33 | 'Accept-Encoding': 'gzip, deflate', 34 | 'Accept-Language': 'zh-CN,zh;q=0.9', 35 | 'Cache-Control': 'no-cache', 36 | 'Connection': 'keep-alive', 37 | 'Host': 'mobile.yangkeduo.com', 38 | 'Upgrade-Insecure-Requests': '1', 39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36', 40 | } 41 | 42 | P = int(time.time() * 1000) 43 | E = P + 10 * 1000 44 | F = P + 20 * 1000 45 | 46 | 47 | def yield_scrollTop_timestamp(): 48 | data = [ 49 | {'scrollTop': 0, 'timestamp': int(time.time() * 1000) - E}, 50 | {'scrollTop': 100, 'timestamp': int(time.time() * 1000) - E}, 51 | ] 52 | while True: 53 | yield data 54 | data = data[-1:] # 截取最后一个,作为下一次的第一个值 55 | data.append({'scrollTop': data[0]['scrollTop'] + 3000, 'timestamp': int(time.time() * 1000) - E}) 56 | 57 | 58 | next_scrollTop_timestamp = yield_scrollTop_timestamp() 59 | 60 | 61 | def get_anticontent(search_key, cookie_dict, user_agent): 62 | with open('get_anticontent.js', encoding='utf-8') as f: 63 | js = f.read() 64 | ctx = execjs.compile(js) 65 | # 提取cookie中的_nano_fp 66 | _nano_fp = cookie_dict['_nano_fp'] 67 | # 处理cookie_dict, 转为cookie_arr 68 | cookie_arr = [' _nano_fp=' + cookie_dict['_nano_fp']] 69 | 70 | # for key, value in cookie_dict.items(): 71 | # cookie_arr.append(' ' + key + '=' + value) 72 | print('传入js的参数', 'search_key:', search_key) 73 | print('传入js的参数', 'cookie_arr:', cookie_arr) 74 | print('传入js的参数', 'user_agent:', user_agent) 75 | print('传入js的参数', '_nano_fp:', _nano_fp) 76 | print('传入js的参数', 'P:', P) 77 | print('传入js的参数', 'F:', F) 78 | scrollTop_timestamp = next(next_scrollTop_timestamp) 79 | print('传入js的参数', 'scrollTop_timestamp:', scrollTop_timestamp) 80 | 81 | anti_content = ctx.call('getContent', 82 | search_key, 83 | cookie_arr, user_agent, _nano_fp, P, F, scrollTop_timestamp) 84 | return anti_content 85 | 86 | 87 | def query_second_page(key, session, req_params): 88 | headers.update({ 89 | 'Accept': '*/*', 90 | 'AccessToken': 'TSPZGLXF4J6SNIDA6RJAOEI6W4IRZSSCZNPFH4QM55TUWQXRRQCQ102e177', # 貌似跟cookie里的PDDAccessToken一样 91 | 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 92 | 'Referer': 'http://mobile.yangkeduo.com/search_result.html?search_key=' + urllib.parse.quote(key), 93 | 'VerifyAuthToken': 'UyLUw5WRIhP4WmEG_anvLw', 94 | }) 95 | session.cookies.update(cookies) 96 | flip_temp = '' 97 | for page in range(2, 25): 98 | anti_content = get_anticontent(key, dict(session.cookies), headers['User-Agent']) 99 | # anti_content = input("请输入anti_content:") 100 | req_params.update({"anti_content": anti_content}) 101 | req_params['page'] = page 102 | if page != 2: 103 | req_params['flip'] = flip_temp 104 | print('第 {} 页的请求头 '.format(page), req_params) 105 | url = "http://mobile.yangkeduo.com/proxy/api/search" 106 | res = session.get(url, headers=headers, params=req_params) 107 | 108 | print('第 {} 页的cookies '.format(page), res.request.headers['Cookie']) 109 | print('第 {} 页的状态码和响应体 '.format(page), res.status_code, res.text) 110 | flip_temp = res.json()['flip'] 111 | print(end='\n\n') 112 | # with open('res_json.json', 'a', encoding='GBK') as f: 113 | # f.write(res.text) 114 | # f.write('\n\n') 115 | time.sleep(3) 116 | 117 | 118 | def query_first_page(key): 119 | session = requests.session() 120 | url = 'http://mobile.yangkeduo.com/search_result.html?search_key={}'.format(key) 121 | res = session.get(url, headers=headers, cookies=cookies) 122 | tree = html.fromstring(res.text) 123 | data = json.loads(tree.xpath('//script[@id="__NEXT_DATA__"]/text()')[0]) 124 | req_params, flip = data['props']['pageProps']['data']['ssrListData']['loadSearchResultTracking']['req_params'], \ 125 | data['props']['pageProps']['data']['ssrListData']['flip'] 126 | req_params = dict(json.loads(req_params), **{"flip": flip, 'pdduid': 4277963319009}) 127 | print(req_params) 128 | return session, req_params 129 | 130 | 131 | def query(key): 132 | session, req_params = query_first_page(key) 133 | query_second_page(key, session, req_params) 134 | 135 | 136 | if __name__ == '__main__': 137 | search_key = "月饼" 138 | query(search_key) 139 | 140 | # with open('get_anticontent.js', encoding='utf-8') as f: 141 | # js = f.read() 142 | # os.environ['EXECJS_RUNTIME'] = "Node" 143 | # ctx = execjs.compile(js) 144 | # anti_content = ctx.call('start') 145 | -------------------------------------------------------------------------------- /another_script/SearchGoods - 副本.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 155 | 160 | 161 | -------------------------------------------------------------------------------- /别人的/antiContent_Js.js: -------------------------------------------------------------------------------- 1 | var encrypt; 2 | var deflate = {}; 3 | var deflate2 = {}; 4 | var DDD; 5 | var href_data; 6 | (function() { 7 | var n, r, e = ["WMKPO8ONwrHCnTM=", "w4HDqMO4R8KDw4Q=", "cV97wr4AAsOPw7o=", "w53DkMKT", "w5fDu8OBcsOtw6c=", 8 | "w7A/CRDCiSDChV1MwqvCkDJrDidnwqPCpMK0", 9 | "w5PDlMOVNQsVAsKgEcK0woPDv8KCe8OCwpTCoRbDui/DsUMDw58RH24twqDDjsKNwrRfGCTDt2sVw7HCrcOze8OYwqkkwpXCp8O3asKnw7sGHV/DkBUTw71kRcKfwqQVw5c=", 10 | "woNjOcKOYsONw7jDgcOJHzcXwop/KMOwKSTCrg==", "wpgRwod3NsKHPg==", "w64QQ3LDtMOvwrZiNA==", "bMOGZ8KJISnDl2sPwqw=", 11 | "wrLDizPDhhrCjA==", "w5vDnMKRORQ2", "QRDDssOI", 12 | "w6XDvcKRwpgsMCx0FMO+w7HDjAxzJsKZwpEgdjPDvMOaHMO8McKMwofCo8OCZ8KnIsOANCzCm8KUe8OJOizDtB8ZU8Owfz1tMHELL8O1AMOOw6zDlGMnExwKw6Y=", 13 | "YUd2wqU3" 14 | ]; 15 | n = e, 16 | r = 249, 17 | function(t) { 18 | for (; --t;) 19 | n.push(n.shift()) 20 | }(++r); 21 | var i = function t(n, r) { 22 | var i, a = e[n -= 0]; 23 | void 0 === t.OYUOmT && ((i = function() { 24 | var t; 25 | try { 26 | t = Function('return (function() {}.constructor("return this")( ));')() 27 | } catch (n) { 28 | t = window 29 | } 30 | return t 31 | }()).atob || (i.atob = function(t) { 32 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ? 33 | 64 * 34 | n + r : r, 35 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) 36 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r); 37 | return o 38 | }), 39 | t.KlaBWf = function(t, n) { 40 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++) 41 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2); 42 | t = decodeURIComponent(o); 43 | for (var c = 0; c < 256; c++) 44 | e[c] = c; 45 | for (c = 0; c < 256; c++) 46 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, 47 | r = e[c], 48 | e[c] = e[i], 49 | e[i] = r; 50 | c = 0, 51 | i = 0; 52 | for (var f = 0; f < t.length; f++) 53 | i = (i + e[c = (c + 1) % 256]) % 256, 54 | r = e[c], 55 | e[c] = e[i], 56 | e[i] = r, 57 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); 58 | return a 59 | }, 60 | t.qLLMER = {}, 61 | t.OYUOmT = !0); 62 | var o = t.qLLMER[n]; 63 | return void 0 === o ? (void 0 === t.ERaocM && (t.ERaocM = !0), 64 | a = t.KlaBWf(a, r), 65 | t.qLLMER[n] = a) : a = o, 66 | a 67 | }, 68 | a = i("0x0", "Z*YI"), 69 | o = i("0x1", "eHoP"), 70 | s = i("0x2", "xf4l"), 71 | u = i("0x3", "4H[4"), 72 | c = i("0x4", "jbx*"), 73 | f = i("0x5", "pe(C")[i("0x6", "j)OB")](""), 74 | w = {}; 75 | 76 | function l(t) { 77 | return t[i("0x7", "gQva")](/[+\/=]/g, function(t) { 78 | return w[t] 79 | }) 80 | } 81 | w["+"] = "-", 82 | w["/"] = "_", 83 | w["="] = ""; 84 | var d = {}; 85 | d[i("0x8", "O7N@")] = function(t) { 86 | for (var n = function(t, n) { 87 | return t(n) 88 | }, r = function(t, n) { 89 | return t < n 90 | }, e = function(t, n) { 91 | return t + n 92 | }, i = function(t, n) { 93 | return t + n 94 | }, a = function(t, n) { 95 | return t >>> n 96 | }, o = function(t, n) { 97 | return t & n 98 | }, u = function(t, n) { 99 | return t | n 100 | }, c = function(t, n) { 101 | return t << n 102 | }, w = function(t, n) { 103 | return t | n 104 | }, d = function(t, n) { 105 | return t === n 106 | }, _ = function(t, n) { 107 | return t + n 108 | }, p = function(t, n) { 109 | return t >>> n 110 | }, x = function(t, n) { 111 | return t + n 112 | }, g = function(t, n) { 113 | return t & n 114 | }, v = void 0, b = void 0, m = void 0, y = "", D = t[s], C = 0, K = function(t, n) { 115 | return t * n 116 | }(n(h, function(t, n) { 117 | return t / n 118 | }(D, 3)), 3); r(C, K);) 119 | v = t[C++], 120 | b = t[C++], 121 | m = t[C++], 122 | y += e(e(i(f[a(v, 2)], f[o(u(c(v, 4), a(b, 4)), 63)]), f[o(w(c(b, 2), a(m, 6)), 63)]), f[o(m, 63)]); 123 | var k = function(t, n) { 124 | return t - n 125 | }(D, K); 126 | return d(k, 1) ? (v = t[C], 127 | y += i(_(f[p(v, 2)], f[function(t, n) { 128 | return t & n 129 | }(c(v, 4), 63)]), "==")) : d(k, 2) && (v = t[C++], 130 | b = t[C], 131 | y += _(x(x(f[p(v, 2)], f[g(w(function(t, n) { 132 | return t << n 133 | }(v, 4), function(t, n) { 134 | return t >>> n 135 | }(b, 4)), 63)]), f[g(function(t, n) { 136 | return t << n 137 | }(b, 2), 63)]), "=")), 138 | n(l, y) 139 | }, 140 | d[i("0x9", "j)OB")] = function(t) { 141 | for (var n = function(t, n) { 142 | return t < n 143 | }, r = function(t, n) { 144 | return t >= n 145 | }, e = function(t, n) { 146 | return t <= n 147 | }, i = function(t, n) { 148 | return t <= n 149 | }, a = function(t, n) { 150 | return t | n 151 | }, f = function(t, n) { 152 | return t & n 153 | }, h = function(t, n) { 154 | return t >> n 155 | }, w = function(t, n) { 156 | return t & n 157 | }, l = function(t, n) { 158 | return t >= n 159 | }, d = function(t, n) { 160 | return t <= n 161 | }, _ = function(t, n) { 162 | return t | n 163 | }, p = function(t, n) { 164 | return t & n 165 | }, x = function(t, n) { 166 | return t & n 167 | }, g = function(t, n) { 168 | return t >> n 169 | }, v = function(t, n) { 170 | return t & n 171 | }, b = function(t, n) { 172 | return t < n 173 | }, m = [], y = 0, D = 0; n(D, t[s]); D += 1) { 174 | var C = t[o](D); 175 | r(C, 0) && e(C, 127) ? (m[c](C), 176 | y += 1) : e(128, 80) && i(C, 2047) ? (y += 2, 177 | m[c](a(192, f(31, h(C, 6)))), 178 | m[c](a(128, w(63, C)))) : (l(C, 2048) && d(C, 55295) || l(C, 57344) && d(C, 65535)) && (y += 3, 179 | m[c](_(224, p(15, h(C, 12)))), 180 | m[c](_(128, x(63, g(C, 6)))), 181 | m[c](_(128, v(63, C)))) 182 | } 183 | for (var K = 0; b(K, m[s]); K += 1) 184 | m[K] &= 255; 185 | return function(t, n) { 186 | return t <= n 187 | }(y, 255) ? [0, y][u](m) : [function(t, n) { 188 | return t >> n 189 | }(y, 8), v(y, 255)][u](m) 190 | }, 191 | d.es = function(t) { 192 | t || (t = ""); 193 | var n = t[a](0, 255), 194 | r = [], 195 | e = d.charCode(n).slice(2); 196 | return r[c](e[s]), 197 | r[u](e) 198 | }, 199 | d.en = function(t) { 200 | var n = function(t, n) { 201 | return t !== n 202 | }, 203 | r = function(t, n) { 204 | return t % n 205 | }, 206 | e = function(t, n) { 207 | return t < n 208 | }, 209 | i = function(t, n) { 210 | return t * n 211 | }, 212 | o = function(t, n) { 213 | return t * n 214 | }, 215 | u = function(t, n) { 216 | return t + n 217 | }, 218 | f = function(t, n, r) { 219 | return t(n, r) 220 | }, 221 | h = function(t, n) { 222 | var r = String(t); 223 | return parseInt(r, n >>> 0 || (false ? 16 : 10)) 224 | }; 225 | t || (t = 0); 226 | var w = function(t, n) { 227 | function h(t, n) { 228 | var r = String(t) 229 | return parseInt(r, n >>> 0 || (false ? 16 : 10)) 230 | } 231 | return h(n) 232 | }(0, t), 233 | l = []; 234 | ! function(t, n) { 235 | return t > n 236 | }(w, 0) ? l[c](1): l[c](0); 237 | for (var d = Math.abs(w).toString(2).split(""), _ = 0; n(r(d[s], 8), 0); _ += 1) 238 | d.unshift("0"); 239 | d = d.join(""); 240 | 241 | for (var p = Math.ceil(function(t, n) { 242 | return t / n 243 | }(d[s], 8)), x = 0; e(x, p); x += 1) { 244 | var g = d[a](i(x, 8), o(u(x, 1), 8)); 245 | 246 | l[c](f(h, g, 2)) 247 | } 248 | var v = l[s]; 249 | return l.unshift(v), 250 | l 251 | }, 252 | d[i("0xa", "4H[4")] = function(t) { 253 | for (var n = function(t, n) { 254 | return t < n 255 | }, r = [], e = t.toString(2).split(""), i = 0; n(e[s], 16); i += 1) 256 | e.unshift(0); 257 | 258 | function h(t, n) { 259 | var r = String(t) 260 | return parseInt(r, n >>> 0 || (false ? 16 : 10)) 261 | } 262 | return e = e.join(""), 263 | r[c](function(t, n, r) { 264 | return t(n, r) 265 | }(h, e[a](0, 8), 2), function(t, n, r) { 266 | return t(n, r) 267 | }(h, e[a](8, 16), 2)), 268 | r 269 | }, 270 | d[i("0xb", "n1$k")] = function(t) { 271 | for (var n = { 272 | siKwF: i("0xc", "3sl8"), 273 | cCTci: i("0xd", "$oSo"), 274 | gJSsU: function(t, n) { 275 | return t < n 276 | }, 277 | jKThZ: i("0xe", "VRJR"), 278 | rZJxP: function(t, n) { 279 | return t | n 280 | }, 281 | BJGzg: function(t, n) { 282 | return t << n 283 | }, 284 | dkecu: function(t, n) { 285 | return t & n 286 | }, 287 | YDHhf: function(t, n) { 288 | return t - n 289 | }, 290 | PTrMw: function(t, n) { 291 | return t >> n 292 | }, 293 | inPLI: function(t, n) { 294 | return t << n 295 | }, 296 | DFOkJ: function(t, n) { 297 | return t(n) 298 | }, 299 | kkUqO: function(t, n) { 300 | return t - n 301 | }, 302 | CCwIR: function(t, n) { 303 | return t(n) 304 | }, 305 | qYmFj: function(t, n) { 306 | return t + n 307 | }, 308 | fGVLX: function(t, n) { 309 | return t & n 310 | }, 311 | BCdUS: function(t, n) { 312 | return t - n 313 | }, 314 | WIZIR: function(t, n) { 315 | return t < n 316 | } 317 | }, r = n.siKwF.split("|"), e = 0;;) { 318 | switch (r[e++]) { 319 | case "0": 320 | return _.replace(/=/g, ""); 321 | case "1": 322 | var a = n.cCTci; 323 | continue; 324 | case "2": 325 | var u, c, f, h; 326 | continue; 327 | case "3": 328 | for (d = 0; n.gJSsU(d, t[s]); d = g._bK) 329 | for (var w = n.jKThZ.split("|"), l = 0;;) { 330 | switch (w[l++]) { 331 | case "0": 332 | p._á(g._bf()); 333 | continue; 334 | case "1": 335 | f = n.rZJxP(n.BJGzg(n.dkecu(p._ê[n.YDHhf(p._bÌ, 1)], 15), 2), n.PTrMw(p._ê[p._bÌ], 6)); 336 | continue; 337 | case "2": 338 | c = n.rZJxP(n.inPLI(n.dkecu(p._ê[n.YDHhf(p._bÌ, 2)], 3), 4), n.PTrMw(p._ê[n.YDHhf(p._bÌ, 1)], 4)); 339 | continue; 340 | case "3": 341 | n.DFOkJ(isNaN, p._ê[n.kkUqO(p._bÌ, 1)]) ? f = h = 64 : n.CCwIR(isNaN, p._ê[p._bÌ]) && (h = 64); 342 | continue; 343 | case "4": 344 | _ = n.qYmFj(n.qYmFj(n.qYmFj(n.qYmFj(_, p._ê[u]), p._ê[c]), p._ê[f]), p._ê[h]); 345 | continue; 346 | case "5": 347 | p._á(g._bf()); 348 | continue; 349 | case "6": 350 | h = n.fGVLX(p._ê[p._bÌ], 63); 351 | continue; 352 | case "7": 353 | u = n.PTrMw(p._ê[n.BCdUS(p._bÌ, 2)], 2); 354 | continue; 355 | case "8": 356 | p._á(g._bf()); 357 | continue; 358 | case "9": 359 | p._bÌ -= 3; 360 | continue 361 | } 362 | break 363 | } 364 | continue; 365 | case "4": 366 | for (var d = 0; n.WIZIR(d, a[s]); d++) 367 | p._á(a.charAt(d)); 368 | continue; 369 | case "5": 370 | p._á("="); 371 | continue; 372 | case "6": 373 | var _ = ""; 374 | continue; 375 | case "7": 376 | var p = { 377 | "_ê": new Array(4095), 378 | "_bÌ": -1, 379 | "_á": function(t) { 380 | this._bÌ++, 381 | this._ê[this._bÌ] = t 382 | }, 383 | "_bÝ": function() { 384 | return this._bÌ--, 385 | x.ElHZO(this._bÌ, 0) && (this._bÌ = 0), 386 | this._ê[this._bÌ] 387 | } 388 | }; 389 | continue; 390 | case "8": 391 | var x = { 392 | ElHZO: function(t, r) { 393 | return n.WIZIR(t, r) 394 | } 395 | }; 396 | continue; 397 | case "9": 398 | var g = { 399 | "_bÇ": t, 400 | _bK: 0, 401 | _bf: function() { 402 | return t[o](this._bK++) 403 | } 404 | }; 405 | continue 406 | } 407 | break 408 | } 409 | } 410 | encrypt = d 411 | })(); 412 | // var n, e, i = "function" == typeof _ && "symbol" == x(w) ? function(t) { 413 | // return x(t) 414 | // } : 415 | // function(t) { 416 | // return t && "function" == typeof _ && t.constructor === _ && t !== _.prototype ? "symbol" : x(t) 417 | // }, 418 | p = ["w70sw71bG8Kvw5zCtsOJ", "wp7DsBxr", "eg4NVsKlw6cvw4DCiCvDqBQ=", "w7w/w7F0Hg==", "w63CnsOTCcKQ", "G2JaLMKbwr0=", 419 | "wo5QwpBYw5E=", "wq3DksOpwpFk", "wqDDg8OJwrR7", "TsKyA8K9LQHCjsOGAQ==", "OcOTF3fCjQ==", "WDJnwpBf", "woPCtVclLg==", 420 | "w5cuw6x3Lg==", "w7jCo8K5wrs/", "G8OINGXCkw==", "eAgxYcKd", "woXCtU8pHg==", "wqdBwr7Dv8Kj", "HH5eB8K4", 421 | "w4rDowbDmD0=", "w7zCjsKlwrklScOawrdHw7nDqA==", "S2AgJRk=", "w7fCssKlwroG", "w4NXXFbCi8O2GCh+wrA=", "w6nDgwzDuB0=", 422 | "Y8OMaD8v", "ehUNXMKiw4wiw5rCmyLDrg==", "w6AWR8Ozwro=", "NsKvwo7CuUw2wpjDpcOzUQ==", "w7cEw79ULQ==", 423 | "QCg0EcOkw55aw5TDu8OVwrI=", "w6TDvAnDhxg=", "w47DiUVXJg==", "wrxIw6lRwpXCtQjCrg==", "G8OtGlPCkQ==", "w7DDnxnDmRQ=", 424 | "w6fDpBrDuDrDpg==", "QMKywqlbGw==", "ZkjDhBcJ", "CmFRwqg=", "wq3DoQBtAw==", "w4hcw7TDmMOt", "w6A9w6pFEg==", 425 | "R3rDocKFWA==", "wrXCrFcvBA==", "QMKkGMOKYDLChcKGIw==", "w5Ihw4hvwoY=", "KcK+HMKgw6TDlURfeMODFcKycg==", 426 | "w60HZ8OWwqU=", "wp7Dsg9LBg==", "RyY1PMOBw4JUw5fDrsOOwrZvIcOyEAjDuMKpwpBOwqzChsOP", "w53DsFlSIA==", "MsKCwpLCu1Y=", 427 | "QHjDpsKSYGZFSyA=", "w45LRlc=", "w4lIAl7Chg==", "w5HCgcK1wrB/", "w6PCicK+wqg4dcOGwq5F", "e8OETh0=", 428 | "Q8KuKcOaYDLCncKE", "RcKkCsOCczjClg==", "dMOFaCEq", "wq7Dvjt6JgMsw5Y=", "w5tywpHCv8Kb", "wrDCtVIyAx0ow7kl", 429 | "wpdXw5JEwonCqAnCpA==", "w41EwpfCmMKYwqfCtMK8", "SV8nw4TDj1d3", "NMKywrLChHM=", "OcK+IsKVw6PDiEVV", "VhU5Th0=", 430 | "JMK4GMKow5c=", "wrTDmSJiHg==", "CcO+Hg==", "w73Cs8KbwrAd", "wqFUwrRfw4Y=", "FnxVZTM=", "WG7Dvh8n", "cBYcV8Kk", 431 | "wrBdwrFyw4U=", "TxwQZjI/w7V8XX5sw5ABUg==", "MMK0wpPCqA==", "w5VWw7DDlcOpw55gDcK0wopA", "w5HCrcOABA==", "BmJRwqg=", 432 | "w7ssw6VWEMKrw63Cr8Oew4nDiQ==", "QDHDrcKw", "w6DCkVBE", "JFluTRrDmkTDpsKiKEk=", "w4lKwqfChw==", "RDdkwo0=", 433 | "WDHDoMK/w6DCt1Qew6cQCw==", "PFljQg==", "wqx2woLDmA==", "XThuwpI=", "w7rClcK4wqg=", "wpp4wodV", "w41Ww73Dmg==", 434 | "wrPDvwF6", "Tzkqwrk=", "wotuwpMy", "w4VMQUc=", "LFxEZcKMOcKvwp9tw4bCsHjDqVDDqsOjcMOQw7/DncOywpc=", "wocFQMOJ", 435 | "HHleOg==", "LsOqbFJxTcK8woAsw7ErG0PDojp+Kg==", "acOMQxI=", "w7rDogjDkA==", "Uyg7Fg==", "w7zCjFxCwr57eWXDnw==", 436 | "ZQEaUg==", "w7ojw6JG", "H21bwrc=", "VcK9CcK3FAvCj8OMDl3Cv8KpccOS", "QzhjwpZoDcOfUHw4wpfCo8OdIcK3", "w7TDsyjDpgg=", 437 | "wol1wo1dw6s=", "w6pmw7nDv8OX", "w6fDiMOcbEEQScKmw6kv", "w7RbJlHCmg==", "QRsEezA+w75fXA==", "w7vDq39HHg==", 438 | "w6DCmMKjwrM7bQ==", "w7vDomVJIA==", "QjEed8KC", "JW90wrDCqA==", "JHx5OMKX", "RMKuwqhbKQ==", "w5zDuXZgEg==", 439 | "w4IEw6FQNw==", "DFZRecKCOcKOwplBw4/Cu2HDrUrDtw==", "wpl6wpZRw6zDicO/wpUI", "CMOgfkI=", "woQHUcONwrLCucKXwpbDnw==", 440 | "wpR5wr0XPQ==", "asKVDcK6AA==", "wpDCpVbChw==", "OBIsDjE=", "N1h+HcKk", "wpnDmVTCmsKQFEZFbnl4bg==", "HsOlclB8", 441 | "KS0uDzs=", "FVlLwpLCtQ==", "fBNPwqF8", "w4zDqwbDjx4=", "S0jDvBYy", "HlBBGcKd", "GQwNKgw=", "Ri8Yb8KF", 442 | "QjPDqMKPw6U=", "SBEXZDQuw7Q=", "w7puRVjCtw==", "wp/DpAB8AQ==", "WFhc", "cF03Nws=", "w7Yjw6hdGMKr", "w7Ubw5pZwq0=", 443 | "LDs3MA==", "w6PCmsKywrc=", "w7nCnlpb", "wqfDksOCwrw=", "R8KjwqJT", "R8KgGcOF", "w5XDsB/DtQ==", "wpZqwpItNg==", 444 | "woTCjE3CucOa", "WTZewo1FF8OFWA==", "w5LCvMOPBsKm", "wpXCs0/CuMOQ", "woIKUMOKwrfCs8K3", "w7AYZsOb", "wpltw7J+wq0=", 445 | "w5jCtXtowrQ=", "JMKrC8Kww5A=", "aDvDnMKzw58=", "WxfDuMKMw68=", "JF11FsK1", "dQbDl8Kqw5g=", "w79tSWXCrA==", 446 | "RDrDpsKww6I=", "wpdSw6lbwpU=", "GMKpwq9CBw==", "wod4wpQ=", "wol4wohS", "woLCiHQVNg==", "w7PDnRHDtRE=", 447 | "woBtwoPDnsKH", "w45EwqPCmMK6", "wq93woLDgg==", "wrPDmDh9Dg==", "J2hHTTs=", "w5TCosOHCsK0MsOvw47Cow==", 448 | "w7zCkMKJwpoW", "e3XDhioi", "wqxRwrvDn8KI", "RglKwp16", "w6Y9w69TCMKrw7vCvMOJw5HDmMOIVx3CsHg=", "I1NYbzc=", 449 | "wp8yS8O2wp0=", "PEpvXRnDi3jDoMKi", "w5lSTFLCjcOEIil4wq4OQRB6EMK9", "w5HCvsOMG8K9L8O4w5vCog==", "d0A/NzQ7wpMcLQ==", 450 | "WFYyw4nDnHdzQsK5aQ==", "GEtdeMKAKMKZwp1h", "wo5dw7JDwprCpgLCk0F4w5o=", "djkBwqfChw==", "wqnCpX3CmcOn", 451 | "w45KBUnCvsO8w5bDmsO7", "XW/DusKVbnVZayTCnH/DmzMZw5A=", "w79Da1jClw==", "w67Dtlt3AA==", "VFMTKDU=", "CE5qbwE=", 452 | "w4/DuEFeBTAr", "w4xbwqDCjcKewqvCicK+woPCvEpcTmoZGg==", "Szk7wrXCtig=", "wpkLVA==", "w5LCucOBHMKmKcOow4XCoA==", 453 | "PcK+Bg==", "woUFTcOGwrHCuA==", "TD07wqTCti5ew7wRag==", "FHNTC8KIwqrDiQ/CncKRwoEEw6vCvMKkfQ==", "wr7Dvgt7OQ8sw4U=", 454 | "w4fCosKSwoxGGGJSw4rDslc=", "wotvwoVXw6zDssOCwp4Mw5M=", "wrZ7wpnDicK3RQ==", "w5bCu8KBwpE=", "wp8WRsOE", 455 | "BFZRbcKbNcKPwoM=", "YQkUXMKjw7Amw57CjA==", "w4XCuMKawoBEJF4=", "wqPCq1QjAh0J", "fMOBRRQCNDXDhcO0", 456 | "w5FSw7DDlsOxw5M=", "w4bDvhLDvT7DoA==", "XVUlw63Dj1d6", "wppswpdW", "NTQ9Lw==", "DFhGbQ==", "wqLDncOFwrJKaMOywqBy", 457 | "wpbDrU3Dom3DqMKcFMKD", "YFPDghcV", "w5cWe8Od" 458 | ]; 459 | n = p, e = 217; 460 | 461 | (function(t) { 462 | for (; --t;) 463 | n.push(n.shift()) 464 | })(++e); 465 | var g = function t(n, r) { 466 | var e, i = p[n -= 0]; 467 | void 0 === t.KzjjyN && ((e = function() { 468 | var t; 469 | try { 470 | t = Function('return (function() {}.constructor("return this")( ));')() 471 | } catch (n) { 472 | t = window 473 | } 474 | return t 475 | }()).atob || (e.atob = function(t) { 476 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ? 64 * 477 | n + r : r, 478 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) 479 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r); 480 | return o 481 | }), 482 | t.JhihyY = function(t, n) { 483 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++) 484 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2); 485 | t = decodeURIComponent(o); 486 | for (var c = 0; c < 256; c++) 487 | e[c] = c; 488 | for (c = 0; c < 256; c++) 489 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, 490 | r = e[c], 491 | e[c] = e[i], 492 | e[i] = r; 493 | c = 0, 494 | i = 0; 495 | for (var f = 0; f < t.length; f++) 496 | i = (i + e[c = (c + 1) % 256]) % 256, 497 | r = e[c], 498 | e[c] = e[i], 499 | e[i] = r, 500 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); 501 | return a 502 | }, 503 | t.vchwhE = {}, 504 | t.KzjjyN = !0); 505 | var a = t.vchwhE[n]; 506 | return void 0 === a ? (void 0 === t.DeBsWl && (t.DeBsWl = !0), 507 | i = t.JhihyY(i, r), 508 | t.vchwhE[n] = i) : i = a, 509 | i 510 | } 511 | //-------------------------------------------------------------------------------------------------------------------------------------- 512 | , 513 | v = g("0x0", "o0J["), 514 | b = "id", 515 | m = g("0x1", "(DVf"), 516 | y = g("0x2", "cZ6)"), 517 | D = g("0x3", "ud5t"), 518 | C = g("0x4", "(DVf"), 519 | K = g("0x5", "o0J["), 520 | k = g("0x6", "Bx!c"), 521 | O = g("0x7", "hI@*"), 522 | z = g("0x8", "%J*e"), 523 | A = g("0x9", "Qcn!"), 524 | B = g("0xa", "KX$#"), 525 | M = g("0xb", "%J*e"), 526 | q = g("0xc", "(DVf"), 527 | j = g("0xd", "4[q*"), 528 | T = g("0xe", "7sIF"), 529 | Q = g("0xf", "%J*e"), 530 | R = g("0x10", "aVX("), 531 | F = g("0x11", "m$X7"), 532 | S = g("0x12", "kSgJ"), 533 | E = g("0x13", "!Ry0"), 534 | U = g("0x14", "(*Fv"), 535 | I = g("0x15", "Qcn!"), 536 | H = g("0x16", "TNEu"), 537 | L = g("0x17", "4[q*"), 538 | J = 0, 539 | V = void 0, 540 | P = Date.now().valueOf() - parseInt(Math.random() * 50000), 541 | X = 5, 542 | Z = function() {}, 543 | N = void 0, 544 | Y = void 0, 545 | G = void 0, 546 | W = void 0, 547 | $ = void 0; 548 | 549 | 550 | function rt(t) { 551 | var n = {}; 552 | return n[g("0x65", "hI@*")] = g("0x66", "%@B*"), 553 | encrypt[n[g("0x67", "7z7d")]](t[S])[E](t) 554 | } 555 | 556 | function et(t, n) { 557 | var r = {}; 558 | if (r[g("0x68", "Qcn!")] = function(t, n) { 559 | return t < n 560 | }, 561 | r[g("0x69", "1(8m")] = function(t, n) { 562 | return t - n 563 | }, 564 | r[g("0x6a", "e6f^")](t[L][S], X)) { 565 | var e = n || N[g("0x6b", "7sIF")], 566 | i = e[v][b] || "", 567 | a = {}; 568 | if (a[F] = i, 569 | a[T] = r[g("0x6c", "Qcn!")](G[m](), J), 570 | $) { 571 | var o = e[g("0x6d", "XimS")]; 572 | o && o[S] && (a[R] = o[0][R], 573 | a[Q] = o[0][Q]) 574 | } else 575 | a[R] = e[R], 576 | a[Q] = e[Q]; 577 | t[L][I](a) 578 | } 579 | } 580 | var it = {}; 581 | it["data"] = [] 582 | it[g("0x6e", "KozE")] = function() { 583 | this[L] = [] 584 | }, 585 | it[g("0x6f", "kSgJ")] = function(t) { 586 | if (function(t, n) { 587 | return t < X 588 | }(this[L][S])) { 589 | var n = t || N.event, 590 | r = n[v][b] || "", 591 | e = {}; 592 | e[F] = r, 593 | e[R] = n[R], 594 | e[Q] = n[Q], 595 | e[T] = function(t, n) { 596 | return t - n 597 | }(G[m](), J), 598 | this[L][I](e) 599 | } 600 | }, 601 | it[g("0x70", "cZ6)")] = function() { 602 | var t = [][E](encrypt.es("db")); 603 | return this[L][U](function(n) { 604 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T])) 605 | }), 606 | rt(t) 607 | }; 608 | var at = {}; 609 | at["data"] = [] 610 | at[g("0x71", "FWpL")] = function() { 611 | this[L] = [] 612 | }, 613 | at[g("0x72", "o(R[")] = function(t) { 614 | et(this, t) 615 | }, 616 | at[g("0x73", "Ja(b")] = function() { 617 | var t = [][E](encrypt.es("wt")); 618 | return this[L][U](function(n) { 619 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T])) 620 | }), 621 | rt(t) 622 | }; 623 | var ot = {}; 624 | ot["data"] = []; 625 | ot[g("0x74", "c9Yw")] = function() { 626 | this[L] = [] 627 | }, 628 | ot[g("0x75", "1(8m")] = function(t) { 629 | et(this, t) 630 | }, 631 | ot[g("0x76", "UAA6")] = function() { 632 | var t = [][E](l.es("tw")); 633 | return this[L][U](function(n) { 634 | t = t[E](encrypt.en(n[R]), encrypt.en(n[Q]), encrypt.es(n[F]), encrypt.en(n[T])) 635 | }), 636 | rt(t) 637 | }; 638 | var st = {}; 639 | st["data"] = [{ 640 | scrollTop: 8626, 641 | timestamp: 2444866 642 | }, 643 | { 644 | scrollTop: 12990, 645 | timestamp: 2448085 646 | }, 647 | { 648 | scrollTop: 13000, 649 | timestamp: 2448100 650 | }, 651 | { 652 | scrollTop: 13002, 653 | timestamp: 3012411 654 | }, 655 | { 656 | scrollTop: 13012, 657 | timestamp: 3012427 658 | } 659 | ]; 660 | st[g("0x77", "zQEU")] = function() { 661 | this[L] = [] 662 | }, 663 | st[g("0x78", "Ja(b")] = function() { 664 | if (function(t, n) { 665 | return t < X 666 | }(this[L][S])) { 667 | var t = {}; 668 | t.scrollTop = document.documentElement.scrollTop || document.body.scrollTop, 669 | t[T] = function(t, n) { 670 | return t - n 671 | }(G[m](), J), 672 | this[L][I](t) 673 | } 674 | }, 675 | st[g("0x79", "1(8m")] = function() { 676 | var t = [][E](encrypt.es("zc")); 677 | 678 | return this[L][U](function(n) { 679 | t = t[E](encrypt.en(n.scrollTop), encrypt.en(n[T])) 680 | }), 681 | rt(t) 682 | }; 683 | var ut = {}; 684 | ut[g("0x7a", "KX$#")] = function() { 685 | this[L] = {}, 686 | this[L][q] = href_data, 687 | this[L][M] = "" 688 | }, 689 | ut[g("0x7b", "zQEU")] = function() { 690 | this[H](); 691 | return rt([][E](encrypt.es("kf"), encrypt.es(this[L][q]), encrypt.es(this[L][M]))) 692 | }; 693 | var ct = {}; 694 | ct["data"] = { 695 | availHeight: 1040, 696 | availWidth: 1920 697 | } 698 | ct[g("0x7c", "7z7d")] = function() { 699 | this[L] = {}, 700 | this[L][A] = N[B][A], 701 | this[L][z] = N[B][z] 702 | }, 703 | ct[g("0x7d", "Qcn!")] = function() { 704 | return rt([][E](encrypt.es("lh"), encrypt.en(this[L][z]), encrypt.en(this[L][A]))) 705 | }; 706 | var ft = {}; 707 | ft[g("0x77", "zQEU")] = function() { 708 | var t = function(t, n) { 709 | return t + n 710 | }, 711 | n = function(t, n) { 712 | return t * n 713 | }, 714 | W = Math; 715 | 716 | function h(t, n) { 717 | var r = String(t) 718 | return parseInt(r, n >>> 0 || (false ? 16 : 10)) 719 | }; 720 | this[L] = t(function(t, n, r) { 721 | return t(n, r) 722 | }(h, function(t, n) { 723 | return t(n) 724 | }(String, n(W[C](), t(W[D](2, 52), 1))), 10), function(t, n, r) { 725 | return t(n, r) 726 | }(h, function(t, n) { 727 | return t(n) 728 | }(String, n(W[C](), t(W[D](2, 30), 1))), 10)) + "-" + (new Date()).valueOf().toString() 729 | }, 730 | ft[g("0x7e", "kSgJ")] = function() { 731 | return this[H](), 732 | rt([][E](encrypt.es("ie"), encrypt.es(this[L]))) 733 | }; 734 | var ht = {}; 735 | ht["data"] = 0 736 | ht[g("0x7f", "hI@*")] = function() { 737 | this[L] = function() { 738 | var t = {}; 739 | t[g("0x1f", "o(R[")] = function(t, n) { 740 | return t !== n 741 | }, 742 | t[g("0x20", "cZ6)")] = g("0x21", "Bx!c"), 743 | t[g("0x22", "Qcn!")] = function(t, n) { 744 | return t !== n 745 | }, 746 | t[g("0x23", "q2rP")] = function(t, n) { 747 | return t < n 748 | }, 749 | t[g("0x24", "q2rP")] = g("0x25", "aMpH"), 750 | t[g("0x26", "%@B*")] = function(t, n) { 751 | return t === n 752 | }, 753 | t[g("0x27", "zQEU")] = function(t, n) { 754 | return t === n 755 | }, 756 | t[g("0x28", "aVX(")] = function(t, n) { 757 | return t === n 758 | }, 759 | t[g("0x29", "o(R[")] = function(t, n) { 760 | return t === n 761 | }, 762 | t[g("0x2a", "7z7d")] = function(t, n) { 763 | return t === n 764 | }, 765 | t[g("0x2b", "%@B*")] = function(t, n) { 766 | return t !== n 767 | }, 768 | t[g("0x2c", "7sIF")] = g("0x2d", "aVX("), 769 | t[g("0x2e", "KX$#")] = function(t, n) { 770 | return t !== n 771 | }, 772 | t[g("0x2f", "Bx!c")] = function(t, n) { 773 | return t << n 774 | }; 775 | var n = []; 776 | t[g("0x30", "!Ry0")](i(N[g("0x31", "7z7d")]), t[g("0x32", "7qw^")]) || t[g("0x33", "7z7d")](i(N[g("0x34", "5%pL")]), 777 | t[g("0x35", "!Ry0")]) ? n[0] = 1 : n[0] = t[g("0x36", "m$X7")](N[g("0x37", "7sIF")], 1) || t[g("0x38", "CK20")] 778 | ( 779 | N[g("0x39", "KozE")], 1) ? 1 : 0, 780 | n[1] = t[g("0x3a", "o(R[")](i(N[g("0x3b", "yKUA")]), t[g("0x3c", "aW!n")]) || t[g("0x3d", "h0NV")](i(N[g("0x3e", 781 | "yuh1")]), t[g("0x3f", "%@B*")]) ? 1 : 0, 782 | n[2] = t[g("0x40", "!Ry0")](i(N[g("0x41", "!Ry0")]), t[g("0x42", "Ed8T")]) ? 0 : 1, 783 | n[3] = t[g("0x43", "e6f^")](i(N[g("0x44", "FWpL")]), t[g("0x45", "hI@*")]) ? 0 : 1, 784 | n[4] = t[g("0x46", "kSgJ")](i(N[g("0x47", "o(R[")]), t[g("0x48", ")w9L")]) ? 0 : 1, 785 | n[5] = t[g("0x49", "aVX(")](Y[g("0x4a", "rqNV")], !0) ? 1 : 0, 786 | n[6] = t[g("0x4b", "rUI6")](i(N[g("0x4c", "ud5t")]), t[g("0x4d", "CK20")]) && t[g("0x4e", "hI@*")](i(N[g("0x4f", 787 | "yKUA")]), t[g("0x50", "h0NV")]) ? 0 : 1; 788 | try { 789 | t[g("0x51", "KozE")](i(Function[g("0x52", ")w9L")][g("0x53", "5%pL")]), t[g("0x54", "o5mZ")]) && (n[7] = 1), 790 | t[g("0x55", "%J*e")](Function[g("0x56", "7z7d")][g("0x57", "m$X7")][g("0x58", "rqNV")]()[g("0x59", "rqNV")]( 791 | /bind/g, t[g("0x5a", "m$X7")]), Error[g("0x5b", "hI@*")]()) && (n[7] = 1), 792 | t[g("0x5c", "UAA6")](Function[g("0x5d", "aVX(")][g("0x5e", "yuh1")][g("0x5f", "UAA6")]()[g("0x60", "(*Fv")]( 793 | /toString/g, t[g("0x61", "KozE")]), Error[g("0x62", "ud5t")]()) && (n[7] = 1) 794 | } catch (t) {} 795 | for (var r = 0, e = 0; t[g("0x63", "XimS")](e, n[S]); e++) 796 | r += t[g("0x64", "ud5t")](n[e], e); 797 | return r 798 | }() 799 | }, 800 | ht[g("0x80", "o0J[")] = function() { 801 | return rt([][E](encrypt.es("hb"), encrypt.en(this[L]))) 802 | }; 803 | var wt = {}; 804 | wt[g("0x81", "2xv*")] = function() { 805 | var e, i, a, o, s; 806 | stringToBytes = function(t) { 807 | for (var n = [], r = 0; r < t.length; r++) 808 | n.push(255 & t.charCodeAt(r)); 809 | return n 810 | } 811 | rotl = function(t, n) { 812 | return t << n | t >>> 32 - n 813 | } 814 | bytesToWords = function(t) { 815 | for (var n = [], r = 0, e = 0; r < t.length; r++, 816 | e += 8) 817 | n[e >>> 5] |= t[r] << 24 - e % 32; 818 | return n 819 | } 820 | endian = function(t) { 821 | if (t.constructor == Number) 822 | return 16711935 & rotl(t, 8) | 4278255360 & rotl(t, 24); 823 | for (var n = 0; n < t.length; n++) 824 | t[n] = endian(t[n]); 825 | return t 826 | } 827 | bytesToHex = function(t) { 828 | for (var n = [], r = 0; r < t.length; r++) 829 | n.push((t[r] >>> 4).toString(16)), 830 | n.push((15 & t[r]).toString(16)); 831 | return n.join("") 832 | } 833 | s = function t(n, r) { 834 | n = stringToBytes(n); 835 | for (var s = bytesToWords(n), u = 8 * n.length, c = 1732584193, h = -271733879, w = -1732584194, l = 271733878, 836 | d = 0; d < s.length; d++) 837 | s[d] = 16711935 & (s[d] << 8 | s[d] >>> 24) | 4278255360 & (s[d] << 24 | s[d] >>> 8); 838 | s[u >>> 5] |= 128 << u % 32, 839 | s[14 + (u + 64 >>> 9 << 4)] = u; 840 | var _ = _ff, 841 | p = _gg, 842 | x = _hh, 843 | g = _ii; 844 | for (d = 0; d < s.length; d += 16) { 845 | var v = c, 846 | b = h, 847 | m = w, 848 | y = l; 849 | h = g(h = g(h = g(h = g(h = x(h = x(h = x(h = x(h = p(h = p(h = p(h = p(h = _(h = _(h = _(h = _(h, w = _(w, l = _( 850 | l, c = _(c, h, w, l, s[d + 0], 7, -680876936), h, w, s[d + 1], 12, -389564586), c, h, s[d + 2], 851 | 17, 606105819), l, c, s[d + 3], 22, -1044525330), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 4], 852 | 7, -176418897), h, w, s[d + 5], 12, 1200080426), c, h, s[d + 6], 17, -1473231341), l, c, s[d + 7], 853 | 22, -45705983), w = _(w, l = _(l, c = _(c, h, w, l, s[d + 8], 7, 1770035416), h, w, s[d + 9], 12, 854 | -1958414417), c, h, s[d + 10], 17, -42063), l, c, s[d + 11], 22, -1990404162), w = _(w, l = _(l, c = 855 | _(c, h, w, l, s[d + 12], 7, 1804603682), h, w, s[d + 13], 12, -40341101), c, h, s[d + 14], 17, - 856 | 1502002290), l, c, s[d + 15], 22, 1236535329), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 1], 5, - 857 | 165796510), h, w, s[d + 6], 9, -1069501632), c, h, s[d + 11], 14, 643717713), l, c, s[d + 0], 20, - 858 | 373897302), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 5], 5, -701558691), h, w, s[d + 10], 9, 859 | 38016083), c, h, s[d + 15], 14, -660478335), l, c, s[d + 4], 20, -405537848), w = p(w, l = p(l, c = p( 860 | c, h, w, l, s[d + 9], 5, 568446438), h, w, s[d + 14], 9, -1019803690), c, h, s[d + 3], 14, - 861 | 187363961), l, c, s[d + 8], 20, 1163531501), w = p(w, l = p(l, c = p(c, h, w, l, s[d + 13], 5, - 862 | 1444681467), h, w, s[d + 2], 9, -51403784), c, h, s[d + 7], 14, 1735328473), l, c, s[d + 12], 20, - 863 | 1926607734), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 5], 4, -378558), h, w, s[d + 8], 11, -2022574463), 864 | c, h, s[d + 11], 16, 1839030562), l, c, s[d + 14], 23, -35309556), w = x(w, l = x(l, c = x(c, h, w, l, s[ 865 | d + 1], 4, -1530992060), h, w, s[d + 4], 11, 1272893353), c, h, s[d + 7], 16, -155497632), l, c, s[d + 866 | 10], 23, -1094730640), w = x(w, l = x(l, c = x(c, h, w, l, s[d + 13], 4, 681279174), h, w, s[d + 0], 11, 867 | -358537222), c, h, s[d + 3], 16, -722521979), l, c, s[d + 6], 23, 76029189), w = x(w, l = x(l, c = x(c, h, 868 | w, l, s[d + 9], 4, -640364487), h, w, s[d + 12], 11, -421815835), c, h, s[d + 15], 16, 530742520), l, c, s[ 869 | d + 2], 23, -995338651), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 0], 6, -198630844), h, w, s[d + 7], 10, 870 | 1126891415), c, h, s[d + 14], 15, -1416354905), l, c, s[d + 5], 21, -57434055), w = g(w, l = g(l, c = g(c, h, 871 | w, l, s[d + 12], 6, 1700485571), h, w, s[d + 3], 10, -1894986606), c, h, s[d + 10], 15, -1051523), l, c, s[d + 872 | 1], 21, -2054922799), w = g(w, l = g(l, c = g(c, h, w, l, s[d + 8], 6, 1873313359), h, w, s[d + 15], 10, - 873 | 30611744), c, h, s[d + 6], 15, -1560198380), l, c, s[d + 13], 21, 1309151649), w = g(w, l = g(l, c = g(c, h, w, 874 | l, s[d + 4], 6, -145523070), h, w, s[d + 11], 10, -1120210379), c, h, s[d + 2], 15, 718787259), l, c, s[d + 9], 875 | 21, -343485551), 876 | c = c + v >>> 0, 877 | h = h + b >>> 0, 878 | w = w + m >>> 0, 879 | l = l + y >>> 0 880 | } 881 | return endian([c, h, w, l]) 882 | } 883 | _ff = function(t, n, r, e, i, a, o) { 884 | var s = t + (n & r | ~n & e) + (i >>> 0) + o; 885 | return (s << a | s >>> 32 - a) + n 886 | }; 887 | _gg = function(t, n, r, e, i, a, o) { 888 | var s = t + (n & e | r & ~e) + (i >>> 0) + o; 889 | return (s << a | s >>> 32 - a) + n 890 | }; 891 | _hh = function(t, n, r, e, i, a, o) { 892 | var s = t + (n ^ r ^ e) + (i >>> 0) + o; 893 | return (s << a | s >>> 32 - a) + n 894 | }; 895 | _ii = function(t, n, r, e, i, a, o) { 896 | var s = t + (r ^ (n | ~e)) + (i >>> 0) + o; 897 | return (s << a | s >>> 32 - a) + n 898 | }; 899 | s._blocksize = 16, 900 | s._digestsize = 16; 901 | 902 | function aa(t, n) { 903 | function e_wordsToBytes(t) { 904 | for (var n = [], r = 0; r < 32 * t.length; r += 8) 905 | n.push(t[r >>> 5] >>> 24 - r % 32 & 255); 906 | return n 907 | } 908 | var r = e_wordsToBytes(s(t, n)); 909 | return bytesToHex(r) 910 | } 911 | this[L] = aa( 912 | href_data 913 | ) 914 | }, 915 | wt[g("0x79", "1(8m")] = function() { 916 | return wt.init(), rt([][E](encrypt.es("ml"), encrypt.es(this[L]))) 917 | }; 918 | var lt = {}; 919 | lt["data"] = "y" 920 | lt[g("0x82", "5%pL")] = function() { 921 | var t = g("0x83", "4[q*"); 922 | this[L] = N[t] ? "y" : "n" 923 | }, 924 | lt[g("0x84", "(DVf")] = function() { 925 | return rt([][E](encrypt.es("qc"), encrypt.es(this[L]))) 926 | }; 927 | var dt = {}; 928 | dt["data"] = "y" 929 | dt[g("0x85", "Bx!c")] = function() { 930 | var t = g("0x86", "$^D!"); 931 | this[L] = N[t] ? "y" : "n" 932 | }, 933 | dt[g("0x87", "m$X7")] = function() { 934 | return rt([][E](encrypt.es("za"), encrypt.es(this[L]))) 935 | }; 936 | var _t = {}; 937 | _t[g("0x88", "aW!n")] = function() { 938 | G = Date; 939 | this[L] = G[m]() - P 940 | }, 941 | _t[g("0x89", "yKUA")] = function() { 942 | return this[H](), 943 | rt([][E](encrypt.es("xq"), encrypt.en(this[L]))) 944 | }; 945 | var pt = {}; 946 | pt["data"] = 947 | "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36" 948 | pt[g("0x77", "zQEU")] = function() { 949 | var t = g("0x8a", "c9Yw"); 950 | this[L] = Y[t] 951 | }, 952 | pt[g("0x8b", "7sIF")] = function() { 953 | return rt([][E](encrypt.es("te"), encrypt.es(this[L]))) 954 | }; 955 | var xt = {}; 956 | xt["data"] = naNo_fp(); 957 | 958 | function naNo_fp() { 959 | u = ["QzwKMQ4=", "w6fCisOpFyEo", "w7LDkcKMw4F9", "wqLDlVkyLG7Cvg==", "w4nDvHUmUg==", "CGTDnk7DoMO0Eg==", 960 | "woBEw60FeA==", "w684w4vDhWM=", "w7HDv2zDocKF", "w7LDmcK9KTQ=", "LcOPWsKmwro=", "w7A+FDZH", "w4PCvSM=", "KMOiaA==", 961 | "RMOiwq3CjsOr", "wqLDhEI=", "WcOOdlx8", "w7HDs8K9w55Bw4cs", "JMK5IcOPRcOawrjDgMKq", "a8KKw5bCk8OdcxjCjW/DlcO1w7Y=", 962 | "LcOyw5LDiyES", "ecOAwp7Cg8O1w6o3w6k=", "wqzCt8K5wr8Zw5M=", "wo0HwpQSw6bDosKTYsO2", "PMOiaMKrez3CkCBs", 963 | "DMKLZkFBw50Lwqlvw7k=", "wq/Cq8K9w5BHw5tiXA==", "w4vDvnkvSMK8w4t7w4U=", "w6bDi8KLwq3ClcKJR8KkZlQ=", 964 | "wrvDkG9HY8OVFS/CqQQ=", "wph9w6w=", "wpsWR8KTwog=", "wqhfwobDr8KJ", "wqDCkklGTg==", "w7LDuX/DsMKY", "flXCtwhS", 965 | "w63DlcKvwoPCkQ==", "UBYOOB56", "w6bDvMK1w59h", "wpMvw5M8Jg==", "UzfCosOewog=", "L0DDtV7DjA==", "fmk/w7jCuQ==", 966 | "YMKzw6/DmQLDrw==", "w7/CszLDi8O+I8OuHMKGSQ==", "w6gZw6vDvUY=", "wrkewp4Nw6I=", "GCJdwqvClw==", "T8OzRR/ClXPChw==", 967 | "JXwNwo3Cjg==", "YBYIID8=", "fsOHwpzChMOZw7s=", "wpQsw68vMwrDng8jw5UK", "w6/CtzrDmsOY", "wojDrGY4Pg==", 968 | "wpYMwoUSw40=", "wpfCj2ZfUg==", "IcOmcsKHSzTCiw==", "RcOIV3Z9" 969 | ]; 970 | n = u, 971 | e = 136, 972 | function(t) { 973 | for (; --t;) 974 | n.push(n.shift()) 975 | }(++e); 976 | var c = function t(n, r) { 977 | var e, i = u[n -= 0]; 978 | void 0 === t.KnuQDT && ((e = function() { 979 | var t; 980 | try { 981 | t = Function('return (function() {}.constructor("return this")( ));')() 982 | } catch (n) { 983 | t = window 984 | } 985 | return t 986 | }()).atob || (e.atob = function(t) { 987 | for (var n, r, e = String(t).replace(/=+$/, ""), i = 0, a = 0, o = ""; r = e.charAt(a++); ~r && (n = i % 4 ? 64 * 988 | n + r : r, 989 | i++ % 4) ? o += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) 990 | r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(r); 991 | return o 992 | }), 993 | t.fyxzDe = function(t, n) { 994 | for (var r, e = [], i = 0, a = "", o = "", s = 0, u = (t = atob(t)).length; s < u; s++) 995 | o += "%" + ("00" + t.charCodeAt(s).toString(16)).slice(-2); 996 | t = decodeURIComponent(o); 997 | for (var c = 0; c < 256; c++) 998 | e[c] = c; 999 | for (c = 0; c < 256; c++) 1000 | i = (i + e[c] + n.charCodeAt(c % n.length)) % 256, 1001 | r = e[c], 1002 | e[c] = e[i], 1003 | e[i] = r; 1004 | c = 0, 1005 | i = 0; 1006 | for (var f = 0; f < t.length; f++) 1007 | i = (i + e[c = (c + 1) % 256]) % 256, 1008 | r = e[c], 1009 | e[c] = e[i], 1010 | e[i] = r, 1011 | a += String.fromCharCode(t.charCodeAt(f) ^ e[(e[c] + e[i]) % 256]); 1012 | return a 1013 | }, 1014 | t.aBwsIj = {}, 1015 | t.KnuQDT = !0); 1016 | var a = t.aBwsIj[n]; 1017 | return void 0 === a ? (void 0 === t.oBOLyG && (t.oBOLyG = !0), 1018 | i = t.fyxzDe(i, r), 1019 | t.aBwsIj[n] = i) : i = a, 1020 | i 1021 | }; 1022 | 1023 | function b() { 1024 | function s(t, n, r) { 1025 | if ("string" != typeof t) 1026 | throw new Error("The string parameter must be a string."); 1027 | if (t.length < 1) 1028 | throw new Error("The string parameter must be 1 character or longer."); 1029 | if ("number" != typeof n) 1030 | throw new Error("The length parameter must be a number."); 1031 | if ("string" != typeof r && r) 1032 | throw new Error("The character parameter must be a string."); 1033 | var e = -1; 1034 | for (n -= t.length, 1035 | r || 0 === r || (r = " "); ++e < n;) 1036 | t += r; 1037 | return t 1038 | }; 1039 | var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Date[c("0xc", "HxY!")](), 1040 | n = {}; 1041 | n[c("0xd", "E7dI")] = function(t, n) { 1042 | return t(n) 1043 | }, 1044 | n[c("0xe", "r[(a")] = function(t) { 1045 | return t() 1046 | }, 1047 | n[c("0xf", "kkhd")] = function(t, n) { 1048 | return t % n 1049 | }, 1050 | n[c("0x10", "l*OF")] = function(t, n, r, e) { 1051 | return t(n, r, e) 1052 | }, 1053 | n[c("0x11", "zgAZ")] = function(t, n) { 1054 | return t(n) 1055 | }, 1056 | n[c("0x12", "gPk6")] = c("0x13", "jhb9"); 1057 | var r = n[c("0x14", "#BDR")](String, t)[c("0x15", "mUZ7")](0, 10), 1058 | e = n[c("0x16", "!LcL")](o), 1059 | i = n[c("0x17", "OPo!")]((r + "_" + e)[c("0x18", "mpB0")]("")[c("0x19", "*%RS")](function(t, n) { 1060 | return t + n[c("0x1a", "[)ww")](0) 1061 | }, 0), 1e3), 1062 | u = n[c("0x1b", "BmuK")](s, n[c("0x1c", "kWt7")](String, i), 3, "0"); 1063 | return encrypt[n[c("0x1d", "ogP5")]]("" + r + u)[c("0x1e", "v*sR")](/=/g, "") + "_" + e 1064 | }; 1065 | 1066 | function o(t) { 1067 | t = t || 21; 1068 | for (var n = ""; 0 < t--;) 1069 | n += "_~varfunctio0125634789bdegjhklmpqswxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" [64 * Math.random() | 0]; 1070 | return n 1071 | }; 1072 | 1073 | function getCookie(t) { 1074 | var arr = ["api_uid=rBRqP1z/EExwECSVC267Ag==", 1075 | " ua=Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F73.0.3683.86%20Safari%2F537.36" 1076 | ] 1077 | for (var n = function(t, n) { 1078 | return t + n 1079 | }, r = function(t, n) { 1080 | return t < n 1081 | }, e = function(t, n) { 1082 | return t === n 1083 | }, i = n(t = n("_", t), "="), a = arr, o = 0; r(o, a[p]); o++) { 1084 | for (var s = a[o]; e(s.charAt(0), " ");) 1085 | s = s[f](1, s[p]); 1086 | if (e(s.indexOf(i), 0)) 1087 | return s[f](i[p], s[p]) 1088 | } 1089 | return null 1090 | }; 1091 | 1092 | function setCookie(t, n) { 1093 | var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 9999, 1094 | e = { 1095 | hNolq: function(t, n) { 1096 | return t + n 1097 | }, 1098 | HSBcF: function(t, n) { 1099 | return t * n 1100 | }, 1101 | QsJzw: function(t, n) { 1102 | return t * n 1103 | }, 1104 | irUnm: c("0x7", "3hFI"), 1105 | ZRUhv: function(t, n) { 1106 | return t + n 1107 | }, 1108 | KcgwS: function(t, n) { 1109 | return t + n 1110 | }, 1111 | NcxmC: function(t, n) { 1112 | return t || n 1113 | }, 1114 | HWavj: c("0x8", "#BDR") 1115 | }; 1116 | t = e.hNolq("_", t); 1117 | var i = ""; 1118 | if (r) { 1119 | var a = new Date; 1120 | a.setTime(e.hNolq(a.getTime(), e.HSBcF(e.HSBcF(e.QsJzw(e.QsJzw(r, 24), 60), 60), 1e3))), 1121 | i = e.hNolq(e.irUnm, a.toUTCString()) 1122 | } 1123 | window.document.cookie = e.hNolq(e.ZRUhv(e.KcgwS(e.KcgwS(t, "="), e.NcxmC(n, "")), i), e.HWavj) 1124 | }; 1125 | 1126 | function getStorage(t) { 1127 | return t = "_" + t, 1128 | getItem(t) 1129 | } 1130 | 1131 | 1132 | var t = {}; 1133 | t[c("0x24", "!jRO")] = function(t, n) { 1134 | return t(n) 1135 | }, 1136 | t[c("0x25", "kWt7")] = function(t, n) { 1137 | return t(n) 1138 | }, 1139 | t[c("0x26", "kkhd")] = c("0x27", "6axu"), 1140 | t[c("0x28", "3hFI")] = function(t) { 1141 | return t() 1142 | }, 1143 | t[c("0x29", "jhb9")] = c("0x2a", "7CAL"), 1144 | t[c("0x2b", "#BDR")] = c("0x2c", "!jRO"), 1145 | t[c("0x2d", "&8PU")] = c("0x2e", "OPo!"); 1146 | var n = t[c("0x2f", "HxY!")], 1147 | r = {}, 1148 | e = t[c("0x30", "BmuK")](b); 1149 | return [t[c("0x31", "l*OF")], t[c("0x32", "jFJ8")]][t[c("0x33", "Ayw(")]](function(i) { 1150 | if (i == "cookie") { 1151 | try { 1152 | var a = c("0x34", "AVSJ") + i + c("0x35", "[)ww"); 1153 | r[a] = getCookie(n), 1154 | r[a] || (setCookie(n, e), 1155 | r[a] = e) 1156 | } catch (t) {} 1157 | } else { 1158 | try { 1159 | var a = c("0x34", "AVSJ") + i + c("0x35", "[)ww"); 1160 | r[a] = e 1161 | } catch (t) {} 1162 | } 1163 | }), 1164 | r 1165 | }; 1166 | xt[g("0x8d", "FWpL")] = function() { 1167 | var t = this, 1168 | n = g("0x8e", "aMpH"), 1169 | r = g("0x8f", "zQEU"), 1170 | e = [], 1171 | i = {}; 1172 | u = ["nano_cookie_fp", "nano_storage_fp"] 1173 | return i[n] = "ys", 1174 | i[r] = "ut", 1175 | u[U](function(n) { 1176 | var r = [][E](encrypt.es(i[n]), encrypt.es(t[L][n])); 1177 | e[I](function(t, n) { 1178 | return t(n) 1179 | }(rt, r)) 1180 | }), 1181 | e 1182 | } 1183 | 1184 | function gt() { 1185 | [ct, ht, wt, lt, dt, pt, xt, st, at, ot, it][U](function(t) { 1186 | t[H]() 1187 | }) 1188 | } 1189 | 1190 | function vt() { 1191 | var t = {}; 1192 | t[g("0x90", "!Ry0")] = g("0x91", "Qcn!"), 1193 | t[g("0x92", "kSgJ")] = g("0x93", "BotX"), 1194 | t[g("0x94", "o5mZ")] = g("0x95", "XimS"), 1195 | t[g("0x96", "h0NV")] = g("0x97", "7z7d"), 1196 | N[O][k](t[g("0x98", "h0NV")], it, !0), 1197 | $ ? N[O][k](t[g("0x99", "7sIF")], ot, !0) : (N[O][k](t[g("0x9a", "FWpL")], at, !0), 1198 | N[O][k](t[g("0x9b", "Bx!c")], st, !0)) 1199 | } 1200 | 1201 | function bt() { 1202 | [st, at, ot, it][U](function(t) { 1203 | t[L] = (t[L] || [])[g("0x9c", "Ed8T")](-1) 1204 | }) 1205 | } 1206 | 1207 | function mt() { 1208 | var t = {}; 1209 | if (t[g("0x9d", "h0NV")] = function(t, n) { 1210 | return t > n 1211 | }, 1212 | t[g("0x9e", "o(R[")] = function(t, n) { 1213 | return t - n 1214 | }, 1215 | $) { 1216 | var n = document[g("0x9f", "4[q*")][g("0xa0", "Qcn!")] || document[g("0xa1", "$^D!")][g("0xa2", "(DVf")]; 1217 | return t[g("0xa3", "2xv*")](n, 0) ? (st[L] = [{ 1218 | scrollTop: n, 1219 | timestamp: t[g("0xa4", "aMpH")](G[m](), J) 1220 | }], 1221 | st[g("0x76", "UAA6")]()) : [] 1222 | } 1223 | return st[g("0xa5", "ogba")]() 1224 | }; 1225 | 1226 | 1227 | 1228 | 1229 | //var tr_ = {};------------------------------------------------------------------------------------------------------------------------------------------------------ 1230 | var tr_ = {}; 1231 | (function(t, n, r) { 1232 | "use strict"; 1233 | 1234 | var n = tr_; 1235 | 1236 | function i(t) { 1237 | for (var n = t.length; --n >= 0;) 1238 | t[n] = 0 1239 | } 1240 | var a = 0, 1241 | o = 256, 1242 | s = o + 1 + 29, 1243 | u = 30, 1244 | c = 19, 1245 | f = 2 * s + 1, 1246 | h = 15, 1247 | w = 16, 1248 | l = 256, 1249 | d = 16, 1250 | _ = 17, 1251 | p = 18, 1252 | x = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], 1253 | g = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], 1254 | v = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], 1255 | b = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], 1256 | m = new Array(2 * (s + 2)); 1257 | i(m); 1258 | var y = new Array(2 * u); 1259 | i(y); 1260 | var D = new Array(512); 1261 | i(D); 1262 | var C = new Array(256); 1263 | i(C); 1264 | var K = new Array(29); 1265 | i(K); 1266 | var k, O, z, A = new Array(u); 1267 | 1268 | function B(t, n, r, e, i) { 1269 | this.static_tree = t, 1270 | this.extra_bits = n, 1271 | this.extra_base = r, 1272 | this.elems = e, 1273 | this.max_length = i, 1274 | this.has_stree = t && t.length 1275 | } 1276 | 1277 | function M(t, n) { 1278 | this.dyn_tree = t, 1279 | this.max_code = 0, 1280 | this.stat_desc = n 1281 | } 1282 | 1283 | function q(t) { 1284 | return t < 256 ? D[t] : D[256 + (t >>> 7)] 1285 | } 1286 | 1287 | function j(t, n) { 1288 | t.pending_buf[t.pending++] = 255 & n, 1289 | t.pending_buf[t.pending++] = n >>> 8 & 255 1290 | } 1291 | 1292 | function T(t, n, r) { 1293 | t.bi_valid > w - r ? (t.bi_buf |= n << t.bi_valid & 65535, 1294 | j(t, t.bi_buf), 1295 | t.bi_buf = n >> w - t.bi_valid, 1296 | t.bi_valid += r - w) : (t.bi_buf |= n << t.bi_valid & 65535, 1297 | t.bi_valid += r) 1298 | } 1299 | 1300 | function Q(t, n, r) { 1301 | T(t, r[2 * n], r[2 * n + 1]) 1302 | } 1303 | 1304 | function R(t, n) { 1305 | var r = 0; 1306 | do { 1307 | r |= 1 & t, 1308 | t >>>= 1, 1309 | r <<= 1 1310 | } while (--n > 0); 1311 | return r >>> 1 1312 | } 1313 | 1314 | function F(t, n, r) { 1315 | var e, i, a = new Array(h + 1), 1316 | o = 0; 1317 | for (e = 1; e <= h; e++) 1318 | a[e] = o = o + r[e - 1] << 1; 1319 | for (i = 0; i <= n; i++) { 1320 | var s = t[2 * i + 1]; 1321 | 0 !== s && (t[2 * i] = R(a[s]++, s)) 1322 | } 1323 | } 1324 | 1325 | function S(t) { 1326 | var n; 1327 | for (n = 0; n < s; n++) 1328 | t.dyn_ltree[2 * n] = 0; 1329 | for (n = 0; n < u; n++) 1330 | t.dyn_dtree[2 * n] = 0; 1331 | for (n = 0; n < c; n++) 1332 | t.bl_tree[2 * n] = 0; 1333 | t.dyn_ltree[2 * l] = 1, 1334 | t.opt_len = t.static_len = 0, 1335 | t.last_lit = t.matches = 0 1336 | } 1337 | 1338 | function E(t) { 1339 | t.bi_valid > 8 ? j(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), 1340 | t.bi_buf = 0, 1341 | t.bi_valid = 0 1342 | } 1343 | 1344 | function U(t, n, r, e) { 1345 | var i = 2 * n, 1346 | a = 2 * r; 1347 | return t[i] < t[a] || t[i] === t[a] && e[n] <= e[r] 1348 | } 1349 | 1350 | function I(t, n, r) { 1351 | for (var e = t.heap[r], i = r << 1; i <= t.heap_len && (i < t.heap_len && U(n, t.heap[i + 1], t.heap[i], t.depth) && 1352 | i++, 1353 | !U(n, e, t.heap[i], t.depth));) 1354 | t.heap[r] = t.heap[i], 1355 | r = i, 1356 | i <<= 1; 1357 | t.heap[r] = e 1358 | } 1359 | 1360 | function H(t, n, r) { 1361 | var e, i, a, s, u = 0; 1362 | if (0 !== t.last_lit) 1363 | do { 1364 | e = t.pending_buf[t.d_buf + 2 * u] << 8 | t.pending_buf[t.d_buf + 2 * u + 1], 1365 | i = t.pending_buf[t.l_buf + u], 1366 | u++, 1367 | 0 === e ? Q(t, i, n) : (Q(t, (a = C[i]) + o + 1, n), 1368 | 0 !== (s = x[a]) && T(t, i -= K[a], s), 1369 | Q(t, a = q(--e), r), 1370 | 0 !== (s = g[a]) && T(t, e -= A[a], s)) 1371 | } while (u < t.last_lit); 1372 | Q(t, l, n) 1373 | } 1374 | 1375 | function L(t, n) { 1376 | var r, e, i, a = n.dyn_tree, 1377 | o = n.stat_desc.static_tree, 1378 | s = n.stat_desc.has_stree, 1379 | u = n.stat_desc.elems, 1380 | c = -1; 1381 | for (t.heap_len = 0, 1382 | t.heap_max = f, 1383 | r = 0; r < u; r++) 1384 | 0 !== a[2 * r] ? (t.heap[++t.heap_len] = c = r, 1385 | t.depth[r] = 0) : a[2 * r + 1] = 0; 1386 | for (; t.heap_len < 2;) 1387 | a[2 * (i = t.heap[++t.heap_len] = c < 2 ? ++c : 0)] = 1, 1388 | t.depth[i] = 0, 1389 | t.opt_len--, 1390 | s && (t.static_len -= o[2 * i + 1]); 1391 | for (n.max_code = c, 1392 | r = t.heap_len >> 1; r >= 1; r--) 1393 | I(t, a, r); 1394 | i = u; 1395 | do { 1396 | r = t.heap[1], 1397 | t.heap[1] = t.heap[t.heap_len--], 1398 | I(t, a, 1), 1399 | e = t.heap[1], 1400 | t.heap[--t.heap_max] = r, 1401 | t.heap[--t.heap_max] = e, 1402 | a[2 * i] = a[2 * r] + a[2 * e], 1403 | t.depth[i] = (t.depth[r] >= t.depth[e] ? t.depth[r] : t.depth[e]) + 1, 1404 | a[2 * r + 1] = a[2 * e + 1] = i, 1405 | t.heap[1] = i++, 1406 | I(t, a, 1) 1407 | } while (t.heap_len >= 2); 1408 | t.heap[--t.heap_max] = t.heap[1], 1409 | function(t, n) { 1410 | var r, e, i, a, o, s, u = n.dyn_tree, 1411 | c = n.max_code, 1412 | w = n.stat_desc.static_tree, 1413 | l = n.stat_desc.has_stree, 1414 | d = n.stat_desc.extra_bits, 1415 | _ = n.stat_desc.extra_base, 1416 | p = n.stat_desc.max_length, 1417 | x = 0; 1418 | for (a = 0; a <= h; a++) 1419 | t.bl_count[a] = 0; 1420 | for (u[2 * t.heap[t.heap_max] + 1] = 0, 1421 | r = t.heap_max + 1; r < f; r++) 1422 | (a = u[2 * u[2 * (e = t.heap[r]) + 1] + 1] + 1) > p && (a = p, 1423 | x++), 1424 | u[2 * e + 1] = a, 1425 | e > c || (t.bl_count[a]++, 1426 | o = 0, 1427 | e >= _ && (o = d[e - _]), 1428 | s = u[2 * e], 1429 | t.opt_len += s * (a + o), 1430 | l && (t.static_len += s * (w[2 * e + 1] + o))); 1431 | if (0 !== x) { 1432 | do { 1433 | for (a = p - 1; 0 === t.bl_count[a];) 1434 | a--; 1435 | t.bl_count[a]--, 1436 | t.bl_count[a + 1] += 2, 1437 | t.bl_count[p]--, 1438 | x -= 2 1439 | } while (x > 0); 1440 | for (a = p; 0 !== a; a--) 1441 | for (e = t.bl_count[a]; 0 !== e;) 1442 | (i = t.heap[--r]) > c || (u[2 * i + 1] !== a && (t.opt_len += (a - u[2 * i + 1]) * u[2 * i], 1443 | u[2 * i + 1] = a), 1444 | e--) 1445 | } 1446 | }(t, n), 1447 | F(a, c, t.bl_count) 1448 | } 1449 | 1450 | function J(t, n, r) { 1451 | var e, i, a = -1, 1452 | o = n[1], 1453 | s = 0, 1454 | u = 7, 1455 | c = 4; 1456 | for (0 === o && (u = 138, 1457 | c = 3), 1458 | n[2 * (r + 1) + 1] = 65535, 1459 | e = 0; e <= r; e++) 1460 | i = o, 1461 | o = n[2 * (e + 1) + 1], 1462 | ++s < u && i === o || (s < c ? t.bl_tree[2 * i] += s : 0 !== i ? (i !== a && t.bl_tree[2 * i]++, 1463 | t.bl_tree[2 * d]++) : s <= 10 ? t.bl_tree[2 * _]++ : t.bl_tree[2 * p]++, 1464 | s = 0, 1465 | a = i, 1466 | 0 === o ? (u = 138, 1467 | c = 3) : i === o ? (u = 6, 1468 | c = 3) : (u = 7, 1469 | c = 4)) 1470 | } 1471 | 1472 | function V(t, n, r) { 1473 | var e, i, a = -1, 1474 | o = n[1], 1475 | s = 0, 1476 | u = 7, 1477 | c = 4; 1478 | for (0 === o && (u = 138, 1479 | c = 3), 1480 | e = 0; e <= r; e++) 1481 | if (i = o, 1482 | o = n[2 * (e + 1) + 1], 1483 | !(++s < u && i === o)) { 1484 | if (s < c) 1485 | do { 1486 | Q(t, i, t.bl_tree) 1487 | } while (0 != --s); 1488 | else 1489 | 0 !== i ? (i !== a && (Q(t, i, t.bl_tree), 1490 | s--), 1491 | Q(t, d, t.bl_tree), 1492 | T(t, s - 3, 2)) : s <= 10 ? (Q(t, _, t.bl_tree), 1493 | T(t, s - 3, 3)) : (Q(t, p, t.bl_tree), 1494 | T(t, s - 11, 7)); 1495 | s = 0, 1496 | a = i, 1497 | 0 === o ? (u = 138, 1498 | c = 3) : i === o ? (u = 6, 1499 | c = 3) : (u = 7, 1500 | c = 4) 1501 | } 1502 | } 1503 | i(A); 1504 | var P = !1; 1505 | 1506 | function X(t, n, r, i) { 1507 | function arraySet(t, n, r, e, i) { 1508 | if (n.subarray && t.subarray) 1509 | t.set(n.subarray(r, r + e), i); 1510 | else 1511 | for (var a = 0; a < e; a++) 1512 | t[i + a] = n[r + a] 1513 | }; 1514 | T(t, (a << 1) + (i ? 1 : 0), 3), 1515 | function(t, n, r, i) { 1516 | E(t), 1517 | j(t, r), 1518 | j(t, ~r), 1519 | arraySet(t.pending_buf, t.window, n, r, t.pending), 1520 | t.pending += r 1521 | }(t, n, r) 1522 | } 1523 | n._tr_init = function(t) { 1524 | P || (function() { 1525 | var t, n, r, e, i, a = new Array(h + 1); 1526 | for (r = 0, 1527 | e = 0; e < 28; e++) 1528 | for (K[e] = r, 1529 | t = 0; t < 1 << x[e]; t++) 1530 | C[r++] = e; 1531 | for (C[r - 1] = e, 1532 | i = 0, 1533 | e = 0; e < 16; e++) 1534 | for (A[e] = i, 1535 | t = 0; t < 1 << g[e]; t++) 1536 | D[i++] = e; 1537 | for (i >>= 7; e < u; e++) 1538 | for (A[e] = i << 7, 1539 | t = 0; t < 1 << g[e] - 7; t++) 1540 | D[256 + i++] = e; 1541 | for (n = 0; n <= h; n++) 1542 | a[n] = 0; 1543 | for (t = 0; t <= 143;) 1544 | m[2 * t + 1] = 8, 1545 | t++, 1546 | a[8]++; 1547 | for (; t <= 255;) 1548 | m[2 * t + 1] = 9, 1549 | t++, 1550 | a[9]++; 1551 | for (; t <= 279;) 1552 | m[2 * t + 1] = 7, 1553 | t++, 1554 | a[7]++; 1555 | for (; t <= 287;) 1556 | m[2 * t + 1] = 8, 1557 | t++, 1558 | a[8]++; 1559 | for (F(m, s + 1, a), 1560 | t = 0; t < u; t++) 1561 | y[2 * t + 1] = 5, 1562 | y[2 * t] = R(t, 5); 1563 | k = new B(m, x, o + 1, s, h), 1564 | O = new B(y, g, 0, u, h), 1565 | z = new B(new Array(0), v, 0, c, 7) 1566 | }(), 1567 | P = !0), 1568 | t.l_desc = new M(t.dyn_ltree, k), 1569 | t.d_desc = new M(t.dyn_dtree, O), 1570 | t.bl_desc = new M(t.bl_tree, z), 1571 | t.bi_buf = 0, 1572 | t.bi_valid = 0, 1573 | S(t) 1574 | }, 1575 | n._tr_stored_block = X, 1576 | n._tr_flush_block = function(t, n, r, e) { 1577 | var i, a, s = 0; 1578 | t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = function(t) { 1579 | var n, r = 4093624447; 1580 | for (n = 0; n <= 31; n++, 1581 | r >>>= 1) 1582 | if (1 & r && 0 !== t.dyn_ltree[2 * n]) 1583 | return 0; 1584 | if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) 1585 | return 1; 1586 | for (n = 32; n < o; n++) 1587 | if (0 !== t.dyn_ltree[2 * n]) 1588 | return 1; 1589 | return 0 1590 | }(t)), 1591 | L(t, t.l_desc), 1592 | L(t, t.d_desc), 1593 | s = function(t) { 1594 | var n; 1595 | for (J(t, t.dyn_ltree, t.l_desc.max_code), 1596 | J(t, t.dyn_dtree, t.d_desc.max_code), 1597 | L(t, t.bl_desc), 1598 | n = c - 1; n >= 3 && 0 === t.bl_tree[2 * b[n] + 1]; n--) 1599 | ; 1600 | return t.opt_len += 3 * (n + 1) + 5 + 5 + 4, 1601 | n 1602 | }(t), 1603 | i = t.opt_len + 3 + 7 >>> 3, 1604 | (a = t.static_len + 3 + 7 >>> 3) <= i && (i = a)) : i = a = r + 5, 1605 | r + 4 <= i && -1 !== n ? X(t, n, r, e) : 4 === t.strategy || a === i ? (T(t, 2 + (e ? 1 : 0), 3), 1606 | H(t, m, y)) : (T(t, 4 + (e ? 1 : 0), 3), 1607 | function(t, n, r, e) { 1608 | var i; 1609 | for (T(t, n - 257, 5), 1610 | T(t, r - 1, 5), 1611 | T(t, e - 4, 4), 1612 | i = 0; i < e; i++) 1613 | T(t, t.bl_tree[2 * b[i] + 1], 3); 1614 | V(t, t.dyn_ltree, n - 1), 1615 | V(t, t.dyn_dtree, r - 1) 1616 | }(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, s + 1), 1617 | H(t, t.dyn_ltree, t.dyn_dtree)), 1618 | S(t), 1619 | e && E(t) 1620 | }, 1621 | n._tr_tally = function(t, n, r) { 1622 | return t.pending_buf[t.d_buf + 2 * t.last_lit] = n >>> 8 & 255, 1623 | t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & n, 1624 | t.pending_buf[t.l_buf + t.last_lit] = 255 & r, 1625 | t.last_lit++, 1626 | 0 === n ? t.dyn_ltree[2 * r]++ : (t.matches++, 1627 | n--, 1628 | t.dyn_ltree[2 * (C[r] + o + 1)]++, 1629 | t.dyn_dtree[2 * q(n)]++), 1630 | t.last_lit === t.lit_bufsize - 1 1631 | }, 1632 | n._tr_align = function(t) { 1633 | T(t, 2, 3), 1634 | Q(t, l, m), 1635 | function(t) { 1636 | 16 === t.bi_valid ? (j(t, t.bi_buf), 1637 | t.bi_buf = 0, 1638 | t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, 1639 | t.bi_buf >>= 8, 1640 | t.bi_valid -= 8) 1641 | }(t) 1642 | } 1643 | })(); 1644 | //----------------------------------------------------------------------------------------------------------------------------------------------------- 1645 | 1646 | function shrinkBuf(t, n) { 1647 | return t.length === n ? t : t.subarray ? t.subarray(0, n) : (t.length = n, 1648 | t) 1649 | } 1650 | 1651 | 1652 | 1653 | 1654 | //deflateint2----------------------------------------------------------------------------------------------------------------------------------------- 1655 | (function(t, n, r) { 1656 | "use strict"; 1657 | var n = deflate2; 1658 | var e, 1659 | o = function(t, n, r, e) { 1660 | for (var i = 65535 & t | 0, a = t >>> 16 & 65535 | 0, o = 0; 0 !== r;) { 1661 | r -= o = r > 2e3 ? 2e3 : r; 1662 | do { 1663 | a = a + (i = i + n[e++] | 0) | 0 1664 | } while (--o); 1665 | i %= 65521, 1666 | a %= 65521 1667 | } 1668 | return i | a << 16 | 0 1669 | }, 1670 | u = { 1671 | 0: "", 1672 | 1: "stream end", 1673 | 2: "need dictionary", 1674 | 1: "file error", 1675 | 2: "stream error", 1676 | 3: "data error", 1677 | 4: "insufficient memory", 1678 | 5: "buffer error", 1679 | 6: "incompatible version" 1680 | }, 1681 | c = 0, 1682 | f = 4, 1683 | h = 0, 1684 | w = -2, 1685 | l = -1, 1686 | d = 1, 1687 | _ = 4, 1688 | p = 2, 1689 | x = 8, 1690 | g = 9, 1691 | v = 286, 1692 | b = 30, 1693 | m = 19, 1694 | y = 2 * v + 1, 1695 | D = 15, 1696 | C = 3, 1697 | K = 258, 1698 | k = K + C + 1, 1699 | O = 42, 1700 | z = 103, 1701 | A = 113, 1702 | B = 666, 1703 | M = 1, 1704 | q = 2, 1705 | j = 3, 1706 | T = 4; 1707 | 1708 | function Q(t, n) { 1709 | return t.msg = u[n], 1710 | n 1711 | } 1712 | 1713 | function R(t) { 1714 | return (t << 1) - (t > 4 ? 9 : 0) 1715 | } 1716 | 1717 | function F(t) { 1718 | for (var n = t.length; --n >= 0;) 1719 | t[n] = 0 1720 | } 1721 | 1722 | function arraySet(t, n, r, e, i) { 1723 | if (n.subarray && t.subarray) 1724 | t.set(n.subarray(r, r + e), i); 1725 | else 1726 | for (var a = 0; a < e; a++) 1727 | t[i + a] = n[r + a] 1728 | }; 1729 | 1730 | function S(t) { 1731 | 1732 | var n = t.state, 1733 | r = n.pending; 1734 | r > t.avail_out && (r = t.avail_out), 1735 | 0 !== r && (arraySet(t.output, n.pending_buf, n.pending_out, r, t.next_out), 1736 | t.next_out += r, 1737 | n.pending_out += r, 1738 | t.total_out += r, 1739 | t.avail_out -= r, 1740 | n.pending -= r, 1741 | 0 === n.pending && (n.pending_out = 0)) 1742 | } 1743 | 1744 | function E(t, n) { 1745 | tr_._tr_flush_block(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, n), 1746 | t.block_start = t.strstart, 1747 | S(t.strm) 1748 | } 1749 | 1750 | function U(t, n) { 1751 | t.pending_buf[t.pending++] = n 1752 | } 1753 | 1754 | function I(t, n) { 1755 | t.pending_buf[t.pending++] = n >>> 8 & 255, 1756 | t.pending_buf[t.pending++] = 255 & n 1757 | } 1758 | 1759 | function H(t, n) { 1760 | var r, e, i = t.max_chain_length, 1761 | a = t.strstart, 1762 | o = t.prev_length, 1763 | s = t.nice_match, 1764 | u = t.strstart > t.w_size - k ? t.strstart - (t.w_size - k) : 0, 1765 | c = t.window, 1766 | f = t.w_mask, 1767 | h = t.prev, 1768 | w = t.strstart + K, 1769 | l = c[a + o - 1], 1770 | d = c[a + o]; 1771 | t.prev_length >= t.good_match && (i >>= 2), 1772 | s > t.lookahead && (s = t.lookahead); 1773 | do { 1774 | if (c[(r = n) + o] === d && c[r + o - 1] === l && c[r] === c[a] && c[++r] === c[a + 1]) { 1775 | a += 2, 1776 | r++; 1777 | do {} while (c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && 1778 | c[++a] === c[++r] && c[++a] === c[++r] && c[++a] === c[++r] && a < w); 1779 | if (e = K - (w - a), 1780 | a = w - K, 1781 | e > o) { 1782 | if (t.match_start = n, 1783 | o = e, 1784 | e >= s) 1785 | break; 1786 | l = c[a + o - 1], 1787 | d = c[a + o] 1788 | } 1789 | } 1790 | } while ((n = h[n & f]) > u && 0 != --i); 1791 | return o <= t.lookahead ? o : t.lookahead 1792 | } 1793 | 1794 | function L(t) { 1795 | var n, r, e, a, u, c, f, h, w, l, d = t.w_size; 1796 | do { 1797 | if (a = t.window_size - t.lookahead - t.strstart, 1798 | t.strstart >= d + (d - k)) { 1799 | arraySet(t.window, t.window, d, d, 0), 1800 | t.match_start -= d, 1801 | t.strstart -= d, 1802 | t.block_start -= d, 1803 | n = r = t.hash_size; 1804 | do { 1805 | e = t.head[--n], 1806 | t.head[n] = e >= d ? e - d : 0 1807 | } while (--r); 1808 | n = r = d; 1809 | do { 1810 | e = t.prev[--n], 1811 | t.prev[n] = e >= d ? e - d : 0 1812 | } while (--r); 1813 | a += d 1814 | } 1815 | if (0 === t.strm.avail_in) 1816 | break; 1817 | if (c = t.strm, 1818 | f = t.window, 1819 | h = t.strstart + t.lookahead, 1820 | w = a, 1821 | l = void 0, 1822 | (l = c.avail_in) > w && (l = w), 1823 | r = 0 === l ? 0 : (c.avail_in -= l, 1824 | arraySet(f, c.input, c.next_in, l, h), 1825 | 1 === c.state.wrap ? c.adler = o(c.adler, f, l, h) : 2 === c.state.wrap && (c.adler = s(c.adler, f, l, h)), 1826 | c.next_in += l, 1827 | c.total_in += l, 1828 | l), 1829 | t.lookahead += r, 1830 | t.lookahead + t.insert >= C) 1831 | for (u = t.strstart - t.insert, 1832 | t.ins_h = t.window[u], 1833 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[u + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ 1834 | t.window[u + C - 1]) & t.hash_mask, 1835 | t.prev[u & t.w_mask] = t.head[t.ins_h], 1836 | t.head[t.ins_h] = u, 1837 | u++, 1838 | t.insert--, 1839 | !(t.lookahead + t.insert < C));) 1840 | ; 1841 | } while (t.lookahead < k && 0 !== t.strm.avail_in) 1842 | } 1843 | 1844 | function J(t, n) { 1845 | for (var r, e;;) { 1846 | if (t.lookahead < k) { 1847 | if (L(t), 1848 | t.lookahead < k && n === c) 1849 | return M; 1850 | if (0 === t.lookahead) 1851 | break 1852 | } 1853 | if (r = 0, 1854 | t.lookahead >= C && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask, 1855 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], 1856 | t.head[t.ins_h] = t.strstart), 1857 | 0 !== r && t.strstart - r <= t.w_size - k && (t.match_length = H(t, r)), 1858 | t.match_length >= C) 1859 | if (e = tr_._tr_tally(t, t.strstart - t.match_start, t.match_length - C), 1860 | t.lookahead -= t.match_length, 1861 | t.match_length <= t.max_lazy_match && t.lookahead >= C) { 1862 | t.match_length--; 1863 | do { 1864 | t.strstart++, 1865 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask, 1866 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], 1867 | t.head[t.ins_h] = t.strstart 1868 | } while (0 != --t.match_length); 1869 | t.strstart++ 1870 | } else 1871 | t.strstart += t.match_length, 1872 | t.match_length = 0, 1873 | t.ins_h = t.window[t.strstart], 1874 | t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask; 1875 | else 1876 | e = tr_._tr_tally(t, 0, t.window[t.strstart]), 1877 | t.lookahead--, 1878 | t.strstart++; 1879 | if (e && (E(t, !1), 1880 | 0 === t.strm.avail_out)) 1881 | return M 1882 | } 1883 | return t.insert = t.strstart < C - 1 ? t.strstart : C - 1, 1884 | n === f ? (E(t, !0), 1885 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1), 1886 | 0 === t.strm.avail_out) ? M : q 1887 | } 1888 | 1889 | function V(t, n) { 1890 | for (var r, e, i;;) { 1891 | if (t.lookahead < k) { 1892 | if (L(t), 1893 | t.lookahead < k && n === c) 1894 | return M; 1895 | if (0 === t.lookahead) 1896 | break 1897 | } 1898 | if (r = 0, 1899 | t.lookahead >= C && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask, 1900 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], 1901 | t.head[t.ins_h] = t.strstart), 1902 | t.prev_length = t.match_length, 1903 | t.prev_match = t.match_start, 1904 | t.match_length = C - 1, 1905 | 0 !== r && t.prev_length < t.max_lazy_match && t.strstart - r <= t.w_size - k && (t.match_length = H(t, r), 1906 | t.match_length <= 5 && (t.strategy === d || t.match_length === C && t.strstart - t.match_start > 4096) && (t.match_length = 1907 | C - 1)), 1908 | t.prev_length >= C && t.match_length <= t.prev_length) { 1909 | i = t.strstart + t.lookahead - C, 1910 | e = tr_._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - C), 1911 | t.lookahead -= t.prev_length - 1, 1912 | t.prev_length -= 2; 1913 | do { 1914 | ++t.strstart <= i && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + C - 1]) & t.hash_mask, 1915 | r = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], 1916 | t.head[t.ins_h] = t.strstart) 1917 | } while (0 != --t.prev_length); 1918 | if (t.match_available = 0, 1919 | t.match_length = C - 1, 1920 | t.strstart++, 1921 | e && (E(t, !1), 1922 | 0 === t.strm.avail_out)) 1923 | return M 1924 | } else if (t.match_available) { 1925 | if ((e = tr_._tr_tally(t, 0, t.window[t.strstart - 1])) && E(t, !1), 1926 | t.strstart++, 1927 | t.lookahead--, 1928 | 0 === t.strm.avail_out) 1929 | return M 1930 | } else 1931 | t.match_available = 1, 1932 | t.strstart++, 1933 | t.lookahead-- 1934 | } 1935 | return t.match_available && (e = tr_._tr_tally(t, 0, t.window[t.strstart - 1]), 1936 | t.match_available = 0), 1937 | t.insert = t.strstart < C - 1 ? t.strstart : C - 1, 1938 | n === f ? (E(t, !0), 1939 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1), 1940 | 0 === t.strm.avail_out) ? M : q 1941 | } 1942 | 1943 | function P(t, n, r, e, i) { 1944 | this.good_length = t, 1945 | this.max_lazy = n, 1946 | this.nice_length = r, 1947 | this.max_chain = e, 1948 | this.func = i 1949 | } 1950 | 1951 | function X(t) { 1952 | var n; 1953 | return t && t.state ? (t.total_in = t.total_out = 0, 1954 | t.data_type = p, 1955 | (n = t.state).pending = 0, 1956 | n.pending_out = 0, 1957 | n.wrap < 0 && (n.wrap = -n.wrap), 1958 | n.status = n.wrap ? O : A, 1959 | t.adler = 2 === n.wrap ? 0 : 1, 1960 | n.last_flush = c, 1961 | tr_._tr_init(n), 1962 | h) : Q(t, w) 1963 | } 1964 | 1965 | function Z(t) { 1966 | var n, r = X(t); 1967 | return r === h && ((n = t.state).window_size = 2 * n.w_size, 1968 | F(n.head), 1969 | n.max_lazy_match = e[n.level].max_lazy, 1970 | n.good_match = e[n.level].good_length, 1971 | n.nice_match = e[n.level].nice_length, 1972 | n.max_chain_length = e[n.level].max_chain, 1973 | n.strstart = 0, 1974 | n.block_start = 0, 1975 | n.lookahead = 0, 1976 | n.insert = 0, 1977 | n.match_length = n.prev_length = C - 1, 1978 | n.match_available = 0, 1979 | n.ins_h = 0), 1980 | r 1981 | } 1982 | 1983 | function N(t, n, r, e, a, o) { 1984 | if (!t) 1985 | return w; 1986 | var s = 1; 1987 | if (n === l && (n = 6), 1988 | e < 0 ? (s = 0, 1989 | e = -e) : e > 15 && (s = 2, 1990 | e -= 16), 1991 | a < 1 || a > g || r !== x || e < 8 || e > 15 || n < 0 || n > 9 || o < 0 || o > _) 1992 | return Q(t, w); 1993 | 8 === e && (e = 9); 1994 | var u = new function() { 1995 | this.strm = null, 1996 | this.status = 0, 1997 | this.pending_buf = null, 1998 | this.pending_buf_size = 0, 1999 | this.pending_out = 0, 2000 | this.pending = 0, 2001 | this.wrap = 0, 2002 | this.gzhead = null, 2003 | this.gzindex = 0, 2004 | this.method = x, 2005 | this.last_flush = -1, 2006 | this.w_size = 0, 2007 | this.w_bits = 0, 2008 | this.w_mask = 0, 2009 | this.window = null, 2010 | this.window_size = 0, 2011 | this.prev = null, 2012 | this.head = null, 2013 | this.ins_h = 0, 2014 | this.hash_size = 0, 2015 | this.hash_bits = 0, 2016 | this.hash_mask = 0, 2017 | this.hash_shift = 0, 2018 | this.block_start = 0, 2019 | this.match_length = 0, 2020 | this.prev_match = 0, 2021 | this.match_available = 0, 2022 | this.strstart = 0, 2023 | this.match_start = 0, 2024 | this.lookahead = 0, 2025 | this.prev_length = 0, 2026 | this.max_chain_length = 0, 2027 | this.max_lazy_match = 0, 2028 | this.level = 0, 2029 | this.strategy = 0, 2030 | this.good_match = 0, 2031 | this.nice_match = 0, 2032 | this.dyn_ltree = new Uint16Array(2 * y), 2033 | this.dyn_dtree = new Uint16Array(2 * (2 * b + 1)), 2034 | this.bl_tree = new Uint16Array(2 * (2 * m + 1)), 2035 | F(this.dyn_ltree), 2036 | F(this.dyn_dtree), 2037 | F(this.bl_tree), 2038 | this.l_desc = null, 2039 | this.d_desc = null, 2040 | this.bl_desc = null, 2041 | this.bl_count = new Uint16Array(D + 1), 2042 | this.heap = new Uint16Array(2 * v + 1), 2043 | F(this.heap), 2044 | this.heap_len = 0, 2045 | this.heap_max = 0, 2046 | this.depth = new Uint16Array(2 * v + 1), 2047 | F(this.depth), 2048 | this.l_buf = 0, 2049 | this.lit_bufsize = 0, 2050 | this.last_lit = 0, 2051 | this.d_buf = 0, 2052 | this.opt_len = 0, 2053 | this.static_len = 0, 2054 | this.matches = 0, 2055 | this.insert = 0, 2056 | this.bi_buf = 0, 2057 | this.bi_valid = 0 2058 | }; 2059 | return t.state = u, 2060 | u.strm = t, 2061 | u.wrap = s, 2062 | u.gzhead = null, 2063 | u.w_bits = e, 2064 | u.w_size = 1 << u.w_bits, 2065 | u.w_mask = u.w_size - 1, 2066 | u.hash_bits = a + 7, 2067 | u.hash_size = 1 << u.hash_bits, 2068 | u.hash_mask = u.hash_size - 1, 2069 | u.hash_shift = ~~((u.hash_bits + C - 1) / C), 2070 | u.window = new Uint8Array(2 * u.w_size), 2071 | u.head = new Uint16Array(u.hash_size), 2072 | u.prev = new Uint16Array(u.w_size), 2073 | u.lit_bufsize = 1 << a + 6, 2074 | u.pending_buf_size = 4 * u.lit_bufsize, 2075 | u.pending_buf = new Uint8Array(u.pending_buf_size), 2076 | u.d_buf = 1 * u.lit_bufsize, 2077 | u.l_buf = 3 * u.lit_bufsize, 2078 | u.level = n, 2079 | u.strategy = o, 2080 | u.method = r, 2081 | Z(t) 2082 | } 2083 | e = [new P(0, 0, 0, 0, function(t, n) { 2084 | var r = 65535; 2085 | for (r > t.pending_buf_size - 5 && (r = t.pending_buf_size - 5);;) { 2086 | if (t.lookahead <= 1) { 2087 | if (L(t), 2088 | 0 === t.lookahead && n === c) 2089 | return M; 2090 | if (0 === t.lookahead) 2091 | break 2092 | } 2093 | t.strstart += t.lookahead, 2094 | t.lookahead = 0; 2095 | var e = t.block_start + r; 2096 | if ((0 === t.strstart || t.strstart >= e) && (t.lookahead = t.strstart - e, 2097 | t.strstart = e, 2098 | E(t, !1), 2099 | 0 === t.strm.avail_out)) 2100 | return M; 2101 | if (t.strstart - t.block_start >= t.w_size - k && (E(t, !1), 2102 | 0 === t.strm.avail_out)) 2103 | return M 2104 | } 2105 | return t.insert = 0, 2106 | n === f ? (E(t, !0), 2107 | 0 === t.strm.avail_out ? j : T) : (t.strstart > t.block_start && (E(t, !1), 2108 | t.strm.avail_out), 2109 | M) 2110 | }), new P(4, 4, 8, 4, J), new P(4, 5, 16, 8, J), new P(4, 6, 32, 32, J), new P(4, 4, 16, 16, V), new P(8, 16, 32, 2111 | 32, V), new P(8, 16, 128, 128, V), new P(8, 32, 128, 256, V), new P(32, 128, 258, 1024, V), new P(32, 258, 258, 2112 | 4096, V)], 2113 | n.deflateInit = function(t, n) { 2114 | return N(t, n, x, 15, 8, 0) 2115 | }, 2116 | n.deflateInit2 = N, 2117 | n.deflateReset = Z, 2118 | n.deflateResetKeep = X, 2119 | n.deflateSetHeader = function(t, n) { 2120 | return t && t.state ? 2 !== t.state.wrap ? w : (t.state.gzhead = n, 2121 | h) : w 2122 | }, 2123 | n.deflate = function(t, n) { 2124 | var r, i, o, u; 2125 | if (!t || !t.state || n > 5 || n < 0) 2126 | return t ? Q(t, w) : w; 2127 | if (i = t.state, 2128 | !t.output || !t.input && 0 !== t.avail_in || i.status === B && n !== f) 2129 | return Q(t, 0 === t.avail_out ? -5 : w); 2130 | if (i.strm = t, 2131 | r = i.last_flush, 2132 | i.last_flush = n, 2133 | i.status === O) 2134 | if (2 === i.wrap) 2135 | t.adler = 0, 2136 | U(i, 31), 2137 | U(i, 139), 2138 | U(i, 8), 2139 | i.gzhead ? (U(i, (i.gzhead.text ? 1 : 0) + (i.gzhead.hcrc ? 2 : 0) + (i.gzhead.extra ? 4 : 0) + (i.gzhead.name ? 2140 | 8 : 0) + (i.gzhead.comment ? 16 : 0)), 2141 | U(i, 255 & i.gzhead.time), 2142 | U(i, i.gzhead.time >> 8 & 255), 2143 | U(i, i.gzhead.time >> 16 & 255), 2144 | U(i, i.gzhead.time >> 24 & 255), 2145 | U(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0), 2146 | U(i, 255 & i.gzhead.os), 2147 | i.gzhead.extra && i.gzhead.extra.length && (U(i, 255 & i.gzhead.extra.length), 2148 | U(i, i.gzhead.extra.length >> 8 & 255)), 2149 | i.gzhead.hcrc && (t.adler = s(t.adler, i.pending_buf, i.pending, 0)), 2150 | i.gzindex = 0, 2151 | i.status = 69) : (U(i, 0), 2152 | U(i, 0), 2153 | U(i, 0), 2154 | U(i, 0), 2155 | U(i, 0), 2156 | U(i, 9 === i.level ? 2 : i.strategy >= 2 || i.level < 2 ? 4 : 0), 2157 | U(i, 3), 2158 | i.status = A); 2159 | else { 2160 | var l = x + (i.w_bits - 8 << 4) << 8; 2161 | l |= (i.strategy >= 2 || i.level < 2 ? 0 : i.level < 6 ? 1 : 6 === i.level ? 2 : 3) << 6, 2162 | 0 !== i.strstart && (l |= 32), 2163 | l += 31 - l % 31, 2164 | i.status = A, 2165 | I(i, l), 2166 | 0 !== i.strstart && (I(i, t.adler >>> 16), 2167 | I(i, 65535 & t.adler)), 2168 | t.adler = 1 2169 | } 2170 | if (69 === i.status) 2171 | if (i.gzhead.extra) { 2172 | for (o = i.pending; i.gzindex < (65535 & i.gzhead.extra.length) && (i.pending !== i.pending_buf_size || (i.gzhead 2173 | .hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 2174 | S(t), 2175 | o = i.pending, 2176 | i.pending !== i.pending_buf_size));) 2177 | U(i, 255 & i.gzhead.extra[i.gzindex]), 2178 | i.gzindex++; 2179 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 2180 | i.gzindex === i.gzhead.extra.length && (i.gzindex = 0, 2181 | i.status = 73) 2182 | } else 2183 | i.status = 73; 2184 | if (73 === i.status) 2185 | if (i.gzhead.name) { 2186 | o = i.pending; 2187 | do { 2188 | if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, 2189 | i.pending - o, o)), 2190 | S(t), 2191 | o = i.pending, 2192 | i.pending === i.pending_buf_size)) { 2193 | u = 1; 2194 | break 2195 | } 2196 | u = i.gzindex < i.gzhead.name.length ? 255 & i.gzhead.name.charCodeAt(i.gzindex++) : 0, 2197 | U(i, u) 2198 | } while (0 !== u); 2199 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 2200 | 0 === u && (i.gzindex = 0, 2201 | i.status = 91) 2202 | } else 2203 | i.status = 91; 2204 | if (91 === i.status) 2205 | if (i.gzhead.comment) { 2206 | o = i.pending; 2207 | do { 2208 | if (i.pending === i.pending_buf_size && (i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, 2209 | i.pending - o, o)), 2210 | S(t), 2211 | o = i.pending, 2212 | i.pending === i.pending_buf_size)) { 2213 | u = 1; 2214 | break 2215 | } 2216 | u = i.gzindex < i.gzhead.comment.length ? 255 & i.gzhead.comment.charCodeAt(i.gzindex++) : 0, 2217 | U(i, u) 2218 | } while (0 !== u); 2219 | i.gzhead.hcrc && i.pending > o && (t.adler = s(t.adler, i.pending_buf, i.pending - o, o)), 2220 | 0 === u && (i.status = z) 2221 | } else 2222 | i.status = z; 2223 | if (i.status === z && (i.gzhead.hcrc ? (i.pending + 2 > i.pending_buf_size && S(t), 2224 | i.pending + 2 <= i.pending_buf_size && (U(i, 255 & t.adler), 2225 | U(i, t.adler >> 8 & 255), 2226 | t.adler = 0, 2227 | i.status = A)) : i.status = A), 2228 | 0 !== i.pending) { 2229 | if (S(t), 2230 | 0 === t.avail_out) 2231 | return i.last_flush = -1, 2232 | h 2233 | } else if (0 === t.avail_in && R(n) <= R(r) && n !== f) 2234 | return Q(t, -5); 2235 | if (i.status === B && 0 !== t.avail_in) 2236 | return Q(t, -5); 2237 | if (0 !== t.avail_in || 0 !== i.lookahead || n !== c && i.status !== B) { 2238 | var d = 2 === i.strategy ? function(t, n) { 2239 | for (var r;;) { 2240 | if (0 === t.lookahead && (L(t), 2241 | 0 === t.lookahead)) { 2242 | if (n === c) 2243 | return M; 2244 | break 2245 | } 2246 | if (t.match_length = 0, 2247 | r = tr_._tr_tally(t, 0, t.window[t.strstart]), 2248 | t.lookahead--, 2249 | t.strstart++, 2250 | r && (E(t, !1), 2251 | 0 === t.strm.avail_out)) 2252 | return M 2253 | } 2254 | return t.insert = 0, 2255 | n === f ? (E(t, !0), 2256 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1), 2257 | 0 === t.strm.avail_out) ? M : q 2258 | }(i, n) : 3 === i.strategy ? function(t, n) { 2259 | for (var r, e, i, o, s = t.window;;) { 2260 | if (t.lookahead <= K) { 2261 | if (L(t), 2262 | t.lookahead <= K && n === c) 2263 | return M; 2264 | if (0 === t.lookahead) 2265 | break 2266 | } 2267 | if (t.match_length = 0, 2268 | t.lookahead >= C && t.strstart > 0 && (e = s[i = t.strstart - 1]) === s[++i] && e === s[++i] && e === s[++i]) { 2269 | o = t.strstart + K; 2270 | do {} while (e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && e === s[++i] && 2271 | e === 2272 | s[++i] && e === s[++i] && i < o); 2273 | t.match_length = K - (o - i), 2274 | t.match_length > t.lookahead && (t.match_length = t.lookahead) 2275 | } 2276 | if (t.match_length >= C ? (r = tr_._tr_tally(t, 1, t.match_length - C), 2277 | t.lookahead -= t.match_length, 2278 | t.strstart += t.match_length, 2279 | t.match_length = 0) : (r = tr_._tr_tally(t, 0, t.window[t.strstart]), 2280 | t.lookahead--, 2281 | t.strstart++), 2282 | r && (E(t, !1), 2283 | 0 === t.strm.avail_out)) 2284 | return M 2285 | } 2286 | return t.insert = 0, 2287 | n === f ? (E(t, !0), 2288 | 0 === t.strm.avail_out ? j : T) : t.last_lit && (E(t, !1), 2289 | 0 === t.strm.avail_out) ? M : q 2290 | }(i, n) : e[i.level].func(i, n); 2291 | if (d !== j && d !== T || (i.status = B), 2292 | d === M || d === j) 2293 | return 0 === t.avail_out && (i.last_flush = -1), 2294 | h; 2295 | if (d === q && (1 === n ? tr_._tr_align(i) : 5 !== n && (tr_._tr_stored_block(i, 0, 0, !1), 2296 | 3 === n && (F(i.head), 2297 | 0 === i.lookahead && (i.strstart = 0, 2298 | i.block_start = 0, 2299 | i.insert = 0))), 2300 | S(t), 2301 | 0 === t.avail_out)) 2302 | return i.last_flush = -1, 2303 | h 2304 | } 2305 | return n !== f ? h : i.wrap <= 0 ? 1 : (2 === i.wrap ? (U(i, 255 & t.adler), 2306 | U(i, t.adler >> 8 & 255), 2307 | U(i, t.adler >> 16 & 255), 2308 | U(i, t.adler >> 24 & 255), 2309 | U(i, 255 & t.total_in), 2310 | U(i, t.total_in >> 8 & 255), 2311 | U(i, t.total_in >> 16 & 255), 2312 | U(i, t.total_in >> 24 & 255)) : (I(i, t.adler >>> 16), 2313 | I(i, 65535 & t.adler)), 2314 | S(t), 2315 | i.wrap > 0 && (i.wrap = -i.wrap), 2316 | 0 !== i.pending ? h : 1) 2317 | }, 2318 | n.deflateEnd = function(t) { 2319 | var n; 2320 | return t && t.state ? (n = t.state.status) !== O && 69 !== n && 73 !== n && 91 !== n && n !== z && n !== A && n !== 2321 | B ? Q(t, w) : (t.state = null, 2322 | n === A ? Q(t, -3) : h) : w 2323 | }, 2324 | n.deflateSetDictionary = function(t, n) { 2325 | var r, e, a, s, u, c, f, l, d = n.length; 2326 | if (!t || !t.state) 2327 | return w; 2328 | if (2 === (s = (r = t.state).wrap) || 1 === s && r.status !== O || r.lookahead) 2329 | return w; 2330 | for (1 === s && (t.adler = o(t.adler, n, d, 0)), 2331 | r.wrap = 0, 2332 | d >= r.w_size && (0 === s && (F(r.head), 2333 | r.strstart = 0, 2334 | r.block_start = 0, 2335 | r.insert = 0), 2336 | l = new Uint8Array(r.w_size), 2337 | arraySet(l, n, d - r.w_size, r.w_size, 0), 2338 | n = l, 2339 | d = r.w_size), 2340 | u = t.avail_in, 2341 | c = t.next_in, 2342 | f = t.input, 2343 | t.avail_in = d, 2344 | t.next_in = 0, 2345 | t.input = n, 2346 | L(r); r.lookahead >= C;) { 2347 | e = r.strstart, 2348 | a = r.lookahead - (C - 1); 2349 | do { 2350 | r.ins_h = (r.ins_h << r.hash_shift ^ r.window[e + C - 1]) & r.hash_mask, 2351 | r.prev[e & r.w_mask] = r.head[r.ins_h], 2352 | r.head[r.ins_h] = e, 2353 | e++ 2354 | } while (--a); 2355 | r.strstart = e, 2356 | r.lookahead = C - 1, 2357 | L(r) 2358 | } 2359 | return r.strstart += r.lookahead, 2360 | r.block_start = r.strstart, 2361 | r.insert = r.lookahead, 2362 | r.lookahead = 0, 2363 | r.match_length = r.prev_length = C - 1, 2364 | r.match_available = 0, 2365 | t.next_in = c, 2366 | t.input = f, 2367 | t.avail_in = u, 2368 | r.wrap = s, 2369 | h 2370 | }, 2371 | n.deflateInfo = "pako deflate (from Nodeca project)" 2372 | })() 2373 | 2374 | 2375 | //----------------------------------------------------------------------------------------------------------------------------------------------------- 2376 | function flattenChunks(t) { 2377 | var n, r, e, i, a, o; 2378 | for (e = 0, 2379 | n = 0, 2380 | r = t.length; n < r; n++) 2381 | e += t[n].length; 2382 | for (o = new Uint8Array(e), 2383 | i = 0, 2384 | n = 0, 2385 | r = t.length; n < r; n++) 2386 | a = t[n], 2387 | o.set(a, i), 2388 | i += a.length; 2389 | return o 2390 | } 2391 | //deflate_init------------------------------------------------------------------------------------------------------------------------------------------ 2392 | function i_assign(t) { 2393 | var e = function(t) { 2394 | return typeof t 2395 | } 2396 | for (var n = Array.prototype.slice.call(arguments, 1); n.length;) { 2397 | var r = n.shift(); 2398 | if (r) { 2399 | if ("object" !== (void 0 === r ? "undefined" : e(r))) 2400 | throw new TypeError(r + "must be non-object"); 2401 | for (var i in r) 2402 | a(r, i) && (t[i] = r[i]) 2403 | } 2404 | } 2405 | return t 2406 | }; 2407 | (function(t, n, r) { 2408 | "use strict"; 2409 | 2410 | var u = Object.prototype.toString, 2411 | c = 0, 2412 | f = -1, 2413 | h = 0, 2414 | w = 8; 2415 | n = deflate; 2416 | 2417 | function s() { 2418 | this.input = null, 2419 | this.next_in = 0, 2420 | this.avail_in = 0, 2421 | this.total_in = 0, 2422 | this.output = null, 2423 | this.next_out = 0, 2424 | this.avail_out = 0, 2425 | this.total_out = 0, 2426 | this.msg = "", 2427 | this.state = null, 2428 | this.data_type = 2, 2429 | this.adler = 0 2430 | }; 2431 | 2432 | function l(t) { 2433 | if (!(this instanceof l)) 2434 | return new l(t); 2435 | this.options = i_assign({ 2436 | level: f, 2437 | method: w, 2438 | chunkSize: 16384, 2439 | windowBits: 15, 2440 | memLevel: 8, 2441 | strategy: h, 2442 | to: "" 2443 | }, t || {}); 2444 | var n = this.options; 2445 | n.raw && n.windowBits > 0 ? n.windowBits = -n.windowBits : n.gzip && n.windowBits > 0 && n.windowBits < 16 && (n.windowBits += 2446 | 16), 2447 | this.err = 0, 2448 | this.msg = "", 2449 | this.ended = !1, 2450 | this.chunks = [], 2451 | this.strm = new s, 2452 | this.strm.avail_out = 0; 2453 | var r = deflate2.deflateInit2(this.strm, n.level, n.method, n.windowBits, n.memLevel, n.strategy); 2454 | if (r !== c) 2455 | throw new Error(o[r]); 2456 | if (n.header && deflate2.deflateSetHeader(this.strm, n.header), 2457 | n.dictionary) { 2458 | var d; 2459 | if (d = "string" == typeof n.dictionary ? a.string2buf(n.dictionary) : "[object ArrayBuffer]" === u.call(n.dictionary) ? 2460 | new Uint8Array(n.dictionary) : n.dictionary, 2461 | (r = deflate2.deflateSetDictionary(this.strm, d)) !== c) 2462 | throw new Error(o[r]); 2463 | this._dict_set = !0 2464 | } 2465 | } 2466 | 2467 | function d(t, n) { 2468 | var r = new l(n); 2469 | if (r.push(t, !0), 2470 | r.err) 2471 | throw r.msg || o[r.err]; 2472 | return r.result 2473 | } 2474 | l.prototype.push = function(t, n) { 2475 | var r, o, s = this.strm, 2476 | f = this.options.chunkSize; 2477 | if (this.ended) 2478 | return !1; 2479 | o = n === ~~n ? n : !0 === n ? 4 : 0, 2480 | "string" == typeof t ? s.input = a.string2buf(t) : "[object ArrayBuffer]" === u.call(t) ? s.input = new Uint8Array( 2481 | t) : s.input = t, 2482 | s.next_in = 0, 2483 | s.avail_in = s.input.length; 2484 | do { 2485 | if (0 === s.avail_out && (s.output = new Uint8Array(f), 2486 | s.next_out = 0, 2487 | s.avail_out = f), 2488 | 1 !== (r = deflate2.deflate(s, o)) && r !== c) 2489 | return this.onEnd(r), 2490 | this.ended = !0, 2491 | !1; 2492 | 0 !== s.avail_out && (0 !== s.avail_in || 4 !== o && 2 !== o) || ("string" === this.options.to ? this.onData(a.buf2binstring( 2493 | shrinkBuf(s.output, s.next_out))) : this.onData(shrinkBuf(s.output, s.next_out))) 2494 | } while ((s.avail_in > 0 || 0 === s.avail_out) && 1 !== r); 2495 | return 4 === o ? (r = deflate2.deflateEnd(this.strm), 2496 | this.onEnd(r), 2497 | this.ended = !0, 2498 | r === c) : 2 !== o || (this.onEnd(c), 2499 | s.avail_out = 0, 2500 | !0) 2501 | }, 2502 | l.prototype.onData = function(t) { 2503 | this.chunks.push(t) 2504 | }, 2505 | l.prototype.onEnd = function(t) { 2506 | t === c && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = flattenChunks(this 2507 | .chunks)), 2508 | this.chunks = [], 2509 | this.err = t, 2510 | this.msg = this.strm.msg 2511 | }, 2512 | n.Deflate = l, 2513 | n.deflate = d, 2514 | n.deflateRaw = function(t, n) { 2515 | return (n = n || {}).raw = !0, 2516 | d(t, n) 2517 | }, 2518 | n.gzip = function(t, n) { 2519 | return (n = n || {}).gzip = !0, 2520 | d(t, n) 2521 | } 2522 | })() 2523 | //e_deflate------------------------------------------------------------------------------------------------------------------------------------------------ 2524 | 2525 | 2526 | 2527 | //lll-------------------------------------------------------------------------------------------------------------------------------------------- 2528 | function yt() { 2529 | var t, n = {}; 2530 | n[g("0xa6", "TNEu")] = function(t) { 2531 | return t() 2532 | }, 2533 | n[g("0xa7", "Bx!c")] = g("0xa8", "8ZIE"), 2534 | n[g("0xa9", "$^D!")] = function(t, n, r) { 2535 | return t(n, r) 2536 | }, 2537 | n[g("0xaa", "TNEu")] = function(t, n) { 2538 | return t < n 2539 | }, 2540 | n[g("0xab", "FWpL")] = function(t, n) { 2541 | return t === n 2542 | }, 2543 | n[g("0xac", "zQEU")] = function(t, n) { 2544 | return t > n 2545 | }, 2546 | n[g("0xad", "!Ry0")] = function(t, n) { 2547 | return t <= n 2548 | }, 2549 | n[g("0xae", "e6f^")] = function(t, n) { 2550 | return t - n 2551 | }, 2552 | n[g("0xaf", "Bx!c")] = function(t, n) { 2553 | return t << n 2554 | }, 2555 | n[g("0xb0", "TNEu")] = function(t, n) { 2556 | return t - n 2557 | }, 2558 | n[g("0xb1", "7sIF")] = function(t, n) { 2559 | return t << n 2560 | }, 2561 | n[g("0xb2", "Ja(b")] = g("0xb3", "XimS"), 2562 | n[g("0xb4", "5%pL")] = function(t, n) { 2563 | return t + n 2564 | }, 2565 | n[g("0xb5", "hI@*")] = g("0xb6", "4[q*"), 2566 | n[g("0xb7", "7qw^")] = g("0xb8", "o(R["); 2567 | var r = (t = [])[E].apply(t, [n[g("0xb9", "rUI6")](mt), $ ? ot[g("0x84", "(DVf")]() : at[g("0xba", "TNEu")](), it[g( 2568 | "0xbb", "7z7d")](), ut[g("0xba", "TNEu")](), ct[g("0xbb", "7z7d")](), ft[g("0x8b", "7sIF")](), ht[g("0xbc", 2569 | "c9Yw")](), wt[g("0xa5", "ogba")](), lt[g("0xbd", "q2rP")](), dt[g("0xbe", "Ed8T")](), _t[g("0xbf", "rqNV")](), 2570 | pt[g("0xc0", "!Ry0")]() 2571 | ].concat(function(t) { 2572 | if (true) { 2573 | for (var n = 0, r = Array(t.length); n < t.length; n++) 2574 | r[n] = t[n]; 2575 | return r 2576 | } 2577 | return c(t) 2578 | }(xt[g("0xc0", "!Ry0")]()))); 2579 | n[g("0xc1", "2xv*")](setTimeout, function() { 2580 | n[g("0xc2", "ogba")](bt) 2581 | }, 0); 2582 | for (var e = r[S][g("0xc3", "zQEU")](2)[g("0xc4", "cZ6)")](""), i = 0; n[g("0xc5", "ogba")](e[S], 16); i += 1) 2583 | e[g("0xc6", "(DVf")]("0"); 2584 | e = e[g("0xc7", "CK20")](""); 2585 | var a = []; 2586 | 2587 | function h(t, n) { 2588 | var r = String(t) 2589 | return parseInt(r, n >>> 0 || (false ? 16 : 10)) 2590 | }; 2591 | n[g("0xc8", "yuh1")](r[S], 0) ? a[I](0, 0) : n[g("0xc9", "c9Yw")](r[S], 0) && n[g("0xca", "ud5t")](r[S], n[g("0xcb", 2592 | "Ja(b")](n[g("0xcc", "Ja(b")](1, 8), 1)) ? a[I](0, r[S]) : n[g("0xcd", "Bx!c")](r[S], n[g("0xce", "Ja(b")](n[g( 2593 | "0xcf", "5%pL")](1, 8), 1)) && a[I](n[g("0xd0", "Ja(b")](h, e[y](0, 8), 2), n[g("0xd1", "yuh1")](h, e[y](8, 16), 2)), 2594 | r = [][E]([1], [0, 0, 0], a, r); 2595 | 2596 | // function defalte(t, n) { 2597 | // var r = new lll(n); 2598 | // if (r.push(t, !0), 2599 | // r.err) 2600 | // throw r.msg || o[r.err]; 2601 | // return r.result 2602 | // }; 2603 | var s = deflate.deflate(r), 2604 | u = [][g("0xd3", "Qcn!")][g("0xd4", "Qcn!")](s, function(t) { 2605 | return String[n[g("0xd5", "aVX(")]](t) 2606 | }); 2607 | return n[g("0xd6", "!Ry0")](n[g("0xd7", "KX$#")], encrypt[n[g("0xd8", "UAA6")]](u[g("0xd9", "KX$#")](""))) 2608 | } 2609 | 2610 | function result(url) { 2611 | href_data = url; 2612 | console.log(href_data) 2613 | return yt() 2614 | } 2615 | console.log(result( 2616 | "http://mobile.yangkeduo.com/search_result.html?search_key=%E5%AD%A6%E7%94%9F%E6%96%87%E5%85%B7%E7%94%A8%E5%93%81%E7%AC%94" 2617 | )) --------------------------------------------------------------------------------