From 4a24008b7a7fca11c9025daec61fdde2e8c5714e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <87984115+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 04:56:30 +0000 Subject: [PATCH] =?UTF-8?q?=E6=BD=87=E6=B4=92=E6=9B=B4=E6=96=B0=2020250221?= =?UTF-8?q?0456?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xiaosa/ITV.txt | 647 ++ xiaosa/JS/56动漫.js | 40 + xiaosa/JS/APPV2.js | 109 + xiaosa/JS/Anime1.js | 169 + xiaosa/JS/NT动漫.js | 1013 +++ xiaosa/JS/NyaFun.js | 13 + xiaosa/JS/alishare.txt | 70 + xiaosa/JS/cheerio.min.js | 10945 ++++++++++++++++++++++++++++++++ xiaosa/JS/crypto-hiker.js | 6141 ++++++++++++++++++ xiaosa/JS/crypto-js.js | 6192 ++++++++++++++++++ xiaosa/JS/drpy2.js | 3862 +++++++++++ xiaosa/JS/drpy2.min.js | 3108 +++++++++ xiaosa/JS/gbk.js | 69 + xiaosa/JS/jinja.js | 607 ++ xiaosa/JS/jinja.min.js | 504 ++ xiaosa/JS/jsencrypt.js | 360 ++ xiaosa/JS/json5.js | 1809 ++++++ xiaosa/JS/jsonpathplus.min.js | 1277 ++++ xiaosa/JS/node-rsa.js | 5858 +++++++++++++++++ xiaosa/JS/pako.min.js | 1439 +++++ xiaosa/JS/quark.min.js | 3057 +++++++++ xiaosa/JS/uri.min.js | 1 + xiaosa/JS/三六零弹幕.js | 843 +++ xiaosa/JS/优酷弹幕.js | 2299 +++++++ xiaosa/JS/剧圈圈.js | 12 + xiaosa/JS/动漫岛.js | 1100 ++++ xiaosa/JS/动漫巴士.js | 64 + xiaosa/JS/动画片大全.js | 28 + xiaosa/JS/去看吧.js | 1127 ++++ xiaosa/JS/奇米动漫.js | 1164 ++++ xiaosa/JS/好看动漫.js | 29 + xiaosa/JS/小熊弹幕.js | 209 + xiaosa/JS/小虎斑弹幕.js | 45 + xiaosa/JS/巨人弹幕.js | 210 + xiaosa/JS/异世界.js | 278 + xiaosa/JS/思古影视.js | 44 + xiaosa/JS/怡萱动漫.js | 773 +++ xiaosa/JS/机器人.js | 198 + xiaosa/JS/梦米弹幕.js | 183 + xiaosa/JS/模板.js | 429 ++ xiaosa/JS/樱花动漫.js | 8 + xiaosa/JS/爱奇艺弹幕.js | 1392 ++++ xiaosa/JS/爱弹幕.js | 815 +++ xiaosa/JS/瓜子影视.js | 476 ++ xiaosa/JS/看了么.js | 890 +++ xiaosa/JS/短剧合集.js | 29 + xiaosa/JS/碟调影视.js | 32 + xiaosa/JS/磁力熊.js | 101 + xiaosa/JS/米兔弹幕.js | 224 + xiaosa/JS/素白白.js | 743 +++ xiaosa/JS/腾讯弹幕.js | 842 +++ xiaosa/JS/芒果弹幕.js | 843 +++ xiaosa/JS/花子动漫.js | 970 +++ xiaosa/JS/茶杯狐.js | 1512 +++++ xiaosa/JS/路漫漫.js | 549 ++ xiaosa/JS/达达龟.js | 627 ++ xiaosa/JS/追剧弹幕.js | 183 + xiaosa/JS/追剧迷.js | 37 + xiaosa/JS/采集之王.js | 378 ++ xiaosa/JS/魔力高清.js | 598 ++ xiaosa/JSON/alist.json | 21 + xiaosa/JSON/webdav.json | 16 + xiaosa/JSON/哔哩合集.json | 5310 ++++++++++++++++ xiaosa/JSON/采集静态.json | 141 + xiaosa/PY/猎手影视.py | 279 + xiaosa/XBPQ/修罗影视.json | 35 + xiaosa/XBPQ/可可影视.json | 8 + xiaosa/XBPQ/吉吉短剧.json | 4 + xiaosa/XBPQ/哆啦新番社.json | 18 + xiaosa/XBPQ/布谷TV.json | 17 + xiaosa/XBPQ/樱花影视.json | 5 + xiaosa/XBPQ/永乐影视.json | 7 + xiaosa/XBPQ/流光影视.json | 17 + xiaosa/XBPQ/海纳影视.json | 6 + xiaosa/XBPQ/爱我短剧.json | 25 + xiaosa/XBPQ/皮皮虾.json | 6 + xiaosa/XBPQ/短剧网.json | 4 + xiaosa/XBPQ/雪糕影视.json | 5 + xiaosa/XBPQ/面包影视.json | 7 + xiaosa/XYQHiker/BT天堂.json | 71 + xiaosa/XYQHiker/电影港.json | 131 + xiaosa/XYQHiker/电影牛.json | 71 + xiaosa/XYQHiker/短剧屋.json | 81 + xiaosa/api.json | 2372 +++++++ xiaosa/spider.jar | Bin 0 -> 2032015 bytes xiaosa/wex.jar | Bin 0 -> 450836 bytes 86 files changed, 76231 insertions(+) create mode 100644 xiaosa/ITV.txt create mode 100644 xiaosa/JS/56动漫.js create mode 100644 xiaosa/JS/APPV2.js create mode 100644 xiaosa/JS/Anime1.js create mode 100644 xiaosa/JS/NT动漫.js create mode 100644 xiaosa/JS/NyaFun.js create mode 100644 xiaosa/JS/alishare.txt create mode 100644 xiaosa/JS/cheerio.min.js create mode 100644 xiaosa/JS/crypto-hiker.js create mode 100644 xiaosa/JS/crypto-js.js create mode 100644 xiaosa/JS/drpy2.js create mode 100644 xiaosa/JS/drpy2.min.js create mode 100644 xiaosa/JS/gbk.js create mode 100644 xiaosa/JS/jinja.js create mode 100644 xiaosa/JS/jinja.min.js create mode 100644 xiaosa/JS/jsencrypt.js create mode 100644 xiaosa/JS/json5.js create mode 100644 xiaosa/JS/jsonpathplus.min.js create mode 100644 xiaosa/JS/node-rsa.js create mode 100644 xiaosa/JS/pako.min.js create mode 100644 xiaosa/JS/quark.min.js create mode 100644 xiaosa/JS/uri.min.js create mode 100644 xiaosa/JS/三六零弹幕.js create mode 100644 xiaosa/JS/优酷弹幕.js create mode 100644 xiaosa/JS/剧圈圈.js create mode 100644 xiaosa/JS/动漫岛.js create mode 100644 xiaosa/JS/动漫巴士.js create mode 100644 xiaosa/JS/动画片大全.js create mode 100644 xiaosa/JS/去看吧.js create mode 100644 xiaosa/JS/奇米动漫.js create mode 100644 xiaosa/JS/好看动漫.js create mode 100644 xiaosa/JS/小熊弹幕.js create mode 100644 xiaosa/JS/小虎斑弹幕.js create mode 100644 xiaosa/JS/巨人弹幕.js create mode 100644 xiaosa/JS/异世界.js create mode 100644 xiaosa/JS/思古影视.js create mode 100644 xiaosa/JS/怡萱动漫.js create mode 100644 xiaosa/JS/机器人.js create mode 100644 xiaosa/JS/梦米弹幕.js create mode 100644 xiaosa/JS/模板.js create mode 100644 xiaosa/JS/樱花动漫.js create mode 100644 xiaosa/JS/爱奇艺弹幕.js create mode 100644 xiaosa/JS/爱弹幕.js create mode 100644 xiaosa/JS/瓜子影视.js create mode 100644 xiaosa/JS/看了么.js create mode 100644 xiaosa/JS/短剧合集.js create mode 100644 xiaosa/JS/碟调影视.js create mode 100644 xiaosa/JS/磁力熊.js create mode 100644 xiaosa/JS/米兔弹幕.js create mode 100644 xiaosa/JS/素白白.js create mode 100644 xiaosa/JS/腾讯弹幕.js create mode 100644 xiaosa/JS/芒果弹幕.js create mode 100644 xiaosa/JS/花子动漫.js create mode 100644 xiaosa/JS/茶杯狐.js create mode 100644 xiaosa/JS/路漫漫.js create mode 100644 xiaosa/JS/达达龟.js create mode 100644 xiaosa/JS/追剧弹幕.js create mode 100644 xiaosa/JS/追剧迷.js create mode 100644 xiaosa/JS/采集之王.js create mode 100644 xiaosa/JS/魔力高清.js create mode 100644 xiaosa/JSON/alist.json create mode 100644 xiaosa/JSON/webdav.json create mode 100644 xiaosa/JSON/哔哩合集.json create mode 100644 xiaosa/JSON/采集静态.json create mode 100644 xiaosa/PY/猎手影视.py create mode 100644 xiaosa/XBPQ/修罗影视.json create mode 100644 xiaosa/XBPQ/可可影视.json create mode 100644 xiaosa/XBPQ/吉吉短剧.json create mode 100644 xiaosa/XBPQ/哆啦新番社.json create mode 100644 xiaosa/XBPQ/布谷TV.json create mode 100644 xiaosa/XBPQ/樱花影视.json create mode 100644 xiaosa/XBPQ/永乐影视.json create mode 100644 xiaosa/XBPQ/流光影视.json create mode 100644 xiaosa/XBPQ/海纳影视.json create mode 100644 xiaosa/XBPQ/爱我短剧.json create mode 100644 xiaosa/XBPQ/皮皮虾.json create mode 100644 xiaosa/XBPQ/短剧网.json create mode 100644 xiaosa/XBPQ/雪糕影视.json create mode 100644 xiaosa/XBPQ/面包影视.json create mode 100644 xiaosa/XYQHiker/BT天堂.json create mode 100644 xiaosa/XYQHiker/电影港.json create mode 100644 xiaosa/XYQHiker/电影牛.json create mode 100644 xiaosa/XYQHiker/短剧屋.json create mode 100644 xiaosa/api.json create mode 100644 xiaosa/spider.jar create mode 100644 xiaosa/wex.jar diff --git a/xiaosa/ITV.txt b/xiaosa/ITV.txt new file mode 100644 index 00000000..7830fb65 --- /dev/null +++ b/xiaosa/ITV.txt @@ -0,0 +1,647 @@ +央视频道,#genre# +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000004953&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000002226&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000030810&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265001&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000052&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000029752&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000018602&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021973&livemode=1&stbId=yu&mode=1 +CCTV1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265001&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000031113&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031101&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014161&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8878432746825677699&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012442&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023315&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265002&livemode=1&stbId=yu&mode=1 +CCTV2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5353323539453949720&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000020548&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000008883&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265003&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022313&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000011218&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000013682&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265003&livemode=1&stbId=yu&mode=1 +CCTV3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8378175926191110263&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000030093&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031102&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265004&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000031664&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265004&livemode=1&stbId=yu&mode=1 +CCTV4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8183388942203045169&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000008885&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000016619&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265005&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=4867251683694877276&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000016431&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=7680777599813046442&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000004794&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000003000030177&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000025222&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265005&livemode=1&stbId=yu&mode=1 +CCTV5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=reallive-cctv5&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000008886&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000018433&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265006&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004574&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6994512760913257617&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001737&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016466&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265006&livemode=1&stbId=yu&mode=1 +CCTV6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6117099895556651277&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000026715&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031104&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009055&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000017218&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024341&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265007&livemode=1&stbId=yu&mode=1 +CCTV7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7050628689018054317&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000008888&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000018377&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000001070&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8967744667154419073&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003736&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000031433&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265008&livemode=1&stbId=yu&mode=1 +CCTV8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8871488051501921127&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000018384&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288020&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000032162&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6350727550077620987&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014583&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028286&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265009&livemode=1&stbId=yu&mode=1 +CCTV9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6275371742726901431&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000012827&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000016738&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000031506&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000023734&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000026367&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265010&livemode=1&stbId=yu&mode=1 +CCTV10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7019587760656900133&livemode=1&stbId=yu&mode=1 +CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040011&livemode=1&stbId=yu&mode=1 +CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031106&livemode=1&stbId=yu&mode=1 +CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000019789&livemode=1&stbId=yu&mode=1 +CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265011&livemode=1&stbId=yu&mode=1 +CCTV11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6351457414282570521&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040012&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031107&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000022586&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001640&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000032494&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265012&livemode=1&stbId=yu&mode=1 +CCTV12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5325631075193490169&livemode=1&stbId=yu&mode=1 +CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000001827&livemode=1&stbId=yu&mode=1 +CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031108&livemode=1&stbId=yu&mode=1 +CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000021303&livemode=1&stbId=yu&mode=1 +CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265101&livemode=1&stbId=yu&mode=1 +CCTV13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6918130250570453526&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000006673&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000023358&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000013647&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6113730085955692619&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000008170&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021349&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265013&livemode=1&stbId=yu&mode=1 +CCTV14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8203666801302077036&livemode=1&stbId=yu&mode=1 +CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000018417&livemode=1&stbId=yu&mode=1 +CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031109&livemode=1&stbId=yu&mode=1 +CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000008163&livemode=1&stbId=yu&mode=1 +CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265014&livemode=1&stbId=yu&mode=1 +CCTV15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4832596595465032187&livemode=1&stbId=yu&mode=1 +CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000008000023254&livemode=1&stbId=yu&mode=1 +CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000008000023253&livemode=1&stbId=yu&mode=1 +CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000233001&livemode=1&stbId=yu&mode=1 +CCTV16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000233002&livemode=1&stbId=yu&mode=1 +CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288014&livemode=1&stbId=yu&mode=1 +CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000056836&livemode=1&stbId=yu&mode=1 +CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265015&livemode=1&stbId=yu&mode=1 +CCTV17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268004&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031127&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=5350361928876847638&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015875&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000018504&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000020505&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265016&livemode=1&stbId=yu&mode=1 +CCTV5+,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=reallive-cctv5plus&livemode=1&stbId=yu&mode=1 +卫视频道,#genre# +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000006692&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000030452&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265010&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000018044&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009115&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000032695&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265024&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6954818217931477266&livemode=1&stbId=yu&mode=1 +湖南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8655038471675748531&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000014098&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000032246&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265007&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000003639&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6690661682550849647&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000005866&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000030202&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265018&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4699937686040264690&livemode=1&stbId=yu&mode=1 +东方卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6081477947334326291&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000019351&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000018509&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265009&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000014861&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001828&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000004684&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265030&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4690153511271751319&livemode=1&stbId=yu&mode=1 +江苏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4796340999304424198&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000014694&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000030417&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5306115082857917057&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000031076&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014176&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028357&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265034&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5616881981321254555&livemode=1&stbId=yu&mode=1 +广东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6604532991586541024&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000007275&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000017320&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000032070&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009806&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000014260&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265031&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4945391150963996912&livemode=1&stbId=yu&mode=1 +浙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7889730693553663314&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000031556&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000011502&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265011&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000020451&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000017156&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000021288&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265027&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8186688740528366039&livemode=1&stbId=yu&mode=1 +北京卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8258663409451267714&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000007410&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000024026&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000002116&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009227&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000011645&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265028&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5352218613763113657&livemode=1&stbId=yu&mode=1 +深圳卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7696950400632248401&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000030788&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000006827&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009186&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000000831&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003475&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265026&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6707942579111517572&livemode=1&stbId=yu&mode=1 +天津卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8798367982904688776&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000020424&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000027763&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000004134&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012807&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016568&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265019&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7347081113971056899&livemode=1&stbId=yu&mode=1 +山东卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7744799445271696577&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000027288&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000023002&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000009954&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000020780&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000030159&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265025&livemode=1&stbId=yu&mode=1 +安徽卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4774346722046993363&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000032154&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000011210&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000013731&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265032&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268001&livemode=1&stbId=yu&mode=1 +江西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5616078396620462481&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000025203&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000031107&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000016510&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001925&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009082&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265029&livemode=1&stbId=yu&mode=1 +黑龙江卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8467838254824392379&livemode=1&stbId=yu&mode=1 +四川卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000006119&livemode=1&stbId=yu&mode=1 +四川卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000016825&livemode=1&stbId=yu&mode=1 +贵州卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000025843&livemode=1&stbId=yu&mode=1 +贵州卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000003169&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000014954&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000022140&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000001000015436&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000010355&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000024621&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265023&livemode=1&stbId=yu&mode=1 +湖北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6956052407855047826&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000008940&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000011671&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001945&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000024033&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265022&livemode=1&stbId=yu&mode=1 +辽宁卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7638375013635582245&livemode=1&stbId=yu&mode=1 +广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040014&livemode=1&stbId=yu&mode=1 +广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031118&livemode=1&stbId=yu&mode=1 +广西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000019837&livemode=1&stbId=yu&mode=1 +重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000025797&livemode=1&stbId=yu&mode=1 +重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001096&livemode=1&stbId=yu&mode=1 +重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000018937&livemode=1&stbId=yu&mode=1 +重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265017&livemode=1&stbId=yu&mode=1 +重庆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=4995134319251569870&livemode=1&stbId=yu&mode=1 +东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000005829&livemode=1&stbId=yu&mode=1 +东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000010584&livemode=1&stbId=yu&mode=1 +东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000009263&livemode=1&stbId=yu&mode=1 +东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265033&livemode=1&stbId=yu&mode=1 +东南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7721801662260370363&livemode=1&stbId=yu&mode=1 +吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040013&livemode=1&stbId=yu&mode=1 +吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031117&livemode=1&stbId=yu&mode=1 +吉林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027730&livemode=1&stbId=yu&mode=1 +海南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000006211&livemode=1&stbId=yu&mode=1 +海南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000023773&livemode=1&stbId=yu&mode=1 +云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040019&livemode=1&stbId=yu&mode=1 +云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031120&livemode=1&stbId=yu&mode=1 +云南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000024694&livemode=1&stbId=yu&mode=1 +厦门卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266006&livemode=1&stbId=yu&mode=1 +河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000017925&livemode=1&stbId=yu&mode=1 +河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031119&livemode=1&stbId=yu&mode=1 +河南卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027731&livemode=1&stbId=yu&mode=1 +河北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040016&livemode=1&stbId=yu&mode=1 +河北卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000017118&livemode=1&stbId=yu&mode=1 +陕西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040017&livemode=1&stbId=yu&mode=1 +陕西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000007495&livemode=1&stbId=yu&mode=1 +山西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040023&livemode=1&stbId=yu&mode=1 +山西卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000021220&livemode=1&stbId=yu&mode=1 +甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040021&livemode=1&stbId=yu&mode=1 +甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031121&livemode=1&stbId=yu&mode=1 +甘肃卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000017827&livemode=1&stbId=yu&mode=1 +宁夏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040022&livemode=1&stbId=yu&mode=1 +宁夏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000031451&livemode=1&stbId=yu&mode=1 +青海卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040015&livemode=1&stbId=yu&mode=1 +青海卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000013359&livemode=1&stbId=yu&mode=1 +西藏卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000015894&livemode=1&stbId=yu&mode=1 +新疆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040018&livemode=1&stbId=yu&mode=1 +新疆卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000029441&livemode=1&stbId=yu&mode=1 +三沙卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288016&livemode=1&stbId=yu&mode=1 +农林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000046&livemode=1&stbId=yu&mode=1 +农林卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266003&livemode=1&stbId=yu&mode=1 +延边卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000049&livemode=1&stbId=yu&mode=1 +延边卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266008&livemode=1&stbId=yu&mode=1 +兵团卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040020&livemode=1&stbId=yu&mode=1 +兵团卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266005&livemode=1&stbId=yu&mode=1 +康巴卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266002&livemode=1&stbId=yu&mode=1 +安多卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266001&livemode=1&stbId=yu&mode=1 +内蒙古卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000014080&livemode=1&stbId=yu&mode=1 +大湾区卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000045&livemode=1&stbId=yu&mode=1 +大湾区卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000011619&livemode=1&stbId=yu&mode=1 +山东教育卫视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000004097&livemode=1&stbId=yu&mode=1 +地方频道,#genre# +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031204&livemode=1&stbId=yu&mode=1 +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000065&livemode=1&stbId=yu&mode=1 +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000026&livemode=1&stbId=yu&mode=1 +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000001910&livemode=1&stbId=yu&mode=1 +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000028380&livemode=1&stbId=yu&mode=1 +北京纪实科教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265020&livemode=1&stbId=yu&mode=1 +北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000265008&livemode=1&stbId=yu&mode=1 +北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=7851974109718180595&livemode=1&stbId=yu&mode=1 +北京卡酷少儿,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000002413&livemode=1&stbId=yu&mode=1 +广东珠江,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000033&livemode=1&stbId=yu&mode=1 +广东珠江,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000011655&livemode=1&stbId=yu&mode=1 +广东嘉佳卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000025964&livemode=1&stbId=yu&mode=1 +湖南茶频道,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031209&livemode=1&stbId=yu&mode=1 +湖南茶频道,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000070&livemode=1&stbId=yu&mode=1 +湖南快乐垂钓,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031206&livemode=1&stbId=yu&mode=1 +湖南快乐垂钓,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000067&livemode=1&stbId=yu&mode=1 +湖南金鹰卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040024&livemode=1&stbId=yu&mode=1 +湖南金鹰卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000016601&livemode=1&stbId=yu&mode=1 +湖南金鹰纪实,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031203&livemode=1&stbId=yu&mode=1 +湖南金鹰纪实,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000011724&livemode=1&stbId=yu&mode=1 +江苏优漫卡通,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000010063&livemode=1&stbId=yu&mode=1 +江苏财富天下,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031208&livemode=1&stbId=yu&mode=1 +江苏财富天下,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000069&livemode=1&stbId=yu&mode=1 +上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000030951&livemode=1&stbId=yu&mode=1 +上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288018&livemode=1&stbId=yu&mode=1 +上海ICS,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000001&livemode=1&stbId=yu&mode=1 +上海都市,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000018926&livemode=1&stbId=yu&mode=1 +上海都市,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000012&livemode=1&stbId=yu&mode=1 +上海教育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288019&livemode=1&stbId=yu&mode=1 +上海新闻综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031110&livemode=1&stbId=yu&mode=1 +上海新闻综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000005&livemode=1&stbId=yu&mode=1 +上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000021713&livemode=1&stbId=yu&mode=1 +上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000004000010282&livemode=1&stbId=yu&mode=1 +上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000010606&livemode=1&stbId=yu&mode=1 +上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000016545&livemode=1&stbId=yu&mode=1 +上海纪实人文,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000265021&livemode=1&stbId=yu&mode=1 +上海东方影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000032212&livemode=1&stbId=yu&mode=1 +上海东方影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000013&livemode=1&stbId=yu&mode=1 +上海第一财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000027146&livemode=1&stbId=yu&mode=1 +上海第一财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000004&livemode=1&stbId=yu&mode=1 +上海五星体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000017540&livemode=1&stbId=yu&mode=1 +上海五星体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000007&livemode=1&stbId=yu&mode=1 +上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000031641&livemode=1&stbId=yu&mode=1 +上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031123&livemode=1&stbId=yu&mode=1 +上海哈哈炫动,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000000172&livemode=1&stbId=yu&mode=1 +其它频道,#genre# +中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000002652&livemode=1&stbId=yu&mode=1 +中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288015&livemode=1&stbId=yu&mode=1 +中国教育1台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000027253&livemode=1&stbId=yu&mode=1 +中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031201&livemode=1&stbId=yu&mode=1 +中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288017&livemode=1&stbId=yu&mode=1 +中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000047&livemode=1&stbId=yu&mode=1 +中国教育2台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266004&livemode=1&stbId=yu&mode=1 +中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000012123&livemode=1&stbId=yu&mode=1 +中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031126&livemode=1&stbId=yu&mode=1 +中国教育4台,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000025333&livemode=1&stbId=yu&mode=1 +求索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000010&livemode=1&stbId=yu&mode=1 +求索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032052&livemode=1&stbId=yu&mode=1 +求索动物,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000009&livemode=1&stbId=yu&mode=1 +求索动物,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000010046&livemode=1&stbId=yu&mode=1 +求索科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000011&livemode=1&stbId=yu&mode=1 +求索科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000032344&livemode=1&stbId=yu&mode=1 +求索生活,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000008&livemode=1&stbId=yu&mode=1 +求索生活,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000002000003382&livemode=1&stbId=yu&mode=1 +中国天气,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000005000031974&livemode=1&stbId=yu&mode=1 +中国天气,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000057&livemode=1&stbId=yu&mode=1 +健康养生,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288006&livemode=1&stbId=yu&mode=1 +中华美食,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000052&livemode=1&stbId=yu&mode=1 +中华美食,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266015&livemode=1&stbId=yu&mode=1 +风尚音乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000004&livemode=1&stbId=yu&mode=1 +风尚音乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5529729098703832176&livemode=1&stbId=yu&mode=1 +高清娱乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000013&livemode=1&stbId=yu&mode=1 +高清娱乐,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000001569&livemode=1&stbId=yu&mode=1 +华数服务,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000025&livemode=1&stbId=yu&mode=1 +精品剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000002&livemode=1&stbId=yu&mode=1 +精品剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8230197131234717902&livemode=1&stbId=yu&mode=1 +精品综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000008&livemode=1&stbId=yu&mode=1 +精品综合,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5595720619887440144&livemode=1&stbId=yu&mode=1 +漫游世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000017&livemode=1&stbId=yu&mode=1 +漫游世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000028434&livemode=1&stbId=yu&mode=1 +欧美影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000005&livemode=1&stbId=yu&mode=1 +欧美影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=7185203501769528108&livemode=1&stbId=yu&mode=1 +热播精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000016&livemode=1&stbId=yu&mode=1 +热播精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7681593242002292003&livemode=1&stbId=yu&mode=1 +少儿动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000003&livemode=1&stbId=yu&mode=1 +少儿动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=8145334647720731271&livemode=1&stbId=yu&mode=1 +探索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000007&livemode=1&stbId=yu&mode=1 +探索纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5359008697329269813&livemode=1&stbId=yu&mode=1 +电子竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000015&livemode=1&stbId=yu&mode=1 +电子竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000011654&livemode=1&stbId=yu&mode=1 +亚洲影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000006&livemode=1&stbId=yu&mode=1 +亚洲影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=5841816227539527643&livemode=1&stbId=yu&mode=1 +精彩影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000063&livemode=1&stbId=yu&mode=1 +精彩影视,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000320630&livemode=1&stbId=yu&mode=1 +睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011528&livemode=1&stbId=yu&mode=1 +睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011530&livemode=1&stbId=yu&mode=1 +睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000060&livemode=1&stbId=yu&mode=1 +睛彩竞技,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270001&livemode=1&stbId=yu&mode=1 +睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011525&livemode=1&stbId=yu&mode=1 +睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000031315&livemode=1&stbId=yu&mode=1 +睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000068&livemode=1&stbId=yu&mode=1 +睛彩青少,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270007&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011529&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011531&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000061&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000065&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270002&livemode=1&stbId=yu&mode=1 +睛彩篮球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270006&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011523&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011524&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000062&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000064&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270003&livemode=1&stbId=yu&mode=1 +睛彩广场舞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270005&livemode=1&stbId=yu&mode=1 +华数4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000014&livemode=1&stbId=yu&mode=1 +华数4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000004748&livemode=1&stbId=yu&mode=1 +纯享4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000011651&livemode=1&stbId=yu&mode=1 +炫动3D,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000012&livemode=1&stbId=yu&mode=1 +炫动3D,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000003000000558&livemode=1&stbId=yu&mode=1 +移动云VR,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015686&livemode=1&stbId=yu&mode=1 +英雄联盟音乐节,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000011&livemode=1&stbId=yu&mode=1 +英雄联盟音乐节,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8978605063318475207&livemode=1&stbId=yu&mode=1 +咪咕视频,#genre# +咪咕体育-4K,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000005180&livemode=1&stbId=yu&mode=1 +咪咕视频-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000005969&livemode=1&stbId=yu&mode=1 +咪咕视频-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000007218&livemode=1&stbId=yu&mode=1 +咪咕视频-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008001&livemode=1&stbId=yu&mode=1 +咪咕视频-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000010129&livemode=1&stbId=yu&mode=1 +咪咕视频-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000010948&livemode=1&stbId=yu&mode=1 +咪咕视频-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000028638&livemode=1&stbId=yu&mode=1 +咪咕视频-7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000031494&livemode=1&stbId=yu&mode=1 +咪咕视频-8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000000097&livemode=1&stbId=yu&mode=1 +咪咕视频-9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000002019&livemode=1&stbId=yu&mode=1 +咪咕视频-10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000003915&livemode=1&stbId=yu&mode=1 +咪咕视频-11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000004193&livemode=1&stbId=yu&mode=1 +咪咕视频-12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000005837&livemode=1&stbId=yu&mode=1 +咪咕视频-13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000006077&livemode=1&stbId=yu&mode=1 +咪咕视频-14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000006658&livemode=1&stbId=yu&mode=1 +咪咕视频-15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000009788&livemode=1&stbId=yu&mode=1 +咪咕视频-16,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000010833&livemode=1&stbId=yu&mode=1 +咪咕视频-17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000011297&livemode=1&stbId=yu&mode=1 +咪咕视频-18,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000011518&livemode=1&stbId=yu&mode=1 +咪咕视频-19,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000012558&livemode=1&stbId=yu&mode=1 +咪咕视频-20,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000012616&livemode=1&stbId=yu&mode=1 +咪咕视频-21,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015470&livemode=1&stbId=yu&mode=1 +咪咕视频-22,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000019839&livemode=1&stbId=yu&mode=1 +咪咕视频-23,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000021904&livemode=1&stbId=yu&mode=1 +咪咕视频-24,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000025380&livemode=1&stbId=yu&mode=1 +咪咕视频-25,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000027691&livemode=1&stbId=yu&mode=1 +咪咕视频-26,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000031669&livemode=1&stbId=yu&mode=1 +咪咕视频-27,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011518&livemode=1&stbId=yu&mode=1 +咪咕视频-28,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011519&livemode=1&stbId=yu&mode=1 +咪咕视频-29,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011520&livemode=1&stbId=yu&mode=1 +咪咕视频-30,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011521&livemode=1&stbId=yu&mode=1 +咪咕视频-31,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000020000011522&livemode=1&stbId=yu&mode=1 +咪咕视频-32,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000063&livemode=1&stbId=yu&mode=1 +咪咕视频-33,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000270004&livemode=1&stbId=yu&mode=1 +咪咕游戏赛事-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008176&livemode=1&stbId=yu&mode=1 +咪咕足球赛事-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000005308&livemode=1&stbId=yu&mode=1 +咪咕足球赛事-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000001000008379&livemode=1&stbId=yu&mode=1 +咪咕足球赛事-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000002809&livemode=1&stbId=yu&mode=1 +咪咕足球赛事-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000015560&livemode=1&stbId=yu&mode=1 +咪咕足球赛事-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=FifastbLive&Contentid=3000000010000023434&livemode=1&stbId=yu&mode=1 +SiTV频道,#genre# +SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000023636&livemode=1&stbId=yu&mode=1 +SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031113&livemode=1&stbId=yu&mode=1 +SiTV动漫秀场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000009&livemode=1&stbId=yu&mode=1 +SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000027005&livemode=1&stbId=yu&mode=1 +SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031114&livemode=1&stbId=yu&mode=1 +SiTV游戏风云,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000011&livemode=1&stbId=yu&mode=1 +SiTV法治天地,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=9001547084732463424&livemode=1&stbId=yu&mode=1 +SiTV法治天地,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000014&livemode=1&stbId=yu&mode=1 +SiTV劲爆体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000029972&livemode=1&stbId=yu&mode=1 +SiTV劲爆体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000008&livemode=1&stbId=yu&mode=1 +SiTV魅力足球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031207&livemode=1&stbId=yu&mode=1 +SiTV魅力足球,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000068&livemode=1&stbId=yu&mode=1 +SiTV金色学堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000010000026105&livemode=1&stbId=yu&mode=1 +SiTV金色学堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000061&livemode=1&stbId=yu&mode=1 +SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000009455&livemode=1&stbId=yu&mode=1 +SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000007000010001&livemode=1&stbId=yu&mode=1 +SiTV欢笑剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000016&livemode=1&stbId=yu&mode=1 +SiTV七彩戏剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031116&livemode=1&stbId=yu&mode=1 +SiTV七彩戏剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000010&livemode=1&stbId=yu&mode=1 +SiTV生活时尚,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000019634&livemode=1&stbId=yu&mode=1 +SiTV生活时尚,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000006&livemode=1&stbId=yu&mode=1 +SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000006000040025&livemode=1&stbId=yu&mode=1 +SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031112&livemode=1&stbId=yu&mode=1 +SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000059&livemode=1&stbId=yu&mode=1 +SiTV乐游,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000092&livemode=1&stbId=yu&mode=1 +SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000002000004412&livemode=1&stbId=yu&mode=1 +SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000031111&livemode=1&stbId=yu&mode=1 +SiTV都市剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000015&livemode=1&stbId=yu&mode=1 +SiTV东方财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000007000010003&livemode=1&stbId=yu&mode=1 +SiTV东方财经,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000090&livemode=1&stbId=yu&mode=1 +iHOT频道,#genre# +iHOT爱科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000047&livemode=1&stbId=yu&mode=1 +iHOT爱科学,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000160630&livemode=1&stbId=yu&mode=1 +iHOT爱历史,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000046&livemode=1&stbId=yu&mode=1 +iHOT爱历史,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000150630&livemode=1&stbId=yu&mode=1 +iHOT爱旅行,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000056&livemode=1&stbId=yu&mode=1 +iHOT爱旅行,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000250630&livemode=1&stbId=yu&mode=1 +iHOT爱体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000060&livemode=1&stbId=yu&mode=1 +iHOT爱体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000290630&livemode=1&stbId=yu&mode=1 +iHOT爱赛车,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000055&livemode=1&stbId=yu&mode=1 +iHOT爱赛车,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000240630&livemode=1&stbId=yu&mode=1 +iHOT爱浪漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000035&livemode=1&stbId=yu&mode=1 +iHOT爱浪漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000040630&livemode=1&stbId=yu&mode=1 +iHOT爱奇谈,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000058&livemode=1&stbId=yu&mode=1 +iHOT爱奇谈,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000270630&livemode=1&stbId=yu&mode=1 +iHOT爱动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000059&livemode=1&stbId=yu&mode=1 +iHOT爱动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000280630&livemode=1&stbId=yu&mode=1 +iHOT爱谍战,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000038&livemode=1&stbId=yu&mode=1 +iHOT爱谍战,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000070630&livemode=1&stbId=yu&mode=1 +iHOT爱科幻,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000033&livemode=1&stbId=yu&mode=1 +iHOT爱科幻,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000020630&livemode=1&stbId=yu&mode=1 +iHOT爱喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000032&livemode=1&stbId=yu&mode=1 +iHOT爱喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000010630&livemode=1&stbId=yu&mode=1 +iHOT爱悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000036&livemode=1&stbId=yu&mode=1 +iHOT爱悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000050630&livemode=1&stbId=yu&mode=1 +iHOT爱院线,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000034&livemode=1&stbId=yu&mode=1 +iHOT爱院线,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000030630&livemode=1&stbId=yu&mode=1 +iHOT爱玩具,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000053&livemode=1&stbId=yu&mode=1 +iHOT爱玩具,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000220630&livemode=1&stbId=yu&mode=1 +iHOT爱幼教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000004000000049&livemode=1&stbId=yu&mode=1 +iHOT爱幼教,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=wasusyt&Contentid=6000000006000180630&livemode=1&stbId=yu&mode=1 +CGTN频道,#genre# +CGTN,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=7745129417417101820&livemode=1&stbId=yu&mode=1 +CGTN,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000002000009569&livemode=1&stbId=yu&mode=1 +CGTN俄语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280004&livemode=1&stbId=yu&mode=1 +CGTN法语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280003&livemode=1&stbId=yu&mode=1 +CGTN纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=7114647837765104058&livemode=1&stbId=yu&mode=1 +CGTN阿拉伯语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280001&livemode=1&stbId=yu&mode=1 +CGTN西班牙语,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000280002&livemode=1&stbId=yu&mode=1 +BesTV频道,#genre# +BesTV星光影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288013&livemode=1&stbId=yu&mode=1 +BesTV谍战剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288004&livemode=1&stbId=yu&mode=1 +BesTV华语影院,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288005&livemode=1&stbId=yu&mode=1 +BesTV全球大片,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288009&livemode=1&stbId=yu&mode=1 +BesTV热门剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288010&livemode=1&stbId=yu&mode=1 +BesTV青春动漫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288008&livemode=1&stbId=yu&mode=1 +BesTV宝宝动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288002&livemode=1&stbId=yu&mode=1 +BesTV电竞天堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288003&livemode=1&stbId=yu&mode=1 +BesTV热门综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288011&livemode=1&stbId=yu&mode=1 +BesTV戏曲精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288012&livemode=1&stbId=yu&mode=1 +BesTV百变课堂,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288001&livemode=1&stbId=yu&mode=1 +BesTV看天下精选,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000011000288007&livemode=1&stbId=yu&mode=1 +BesTV-1,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000002898&livemode=1&stbId=yu&mode=1 +BesTV-2,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000004876&livemode=1&stbId=yu&mode=1 +BesTV-3,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000006777&livemode=1&stbId=yu&mode=1 +BesTV-4,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000018009&livemode=1&stbId=yu&mode=1 +BesTV-5,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000019233&livemode=1&stbId=yu&mode=1 +BesTV-6,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000022620&livemode=1&stbId=yu&mode=1 +BesTV-7,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000023256&livemode=1&stbId=yu&mode=1 +BesTV-8,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000026930&livemode=1&stbId=yu&mode=1 +BesTV-9,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000024&livemode=1&stbId=yu&mode=1 +BesTV-10,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000026&livemode=1&stbId=yu&mode=1 +BesTV-11,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000027&livemode=1&stbId=yu&mode=1 +BesTV-12,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000028&livemode=1&stbId=yu&mode=1 +BesTV-13,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000030&livemode=1&stbId=yu&mode=1 +BesTV-14,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000049&livemode=1&stbId=yu&mode=1 +BesTV-15,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000050&livemode=1&stbId=yu&mode=1 +BesTV-16http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000051&livemode=1&stbId=yu&mode=1 +BesTV-17,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000001116&livemode=1&stbId=yu&mode=1 +BesTV-18,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=bestzb&Contentid=5000000001000017342&livemode=1&stbId=yu&mode=1 +BesTV-19,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000025&livemode=1&stbId=yu&mode=1 +BesTV-20,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000002000000029&livemode=1&stbId=yu&mode=1 +NewTV频道,#genre# +NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000001&livemode=1&stbId=yu&mode=1 +NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019624&livemode=1&stbId=yu&mode=1 +NewTV黑莓电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8785669936177902664&livemode=1&stbId=yu&mode=1 +NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000002&livemode=1&stbId=yu&mode=1 +NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000021734&livemode=1&stbId=yu&mode=1 +NewTV黑莓动画,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6497762188035533951&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000004&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000039&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000040&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000003775&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000006906&livemode=1&stbId=yu&mode=1 +NewTV哒啵赛事,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5320946857686967621&livemode=1&stbId=yu&mode=1 +NewTV哒啵电竞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000066&livemode=1&stbId=yu&mode=1 +NewTV哒啵电竞,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032327&livemode=1&stbId=yu&mode=1 +NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000032&livemode=1&stbId=yu&mode=1 +NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000008139&livemode=1&stbId=yu&mode=1 +NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000024993&livemode=1&stbId=yu&mode=1 +NewTV超级电视剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268003&livemode=1&stbId=yu&mode=1 +NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000031&livemode=1&stbId=yu&mode=1 +NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000012884&livemode=1&stbId=yu&mode=1 +NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000003000012426&livemode=1&stbId=yu&mode=1 +NewTV超级电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000002120&livemode=1&stbId=yu&mode=1 +NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000017&livemode=1&stbId=yu&mode=1 +NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000018653&livemode=1&stbId=yu&mode=1 +NewTV动作电影,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8103864434730665389&livemode=1&stbId=yu&mode=1 +NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000012&livemode=1&stbId=yu&mode=1 +NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000008284&livemode=1&stbId=yu&mode=1 +NewTV家庭剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6316377948248689070&livemode=1&stbId=yu&mode=1 +NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000015&livemode=1&stbId=yu&mode=1 +NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000024282&livemode=1&stbId=yu&mode=1 +NewTV惊悚悬疑,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7151256057701199617&livemode=1&stbId=yu&mode=1 +NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000020&livemode=1&stbId=yu&mode=1 +NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013968&livemode=1&stbId=yu&mode=1 +NewTV精品大剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7882297361445410858&livemode=1&stbId=yu&mode=1 +NewTV明星大片,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000019008&livemode=1&stbId=yu&mode=1 +NewTV军旅剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000014&livemode=1&stbId=yu&mode=1 +NewTV军旅剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7485075951068666323&livemode=1&stbId=yu&mode=1 +NewTV古装剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000024&livemode=1&stbId=yu&mode=1 +NewTV古装剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6859053933687922163&livemode=1&stbId=yu&mode=1 +NewTV欢乐剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000050&livemode=1&stbId=yu&mode=1 +NewTV欢乐剧场,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266012&livemode=1&stbId=yu&mode=1 +NewTV东北热剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000051&livemode=1&stbId=yu&mode=1 +NewTV东北热剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266013&livemode=1&stbId=yu&mode=1 +NewTV爱情喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000010&livemode=1&stbId=yu&mode=1 +NewTV爱情喜剧,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=8393829412396288037&livemode=1&stbId=yu&mode=1 +NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000019&livemode=1&stbId=yu&mode=1 +NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000013730&livemode=1&stbId=yu&mode=1 +NewTV精品纪录,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6298506997017621594&livemode=1&stbId=yu&mode=1 +NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000030&livemode=1&stbId=yu&mode=1 +NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009204&livemode=1&stbId=yu&mode=1 +NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000009601&livemode=1&stbId=yu&mode=1 +NewTV超级体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000007755&livemode=1&stbId=yu&mode=1 +NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000021&livemode=1&stbId=yu&mode=1 +NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000014634&livemode=1&stbId=yu&mode=1 +NewTV精品体育,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6460382139625130259&livemode=1&stbId=yu&mode=1 +NewTV中国功夫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000009&livemode=1&stbId=yu&mode=1 +NewTV中国功夫,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5897056882324761054&livemode=1&stbId=yu&mode=1 +NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000029&livemode=1&stbId=yu&mode=1 +NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000025771&livemode=1&stbId=yu&mode=1 +NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000023658&livemode=1&stbId=yu&mode=1 +NewTV超级综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000268002&livemode=1&stbId=yu&mode=1 +NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000005&livemode=1&stbId=yu&mode=1 +NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000004000026167&livemode=1&stbId=yu&mode=1 +NewTV金牌综艺,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6399725674632152632&livemode=1&stbId=yu&mode=1 +NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000041&livemode=1&stbId=yu&mode=1 +NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000006197&livemode=1&stbId=yu&mode=1 +NewTV魅力潇湘,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266014&livemode=1&stbId=yu&mode=1 +NewTV炫舞未来,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000044&livemode=1&stbId=yu&mode=1 +NewTV炫舞未来,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000001000000515&livemode=1&stbId=yu&mode=1 +NewTV农业致富,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000003&livemode=1&stbId=yu&mode=1 +NewTV农业致富,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6193684637634073625&livemode=1&stbId=yu&mode=1 +NewTV军事评论,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000022&livemode=1&stbId=yu&mode=1 +NewTV军事评论,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=5822616274253344775&livemode=1&stbId=yu&mode=1 +NewTV精品萌宠,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000067&livemode=1&stbId=yu&mode=1 +NewTV精品萌宠,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000006000032328&livemode=1&stbId=yu&mode=1 +NewTV潮妈辣婆,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000018&livemode=1&stbId=yu&mode=1 +NewTV潮妈辣婆,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=6516734029835465177&livemode=1&stbId=yu&mode=1 +NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000023&livemode=1&stbId=yu&mode=1 +NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=1000000005000266011&livemode=1&stbId=yu&mode=1 +NewTV怡伴健康,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=7820874641606664941&livemode=1&stbId=yu&mode=1 +NewTV武搏世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=hnbblive&Contentid=2000000003000000007&livemode=1&stbId=yu&mode=1 +NewTV武搏世界,http://gslbserv.itv.cmvideo.cn:80/1.m3u8?channel-id=ystenlive&Contentid=bokesen&livemode=1&stbId=yu&mode=1 diff --git a/xiaosa/JS/56动漫.js b/xiaosa/JS/56动漫.js new file mode 100644 index 00000000..266b5f03 --- /dev/null +++ b/xiaosa/JS/56动漫.js @@ -0,0 +1,40 @@ +var rule = { + title: '56动漫', + host: 'https://www.56dm.cc/', + url: 'https://www.56dm.cc/type/fyclass-fypage.html', + searchUrl: 'https://www.56dm.cc/search/**----------fypage---.html', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + filterable: 0, //是否启用分类筛选, + headers: { + 'User-Agent': 'UC_UA', // "Cookie": "" + }, // class_parse:'.stui-header__menu li:gt(0):lt(7);a&&Text;a&&href;/(\\d+).html', + class_parse: '.snui-header-menu-nav li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: `js: + if(/\\.(m3u8|mp4)/.test(input)){ + input = {parse:0,url:input} + }else{ + if(rule.parse_url.startsWith('json:')){ + let purl = rule.parse_url.replace('json:','')+input; + let html = request(purl); + input = {parse:0,url:JSON.parse(html).url} + }else{ + input= rule.parse_url+input; + } + } + `, + limit: 6, + 推荐: '.cCBf_FAAEfbc;li;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.cCBf_FAAEfbc li;a&&title;a&&data-original;.dAD_BBCI&&Text;a&&href', + 二级: { + "title": "h1&&Text", + "img": ".stui-content__thumb .lazyload&&data-original", + "desc": ".cCBf_DABCcac__hcIdeE p:eq(0)&&Text;.cCBf_DABCcac__hcIdeE p:eq(1)&&Text;.cCBf_DABCcac__hcIdeE p:eq(2)&&Text;.cCBf_DABCcac__hcIdeE p:eq(3)&&Text;.cCBf_DABCcac__hcIdeE p:eq(4)&&Text", + "content": ".detail&&Text", + "tabs": ".channel-tab li", + "lists": ".play-list-content:eq(#id) li" + }, + 搜索: '.cCBf_FAAEfbc__dbD;a&&title;.lazyload&&data-original;.dAD_BBCI&&Text;a&&href;.cCBf_FAAEfbc__hcIdeE&&p:eq(0) p&&Text', +} \ No newline at end of file diff --git a/xiaosa/JS/APPV2.js b/xiaosa/JS/APPV2.js new file mode 100644 index 00000000..ea7a1eba --- /dev/null +++ b/xiaosa/JS/APPV2.js @@ -0,0 +1,109 @@ +/** + * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少1 + * 传参 ?type=url¶ms=http://122.228.85.203:1000@泽少2 + */ + +var rule = { + title: 'APPV2[模板]', + author: '道长', + version: '20241012 beta1', + update_info: ` +20241012: +1.根据群友嗷呜的appv2模板修改成可传参源,类似采集之王用法传参 +`.trim(), + host: '', + url: '/api.php/app/video?tid=fyclassfyfilter&limit=20&pg=fypage', + filter_url: '', + filter: {}, + homeUrl: '/api.php/app/index_video', + detailUrl: '/api.php/app/video_detail?id=fyid', + searchUrl: '/api.php/app/search?text=**&pg=fypage', + parseUrl: '', + searchable: 2, + quickSearch: 1, + filterable: 1, + headers: { + 'User-Agent': 'okhttp/4.1.0' + }, + params: 'http://122.228.85.203:1000$http://122.228.85.203:1000/play?url=', + hostJs: $js.toString(() => { + HOST = rule.params.split('$')[0]; + }), + 预处理: $js.toString(() => { + log(`传入参数:${rule.params}`); + let _host = rule.params.split('$')[0]; + rule.parseUrl = rule.params.split('$')[1]; + let _url = _host.rstrip('/') + '/api.php/app/nav?token'; + let _headers = {'User-Agent': 'Dart/2.14 (dart:io)'}; + let html = request(_url, {headers: _headers}); + let data = JSON.parse(html); + let _classes = []; + let _filter = {}; + let _filter_url = ''; + let dy = {"class": "类型", "area": "地区", "lang": "语言", "year": "年份", "letter": "字母", "by": "排序"}; + let jsonData = data.list; + for (let k = 0; k < jsonData.length; k++) { + let hasNonEmptyField = false; + let _obj = { + type_name: jsonData[k].type_name, + type_id: jsonData[k].type_id, + }; + _classes.push(_obj); + for (let key in dy) { + if (key in jsonData[k].type_extend && jsonData[k].type_extend[key].trim() !== "") { + hasNonEmptyField = true; + break + } + } + if (hasNonEmptyField) { + _filter[String(jsonData[k].type_id)] = []; + for (let dkey in jsonData[k].type_extend) { + if (dkey in dy && jsonData[k].type_extend[dkey].trim() !== "") { + if (k === 0) { + _filter_url += `&${dkey}={{fl.${dkey}}}` + } + let values = jsonData[k].type_extend[dkey].split(','); + let valueArray = values.map(value => ({"n": value.trim(), "v": value.trim()})); + _filter[String(jsonData[k].type_id)].push({"key": dkey, "name": dy[dkey], "value": valueArray}) + } + } + } + } + rule.classes = _classes; + rule.filter = _filter; + rule.filter_url = _filter_url; + }), + class_parse: $js.toString(() => { + input = rule.classes; + }), + play_parse: true, + lazy: $js.toString(() => { + if (!/^http/.test(input)) { + input = rule.parseUrl + input + } else { + input = { + url: input, + parse: 0, + header: '' + } + } + + }), + 推荐: $js.toString(() => { + let data = JSON.parse(request(input)).list; + let com = []; + data.forEach(item => { + if (Array.isArray(item.vlist) && item.vlist.length !== 0) { + com = com.concat(item.vlist) + } + }) + VODS = com + }), + 一级: $js.toString(() => { + VODS = JSON.parse(request(input)).list + }), + 二级: $js.toString(() => { + VOD = JSON.parse(request(input)).data + }), + 搜索: '*', +} \ No newline at end of file diff --git a/xiaosa/JS/Anime1.js b/xiaosa/JS/Anime1.js new file mode 100644 index 00000000..c0e6fb06 --- /dev/null +++ b/xiaosa/JS/Anime1.js @@ -0,0 +1,169 @@ +// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 +// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 +// 注意事项:此源仅支持 影视TV 及 爱佬版tvbox最新版 +// 3个set-Cookie + +var rule = { + title:'Anime1动畫', + host:'https://anime1.me', + url: '/fyclass', + detailUrl:'/?cat=fyid', + searchUrl: '/page/fypage?s=**', + searchable:2, + quickSearch:0, + headers:{'User-Agent': 'PC_UA'}, + timeout:5000, + class_name:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&更早', + class_url:'連載中&2025&2024&2023&2022&2021&2020&2019&2018&2017', + play_parse:true, + lazy:`js: + var apiurl = 'https://v.anime1.me/api'; + var html = request(apiurl, { + headers: { + 'Referer': HOST, + }, + body: 'd=' + input, + method: 'POST', + withHeaders: true + }); + let json = JSON.parse(html); + print(json); + log(Object.keys(json)); + let setCk = Object.keys(json).filter(it => it.toLowerCase() === "set-cookie"); + let cookie = setCk ? json[setCk] : ""; + // 3个set-Cookie + if (Array.isArray(cookie)) { + cookie = cookie.join(';'); + } + cookie = cookie.split(';').filter(function(it) { + return ['e', 'p', 'h'].includes(it.split('=')[0]) + }).join(';'); + log(cookie); + var purl = JSON.parse(json.body).s[0].src; + if (purl.startsWith('/')) { + purl = 'https:' + purl + } + input = { + jx: 0, + url: purl, + parse: 0, + header: JSON.stringify({ + 'referer': HOST, + 'Cookie': cookie, + 'user-agent': PC_UA + }), + } + `, + limit:6, + 推荐: `js: + var d = []; + function stripHtmlTag(src) { + return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); + } + var timestamp = new Date().getTime(); + var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); + var list = JSON.parse(json); + let playKeys = Object.values(list).filter(function(x) { + return x[2].includes('連載中'); + }); + playKeys.forEach(function(it) { + d.push({ + title: stripHtmlTag(it[1]), + img: 'https://sta.anicdn.com/playerImg/8.jpg', + desc: it[2], + url: it[0], + }); + }); + setResult(d); + `, + 一级: `js: + var d = []; + function stripHtmlTag(src) { + return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); + } + var timestamp = new Date().getTime(); + var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); + var list = JSON.parse(json); + let playKeys = Object.values(list).filter(function(x) { + if (MY_CATE === '連載中') return x[2].includes(MY_CATE); + else if (MY_CATE === '2017') return x[3] <= MY_CATE; + else return x[3] == MY_CATE; + }); + playKeys.forEach(function(it) { + d.push({ + title: stripHtmlTag(it[1]), + img: 'https://sta.anicdn.com/playerImg/8.jpg', + desc: it[2], + url: it[0], + }); + }); + setResult(d); + `, + 二级: `js: + pdfh = jsp.pdfh; pdfa = jsp.pdfa; pd = jsp.pd; + var html = request(input); + var timestamp = new Date().getTime(); + var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); + var list = JSON.parse(json); + var vid = input.split('=')[1]; + let playKeys = Object.values(list).find(function(x) { + return x[0] === parseInt(vid); + }); + VOD = { + vod_pic: 'https://sta.anicdn.com/playerImg/8.jpg', + vod_id: playKeys[0], + vod_name: playKeys[1], + vod_content: playKeys[2], + vod_year: playKeys[3], + type_name: playKeys[4], + vod_actor: playKeys[5], + }; + var pageurl = pd(html, '.cat-links&&a&&href'); + var pagenum = 1; + let vod_tab_list = []; + let vlist = []; + for (let p = 1; p < parseInt(pagenum) + 1; p++) { + let phtml = request(pageurl + '/page/' + pagenum); + let new_vod_list = []; + let vodList = []; + vodList = pdfa(phtml, '.site-main&&article'); + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + let ptitle = pdfh(it, '.entry-title&&Text').replace(/\\[(.*)\\]/, '$1'); + let purl = pd(it, '.video-js&&data-apireq'); + new_vod_list.push(ptitle + '$' + purl); + } + vlist = vlist.concat(new_vod_list); + try { + pagenum = pd(phtml, '.nav-previous&&a&&href').split('/page/')[1]; + } catch(e) {} + } + let vlist2 = vlist.reverse().join("#"); + vod_tab_list.push(vlist2); + VOD.vod_play_from = '在线播放'; + VOD.vod_play_url = vod_tab_list.join("$$$"); + `, + 搜索: `js: + var d = []; + function stripHtmlTag(src) { + return src.replace(/<\\/?[^>]+(>|$)/g, '').replace(/&.{1,5};/g, '').replace(/\\s{2,}/g, ' '); + } + var timestamp = new Date().getTime(); + var json = request('https://d1zquzjgwo9yb.cloudfront.net/?_=' + timestamp); + var list = JSON.parse(json); + var wd = input.split('=')[1]; + let playKeys = Object.values(list).filter(function(x) { + return x[1].includes(wd); + }); + log(playKeys); + playKeys.forEach(function(it) { + d.push({ + title: stripHtmlTag(it[1]), + img: 'https://sta.anicdn.com/playerImg/8.jpg', + desc: it[2], + url: it[0], + }); + }); + setResult(d); + `, +} \ No newline at end of file diff --git a/xiaosa/JS/NT动漫.js b/xiaosa/JS/NT动漫.js new file mode 100644 index 00000000..4dde948e --- /dev/null +++ b/xiaosa/JS/NT动漫.js @@ -0,0 +1,1013 @@ +// http://www.ntdm.tv +var rule = { + title: 'NT动漫', + host: 'http://www.ntdm8.com', + homeUrl: '/type/riben.html', + // url:'/show/fyclass--------fypage---.html', + url: '/show/fyclassfyfilter.html', + filterable: 1, //是否启用分类筛选, + filter_url: '--{{fl.by}}-{{fl.class}}--{{fl.letter}}---fypage---{{fl.year}}', + filter: { + "riben": [{ + "key": "year", + "name": "年份:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000以前", + "v": "2000以前" + }] + }, { + "key": "class", + "name": "类型:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "竞技", + "v": "竞技" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "青春", + "v": "青春" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "后宫", + "v": "后宫" + }, { + "n": "百合", + "v": "百合" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "萝莉", + "v": "萝莉" + }, { + "n": "魔法", + "v": "魔法" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "推理", + "v": "推理" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "游戏", + "v": "游戏" + }, { + "n": "神魔", + "v": "神魔" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "血腥", + "v": "血腥" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "社会", + "v": "社会" + }, { + "n": "职场", + "v": "职场" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "伪娘", + "v": "伪娘" + }, { + "n": "耽美", + "v": "耽美" + }, { + "n": "童年", + "v": "童年" + }, { + "n": "教育", + "v": "教育" + }, { + "n": "亲子", + "v": "亲子" + }, { + "n": "真人", + "v": "真人" + }, { + "n": "歌舞", + "v": "歌舞" + }, { + "n": "肉番", + "v": "肉番" + }, { + "n": "美少女", + "v": "美少女" + }, { + "n": "轻小说", + "v": "轻小说" + }, { + "n": "吸血鬼", + "v": "吸血鬼" + }, { + "n": "女性向", + "v": "女性向" + }, { + "n": "泡面番", + "v": "泡面番" + }, { + "n": "欢乐向", + "v": "欢乐向" + }] + }, { + "key": "letter", + "name": "字母:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0~9", + "v": "0~9" + }] + }, { + "key": "by", + "name": "排序:", + "value": [{ + "n": "更新时间", + "v": "time" + }, { + "n": "人气", + "v": "hits" + }, { + "n": "评分", + "v": "score" + }] + }], + "zhongguo": [{ + "key": "year", + "name": "年份:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000以前", + "v": "2000以前" + }] + }, { + "key": "class", + "name": "类型:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "竞技", + "v": "竞技" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "青春", + "v": "青春" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "后宫", + "v": "后宫" + }, { + "n": "百合", + "v": "百合" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "萝莉", + "v": "萝莉" + }, { + "n": "魔法", + "v": "魔法" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "推理", + "v": "推理" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "游戏", + "v": "游戏" + }, { + "n": "神魔", + "v": "神魔" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "血腥", + "v": "血腥" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "社会", + "v": "社会" + }, { + "n": "职场", + "v": "职场" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "伪娘", + "v": "伪娘" + }, { + "n": "耽美", + "v": "耽美" + }, { + "n": "童年", + "v": "童年" + }, { + "n": "教育", + "v": "教育" + }, { + "n": "亲子", + "v": "亲子" + }, { + "n": "真人", + "v": "真人" + }, { + "n": "歌舞", + "v": "歌舞" + }, { + "n": "肉番", + "v": "肉番" + }, { + "n": "美少女", + "v": "美少女" + }, { + "n": "轻小说", + "v": "轻小说" + }, { + "n": "吸血鬼", + "v": "吸血鬼" + }, { + "n": "女性向", + "v": "女性向" + }, { + "n": "泡面番", + "v": "泡面番" + }, { + "n": "欢乐向", + "v": "欢乐向" + }] + }, { + "key": "letter", + "name": "字母:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0~9", + "v": "0~9" + }] + }, { + "key": "by", + "name": "排序:", + "value": [{ + "n": "更新时间", + "v": "time" + }, { + "n": "人气", + "v": "hits" + }, { + "n": "评分", + "v": "score" + }] + }], + "omei": [{ + "key": "year", + "name": "年份:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000以前", + "v": "2000以前" + }] + }, { + "key": "class", + "name": "类型:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "竞技", + "v": "竞技" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "青春", + "v": "青春" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "后宫", + "v": "后宫" + }, { + "n": "百合", + "v": "百合" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "萝莉", + "v": "萝莉" + }, { + "n": "魔法", + "v": "魔法" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "推理", + "v": "推理" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "游戏", + "v": "游戏" + }, { + "n": "神魔", + "v": "神魔" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "血腥", + "v": "血腥" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "社会", + "v": "社会" + }, { + "n": "职场", + "v": "职场" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "伪娘", + "v": "伪娘" + }, { + "n": "耽美", + "v": "耽美" + }, { + "n": "童年", + "v": "童年" + }, { + "n": "教育", + "v": "教育" + }, { + "n": "亲子", + "v": "亲子" + }, { + "n": "真人", + "v": "真人" + }, { + "n": "歌舞", + "v": "歌舞" + }, { + "n": "肉番", + "v": "肉番" + }, { + "n": "美少女", + "v": "美少女" + }, { + "n": "轻小说", + "v": "轻小说" + }, { + "n": "吸血鬼", + "v": "吸血鬼" + }, { + "n": "女性向", + "v": "女性向" + }, { + "n": "泡面番", + "v": "泡面番" + }, { + "n": "欢乐向", + "v": "欢乐向" + }] + }, { + "key": "letter", + "name": "字母:", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0~9", + "v": "0~9" + }] + }, { + "key": "by", + "name": "排序:", + "value": [{ + "n": "更新时间", + "v": "time" + }, { + "n": "人气", + "v": "hits" + }, { + "n": "评分", + "v": "score" + }] + }] + }, + searchUrl: '/search/**----------fypage---.html', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + headers: { //网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'MOBILE_UA', + }, + class_parse: '.search-tag li;a&&Text;a&&href;.*/(\\w+).html', + play_parse: true, + detailUrl: '', + lazy: "", + limit: 6, + 推荐: '*', + 一级: '.blockcontent1&&.blockdif2;img&&alt;img&&src;.newname&&Text;a&&href', + 二级访问前: '', + 二级: { + "title": "h4&&Text;.detail_imform_value:eq(6)&&Text", + "img": ".poster&&src", + "desc": ".detail_imform_kv:eq(0)&&Text;.detail_imform_value:eq(5)&&Text;.detail_imform_value:eq(2)&&Text;.detail_imform_kv:eq(0)&&Text;.detail_imform_kv:eq(3)&&Text", + "content": ".detail_imform_desc_pre&&Text", + "tabs": "#menu0&&li", + "lists": ".movurl:eq(#id)&&li" + }, + 搜索: '*', +} \ No newline at end of file diff --git a/xiaosa/JS/NyaFun.js b/xiaosa/JS/NyaFun.js new file mode 100644 index 00000000..16b21a2d --- /dev/null +++ b/xiaosa/JS/NyaFun.js @@ -0,0 +1,13 @@ +muban.短视2.二级.img = '.detail-pic&&img&&data-src'; +var rule = { + title: 'NyaFun', + 模板:'短视2', + host: 'https://www.nyafun.net', + homeUrl:'/map.html', + url: '/index.php/api/vod#type=fyclass&page=fypage', + class_name:'番剧&剧场', + class_url:'2&1', + detailUrl:'/bangumi/fyid.html', + 推荐:'.border-box .public-list-box;a&&title;.lazy&&data-src;.public-list-prb&&Text;a&&href', + double: false, // 推荐内容是否双层定位 +} \ No newline at end of file diff --git a/xiaosa/JS/alishare.txt b/xiaosa/JS/alishare.txt new file mode 100644 index 00000000..cd52f134 --- /dev/null +++ b/xiaosa/JS/alishare.txt @@ -0,0 +1,70 @@ +[ + { + "share_name": "优品阁", + "share_id": "uWa9gbM3RJ7" + }, + { + "share_name": "阿里1T", + "share_id": "mxAfB6eRgY4" + }, + { + "share_name": "平凡中的", + "share_id": "4ydLxf7VgH7" + }, + { + "share_name": "tacit0924", + "share_id": "DNgnCudf4cD?pwd=6666" + }, + { + "share_name": "黄妈", + "share_id": "4bGRVUdUtct" + }, + { + "share_name": "YYDSVIP", + "share_id": "dieULBdYP3D" + }, + { + "share_name": "优源阁", + "share_id": "RnjUi1urdb2" + }, + { + "share_name": "风流动漫", + "share_id": "WdaaeX7HK44" + }, + { + "share_name": "风流剧集", + "share_id": "kgxWjZsK6bq" + }, + { + "share_name": "xiaaluo", + "share_id": "sg8CdGUwmUr" + }, + { + "share_name": "4K影视", + "share_id": "wHPKUENKFsS" + }, + { + "share_name": "诺兰全集", + "share_id": "gf2GebXnZHh" + }, + { + "share_name": "纪录片", + "share_id": "fSNHaYST47s" + }, + { + "share_name": "掌灯者|港", + "share_id": "wHPKUENKFsS" + }, + { + "share_name": "掌灯者|一", + "share_id": "wHPKUENKFsS" + }, + { + "share_name": "掌灯者|二", + "share_id": "wHPKUENKFsS" + }, + { + "share_name": "掌灯者|三", + "share_id": "wHPKUENKFsS" + } +] \ No newline at end of file diff --git a/xiaosa/JS/cheerio.min.js b/xiaosa/JS/cheerio.min.js new file mode 100644 index 00000000..1c5337aa --- /dev/null +++ b/xiaosa/JS/cheerio.min.js @@ -0,0 +1,10945 @@ +var e, t = function() { + return t = Object.assign || function(e) { + for (var t, n = 1, r = arguments.length; n < r; n++) + for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); + return e + }, t.apply(this, arguments) + }, + n = { + xml: !1, + decodeEntities: !0 + }, + r = { + _useHtmlParser2: !0, + xmlMode: !0 + }; + +function i(e) { + return (null == e ? void 0 : e.xml) ? "boolean" == typeof e.xml ? r : t(t({}, r), e.xml) : null != e ? e : void 0 +}! function(e) { + e.Root = "root", e.Text = "text", e.Directive = "directive", e.Comment = "comment", e.Script = "script", e.Style = "style", e.Tag = "tag", e.CDATA = "cdata", e.Doctype = "doctype" +}(e || (e = {})); +const s = e.Root, + a = e.Text, + o = e.Directive, + c = e.Comment, + l = e.Script, + h = e.Style, + u = e.Tag, + p = e.CDATA, + f = e.Doctype; +class d { + constructor() { + this.parent = null, this.prev = null, this.next = null, this.startIndex = null, this.endIndex = null + } + get parentNode() { + return this.parent + } + set parentNode(e) { + this.parent = e + } + get previousSibling() { + return this.prev + } + set previousSibling(e) { + this.prev = e + } + get nextSibling() { + return this.next + } + set nextSibling(e) { + this.next = e + } + cloneNode(e = !1) { + return v(this, e) + } +} +class E extends d { + constructor(e) { + super(), this.data = e + } + get nodeValue() { + return this.data + } + set nodeValue(e) { + this.data = e + } +} +class m extends E { + constructor() { + super(...arguments), this.type = e.Text + } + get nodeType() { + return 3 + } +} +class T extends E { + constructor() { + super(...arguments), this.type = e.Comment + } + get nodeType() { + return 8 + } +} +class _ extends E { + constructor(t, n) { + super(n), this.name = t, this.type = e.Directive + } + get nodeType() { + return 1 + } +} +class A extends d { + constructor(e) { + super(), this.children = e + } + get firstChild() { + var e; + return null !== (e = this.children[0]) && void 0 !== e ? e : null + } + get lastChild() { + return this.children.length > 0 ? this.children[this.children.length - 1] : null + } + get childNodes() { + return this.children + } + set childNodes(e) { + this.children = e + } +} +class g extends A { + constructor() { + super(...arguments), this.type = e.CDATA + } + get nodeType() { + return 4 + } +} +class N extends A { + constructor() { + super(...arguments), this.type = e.Root + } + get nodeType() { + return 9 + } +} +class C extends A { + constructor(t, n, r = [], i = ("script" === t ? e.Script : "style" === t ? e.Style : e.Tag)) { + super(r), this.name = t, this.attribs = n, this.type = i + } + get nodeType() { + return 1 + } + get tagName() { + return this.name + } + set tagName(e) { + this.name = e + } + get attributes() { + return Object.keys(this.attribs).map((e => { + var t, n; + return { + name: e, + value: this.attribs[e], + namespace: null === (t = this["x-attribsNamespace"]) || void 0 === t ? void 0 : t[e], + prefix: null === (n = this["x-attribsPrefix"]) || void 0 === n ? void 0 : n[e] + } + })) + } +} + +function I(t) { + return (n = t).type === e.Tag || n.type === e.Script || n.type === e.Style; + var n +} + +function S(t) { + return t.type === e.CDATA +} + +function b(t) { + return t.type === e.Text +} + +function O(t) { + return t.type === e.Comment +} + +function y(t) { + return t.type === e.Directive +} + +function L(t) { + return t.type === e.Root +} + +function k(e) { + return Object.prototype.hasOwnProperty.call(e, "children") +} + +function v(e, t = !1) { + let n; + if (b(e)) n = new m(e.data); + else if (O(e)) n = new T(e.data); + else if (I(e)) { + const r = t ? D(e.children) : [], + i = new C(e.name, { + ...e.attribs + }, r); + r.forEach((e => e.parent = i)), null != e.namespace && (i.namespace = e.namespace), e["x-attribsNamespace"] && (i["x-attribsNamespace"] = { + ...e["x-attribsNamespace"] + }), e["x-attribsPrefix"] && (i["x-attribsPrefix"] = { + ...e["x-attribsPrefix"] + }), n = i + } else if (S(e)) { + const r = t ? D(e.children) : [], + i = new g(r); + r.forEach((e => e.parent = i)), n = i + } else if (L(e)) { + const r = t ? D(e.children) : [], + i = new N(r); + r.forEach((e => e.parent = i)), e["x-mode"] && (i["x-mode"] = e["x-mode"]), n = i + } else { + if (!y(e)) throw new Error(`Not implemented yet: ${e.type}`); + { + const t = new _(e.name, e.data); + null != e["x-name"] && (t["x-name"] = e["x-name"], t["x-publicId"] = e["x-publicId"], t["x-systemId"] = e["x-systemId"]), n = t + } + } + return n.startIndex = e.startIndex, n.endIndex = e.endIndex, null != e.sourceCodeLocation && (n.sourceCodeLocation = e.sourceCodeLocation), n +} + +function D(e) { + const t = e.map((e => v(e, !0))); + for (let e = 1; e < t.length; e++) t[e].prev = t[e - 1], t[e - 1].next = t[e]; + return t +} +const R = { + withStartIndices: !1, + withEndIndices: !1, + xmlMode: !1 +}; +class M { + constructor(e, t, n) { + this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null, "function" == typeof t && (n = t, t = R), "object" == typeof e && (t = e, e = void 0), this.callback = null != e ? e : null, this.options = null != t ? t : R, this.elementCB = null != n ? n : null + } + onparserinit(e) { + this.parser = e + } + onreset() { + this.dom = [], this.root = new N(this.dom), this.done = !1, this.tagStack = [this.root], this.lastNode = null, this.parser = null + } + onend() { + this.done || (this.done = !0, this.parser = null, this.handleCallback(null)) + } + onerror(e) { + this.handleCallback(e) + } + onclosetag() { + this.lastNode = null; + const e = this.tagStack.pop(); + this.options.withEndIndices && (e.endIndex = this.parser.endIndex), this.elementCB && this.elementCB(e) + } + onopentag(t, n) { + const r = this.options.xmlMode ? e.Tag : void 0, + i = new C(t, n, void 0, r); + this.addNode(i), this.tagStack.push(i) + } + ontext(t) { + const { + lastNode: n + } = this; + if (n && n.type === e.Text) n.data += t, this.options.withEndIndices && (n.endIndex = this.parser.endIndex); + else { + const e = new m(t); + this.addNode(e), this.lastNode = e + } + } + oncomment(t) { + if (this.lastNode && this.lastNode.type === e.Comment) return void(this.lastNode.data += t); + const n = new T(t); + this.addNode(n), this.lastNode = n + } + oncommentend() { + this.lastNode = null + } + oncdatastart() { + const e = new m(""), + t = new g([e]); + this.addNode(t), e.parent = t, this.lastNode = e + } + oncdataend() { + this.lastNode = null + } + onprocessinginstruction(e, t) { + const n = new _(e, t); + this.addNode(n) + } + handleCallback(e) { + if ("function" == typeof this.callback) this.callback(e, this.dom); + else if (e) throw e + } + addNode(e) { + const t = this.tagStack[this.tagStack.length - 1], + n = t.children[t.children.length - 1]; + this.options.withStartIndices && (e.startIndex = this.parser.startIndex), this.options.withEndIndices && (e.endIndex = this.parser.endIndex), t.children.push(e), n && (e.prev = n, n.next = e), e.parent = t, this.lastNode = null + } +} +const P = /["&'<>$\x80-\uFFFF]/g, + x = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"] + ]), + w = null != String.prototype.codePointAt ? (e, t) => e.codePointAt(t) : (e, t) => 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t); + +function B(e) { + let t, n = "", + r = 0; + for (; null !== (t = P.exec(e));) { + const i = t.index, + s = e.charCodeAt(i), + a = x.get(s); + void 0 !== a ? (n += e.substring(r, i) + a, r = i + 1) : (n += `${e.substring(r,i)}&#x${w(e,i).toString(16)};`, r = P.lastIndex += Number(55296 == (64512 & s))) + } + return n + e.substr(r) +} + +function F(e, t) { + return function(n) { + let r, i = 0, + s = ""; + for (; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1; + return s + n.substring(i) + } +} +const U = F(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "] + ])), + H = F(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "] + ])), + G = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))), + Y = new Map(["definitionURL", "attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))), + q = new Set(["style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript"]); + +function K(e) { + return e.replace(/"/g, """) +} +const j = new Set(["area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr"]); + +function V(e, t = {}) { + const n = "length" in e ? e : [e]; + let r = ""; + for (let e = 0; e < n.length; e++) r += W(n[e], t); + return r +} + +function W(e, t) { + switch (e.type) { + case s: + return V(e.children, t); + case f: + case o: + return `<${e.data}>`; + case c: + return function(e) { + return `\x3c!--${e.data}--\x3e` + }(e); + case p: + return function(e) { + return `` + }(e); + case l: + case h: + case u: + return function(e, t) { + var n; + "foreign" === t.xmlMode && (e.name = null !== (n = G.get(e.name)) && void 0 !== n ? n : e.name, e.parent && Q.has(e.parent.name) && (t = { + ...t, + xmlMode: !1 + })); + !t.xmlMode && X.has(e.name) && (t = { + ...t, + xmlMode: "foreign" + }); + let r = `<${e.name}`; + const i = function(e, t) { + var n; + if (!e) return; + const r = !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) ? K : t.xmlMode || "utf8" !== t.encodeEntities ? B : U; + return Object.keys(e).map((n => { + var i, s; + const a = null !== (i = e[n]) && void 0 !== i ? i : ""; + return "foreign" === t.xmlMode && (n = null !== (s = Y.get(n)) && void 0 !== s ? s : n), t.emptyAttrs || t.xmlMode || "" !== a ? `${n}="${r(a)}"` : n + })).join(" ") + }(e.attribs, t); + i && (r += ` ${i}`); + 0 === e.children.length && (t.xmlMode ? !1 !== t.selfClosingTags : t.selfClosingTags && j.has(e.name)) ? (t.xmlMode || (r += " "), r += "/>") : (r += ">", e.children.length > 0 && (r += V(e.children, t)), !t.xmlMode && j.has(e.name) || (r += ``)); + return r + }(e, t); + case a: + return function(e, t) { + var n; + let r = e.data || ""; + !1 === (null !== (n = t.encodeEntities) && void 0 !== n ? n : t.decodeEntities) || !t.xmlMode && e.parent && q.has(e.parent.name) || (r = t.xmlMode || "utf8" !== t.encodeEntities ? B(r) : H(r)); + return r + }(e, t) + } +} +const Q = new Set(["mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title"]), + X = new Set(["svg", "math"]); + +function $(e, t) { + return V(e, t) +} + +function z(e) { + return Array.isArray(e) ? e.map(z).join("") : k(e) && !O(e) ? z(e.children) : b(e) ? e.data : "" +} + +function J(t) { + return Array.isArray(t) ? t.map(J).join("") : k(t) && (t.type === e.Tag || S(t)) ? J(t.children) : b(t) ? t.data : "" +} + +function Z(e) { + return k(e) ? e.children : [] +} + +function ee(e) { + return e.parent || null +} + +function te(e) { + const t = ee(e); + if (null != t) return Z(t); + const n = [e]; + let { + prev: r, + next: i + } = e; + for (; null != r;) n.unshift(r), ({ + prev: r + } = r); + for (; null != i;) n.push(i), ({ + next: i + } = i); + return n +} + +function ne(e) { + let { + next: t + } = e; + for (; null !== t && !I(t);)({ + next: t + } = t); + return t +} + +function re(e) { + let { + prev: t + } = e; + for (; null !== t && !I(t);)({ + prev: t + } = t); + return t +} + +function ie(e) { + if (e.prev && (e.prev.next = e.next), e.next && (e.next.prev = e.prev), e.parent) { + const t = e.parent.children; + t.splice(t.lastIndexOf(e), 1) + } +} + +function se(e, t, n = !0, r = 1 / 0) { + return Array.isArray(t) || (t = [t]), ae(e, t, n, r) +} + +function ae(e, t, n, r) { + const i = []; + for (const s of t) { + if (e(s) && (i.push(s), --r <= 0)) break; + if (n && k(s) && s.children.length > 0) { + const t = ae(e, s.children, n, r); + if (i.push(...t), r -= t.length, r <= 0) break + } + } + return i +} + +function oe(e, t, n = !0) { + let r = null; + for (let i = 0; i < t.length && !r; i++) { + const s = t[i]; + I(s) && (e(s) ? r = s : n && s.children.length > 0 && (r = oe(e, s.children, !0))) + } + return r +} +const ce = { + tag_name: e => "function" == typeof e ? t => I(t) && e(t.name) : "*" === e ? I : t => I(t) && t.name === e, + tag_type: e => "function" == typeof e ? t => e(t.type) : t => t.type === e, + tag_contains: e => "function" == typeof e ? t => b(t) && e(t.data) : t => b(t) && t.data === e +}; + +function le(e, t) { + return "function" == typeof t ? n => I(n) && t(n.attribs[e]) : n => I(n) && n.attribs[e] === t +} + +function he(e, t) { + return n => e(n) || t(n) +} + +function ue(e) { + const t = Object.keys(e).map((t => { + const n = e[t]; + return Object.prototype.hasOwnProperty.call(ce, t) ? ce[t](n) : le(t, n) + })); + return 0 === t.length ? null : t.reduce(he) +} + +function pe(e, t, n = !0, r = 1 / 0) { + return se(ce.tag_name(e), t, n, r) +} +var fe; + +function de(e, t) { + const n = [], + r = []; + if (e === t) return 0; + let i = k(e) ? e : e.parent; + for (; i;) n.unshift(i), i = i.parent; + for (i = k(t) ? t : t.parent; i;) r.unshift(i), i = i.parent; + const s = Math.min(n.length, r.length); + let a = 0; + for (; a < s && n[a] === r[a];) a++; + if (0 === a) return fe.DISCONNECTED; + const o = n[a - 1], + c = o.children, + l = n[a], + h = r[a]; + return c.indexOf(l) > c.indexOf(h) ? o === t ? fe.FOLLOWING | fe.CONTAINED_BY : fe.FOLLOWING : o === e ? fe.PRECEDING | fe.CONTAINS : fe.PRECEDING +} + +function Ee(e) { + return (e = e.filter(((e, t, n) => !n.includes(e, t + 1)))).sort(((e, t) => { + const n = de(e, t); + return n & fe.PRECEDING ? -1 : n & fe.FOLLOWING ? 1 : 0 + })), e +}! function(e) { + e[e.DISCONNECTED = 1] = "DISCONNECTED", e[e.PRECEDING = 2] = "PRECEDING", e[e.FOLLOWING = 4] = "FOLLOWING", e[e.CONTAINS = 8] = "CONTAINS", e[e.CONTAINED_BY = 16] = "CONTAINED_BY" +}(fe || (fe = {})); +const me = ["url", "type", "lang"], + Te = ["fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width"]; + +function _e(e) { + return pe("media:content", e).map((e => { + const { + attribs: t + } = e, n = { + medium: t.medium, + isDefault: !!t.isDefault + }; + for (const e of me) t[e] && (n[e] = t[e]); + for (const e of Te) t[e] && (n[e] = parseInt(t[e], 10)); + return t.expression && (n.expression = t.expression), n + })) +} + +function Ae(e, t) { + return pe(e, t, !0, 1)[0] +} + +function ge(e, t, n = !1) { + return z(pe(e, t, n, 1)).trim() +} + +function Ne(e, t, n, r, i = !1) { + const s = ge(n, r, i); + s && (e[t] = s) +} + +function Ce(e) { + return "rss" === e || "feed" === e || "rdf:RDF" === e +} +var Ie, Se = Object.freeze({ + __proto__: null, + isTag: I, + isCDATA: S, + isText: b, + isComment: O, + isDocument: L, + hasChildren: k, + getOuterHTML: $, + getInnerHTML: function(e, t) { + return k(e) ? e.children.map((e => $(e, t))).join("") : "" + }, + getText: function e(t) { + return Array.isArray(t) ? t.map(e).join("") : I(t) ? "br" === t.name ? "\n" : e(t.children) : S(t) ? e(t.children) : b(t) ? t.data : "" + }, + textContent: z, + innerText: J, + getChildren: Z, + getParent: ee, + getSiblings: te, + getAttributeValue: function(e, t) { + var n; + return null === (n = e.attribs) || void 0 === n ? void 0 : n[t] + }, + hasAttrib: function(e, t) { + return null != e.attribs && Object.prototype.hasOwnProperty.call(e.attribs, t) && null != e.attribs[t] + }, + getName: function(e) { + return e.name + }, + nextElementSibling: ne, + prevElementSibling: re, + removeElement: ie, + replaceElement: function(e, t) { + const n = t.prev = e.prev; + n && (n.next = t); + const r = t.next = e.next; + r && (r.prev = t); + const i = t.parent = e.parent; + if (i) { + const n = i.children; + n[n.lastIndexOf(e)] = t, e.parent = null + } + }, + appendChild: function(e, t) { + if (ie(t), t.next = null, t.parent = e, e.children.push(t) > 1) { + const n = e.children[e.children.length - 2]; + n.next = t, t.prev = n + } else t.prev = null + }, + append: function(e, t) { + ie(t); + const { + parent: n + } = e, r = e.next; + if (t.next = r, t.prev = e, e.next = t, t.parent = n, r) { + if (r.prev = t, n) { + const e = n.children; + e.splice(e.lastIndexOf(r), 0, t) + } + } else n && n.children.push(t) + }, + prependChild: function(e, t) { + if (ie(t), t.parent = e, t.prev = null, 1 !== e.children.unshift(t)) { + const n = e.children[1]; + n.prev = t, t.next = n + } else t.next = null + }, + prepend: function(e, t) { + ie(t); + const { + parent: n + } = e; + if (n) { + const r = n.children; + r.splice(r.indexOf(e), 0, t) + } + e.prev && (e.prev.next = t), t.parent = n, t.prev = e.prev, t.next = e, e.prev = t + }, + filter: se, + find: ae, + findOneChild: function(e, t) { + return t.find(e) + }, + findOne: oe, + existsOne: function e(t, n) { + return n.some((n => I(n) && (t(n) || n.children.length > 0 && e(t, n.children)))) + }, + findAll: function(e, t) { + var n; + const r = [], + i = t.filter(I); + let s; + for (; s = i.shift();) { + const t = null === (n = s.children) || void 0 === n ? void 0 : n.filter(I); + t && t.length > 0 && i.unshift(...t), e(s) && r.push(s) + } + return r + }, + testElement: function(e, t) { + const n = ue(e); + return !n || n(t) + }, + getElements: function(e, t, n, r = 1 / 0) { + const i = ue(e); + return i ? se(i, t, n, r) : [] + }, + getElementById: function(e, t, n = !0) { + return Array.isArray(t) || (t = [t]), oe(le("id", e), t, n) + }, + getElementsByTagName: pe, + getElementsByTagType: function(e, t, n = !0, r = 1 / 0) { + return se(ce.tag_type(e), t, n, r) + }, + removeSubsets: function(e) { + let t = e.length; + for (; --t >= 0;) { + const n = e[t]; + if (t > 0 && e.lastIndexOf(n, t - 1) >= 0) e.splice(t, 1); + else + for (let r = n.parent; r; r = r.parent) + if (e.includes(r)) { + e.splice(t, 1); + break + } + } + return e + }, + get DocumentPosition() { + return fe + }, + compareDocumentPosition: de, + uniqueSort: Ee, + getFeed: function(e) { + const t = Ae(Ce, e); + return t ? "feed" === t.name ? function(e) { + var t; + const n = e.children, + r = { + type: "atom", + items: pe("entry", n).map((e => { + var t; + const { + children: n + } = e, r = { + media: _e(n) + }; + Ne(r, "id", "id", n), Ne(r, "title", "title", n); + const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href; + i && (r.link = i); + const s = ge("summary", n) || ge("content", n); + s && (r.description = s); + const a = ge("updated", n); + return a && (r.pubDate = new Date(a)), r + })) + }; + Ne(r, "id", "id", n), Ne(r, "title", "title", n); + const i = null === (t = Ae("link", n)) || void 0 === t ? void 0 : t.attribs.href; + i && (r.link = i); + Ne(r, "description", "subtitle", n); + const s = ge("updated", n); + s && (r.updated = new Date(s)); + return Ne(r, "author", "email", n, !0), r + }(t) : function(e) { + var t, n; + const r = null !== (n = null === (t = Ae("channel", e.children)) || void 0 === t ? void 0 : t.children) && void 0 !== n ? n : [], + i = { + type: e.name.substr(0, 3), + id: "", + items: pe("item", e.children).map((e => { + const { + children: t + } = e, n = { + media: _e(t) + }; + Ne(n, "id", "guid", t), Ne(n, "title", "title", t), Ne(n, "link", "link", t), Ne(n, "description", "description", t); + const r = ge("pubDate", t); + return r && (n.pubDate = new Date(r)), n + })) + }; + Ne(i, "title", "title", r), Ne(i, "link", "link", r), Ne(i, "description", "description", r); + const s = ge("lastBuildDate", r); + s && (i.updated = new Date(s)); + return Ne(i, "author", "managingEditor", r, !0), i + }(t) : null + } + }), + be = "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}; + +function Oe(e) { + if (Object.keys) return Object.keys(e); + var t = []; + for (var n in e) t.push(n); + return t +} + +function ye(e, t) { + if (e.forEach) return e.forEach(t); + for (var n = 0; n < e.length; n++) t(e[n], n, e) +} + +function Le() { + try { + return Object.defineProperty({}, "_", {}), + function(e, t, n) { + Object.defineProperty(e, t, { + writable: !0, + enumerable: !1, + configurable: !0, + value: n + }) + } + } catch (e) { + return function(e, t, n) { + e[t] = n + } + } +} +var ke = ["Array", "Boolean", "Date", "Error", "EvalError", "Function", "Infinity", "JSON", "Math", "NaN", "Number", "Object", "RangeError", "ReferenceError", "RegExp", "String", "SyntaxError", "TypeError", "URIError", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", "escape", "eval", "isFinite", "isNaN", "parseFloat", "parseInt", "undefined", "unescape"]; + +function ve() {} + +function De(e) { + if (!(this instanceof De)) return new De(e); + this.code = e +} + +function Re(e) { + if (Me(e)) return e; + var t = new ve; + return "object" == typeof e && ye(Oe(e), (function(n) { + t[n] = e[n] + })), t +} + +function Me(e) { + return e instanceof ve +} +ve.prototype = {}, De.prototype.runInContext = function(e) { + if (!(e instanceof ve)) throw new TypeError("needs a 'context' argument."); + if (be.document) { + var t = be.document.createElement("iframe"); + t.style || (t.style = {}), t.style.display = "none", be.document.body.appendChild(t); + var n = t.contentWindow, + r = n.eval, + i = n.execScript; + !r && i && (i.call(n, "null"), r = n.eval), ye(Oe(e), (function(t) { + n[t] = e[t] + })), ye(ke, (function(t) { + e[t] && (n[t] = e[t]) + })); + var s = Oe(n), + a = r.call(n, this.code); + return ye(Oe(n), (function(t) { + (t in e || -1 === function(e, t) { + if (xe) return e.indexOf(t); + for (var n = 0; n < e.length; ++n) + if (e[n] === t) return n; + return -1 + }(s, t)) && (e[t] = n[t]) + })), ye(ke, (function(t) { + var r, i, s; + t in e || (r = e, i = t, s = n[t], "function" != typeof Ie && (Ie = Le), Ie(r, i, s)) + })), be.document.body.removeChild(t), a + } + return function(e, t) { + var n = Oe(be); + return n.push("with (this.__ctx__){return eval(this.__code__)}"), Function.apply(null, n).apply({ + __code__: e, + __ctx__: t + }) + }(this.code, e) +}, De.prototype.runInThisContext = function() { + return new Function("code", "return eval(code);").call(be, this.code) +}, De.prototype.runInNewContext = function(e) { + var t = Re(e), + n = this.runInContext(t); + return e && ye(Oe(t), (function(n) { + e[n] = t[n] + })), n +}; +var Pe = { + runInContext: function(e, t, n) { + return new De(e).runInContext(t, n) + }, + isContext: Me, + createContext: Re, + createScript: function(e) { + return new De(e) + }, + Script: De, + runInThisContext: function(e, t) { + return new De(e).runInThisContext(t) + }, + runInNewContext: function(e, t, n) { + return new De(e).runInNewContext(t, n) + } + }, + xe = [].indexOf; +const { + hasOwnProperty: we +} = Object.prototype; + +function Be(e, t) { + return (e = e.slice()).push(t), e +} + +function Fe(e, t) { + return (t = t.slice()).unshift(e), t +} +class Ue extends Error { + constructor(e) { + super('JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'), this.avoidNew = !0, this.value = e, this.name = "NewError" + } +} + +function He(e, t, n, r, i) { + if (!(this instanceof He)) try { + return new He(e, t, n, r, i) + } catch (e) { + if (!e.avoidNew) throw e; + return e.value + } + "string" == typeof e && (i = r, r = n, n = t, t = e, e = null); + const s = e && "object" == typeof e; + if (e = e || {}, this.json = e.json || n, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !we.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.preventEval = e.preventEval || !1, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || r || null, this.otherTypeCallback = e.otherTypeCallback || i || function() { + throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.") + }, !1 !== e.autostart) { + const r = { + path: s ? e.path : t + }; + s ? "json" in e && (r.json = e.json) : r.json = n; + const i = this.evaluate(r); + if (!i || "object" != typeof i) throw new Ue(i); + return i + } +} +He.prototype.evaluate = function(e, t, n, r) { + let i = this.parent, + s = this.parentProperty, + { + flatten: a, + wrap: o + } = this; + if (this.currResultType = this.resultType, this.currPreventEval = this.preventEval, this.currSandbox = this.sandbox, n = n || this.callback, this.currOtherTypeCallback = r || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" == typeof e && !Array.isArray(e)) { + if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().'); + if (!we.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().'); + ({ + json: t + } = e), a = we.call(e, "flatten") ? e.flatten : a, this.currResultType = we.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = we.call(e, "sandbox") ? e.sandbox : this.currSandbox, o = we.call(e, "wrap") ? e.wrap : o, this.currPreventEval = we.call(e, "preventEval") ? e.preventEval : this.currPreventEval, n = we.call(e, "callback") ? e.callback : n, this.currOtherTypeCallback = we.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, i = we.call(e, "parent") ? e.parent : i, s = we.call(e, "parentProperty") ? e.parentProperty : s, e = e.path + } + if (i = i || null, s = s || null, Array.isArray(e) && (e = He.toPathString(e)), !e && "" !== e || !t) return; + const c = He.toPathArray(e); + "$" === c[0] && c.length > 1 && c.shift(), this._hasParentSelector = null; + const l = this._trace(c, t, ["$"], i, s, n).filter((function(e) { + return e && !e.isParentSelector + })); + return l.length ? o || 1 !== l.length || l[0].hasArrExpr ? l.reduce(((e, t) => { + const n = this._getPreferredOutput(t); + return a && Array.isArray(n) ? e = e.concat(n) : e.push(n), e + }), []) : this._getPreferredOutput(l[0]) : o ? [] : void 0 +}, He.prototype._getPreferredOutput = function(e) { + const t = this.currResultType; + switch (t) { + case "all": { + const t = Array.isArray(e.path) ? e.path : He.toPathArray(e.path); + return e.pointer = He.toPointer(t), e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), e + } + case "value": + case "parent": + case "parentProperty": + return e[t]; + case "path": + return He.toPathString(e[t]); + case "pointer": + return He.toPointer(e.path); + default: + throw new TypeError("Unknown result type") + } +}, He.prototype._handleCallback = function(e, t, n) { + if (t) { + const r = this._getPreferredOutput(e); + e.path = "string" == typeof e.path ? e.path : He.toPathString(e.path), t(r, n, e) + } +}, He.prototype._trace = function(e, t, n, r, i, s, a, o) { + let c; + if (!e.length) return c = { + path: n, + value: t, + parent: r, + parentProperty: i, + hasArrExpr: a + }, this._handleCallback(c, s, "value"), c; + const l = e[0], + h = e.slice(1), + u = []; + + function p(e) { + Array.isArray(e) ? e.forEach((e => { + u.push(e) + })) : u.push(e) + } + if (("string" != typeof l || o) && t && we.call(t, l)) p(this._trace(h, t[l], Be(n, l), t, l, s, a)); + else if ("*" === l) this._walk(t, (e => { + p(this._trace(h, t[e], Be(n, e), t, e, s, !0, !0)) + })); + else if (".." === l) p(this._trace(h, t, n, r, i, s, a)), this._walk(t, (r => { + "object" == typeof t[r] && p(this._trace(e.slice(), t[r], Be(n, r), t, r, s, !0)) + })); + else { + if ("^" === l) return this._hasParentSelector = !0, { + path: n.slice(0, -1), + expr: h, + isParentSelector: !0 + }; + if ("~" === l) return c = { + path: Be(n, l), + value: i, + parent: r, + parentProperty: null + }, this._handleCallback(c, s, "property"), c; + if ("$" === l) p(this._trace(h, t, n, null, null, s, a)); + else if (/^(-?\d*):(-?\d*):?(\d*)$/u.test(l)) p(this._slice(l, h, t, n, r, i, s)); + else if (0 === l.indexOf("?(")) { + if (this.currPreventEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression."); + const e = l.replace(/^\?\((.*?)\)$/u, "$1"); + this._walk(t, (a => { + this._eval(e, t[a], a, n, r, i) && p(this._trace(h, t[a], Be(n, a), t, a, s, !0)) + })) + } else if ("(" === l[0]) { + if (this.currPreventEval) throw new Error("Eval [(expr)] prevented in JSONPath expression."); + p(this._trace(Fe(this._eval(l, t, n[n.length - 1], n.slice(0, -1), r, i), h), t, n, r, i, s, a)) + } else if ("@" === l[0]) { + let e = !1; + const a = l.slice(1, -2); + switch (a) { + case "scalar": + t && ["object", "function"].includes(typeof t) || (e = !0); + break; + case "boolean": + case "string": + case "undefined": + case "function": + typeof t === a && (e = !0); + break; + case "integer": + !Number.isFinite(t) || t % 1 || (e = !0); + break; + case "number": + Number.isFinite(t) && (e = !0); + break; + case "nonFinite": + "number" != typeof t || Number.isFinite(t) || (e = !0); + break; + case "object": + t && typeof t === a && (e = !0); + break; + case "array": + Array.isArray(t) && (e = !0); + break; + case "other": + e = this.currOtherTypeCallback(t, n, r, i); + break; + case "null": + null === t && (e = !0); + break; + default: + throw new TypeError("Unknown value type " + a) + } + if (e) return c = { + path: n, + value: t, + parent: r, + parentProperty: i + }, this._handleCallback(c, s, "value"), c + } else if ("`" === l[0] && t && we.call(t, l.slice(1))) { + const e = l.slice(1); + p(this._trace(h, t[e], Be(n, e), t, e, s, a, !0)) + } else if (l.includes(",")) { + const e = l.split(","); + for (const a of e) p(this._trace(Fe(a, h), t, n, r, i, s, !0)) + } else !o && t && we.call(t, l) && p(this._trace(h, t[l], Be(n, l), t, l, s, a, !0)) + } + if (this._hasParentSelector) + for (let e = 0; e < u.length; e++) { + const n = u[e]; + if (n && n.isParentSelector) { + const o = this._trace(n.expr, t, n.path, r, i, s, a); + if (Array.isArray(o)) { + u[e] = o[0]; + const t = o.length; + for (let n = 1; n < t; n++) e++, u.splice(e, 0, o[n]) + } else u[e] = o + } + } + return u +}, He.prototype._walk = function(e, t) { + if (Array.isArray(e)) { + const n = e.length; + for (let e = 0; e < n; e++) t(e) + } else e && "object" == typeof e && Object.keys(e).forEach((e => { + t(e) + })) +}, He.prototype._slice = function(e, t, n, r, i, s, a) { + if (!Array.isArray(n)) return; + const o = n.length, + c = e.split(":"), + l = c[2] && Number.parseInt(c[2]) || 1; + let h = c[0] && Number.parseInt(c[0]) || 0, + u = c[1] && Number.parseInt(c[1]) || o; + h = h < 0 ? Math.max(0, h + o) : Math.min(o, h), u = u < 0 ? Math.max(0, u + o) : Math.min(o, u); + const p = []; + for (let e = h; e < u; e += l) { + this._trace(Fe(e, t), n, r, i, s, a, !0).forEach((e => { + p.push(e) + })) + } + return p +}, He.prototype._eval = function(e, t, n, r, i, s) { + this.currSandbox._$_parentProperty = s, this.currSandbox._$_parent = i, this.currSandbox._$_property = n, this.currSandbox._$_root = this.json, this.currSandbox._$_v = t; + const a = e.includes("@path"); + a && (this.currSandbox._$_path = He.toPathString(r.concat([n]))); + const o = "script:" + e; + if (!He.cache[o]) { + let t = e.replace(/@parentProperty/gu, "_$_parentProperty").replace(/@parent/gu, "_$_parent").replace(/@property/gu, "_$_property").replace(/@root/gu, "_$_root").replace(/@([.\s)[])/gu, "_$_v$1"); + a && (t = t.replace(/@path/gu, "_$_path")), He.cache[o] = new this.vm.Script(t) + } + try { + return He.cache[o].runInNewContext(this.currSandbox) + } catch (t) { + throw new Error("jsonPath: " + t.message + ": " + e) + } +}, He.cache = {}, He.toPathString = function(e) { + const t = e, + n = t.length; + let r = "$"; + for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += /^[0-9*]+$/u.test(t[e]) ? "[" + t[e] + "]" : "['" + t[e] + "']"); + return r +}, He.toPointer = function(e) { + const t = e, + n = t.length; + let r = ""; + for (let e = 1; e < n; e++) /^(~|\^|@.*?\(\))$/u.test(t[e]) || (r += "/" + t[e].toString().replace(/~/gu, "~0").replace(/\//gu, "~1")); + return r +}, He.toPathArray = function(e) { + const { + cache: t + } = He; + if (t[e]) return t[e].concat(); + const n = [], + r = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/gu, ";$&;").replace(/[['](\??\(.*?\))[\]']/gu, (function(e, t) { + return "[#" + (n.push(t) - 1) + "]" + })).replace(/\[['"]([^'\]]*)['"]\]/gu, (function(e, t) { + return "['" + t.replace(/\./gu, "%@%").replace(/~/gu, "%%@@%%") + "']" + })).replace(/~/gu, ";~;").replace(/['"]?\.['"]?(?![^[]*\])|\[['"]?/gu, ";").replace(/%@%/gu, ".").replace(/%%@@%%/gu, "~").replace(/(?:;)?(\^+)(?:;)?/gu, (function(e, t) { + return ";" + t.split("").join(";") + ";" + })).replace(/;;;|;;/gu, ";..;").replace(/;$|'?\]|'$/gu, ""), + i = r.split(";").map((function(e) { + const t = e.match(/#(\d+)/u); + return t && t[1] ? n[t[1]] : e + })); + return t[e] = i, t[e].concat() +}, He.prototype.vm = Pe; +var Ge = "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : {}; + +function Ye() { + throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs") +} + +function qe(e) { + return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e +} + +function Ke(e, t) { + return e(t = { + exports: {} + }, t.exports), t.exports +} +var je = Ke((function(e) { + var t = Array.prototype, + n = Object.prototype, + r = { + "&": "&", + '"': """, + "'": "'", + "<": "<", + ">": ">" + }, + i = /[&"'<>]/g, + s = e.exports = {}; + + function a(e, t) { + return n.hasOwnProperty.call(e, t) + } + + function o(e) { + return r[e] + } + + function c(e, t, n) { + var r, i, s; + if (e instanceof Error && (e = (i = e).name + ": " + i.message), Object.setPrototypeOf ? (r = new Error(e), Object.setPrototypeOf(r, c.prototype)) : (r = this, Object.defineProperty(r, "message", { + enumerable: !1, + writable: !0, + value: e + })), Object.defineProperty(r, "name", { + value: "Template render error" + }), Error.captureStackTrace && Error.captureStackTrace(r, this.constructor), i) { + var a = Object.getOwnPropertyDescriptor(i, "stack"); + (s = a && (a.get || function() { + return a.value + })) || (s = function() { + return i.stack + }) + } else { + var o = new Error(e).stack; + s = function() { + return o + } + } + return Object.defineProperty(r, "stack", { + get: function() { + return s.call(r) + } + }), Object.defineProperty(r, "cause", { + value: i + }), r.lineno = t, r.colno = n, r.firstUpdate = !0, r.Update = function(e) { + var t = "(" + (e || "unknown path") + ")"; + return this.firstUpdate && (this.lineno && this.colno ? t += " [Line " + this.lineno + ", Column " + this.colno + "]" : this.lineno && (t += " [Line " + this.lineno + "]")), t += "\n ", this.firstUpdate && (t += " "), this.message = t + (this.message || ""), this.firstUpdate = !1, this + }, r + } + + function l(e) { + return "[object Function]" === n.toString.call(e) + } + + function h(e) { + return "[object Array]" === n.toString.call(e) + } + + function u(e) { + return "[object String]" === n.toString.call(e) + } + + function p(e) { + return "[object Object]" === n.toString.call(e) + } + + function f(e) { + var t = function(e) { + return e ? "string" == typeof e ? e.split(".") : [e] : [] + }(e); + return function(e) { + for (var n = e, r = 0; r < t.length; r++) { + var i = t[r]; + if (!a(n, i)) return; + n = n[i] + } + return n + } + } + + function d(e) { + return Array.prototype.slice.call(e) + } + + function E(e, t, n) { + return Array.prototype.indexOf.call(e || [], t, n) + } + + function m(e) { + var t = []; + for (var n in e) a(e, n) && t.push(n); + return t + } + s.hasOwnProp = a, s._prettifyError = function(e, t, n) { + if (n.Update || (n = new s.TemplateError(n)), n.Update(e), !t) { + var r = n; + (n = new Error(r.message)).name = r.name + } + return n + }, Object.setPrototypeOf ? Object.setPrototypeOf(c.prototype, Error.prototype) : c.prototype = Object.create(Error.prototype, { + constructor: { + value: c + } + }), s.TemplateError = c, s.escape = function(e) { + return e.replace(i, o) + }, s.isFunction = l, s.isArray = h, s.isString = u, s.isObject = p, s.getAttrGetter = f, s.groupBy = function(e, t, n) { + for (var r = {}, i = l(t) ? t : f(t), s = 0; s < e.length; s++) { + var a = e[s], + o = i(a, s); + if (void 0 === o && !0 === n) throw new TypeError('groupby: attribute "' + t + '" resolved to undefined'); + (r[o] || (r[o] = [])).push(a) + } + return r + }, s.toArray = d, s.without = function(e) { + var t = []; + if (!e) return t; + for (var n = e.length, r = d(arguments).slice(1), i = -1; ++i < n;) - 1 === E(r, e[i]) && t.push(e[i]); + return t + }, s.repeat = function(e, t) { + for (var n = "", r = 0; r < t; r++) n += e; + return n + }, s.each = function(e, n, r) { + if (null != e) + if (t.forEach && e.forEach === t.forEach) e.forEach(n, r); + else if (e.length === +e.length) + for (var i = 0, s = e.length; i < s; i++) n.call(r, e[i], i, e) + }, s.map = function(e, n) { + var r = []; + if (null == e) return r; + if (t.map && e.map === t.map) return e.map(n); + for (var i = 0; i < e.length; i++) r[r.length] = n(e[i], i); + return e.length === +e.length && (r.length = e.length), r + }, s.asyncIter = function(e, t, n) { + var r = -1; + ! function i() { + ++r < e.length ? t(e[r], r, i, n) : n() + }() + }, s.asyncFor = function(e, t, n) { + var r = m(e || {}), + i = r.length, + s = -1; + ! function a() { + s++; + var o = r[s]; + s < i ? t(o, e[o], s, i, a) : n() + }() + }, s.indexOf = E, s.keys = m, s._entries = function(e) { + return m(e).map((function(t) { + return [t, e[t]] + })) + }, s._values = function(e) { + return m(e).map((function(t) { + return e[t] + })) + }, s._assign = s.extend = function(e, t) { + return e = e || {}, m(t).forEach((function(n) { + e[n] = t[n] + })), e + }, s.inOperator = function(e, t) { + if (h(t) || u(t)) return -1 !== t.indexOf(e); + if (p(t)) return e in t; + throw new Error('Cannot use "in" operator to search for "' + e + '" in unexpected types.') + } +})); + +function Ve() { + throw new Error("setTimeout has not been defined") +} + +function We() { + throw new Error("clearTimeout has not been defined") +} +var Qe = Ve, + Xe = We; + +function $e(e) { + if (Qe === setTimeout) return setTimeout(e, 0); + if ((Qe === Ve || !Qe) && setTimeout) return Qe = setTimeout, setTimeout(e, 0); + try { + return Qe(e, 0) + } catch (t) { + try { + return Qe.call(null, e, 0) + } catch (t) { + return Qe.call(this, e, 0) + } + } +} +"function" == typeof be.setTimeout && (Qe = setTimeout), "function" == typeof be.clearTimeout && (Xe = clearTimeout); +var ze, Je = [], + Ze = !1, + et = -1; + +function tt() { + Ze && ze && (Ze = !1, ze.length ? Je = ze.concat(Je) : et = -1, Je.length && nt()) +} + +function nt() { + if (!Ze) { + var e = $e(tt); + Ze = !0; + for (var t = Je.length; t;) { + for (ze = Je, Je = []; ++et < t;) ze && ze[et].run(); + et = -1, t = Je.length + } + ze = null, Ze = !1, + function(e) { + if (Xe === clearTimeout) return clearTimeout(e); + if ((Xe === We || !Xe) && clearTimeout) return Xe = clearTimeout, clearTimeout(e); + try { + Xe(e) + } catch (t) { + try { + return Xe.call(null, e) + } catch (t) { + return Xe.call(this, e) + } + } + }(e) + } +} + +function rt(e, t) { + this.fun = e, this.array = t +} +rt.prototype.run = function() { + this.fun.apply(null, this.array) +}; + +function it() {} +var st = it, + at = it, + ot = it, + ct = it, + lt = it, + ht = it, + ut = it; +var pt = be.performance || {}, + ft = pt.now || pt.mozNow || pt.msNow || pt.oNow || pt.webkitNow || function() { + return (new Date).getTime() + }; +var dt = new Date; +var Et = { + nextTick: function(e) { + var t = new Array(arguments.length - 1); + if (arguments.length > 1) + for (var n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; + Je.push(new rt(e, t)), 1 !== Je.length || Ze || $e(nt) + }, + title: "browser", + browser: !0, + env: {}, + argv: [], + version: "", + versions: {}, + on: st, + addListener: at, + once: ot, + off: ct, + removeListener: lt, + removeAllListeners: ht, + emit: ut, + binding: function(e) { + throw new Error("process.binding is not supported") + }, + cwd: function() { + return "/" + }, + chdir: function(e) { + throw new Error("process.chdir is not supported") + }, + umask: function() { + return 0 + }, + hrtime: function(e) { + var t = .001 * ft.call(pt), + n = Math.floor(t), + r = Math.floor(t % 1 * 1e9); + return e && (n -= e[0], (r -= e[1]) < 0 && (n--, r += 1e9)), [n, r] + }, + platform: "browser", + release: {}, + config: {}, + uptime: function() { + return (new Date - dt) / 1e3 + } +}; + +function mt() {} + +function Tt() { + Tt.init.call(this) +} + +function _t(e) { + return void 0 === e._maxListeners ? Tt.defaultMaxListeners : e._maxListeners +} + +function At(e, t, n) { + if (t) e.call(n); + else + for (var r = e.length, i = yt(e, r), s = 0; s < r; ++s) i[s].call(n) +} + +function gt(e, t, n, r) { + if (t) e.call(n, r); + else + for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].call(n, r) +} + +function Nt(e, t, n, r, i) { + if (t) e.call(n, r, i); + else + for (var s = e.length, a = yt(e, s), o = 0; o < s; ++o) a[o].call(n, r, i) +} + +function Ct(e, t, n, r, i, s) { + if (t) e.call(n, r, i, s); + else + for (var a = e.length, o = yt(e, a), c = 0; c < a; ++c) o[c].call(n, r, i, s) +} + +function It(e, t, n, r) { + if (t) e.apply(n, r); + else + for (var i = e.length, s = yt(e, i), a = 0; a < i; ++a) s[a].apply(n, r) +} + +function St(e, t, n, r) { + var i, s, a; + if ("function" != typeof n) throw new TypeError('"listener" argument must be a function'); + if ((s = e._events) ? (s.newListener && (e.emit("newListener", t, n.listener ? n.listener : n), s = e._events), a = s[t]) : (s = e._events = new mt, e._eventsCount = 0), a) { + if ("function" == typeof a ? a = s[t] = r ? [n, a] : [a, n] : r ? a.unshift(n) : a.push(n), !a.warned && (i = _t(e)) && i > 0 && a.length > i) { + a.warned = !0; + var o = new Error("Possible EventEmitter memory leak detected. " + a.length + " " + t + " listeners added. Use emitter.setMaxListeners() to increase limit"); + o.name = "MaxListenersExceededWarning", o.emitter = e, o.type = t, o.count = a.length, + function(e) { + "function" == typeof console.warn ? console.warn(e) : console.log(e) + }(o) + } + } else a = s[t] = n, ++e._eventsCount; + return e +} + +function bt(e, t, n) { + var r = !1; + + function i() { + e.removeListener(t, i), r || (r = !0, n.apply(e, arguments)) + } + return i.listener = n, i +} + +function Ot(e) { + var t = this._events; + if (t) { + var n = t[e]; + if ("function" == typeof n) return 1; + if (n) return n.length + } + return 0 +} + +function yt(e, t) { + for (var n = new Array(t); t--;) n[t] = e[t]; + return n +} + +function Lt() { + var e; + Tt.call(this), this.__emitError = (e = this, function(t) { + e.emit("error", t) + }) +} + +function kt() { + return new Lt +} +mt.prototype = Object.create(null), Tt.EventEmitter = Tt, Tt.usingDomains = !1, Tt.prototype.domain = void 0, Tt.prototype._events = void 0, Tt.prototype._maxListeners = void 0, Tt.defaultMaxListeners = 10, Tt.init = function() { + this.domain = null, Tt.usingDomains && undefined.active, this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = new mt, this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0 +}, Tt.prototype.setMaxListeners = function(e) { + if ("number" != typeof e || e < 0 || isNaN(e)) throw new TypeError('"n" argument must be a positive number'); + return this._maxListeners = e, this +}, Tt.prototype.getMaxListeners = function() { + return _t(this) +}, Tt.prototype.emit = function(e) { + var t, n, r, i, s, a, o, c = "error" === e; + if (a = this._events) c = c && null == a.error; + else if (!c) return !1; + if (o = this.domain, c) { + if (t = arguments[1], !o) { + if (t instanceof Error) throw t; + var l = new Error('Uncaught, unspecified "error" event. (' + t + ")"); + throw l.context = t, l + } + return t || (t = new Error('Uncaught, unspecified "error" event')), t.domainEmitter = this, t.domain = o, t.domainThrown = !1, o.emit("error", t), !1 + } + if (!(n = a[e])) return !1; + var h = "function" == typeof n; + switch (r = arguments.length) { + case 1: + At(n, h, this); + break; + case 2: + gt(n, h, this, arguments[1]); + break; + case 3: + Nt(n, h, this, arguments[1], arguments[2]); + break; + case 4: + Ct(n, h, this, arguments[1], arguments[2], arguments[3]); + break; + default: + for (i = new Array(r - 1), s = 1; s < r; s++) i[s - 1] = arguments[s]; + It(n, h, this, i) + } + return !0 +}, Tt.prototype.addListener = function(e, t) { + return St(this, e, t, !1) +}, Tt.prototype.on = Tt.prototype.addListener, Tt.prototype.prependListener = function(e, t) { + return St(this, e, t, !0) +}, Tt.prototype.once = function(e, t) { + if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); + return this.on(e, bt(this, e, t)), this +}, Tt.prototype.prependOnceListener = function(e, t) { + if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); + return this.prependListener(e, bt(this, e, t)), this +}, Tt.prototype.removeListener = function(e, t) { + var n, r, i, s, a; + if ("function" != typeof t) throw new TypeError('"listener" argument must be a function'); + if (!(r = this._events)) return this; + if (!(n = r[e])) return this; + if (n === t || n.listener && n.listener === t) 0 == --this._eventsCount ? this._events = new mt : (delete r[e], r.removeListener && this.emit("removeListener", e, n.listener || t)); + else if ("function" != typeof n) { + for (i = -1, s = n.length; s-- > 0;) + if (n[s] === t || n[s].listener && n[s].listener === t) { + a = n[s].listener, i = s; + break + } if (i < 0) return this; + if (1 === n.length) { + if (n[0] = void 0, 0 == --this._eventsCount) return this._events = new mt, this; + delete r[e] + } else ! function(e, t) { + for (var n = t, r = n + 1, i = e.length; r < i; n += 1, r += 1) e[n] = e[r]; + e.pop() + }(n, i); + r.removeListener && this.emit("removeListener", e, a || t) + } + return this +}, Tt.prototype.removeAllListeners = function(e) { + var t, n; + if (!(n = this._events)) return this; + if (!n.removeListener) return 0 === arguments.length ? (this._events = new mt, this._eventsCount = 0) : n[e] && (0 == --this._eventsCount ? this._events = new mt : delete n[e]), this; + if (0 === arguments.length) { + for (var r, i = Object.keys(n), s = 0; s < i.length; ++s) "removeListener" !== (r = i[s]) && this.removeAllListeners(r); + return this.removeAllListeners("removeListener"), this._events = new mt, this._eventsCount = 0, this + } + if ("function" == typeof(t = n[e])) this.removeListener(e, t); + else if (t) + do { + this.removeListener(e, t[t.length - 1]) + } while (t[0]); + return this +}, Tt.prototype.listeners = function(e) { + var t, n = this._events; + return n && (t = n[e]) ? "function" == typeof t ? [t.listener || t] : function(e) { + for (var t = new Array(e.length), n = 0; n < t.length; ++n) t[n] = e[n].listener || e[n]; + return t + }(t) : [] +}, Tt.listenerCount = function(e, t) { + return "function" == typeof e.listenerCount ? e.listenerCount(t) : Ot.call(e, t) +}, Tt.prototype.listenerCount = Ot, Tt.prototype.eventNames = function() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [] +}, ("function" == typeof Object.create ? function(e, t) { + e.super_ = t, e.prototype = Object.create(t.prototype, { + constructor: { + value: e, + enumerable: !1, + writable: !0, + configurable: !0 + } + }) +} : function(e, t) { + e.super_ = t; + var n = function() {}; + n.prototype = t.prototype, e.prototype = new n, e.prototype.constructor = e +})(Lt, Tt), Lt.prototype.add = function(e) { + e.on("error", this.__emitError) +}, Lt.prototype.remove = function(e) { + e.removeListener("error", this.__emitError) +}, Lt.prototype.bind = function(e) { + var t = this.__emitError; + return function() { + var n = Array.prototype.slice.call(arguments); + try { + e.apply(null, n) + } catch (e) { + t(e) + } + } +}, Lt.prototype.intercept = function(e) { + var t = this.__emitError; + return function(n) { + if (n) t(n); + else { + var r = Array.prototype.slice.call(arguments, 1); + try { + e.apply(null, r) + } catch (n) { + t(n) + } + } + } +}, Lt.prototype.run = function(e) { + var t = this.__emitError; + try { + e() + } catch (e) { + t(e) + } + return this +}, Lt.prototype.dispose = function() { + return this.removeAllListeners(), this +}, Lt.prototype.enter = Lt.prototype.exit = function() { + return this +}; +var vt, Dt = { + Domain: Lt, + createDomain: kt, + create: kt + }, + Rt = "function" == typeof setImmediate, + Mt = Pt; + +function Pt(e) { + xt.length || (Ut(), wt = !0), xt[xt.length] = e +} +var xt = [], + wt = !1, + Bt = 0; + +function Ft() { + for (; Bt < xt.length;) { + var e = Bt; + if (Bt += 1, xt[e].call(), Bt > 1024) { + for (var t = 0, n = xt.length - Bt; t < n; t++) xt[t] = xt[t + Bt]; + xt.length -= Bt, Bt = 0 + } + } + xt.length = 0, Bt = 0, wt = !1 +} + +function Ut() { + var e = Et.domain; + e && (vt || (vt = Dt), vt.active = Et.domain = null), wt && Rt ? setImmediate(Ft) : Et.nextTick(Ft), e && (vt.active = Et.domain = e) +} +Pt.requestFlush = Ut; +var Ht = [], + Gt = function(e) { + var t; + t = Ht.length ? Ht.pop() : new Yt; + t.task = e, t.domain = Et.domain, Mt(t) + }; + +function Yt() { + this.task = null, this.domain = null +} +Yt.prototype.call = function() { + this.domain && this.domain.enter(); + var e = !0; + try { + this.task.call(), e = !1, this.domain && this.domain.exit() + } finally { + e && Mt.requestFlush(), this.task = null, this.domain = null, Ht.push(this) + } +}; +var qt = Ke((function(e) { + ! function(t) { + var n = function() { + var e = Array.prototype.slice.call(arguments); + "function" == typeof e[0] && e[0].apply(null, e.splice(1)) + }, + r = function(e) { + "function" == typeof setImmediate ? setImmediate(e) : void 0 !== Et && Et.nextTick ? Et.nextTick(e) : setTimeout(e, 0) + }, + i = Array.isArray || function(e) { + return "[object Array]" === Object.prototype.toString.call(e) + }, + s = function(e, t, s) { + var a = s ? r : n; + if (t = t || function() {}, !i(e)) { + var o = new Error("First argument to waterfall must be an array of functions"); + return t(o) + } + if (!e.length) return t(); + var c = function(e) { + return function(n) { + if (n) t.apply(null, arguments), t = function() {}; + else { + var r = Array.prototype.slice.call(arguments, 1), + i = e.next(); + i ? r.push(c(i)) : r.push(t), a((function() { + e.apply(null, r) + })) + } + } + }; + c(function(e) { + var t = function(n) { + var r = function() { + return e.length && e[n].apply(null, arguments), r.next() + }; + return r.next = function() { + return n < e.length - 1 ? t(n + 1) : null + }, r + }; + return t(0) + }(e))() + }; + e.exports ? e.exports = s : t.waterfall = s + }(Ge) +})); + +function Kt(e, t, n, r) { + return { + type: e, + value: t, + lineno: n, + colno: r + } +} +var jt = function() { + function e(e, t) { + this.str = e, this.index = 0, this.len = e.length, this.lineno = 0, this.colno = 0, this.in_code = !1; + var n = (t = t || {}).tags || {}; + this.tags = { + BLOCK_START: n.blockStart || "{%", + BLOCK_END: n.blockEnd || "%}", + VARIABLE_START: n.variableStart || "{{", + VARIABLE_END: n.variableEnd || "}}", + COMMENT_START: n.commentStart || "{#", + COMMENT_END: n.commentEnd || "#}" + }, this.trimBlocks = !!t.trimBlocks, this.lstripBlocks = !!t.lstripBlocks + } + var t = e.prototype; + return t.nextToken = function() { + var e, t = this.lineno, + n = this.colno; + if (this.in_code) { + var r = this.current(); + if (this.isFinished()) return null; + if ('"' === r || "'" === r) return Kt("string", this._parseString(r), t, n); + if (e = this._extract(" \n\t\r ")) return Kt("whitespace", e, t, n); + if ((e = this._extractString(this.tags.BLOCK_END)) || (e = this._extractString("-" + this.tags.BLOCK_END))) return this.in_code = !1, this.trimBlocks && ("\n" === (r = this.current()) ? this.forward() : "\r" === r && (this.forward(), "\n" === (r = this.current()) ? this.forward() : this.back())), Kt("block-end", e, t, n); + if ((e = this._extractString(this.tags.VARIABLE_END)) || (e = this._extractString("-" + this.tags.VARIABLE_END))) return this.in_code = !1, Kt("variable-end", e, t, n); + if ("r" === r && "/" === this.str.charAt(this.index + 1)) { + this.forwardN(2); + for (var i = ""; !this.isFinished();) { + if ("/" === this.current() && "\\" !== this.previous()) { + this.forward(); + break + } + i += this.current(), this.forward() + } + for (var s = ["g", "i", "m", "y"], a = ""; !this.isFinished();) { + if (!(-1 !== s.indexOf(this.current()))) break; + a += this.current(), this.forward() + } + return Kt("regex", { + body: i, + flags: a + }, t, n) + } + if (-1 !== "()[]{}%*-+~/#,:|.<>=!".indexOf(r)) { + this.forward(); + var o, c = ["==", "===", "!=", "!==", "<=", ">=", "//", "**"], + l = r + this.current(); + switch (-1 !== je.indexOf(c, l) && (this.forward(), r = l, -1 !== je.indexOf(c, l + this.current()) && (r = l + this.current(), this.forward())), r) { + case "(": + o = "left-paren"; + break; + case ")": + o = "right-paren"; + break; + case "[": + o = "left-bracket"; + break; + case "]": + o = "right-bracket"; + break; + case "{": + o = "left-curly"; + break; + case "}": + o = "right-curly"; + break; + case ",": + o = "comma"; + break; + case ":": + o = "colon"; + break; + case "~": + o = "tilde"; + break; + case "|": + o = "pipe"; + break; + default: + o = "operator" + } + return Kt(o, r, t, n) + } + if ((e = this._extractUntil(" \n\t\r ()[]{}%*-+~/#,:|.<>=!")).match(/^[-+]?[0-9]+$/)) return "." === this.current() ? (this.forward(), Kt("float", e + "." + this._extract("0123456789"), t, n)) : Kt("int", e, t, n); + if (e.match(/^(true|false)$/)) return Kt("boolean", e, t, n); + if ("none" === e) return Kt("none", e, t, n); + if ("null" === e) return Kt("none", e, t, n); + if (e) return Kt("symbol", e, t, n); + throw new Error("Unexpected value while parsing: " + e) + } + var h, u = this.tags.BLOCK_START.charAt(0) + this.tags.VARIABLE_START.charAt(0) + this.tags.COMMENT_START.charAt(0) + this.tags.COMMENT_END.charAt(0); + if (this.isFinished()) return null; + if ((e = this._extractString(this.tags.BLOCK_START + "-")) || (e = this._extractString(this.tags.BLOCK_START))) return this.in_code = !0, Kt("block-start", e, t, n); + if ((e = this._extractString(this.tags.VARIABLE_START + "-")) || (e = this._extractString(this.tags.VARIABLE_START))) return this.in_code = !0, Kt("variable-start", e, t, n); + e = ""; + var p = !1; + for (this._matches(this.tags.COMMENT_START) && (p = !0, e = this._extractString(this.tags.COMMENT_START)); null !== (h = this._extractUntil(u));) { + if (e += h, (this._matches(this.tags.BLOCK_START) || this._matches(this.tags.VARIABLE_START) || this._matches(this.tags.COMMENT_START)) && !p) { + if (this.lstripBlocks && this._matches(this.tags.BLOCK_START) && this.colno > 0 && this.colno <= e.length) { + var f = e.slice(-this.colno); + if (/^\s+$/.test(f) && !(e = e.slice(0, -this.colno)).length) return this.nextToken() + } + break + } + if (this._matches(this.tags.COMMENT_END)) { + if (!p) throw new Error("unexpected end of comment"); + e += this._extractString(this.tags.COMMENT_END); + break + } + e += this.current(), this.forward() + } + if (null === h && p) throw new Error("expected end of comment, got end of file"); + return Kt(p ? "comment" : "data", e, t, n) + }, t._parseString = function(e) { + this.forward(); + for (var t = ""; !this.isFinished() && this.current() !== e;) { + var n = this.current(); + if ("\\" === n) { + switch (this.forward(), this.current()) { + case "n": + t += "\n"; + break; + case "t": + t += "\t"; + break; + case "r": + t += "\r"; + break; + default: + t += this.current() + } + this.forward() + } else t += n, this.forward() + } + return this.forward(), t + }, t._matches = function(e) { + return this.index + e.length > this.len ? null : this.str.slice(this.index, this.index + e.length) === e + }, t._extractString = function(e) { + return this._matches(e) ? (this.forwardN(e.length), e) : null + }, t._extractUntil = function(e) { + return this._extractMatching(!0, e || "") + }, t._extract = function(e) { + return this._extractMatching(!1, e) + }, t._extractMatching = function(e, t) { + if (this.isFinished()) return null; + var n = t.indexOf(this.current()); + if (e && -1 === n || !e && -1 !== n) { + var r = this.current(); + this.forward(); + for (var i = t.indexOf(this.current()); + (e && -1 === i || !e && -1 !== i) && !this.isFinished();) r += this.current(), this.forward(), i = t.indexOf(this.current()); + return r + } + return "" + }, t._extractRegex = function(e) { + var t = this.currentStr().match(e); + return t ? (this.forwardN(t[0].length), t) : null + }, t.isFinished = function() { + return this.index >= this.len + }, t.forwardN = function(e) { + for (var t = 0; t < e; t++) this.forward() + }, t.forward = function() { + this.index++, "\n" === this.previous() ? (this.lineno++, this.colno = 0) : this.colno++ + }, t.backN = function(e) { + for (var t = 0; t < e; t++) this.back() + }, t.back = function() { + if (this.index--, "\n" === this.current()) { + this.lineno--; + var e = this.src.lastIndexOf("\n", this.index - 1); + this.colno = -1 === e ? this.index : this.index - e + } else this.colno-- + }, t.current = function() { + return this.isFinished() ? "" : this.str.charAt(this.index) + }, t.currentStr = function() { + return this.isFinished() ? "" : this.str.substr(this.index) + }, t.previous = function() { + return this.str.charAt(this.index - 1) + }, e + }(), + Vt = { + lex: function(e, t) { + return new jt(e, t) + }, + TOKEN_STRING: "string", + TOKEN_WHITESPACE: "whitespace", + TOKEN_DATA: "data", + TOKEN_BLOCK_START: "block-start", + TOKEN_BLOCK_END: "block-end", + TOKEN_VARIABLE_START: "variable-start", + TOKEN_VARIABLE_END: "variable-end", + TOKEN_COMMENT: "comment", + TOKEN_LEFT_PAREN: "left-paren", + TOKEN_RIGHT_PAREN: "right-paren", + TOKEN_LEFT_BRACKET: "left-bracket", + TOKEN_RIGHT_BRACKET: "right-bracket", + TOKEN_LEFT_CURLY: "left-curly", + TOKEN_RIGHT_CURLY: "right-curly", + TOKEN_OPERATOR: "operator", + TOKEN_COMMA: "comma", + TOKEN_COLON: "colon", + TOKEN_TILDE: "tilde", + TOKEN_PIPE: "pipe", + TOKEN_INT: "int", + TOKEN_FLOAT: "float", + TOKEN_BOOLEAN: "boolean", + TOKEN_NONE: "none", + TOKEN_SYMBOL: "symbol", + TOKEN_SPECIAL: "special", + TOKEN_REGEX: "regex" + }; + +function Wt(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } +} + +function Qt(e, t, n) { + return t && Wt(e.prototype, t), n && Wt(e, n), e +} + +function Xt(e, t) { + e.prototype = Object.create(t.prototype), e.prototype.constructor = e, $t(e, t) +} + +function $t(e, t) { + return $t = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, $t(e, t) +} + +function zt(e, t, n) { + n = n || {}, je.keys(n).forEach((function(t) { + n[t] = function(e, t) { + return "function" != typeof e || "function" != typeof t ? t : function() { + var n = this.parent; + this.parent = e; + var r = t.apply(this, arguments); + return this.parent = n, r + } + }(e.prototype[t], n[t]) + })); + var r = function(e) { + function n() { + return e.apply(this, arguments) || this + } + return Xt(n, e), Qt(n, [{ + key: "typename", + get: function() { + return t + } + }]), n + }(e); + return je._assign(r.prototype, n), r +} +var Jt = function() { + function e() { + this.init.apply(this, arguments) + } + return e.prototype.init = function() {}, e.extend = function(e, t) { + return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t) + }, Qt(e, [{ + key: "typename", + get: function() { + return this.constructor.name + } + }]), e + }(), + Zt = function(e) { + function t() { + var t, n; + return (t = n = e.call(this) || this).init.apply(t, arguments), n + } + return Xt(t, e), t.prototype.init = function() {}, t.extend = function(e, t) { + return "object" == typeof e && (t = e, e = "anonymous"), zt(this, e, t) + }, Qt(t, [{ + key: "typename", + get: function() { + return this.constructor.name + } + }]), t + }(Tt), + en = { + Obj: Jt, + EmitterObj: Zt + }; + +function tn(e, t) { + for (var n = 0; n < t.length; n++) { + var r = t[n]; + r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), Object.defineProperty(e, r.key, r) + } +} + +function nn(e, t, n) { + return t && tn(e.prototype, t), n && tn(e, n), e +} + +function rn(e, t) { + e.prototype = Object.create(t.prototype), e.prototype.constructor = e, sn(e, t) +} + +function sn(e, t) { + return sn = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, sn(e, t) +} + +function an(e, t, n) { + e instanceof t && n.push(e), e instanceof on && e.findAll(t, n) +} +var on = function(e) { + function t() { + return e.apply(this, arguments) || this + } + rn(t, e); + var n = t.prototype; + return n.init = function(e, t) { + for (var n = arguments, r = this, i = arguments.length, s = new Array(i > 2 ? i - 2 : 0), a = 2; a < i; a++) s[a - 2] = arguments[a]; + this.lineno = e, this.colno = t, this.fields.forEach((function(e, t) { + var i = n[t + 2]; + void 0 === i && (i = null), r[e] = i + })) + }, n.findAll = function(e, t) { + var n = this; + return t = t || [], this instanceof ln ? this.children.forEach((function(n) { + return an(n, e, t) + })) : this.fields.forEach((function(r) { + return an(n[r], e, t) + })), t + }, n.iterFields = function(e) { + var t = this; + this.fields.forEach((function(n) { + e(t[n], n) + })) + }, t + }(en.Obj), + cn = function(e) { + function t() { + return e.apply(this, arguments) || this + } + return rn(t, e), nn(t, [{ + key: "typename", + get: function() { + return "Value" + } + }, { + key: "fields", + get: function() { + return ["value"] + } + }]), t + }(on), + ln = function(e) { + function t() { + return e.apply(this, arguments) || this + } + rn(t, e); + var n = t.prototype; + return n.init = function(t, n, r) { + e.prototype.init.call(this, t, n, r || []) + }, n.addChild = function(e) { + this.children.push(e) + }, nn(t, [{ + key: "typename", + get: function() { + return "NodeList" + } + }, { + key: "fields", + get: function() { + return ["children"] + } + }]), t + }(on), + hn = ln.extend("Root"), + un = cn.extend("Literal"), + pn = cn.extend("Symbol"), + fn = ln.extend("Group"), + dn = ln.extend("Array"), + En = on.extend("Pair", { + fields: ["key", "value"] + }), + mn = ln.extend("Dict"), + Tn = on.extend("LookupVal", { + fields: ["target", "val"] + }), + _n = on.extend("If", { + fields: ["cond", "body", "else_"] + }), + An = _n.extend("IfAsync"), + gn = on.extend("InlineIf", { + fields: ["cond", "body", "else_"] + }), + Nn = on.extend("For", { + fields: ["arr", "name", "body", "else_"] + }), + Cn = Nn.extend("AsyncEach"), + In = Nn.extend("AsyncAll"), + Sn = on.extend("Macro", { + fields: ["name", "args", "body"] + }), + bn = Sn.extend("Caller"), + On = on.extend("Import", { + fields: ["template", "target", "withContext"] + }), + yn = function(e) { + function t() { + return e.apply(this, arguments) || this + } + return rn(t, e), t.prototype.init = function(t, n, r, i, s) { + e.prototype.init.call(this, t, n, r, i || new ln, s) + }, nn(t, [{ + key: "typename", + get: function() { + return "FromImport" + } + }, { + key: "fields", + get: function() { + return ["template", "names", "withContext"] + } + }]), t + }(on), + Ln = on.extend("FunCall", { + fields: ["name", "args"] + }), + kn = Ln.extend("Filter"), + vn = kn.extend("FilterAsync", { + fields: ["name", "args", "symbol"] + }), + Dn = mn.extend("KeywordArgs"), + Rn = on.extend("Block", { + fields: ["name", "body"] + }), + Mn = on.extend("Super", { + fields: ["blockName", "symbol"] + }), + Pn = on.extend("TemplateRef", { + fields: ["template"] + }).extend("Extends"), + xn = on.extend("Include", { + fields: ["template", "ignoreMissing"] + }), + wn = on.extend("Set", { + fields: ["targets", "value"] + }), + Bn = on.extend("Switch", { + fields: ["expr", "cases", "default"] + }), + Fn = on.extend("Case", { + fields: ["cond", "body"] + }), + Un = ln.extend("Output"), + Hn = on.extend("Capture", { + fields: ["body"] + }), + Gn = un.extend("TemplateData"), + Yn = on.extend("UnaryOp", { + fields: ["target"] + }), + qn = on.extend("BinOp", { + fields: ["left", "right"] + }), + Kn = qn.extend("In"), + jn = qn.extend("Is"), + Vn = qn.extend("Or"), + Wn = qn.extend("And"), + Qn = Yn.extend("Not"), + Xn = qn.extend("Add"), + $n = qn.extend("Concat"), + zn = qn.extend("Sub"), + Jn = qn.extend("Mul"), + Zn = qn.extend("Div"), + er = qn.extend("FloorDiv"), + tr = qn.extend("Mod"), + nr = qn.extend("Pow"), + rr = Yn.extend("Neg"), + ir = Yn.extend("Pos"), + sr = on.extend("Compare", { + fields: ["expr", "ops"] + }), + ar = on.extend("CompareOperand", { + fields: ["expr", "type"] + }), + or = on.extend("CallExtension", { + init: function(e, t, n, r) { + this.parent(), this.extName = e.__name || e, this.prop = t, this.args = n || new ln, this.contentArgs = r || [], this.autoescape = e.autoescape + }, + fields: ["extName", "prop", "args", "contentArgs"] + }), + cr = or.extend("CallExtensionAsync"); + +function lr(e, t, n) { + var r = e.split("\n"); + r.forEach((function(e, i) { + e && (n && i > 0 || !n) && Et.stdout.write(" ".repeat(t)); + var s = i === r.length - 1 ? "" : "\n"; + Et.stdout.write("" + e + s) + })) +} +var hr = { + Node: on, + Root: hn, + NodeList: ln, + Value: cn, + Literal: un, + Symbol: pn, + Group: fn, + Array: dn, + Pair: En, + Dict: mn, + Output: Un, + Capture: Hn, + TemplateData: Gn, + If: _n, + IfAsync: An, + InlineIf: gn, + For: Nn, + AsyncEach: Cn, + AsyncAll: In, + Macro: Sn, + Caller: bn, + Import: On, + FromImport: yn, + FunCall: Ln, + Filter: kn, + FilterAsync: vn, + KeywordArgs: Dn, + Block: Rn, + Super: Mn, + Extends: Pn, + Include: xn, + Set: wn, + Switch: Bn, + Case: Fn, + LookupVal: Tn, + BinOp: qn, + In: Kn, + Is: jn, + Or: Vn, + And: Wn, + Not: Qn, + Add: Xn, + Concat: $n, + Sub: zn, + Mul: Jn, + Div: Zn, + FloorDiv: er, + Mod: tr, + Pow: nr, + Neg: rr, + Pos: ir, + Compare: sr, + CompareOperand: ar, + CallExtension: or, + CallExtensionAsync: cr, + printNodes: function e(t, n) { + if (n = n || 0, lr(t.typename + ": ", n), t instanceof ln) lr("\n"), t.children.forEach((function(t) { + e(t, n + 2) + })); + else if (t instanceof or) lr(t.extName + "." + t.prop + "\n"), t.args && e(t.args, n + 2), t.contentArgs && t.contentArgs.forEach((function(t) { + e(t, n + 2) + })); + else { + var r = [], + i = null; + t.iterFields((function(e, t) { + e instanceof on ? r.push([t, e]) : (i = i || {})[t] = e + })), i ? lr(JSON.stringify(i, null, 2) + "\n", null, !0) : lr("\n"), r.forEach((function(t) { + var r = t[0], + i = t[1]; + lr("[" + r + "] =>", n + 2), e(i, n + 4) + })) + } + } +}; + +function ur(e, t) { + return ur = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, ur(e, t) +} +hr.Node, hr.Root, hr.NodeList, hr.Value, hr.Literal, hr.Group, hr.Pair, hr.Dict, hr.Output, hr.Capture, hr.TemplateData, hr.If, hr.IfAsync, hr.InlineIf, hr.For, hr.AsyncEach, hr.AsyncAll, hr.Macro, hr.Caller, hr.Import, hr.FromImport, hr.FunCall, hr.Filter, hr.FilterAsync, hr.KeywordArgs, hr.Block, hr.Super, hr.Extends, hr.Include, hr.Switch, hr.Case, hr.LookupVal, hr.BinOp, hr.In, hr.Is, hr.Or, hr.And, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.CompareOperand, hr.CallExtension, hr.CallExtensionAsync, hr.printNodes; +var pr = function(e) { + var t, n; + + function r() { + return e.apply(this, arguments) || this + } + n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, ur(t, n); + var i = r.prototype; + return i.init = function(e) { + this.tokens = e, this.peeked = null, this.breakOnBlocks = null, this.dropLeadingWhitespace = !1, this.extensions = [] + }, i.nextToken = function(e) { + var t; + if (this.peeked) { + if (e || this.peeked.type !== Vt.TOKEN_WHITESPACE) return t = this.peeked, this.peeked = null, t; + this.peeked = null + } + if (t = this.tokens.nextToken(), !e) + for (; t && t.type === Vt.TOKEN_WHITESPACE;) t = this.tokens.nextToken(); + return t + }, i.peekToken = function() { + return this.peeked = this.peeked || this.nextToken(), this.peeked + }, i.pushToken = function(e) { + if (this.peeked) throw new Error("pushToken: can only push one token on between reads"); + this.peeked = e + }, i.error = function(e, t, n) { + if (void 0 === t || void 0 === n) { + var r = this.peekToken() || {}; + t = r.lineno, n = r.colno + } + return void 0 !== t && (t += 1), void 0 !== n && (n += 1), new je.TemplateError(e, t, n) + }, i.fail = function(e, t, n) { + throw this.error(e, t, n) + }, i.skip = function(e) { + var t = this.nextToken(); + return !(!t || t.type !== e) || (this.pushToken(t), !1) + }, i.expect = function(e) { + var t = this.nextToken(); + return t.type !== e && this.fail("expected " + e + ", got " + t.type, t.lineno, t.colno), t + }, i.skipValue = function(e, t) { + var n = this.nextToken(); + return !(!n || n.type !== e || n.value !== t) || (this.pushToken(n), !1) + }, i.skipSymbol = function(e) { + return this.skipValue(Vt.TOKEN_SYMBOL, e) + }, i.advanceAfterBlockEnd = function(e) { + var t; + return e || ((t = this.peekToken()) || this.fail("unexpected end of file"), t.type !== Vt.TOKEN_SYMBOL && this.fail("advanceAfterBlockEnd: expected symbol token or explicit name to be passed"), e = this.nextToken().value), (t = this.nextToken()) && t.type === Vt.TOKEN_BLOCK_END ? "-" === t.value.charAt(0) && (this.dropLeadingWhitespace = !0) : this.fail("expected block end in " + e + " statement"), t + }, i.advanceAfterVariableEnd = function() { + var e = this.nextToken(); + e && e.type === Vt.TOKEN_VARIABLE_END ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.VARIABLE_END.length - 1) : (this.pushToken(e), this.fail("expected variable end")) + }, i.parseFor = function() { + var e, t, n = this.peekToken(); + if (this.skipSymbol("for") ? (e = new hr.For(n.lineno, n.colno), t = "endfor") : this.skipSymbol("asyncEach") ? (e = new hr.AsyncEach(n.lineno, n.colno), t = "endeach") : this.skipSymbol("asyncAll") ? (e = new hr.AsyncAll(n.lineno, n.colno), t = "endall") : this.fail("parseFor: expected for{Async}", n.lineno, n.colno), e.name = this.parsePrimary(), e.name instanceof hr.Symbol || this.fail("parseFor: variable name expected for loop"), this.peekToken().type === Vt.TOKEN_COMMA) { + var r = e.name; + for (e.name = new hr.Array(r.lineno, r.colno), e.name.addChild(r); this.skip(Vt.TOKEN_COMMA);) { + var i = this.parsePrimary(); + e.name.addChild(i) + } + } + return this.skipSymbol("in") || this.fail('parseFor: expected "in" keyword for loop', n.lineno, n.colno), e.arr = this.parseExpression(), this.advanceAfterBlockEnd(n.value), e.body = this.parseUntilBlocks(t, "else"), this.skipSymbol("else") && (this.advanceAfterBlockEnd("else"), e.else_ = this.parseUntilBlocks(t)), this.advanceAfterBlockEnd(), e + }, i.parseMacro = function() { + var e = this.peekToken(); + this.skipSymbol("macro") || this.fail("expected macro"); + var t = this.parsePrimary(!0), + n = this.parseSignature(), + r = new hr.Macro(e.lineno, e.colno, t, n); + return this.advanceAfterBlockEnd(e.value), r.body = this.parseUntilBlocks("endmacro"), this.advanceAfterBlockEnd(), r + }, i.parseCall = function() { + var e = this.peekToken(); + this.skipSymbol("call") || this.fail("expected call"); + var t = this.parseSignature(!0) || new hr.NodeList, + n = this.parsePrimary(); + this.advanceAfterBlockEnd(e.value); + var r = this.parseUntilBlocks("endcall"); + this.advanceAfterBlockEnd(); + var i = new hr.Symbol(e.lineno, e.colno, "caller"), + s = new hr.Caller(e.lineno, e.colno, i, t, r), + a = n.args.children; + return a[a.length - 1] instanceof hr.KeywordArgs || a.push(new hr.KeywordArgs), a[a.length - 1].addChild(new hr.Pair(e.lineno, e.colno, i, s)), new hr.Output(e.lineno, e.colno, [n]) + }, i.parseWithContext = function() { + var e = this.peekToken(), + t = null; + return this.skipSymbol("with") ? t = !0 : this.skipSymbol("without") && (t = !1), null !== t && (this.skipSymbol("context") || this.fail("parseFrom: expected context after with/without", e.lineno, e.colno)), t + }, i.parseImport = function() { + var e = this.peekToken(); + this.skipSymbol("import") || this.fail("parseImport: expected import", e.lineno, e.colno); + var t = this.parseExpression(); + this.skipSymbol("as") || this.fail('parseImport: expected "as" keyword', e.lineno, e.colno); + var n = this.parseExpression(), + r = this.parseWithContext(), + i = new hr.Import(e.lineno, e.colno, t, n, r); + return this.advanceAfterBlockEnd(e.value), i + }, i.parseFrom = function() { + var e = this.peekToken(); + this.skipSymbol("from") || this.fail("parseFrom: expected from"); + var t = this.parseExpression(); + this.skipSymbol("import") || this.fail("parseFrom: expected import", e.lineno, e.colno); + for (var n, r = new hr.NodeList;;) { + var i = this.peekToken(); + if (i.type === Vt.TOKEN_BLOCK_END) { + r.children.length || this.fail("parseFrom: Expected at least one import name", e.lineno, e.colno), "-" === i.value.charAt(0) && (this.dropLeadingWhitespace = !0), this.nextToken(); + break + } + r.children.length > 0 && !this.skip(Vt.TOKEN_COMMA) && this.fail("parseFrom: expected comma", e.lineno, e.colno); + var s = this.parsePrimary(); + if ("_" === s.value.charAt(0) && this.fail("parseFrom: names starting with an underscore cannot be imported", s.lineno, s.colno), this.skipSymbol("as")) { + var a = this.parsePrimary(); + r.addChild(new hr.Pair(s.lineno, s.colno, s, a)) + } else r.addChild(s); + n = this.parseWithContext() + } + return new hr.FromImport(e.lineno, e.colno, t, r, n) + }, i.parseBlock = function() { + var e = this.peekToken(); + this.skipSymbol("block") || this.fail("parseBlock: expected block", e.lineno, e.colno); + var t = new hr.Block(e.lineno, e.colno); + t.name = this.parsePrimary(), t.name instanceof hr.Symbol || this.fail("parseBlock: variable name expected", e.lineno, e.colno), this.advanceAfterBlockEnd(e.value), t.body = this.parseUntilBlocks("endblock"), this.skipSymbol("endblock"), this.skipSymbol(t.name.value); + var n = this.peekToken(); + return n || this.fail("parseBlock: expected endblock, got end of file"), this.advanceAfterBlockEnd(n.value), t + }, i.parseExtends = function() { + var e = "extends", + t = this.peekToken(); + this.skipSymbol(e) || this.fail("parseTemplateRef: expected extends"); + var n = new hr.Extends(t.lineno, t.colno); + return n.template = this.parseExpression(), this.advanceAfterBlockEnd(t.value), n + }, i.parseInclude = function() { + var e = "include", + t = this.peekToken(); + this.skipSymbol(e) || this.fail("parseInclude: expected include"); + var n = new hr.Include(t.lineno, t.colno); + return n.template = this.parseExpression(), this.skipSymbol("ignore") && this.skipSymbol("missing") && (n.ignoreMissing = !0), this.advanceAfterBlockEnd(t.value), n + }, i.parseIf = function() { + var e, t = this.peekToken(); + this.skipSymbol("if") || this.skipSymbol("elif") || this.skipSymbol("elseif") ? e = new hr.If(t.lineno, t.colno) : this.skipSymbol("ifAsync") ? e = new hr.IfAsync(t.lineno, t.colno) : this.fail("parseIf: expected if, elif, or elseif", t.lineno, t.colno), e.cond = this.parseExpression(), this.advanceAfterBlockEnd(t.value), e.body = this.parseUntilBlocks("elif", "elseif", "else", "endif"); + var n = this.peekToken(); + switch (n && n.value) { + case "elseif": + case "elif": + e.else_ = this.parseIf(); + break; + case "else": + this.advanceAfterBlockEnd(), e.else_ = this.parseUntilBlocks("endif"), this.advanceAfterBlockEnd(); + break; + case "endif": + e.else_ = null, this.advanceAfterBlockEnd(); + break; + default: + this.fail("parseIf: expected elif, else, or endif, got end of file") + } + return e + }, i.parseSet = function() { + var e = this.peekToken(); + this.skipSymbol("set") || this.fail("parseSet: expected set", e.lineno, e.colno); + for (var t, n = new hr.Set(e.lineno, e.colno, []); + (t = this.parsePrimary()) && (n.targets.push(t), this.skip(Vt.TOKEN_COMMA));); + return this.skipValue(Vt.TOKEN_OPERATOR, "=") ? (n.value = this.parseExpression(), this.advanceAfterBlockEnd(e.value)) : this.skip(Vt.TOKEN_BLOCK_END) ? (n.body = new hr.Capture(e.lineno, e.colno, this.parseUntilBlocks("endset")), n.value = null, this.advanceAfterBlockEnd()) : this.fail("parseSet: expected = or block end in set tag", e.lineno, e.colno), n + }, i.parseSwitch = function() { + var e = "switch", + t = "endswitch", + n = "case", + r = "default", + i = this.peekToken(); + this.skipSymbol(e) || this.skipSymbol(n) || this.skipSymbol(r) || this.fail('parseSwitch: expected "switch," "case" or "default"', i.lineno, i.colno); + var s = this.parseExpression(); + this.advanceAfterBlockEnd(e), this.parseUntilBlocks(n, r, t); + var a, o = this.peekToken(), + c = []; + do { + this.skipSymbol(n); + var l = this.parseExpression(); + this.advanceAfterBlockEnd(e); + var h = this.parseUntilBlocks(n, r, t); + c.push(new hr.Case(o.line, o.col, l, h)), o = this.peekToken() + } while (o && o.value === n); + switch (o.value) { + case r: + this.advanceAfterBlockEnd(), a = this.parseUntilBlocks(t), this.advanceAfterBlockEnd(); + break; + case t: + this.advanceAfterBlockEnd(); + break; + default: + this.fail('parseSwitch: expected "case," "default" or "endswitch," got EOF.') + } + return new hr.Switch(i.lineno, i.colno, s, c, a) + }, i.parseStatement = function() { + var e = this.peekToken(); + if (e.type !== Vt.TOKEN_SYMBOL && this.fail("tag name expected", e.lineno, e.colno), this.breakOnBlocks && -1 !== je.indexOf(this.breakOnBlocks, e.value)) return null; + switch (e.value) { + case "raw": + return this.parseRaw(); + case "verbatim": + return this.parseRaw("verbatim"); + case "if": + case "ifAsync": + return this.parseIf(); + case "for": + case "asyncEach": + case "asyncAll": + return this.parseFor(); + case "block": + return this.parseBlock(); + case "extends": + return this.parseExtends(); + case "include": + return this.parseInclude(); + case "set": + return this.parseSet(); + case "macro": + return this.parseMacro(); + case "call": + return this.parseCall(); + case "import": + return this.parseImport(); + case "from": + return this.parseFrom(); + case "filter": + return this.parseFilterStatement(); + case "switch": + return this.parseSwitch(); + default: + if (this.extensions.length) + for (var t = 0; t < this.extensions.length; t++) { + var n = this.extensions[t]; + if (-1 !== je.indexOf(n.tags || [], e.value)) return n.parse(this, hr, Vt) + } + this.fail("unknown block tag: " + e.value, e.lineno, e.colno) + } + }, i.parseRaw = function(e) { + for (var t = "end" + (e = e || "raw"), n = new RegExp("([\\s\\S]*?){%\\s*(" + e + "|" + t + ")\\s*(?=%})%}"), r = 1, i = "", s = null, a = this.advanceAfterBlockEnd(); + (s = this.tokens._extractRegex(n)) && r > 0;) { + var o = s[0], + c = s[1], + l = s[2]; + l === e ? r += 1 : l === t && (r -= 1), 0 === r ? (i += c, this.tokens.backN(o.length - c.length)) : i += o + } + return new hr.Output(a.lineno, a.colno, [new hr.TemplateData(a.lineno, a.colno, i)]) + }, i.parsePostfix = function(e) { + for (var t, n = this.peekToken(); n;) { + if (n.type === Vt.TOKEN_LEFT_PAREN) e = new hr.FunCall(n.lineno, n.colno, e, this.parseSignature()); + else if (n.type === Vt.TOKEN_LEFT_BRACKET)(t = this.parseAggregate()).children.length > 1 && this.fail("invalid index"), e = new hr.LookupVal(n.lineno, n.colno, e, t.children[0]); + else { + if (n.type !== Vt.TOKEN_OPERATOR || "." !== n.value) break; + this.nextToken(); + var r = this.nextToken(); + r.type !== Vt.TOKEN_SYMBOL && this.fail("expected name as lookup value, got " + r.value, r.lineno, r.colno), t = new hr.Literal(r.lineno, r.colno, r.value), e = new hr.LookupVal(n.lineno, n.colno, e, t) + } + n = this.peekToken() + } + return e + }, i.parseExpression = function() { + return this.parseInlineIf() + }, i.parseInlineIf = function() { + var e = this.parseOr(); + if (this.skipSymbol("if")) { + var t = this.parseOr(), + n = e; + (e = new hr.InlineIf(e.lineno, e.colno)).body = n, e.cond = t, this.skipSymbol("else") ? e.else_ = this.parseOr() : e.else_ = null + } + return e + }, i.parseOr = function() { + for (var e = this.parseAnd(); this.skipSymbol("or");) { + var t = this.parseAnd(); + e = new hr.Or(e.lineno, e.colno, e, t) + } + return e + }, i.parseAnd = function() { + for (var e = this.parseNot(); this.skipSymbol("and");) { + var t = this.parseNot(); + e = new hr.And(e.lineno, e.colno, e, t) + } + return e + }, i.parseNot = function() { + var e = this.peekToken(); + return this.skipSymbol("not") ? new hr.Not(e.lineno, e.colno, this.parseNot()) : this.parseIn() + }, i.parseIn = function() { + for (var e = this.parseIs();;) { + var t = this.nextToken(); + if (!t) break; + var n = t.type === Vt.TOKEN_SYMBOL && "not" === t.value; + if (n || this.pushToken(t), !this.skipSymbol("in")) { + n && this.pushToken(t); + break + } + var r = this.parseIs(); + e = new hr.In(e.lineno, e.colno, e, r), n && (e = new hr.Not(e.lineno, e.colno, e)) + } + return e + }, i.parseIs = function() { + var e = this.parseCompare(); + if (this.skipSymbol("is")) { + var t = this.skipSymbol("not"), + n = this.parseCompare(); + e = new hr.Is(e.lineno, e.colno, e, n), t && (e = new hr.Not(e.lineno, e.colno, e)) + } + return e + }, i.parseCompare = function() { + for (var e = ["==", "===", "!=", "!==", "<", ">", "<=", ">="], t = this.parseConcat(), n = [];;) { + var r = this.nextToken(); + if (!r) break; + if (-1 === e.indexOf(r.value)) { + this.pushToken(r); + break + } + n.push(new hr.CompareOperand(r.lineno, r.colno, this.parseConcat(), r.value)) + } + return n.length ? new hr.Compare(n[0].lineno, n[0].colno, t, n) : t + }, i.parseConcat = function() { + for (var e = this.parseAdd(); this.skipValue(Vt.TOKEN_TILDE, "~");) { + var t = this.parseAdd(); + e = new hr.Concat(e.lineno, e.colno, e, t) + } + return e + }, i.parseAdd = function() { + for (var e = this.parseSub(); this.skipValue(Vt.TOKEN_OPERATOR, "+");) { + var t = this.parseSub(); + e = new hr.Add(e.lineno, e.colno, e, t) + } + return e + }, i.parseSub = function() { + for (var e = this.parseMul(); this.skipValue(Vt.TOKEN_OPERATOR, "-");) { + var t = this.parseMul(); + e = new hr.Sub(e.lineno, e.colno, e, t) + } + return e + }, i.parseMul = function() { + for (var e = this.parseDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "*");) { + var t = this.parseDiv(); + e = new hr.Mul(e.lineno, e.colno, e, t) + } + return e + }, i.parseDiv = function() { + for (var e = this.parseFloorDiv(); this.skipValue(Vt.TOKEN_OPERATOR, "/");) { + var t = this.parseFloorDiv(); + e = new hr.Div(e.lineno, e.colno, e, t) + } + return e + }, i.parseFloorDiv = function() { + for (var e = this.parseMod(); this.skipValue(Vt.TOKEN_OPERATOR, "//");) { + var t = this.parseMod(); + e = new hr.FloorDiv(e.lineno, e.colno, e, t) + } + return e + }, i.parseMod = function() { + for (var e = this.parsePow(); this.skipValue(Vt.TOKEN_OPERATOR, "%");) { + var t = this.parsePow(); + e = new hr.Mod(e.lineno, e.colno, e, t) + } + return e + }, i.parsePow = function() { + for (var e = this.parseUnary(); this.skipValue(Vt.TOKEN_OPERATOR, "**");) { + var t = this.parseUnary(); + e = new hr.Pow(e.lineno, e.colno, e, t) + } + return e + }, i.parseUnary = function(e) { + var t, n = this.peekToken(); + return t = this.skipValue(Vt.TOKEN_OPERATOR, "-") ? new hr.Neg(n.lineno, n.colno, this.parseUnary(!0)) : this.skipValue(Vt.TOKEN_OPERATOR, "+") ? new hr.Pos(n.lineno, n.colno, this.parseUnary(!0)) : this.parsePrimary(), e || (t = this.parseFilter(t)), t + }, i.parsePrimary = function(e) { + var t, n = this.nextToken(), + r = null; + if (n ? n.type === Vt.TOKEN_STRING ? t = n.value : n.type === Vt.TOKEN_INT ? t = parseInt(n.value, 10) : n.type === Vt.TOKEN_FLOAT ? t = parseFloat(n.value) : n.type === Vt.TOKEN_BOOLEAN ? "true" === n.value ? t = !0 : "false" === n.value ? t = !1 : this.fail("invalid boolean: " + n.value, n.lineno, n.colno) : n.type === Vt.TOKEN_NONE ? t = null : n.type === Vt.TOKEN_REGEX && (t = new RegExp(n.value.body, n.value.flags)) : this.fail("expected expression, got end of file"), void 0 !== t ? r = new hr.Literal(n.lineno, n.colno, t) : n.type === Vt.TOKEN_SYMBOL ? r = new hr.Symbol(n.lineno, n.colno, n.value) : (this.pushToken(n), r = this.parseAggregate()), e || (r = this.parsePostfix(r)), r) return r; + throw this.error("unexpected token: " + n.value, n.lineno, n.colno) + }, i.parseFilterName = function() { + for (var e = this.expect(Vt.TOKEN_SYMBOL), t = e.value; this.skipValue(Vt.TOKEN_OPERATOR, ".");) t += "." + this.expect(Vt.TOKEN_SYMBOL).value; + return new hr.Symbol(e.lineno, e.colno, t) + }, i.parseFilterArgs = function(e) { + return this.peekToken().type === Vt.TOKEN_LEFT_PAREN ? this.parsePostfix(e).args.children : [] + }, i.parseFilter = function(e) { + for (; this.skip(Vt.TOKEN_PIPE);) { + var t = this.parseFilterName(); + e = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [e].concat(this.parseFilterArgs(e)))) + } + return e + }, i.parseFilterStatement = function() { + var e = this.peekToken(); + this.skipSymbol("filter") || this.fail("parseFilterStatement: expected filter"); + var t = this.parseFilterName(), + n = this.parseFilterArgs(t); + this.advanceAfterBlockEnd(e.value); + var r = new hr.Capture(t.lineno, t.colno, this.parseUntilBlocks("endfilter")); + this.advanceAfterBlockEnd(); + var i = new hr.Filter(t.lineno, t.colno, t, new hr.NodeList(t.lineno, t.colno, [r].concat(n))); + return new hr.Output(t.lineno, t.colno, [i]) + }, i.parseAggregate = function() { + var e, t = this.nextToken(); + switch (t.type) { + case Vt.TOKEN_LEFT_PAREN: + e = new hr.Group(t.lineno, t.colno); + break; + case Vt.TOKEN_LEFT_BRACKET: + e = new hr.Array(t.lineno, t.colno); + break; + case Vt.TOKEN_LEFT_CURLY: + e = new hr.Dict(t.lineno, t.colno); + break; + default: + return null + } + for (;;) { + var n = this.peekToken().type; + if (n === Vt.TOKEN_RIGHT_PAREN || n === Vt.TOKEN_RIGHT_BRACKET || n === Vt.TOKEN_RIGHT_CURLY) { + this.nextToken(); + break + } + if (e.children.length > 0 && (this.skip(Vt.TOKEN_COMMA) || this.fail("parseAggregate: expected comma after expression", t.lineno, t.colno)), e instanceof hr.Dict) { + var r = this.parsePrimary(); + this.skip(Vt.TOKEN_COLON) || this.fail("parseAggregate: expected colon after dict key", t.lineno, t.colno); + var i = this.parseExpression(); + e.addChild(new hr.Pair(r.lineno, r.colno, r, i)) + } else { + var s = this.parseExpression(); + e.addChild(s) + } + } + return e + }, i.parseSignature = function(e, t) { + var n = this.peekToken(); + if (!t && n.type !== Vt.TOKEN_LEFT_PAREN) { + if (e) return null; + this.fail("expected arguments", n.lineno, n.colno) + } + n.type === Vt.TOKEN_LEFT_PAREN && (n = this.nextToken()); + for (var r = new hr.NodeList(n.lineno, n.colno), i = new hr.KeywordArgs(n.lineno, n.colno), s = !1;;) { + if (n = this.peekToken(), !t && n.type === Vt.TOKEN_RIGHT_PAREN) { + this.nextToken(); + break + } + if (t && n.type === Vt.TOKEN_BLOCK_END) break; + if (s && !this.skip(Vt.TOKEN_COMMA)) this.fail("parseSignature: expected comma after expression", n.lineno, n.colno); + else { + var a = this.parseExpression(); + this.skipValue(Vt.TOKEN_OPERATOR, "=") ? i.addChild(new hr.Pair(a.lineno, a.colno, a, this.parseExpression())) : r.addChild(a) + } + s = !0 + } + return i.children.length && r.addChild(i), r + }, i.parseUntilBlocks = function() { + for (var e = this.breakOnBlocks, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r]; + this.breakOnBlocks = n; + var i = this.parse(); + return this.breakOnBlocks = e, i + }, i.parseNodes = function() { + for (var e, t = []; e = this.nextToken();) + if (e.type === Vt.TOKEN_DATA) { + var n = e.value, + r = this.peekToken(), + i = r && r.value; + this.dropLeadingWhitespace && (n = n.replace(/^\s*/, ""), this.dropLeadingWhitespace = !1), r && (r.type === Vt.TOKEN_BLOCK_START && "-" === i.charAt(i.length - 1) || r.type === Vt.TOKEN_VARIABLE_START && "-" === i.charAt(this.tokens.tags.VARIABLE_START.length) || r.type === Vt.TOKEN_COMMENT && "-" === i.charAt(this.tokens.tags.COMMENT_START.length)) && (n = n.replace(/\s*$/, "")), t.push(new hr.Output(e.lineno, e.colno, [new hr.TemplateData(e.lineno, e.colno, n)])) + } else if (e.type === Vt.TOKEN_BLOCK_START) { + this.dropLeadingWhitespace = !1; + var s = this.parseStatement(); + if (!s) break; + t.push(s) + } else if (e.type === Vt.TOKEN_VARIABLE_START) { + var a = this.parseExpression(); + this.dropLeadingWhitespace = !1, this.advanceAfterVariableEnd(), t.push(new hr.Output(e.lineno, e.colno, [a])) + } else e.type === Vt.TOKEN_COMMENT ? this.dropLeadingWhitespace = "-" === e.value.charAt(e.value.length - this.tokens.tags.COMMENT_END.length - 1) : this.fail("Unexpected token at top-level: " + e.type, e.lineno, e.colno); + return t + }, i.parse = function() { + return new hr.NodeList(0, 0, this.parseNodes()) + }, i.parseAsRoot = function() { + return new hr.Root(0, 0, this.parseNodes()) + }, r + }(en.Obj), + fr = { + parse: function(e, t, n) { + var r = new pr(Vt.lex(e, n)); + return void 0 !== t && (r.extensions = t), r.parseAsRoot() + }, + Parser: pr + }, + dr = 0; + +function Er() { + return "hole_" + dr++ +} + +function mr(e, t) { + for (var n = null, r = 0; r < e.length; r++) { + var i = t(e[r]); + i !== e[r] && (n || (n = e.slice()), n[r] = i) + } + return n || e +} + +function Tr(e, t, n) { + if (!(e instanceof hr.Node)) return e; + if (!n) { + var r = t(e); + if (r && r !== e) return r + } + if (e instanceof hr.NodeList) { + var i = mr(e.children, (function(e) { + return Tr(e, t, n) + })); + i !== e.children && (e = new hr[e.typename](e.lineno, e.colno, i)) + } else if (e instanceof hr.CallExtension) { + var s = Tr(e.args, t, n), + a = mr(e.contentArgs, (function(e) { + return Tr(e, t, n) + })); + s === e.args && a === e.contentArgs || (e = new hr[e.typename](e.extName, e.prop, s, a)) + } else { + var o = e.fields.map((function(t) { + return e[t] + })), + c = mr(o, (function(e) { + return Tr(e, t, n) + })); + c !== o && (e = new hr[e.typename](e.lineno, e.colno), c.forEach((function(t, n) { + e[e.fields[n]] = t + }))) + } + return n && t(e) || e +} + +function _r(e, t) { + return Tr(e, t, !0) +} + +function Ar(e, t, n) { + var r = [], + i = _r(n ? e[n] : e, (function(e) { + var n; + return e instanceof hr.Block ? e : ((e instanceof hr.Filter && -1 !== je.indexOf(t, e.name.value) || e instanceof hr.CallExtensionAsync) && (n = new hr.Symbol(e.lineno, e.colno, Er()), r.push(new hr.FilterAsync(e.lineno, e.colno, e.name, e.args, n))), n) + })); + return n ? e[n] = i : e = i, r.length ? (r.push(e), new hr.NodeList(e.lineno, e.colno, r)) : e +} + +function gr(e, t) { + return function(e) { + return _r(e, (function(e) { + if (e instanceof hr.If || e instanceof hr.For) { + var t = !1; + if (Tr(e, (function(e) { + if (e instanceof hr.FilterAsync || e instanceof hr.IfAsync || e instanceof hr.AsyncEach || e instanceof hr.AsyncAll || e instanceof hr.CallExtensionAsync) return t = !0, e + })), t) { + if (e instanceof hr.If) return new hr.IfAsync(e.lineno, e.colno, e.cond, e.body, e.else_); + if (e instanceof hr.For && !(e instanceof hr.AsyncAll)) return new hr.AsyncEach(e.lineno, e.colno, e.arr, e.name, e.body, e.else_) + } + } + })) + }(function(e) { + return Tr(e, (function(e) { + if (e instanceof hr.Block) { + var t = !1, + n = Er(); + e.body = Tr(e.body, (function(e) { + if (e instanceof hr.FunCall && "super" === e.name.value) return t = !0, new hr.Symbol(e.lineno, e.colno, n) + })), t && e.body.children.unshift(new hr.Super(0, 0, e.name, new hr.Symbol(0, 0, n))) + } + })) + }(function(e, t) { + return _r(e, (function(e) { + return e instanceof hr.Output ? Ar(e, t) : e instanceof hr.Set ? Ar(e, t, "value") : e instanceof hr.For ? Ar(e, t, "arr") : e instanceof hr.If ? Ar(e, t, "cond") : e instanceof hr.CallExtension ? Ar(e, t, "args") : void 0 + })) + }(e, t))) +} +var Nr = { + transform: function(e, t) { + return gr(e, t || []) + } + }, + Cr = Array.from, + Ir = "function" == typeof Symbol && Symbol.iterator && "function" == typeof Cr, + Sr = function() { + function e(e, t) { + this.variables = Object.create(null), this.parent = e, this.topLevel = !1, this.isolateWrites = t + } + var t = e.prototype; + return t.set = function(e, t, n) { + var r = e.split("."), + i = this.variables, + s = this; + if (n && (s = this.resolve(r[0], !0))) s.set(e, t); + else { + for (var a = 0; a < r.length - 1; a++) { + var o = r[a]; + i[o] || (i[o] = {}), i = i[o] + } + i[r[r.length - 1]] = t + } + }, t.get = function(e) { + var t = this.variables[e]; + return void 0 !== t ? t : null + }, t.lookup = function(e) { + var t = this.parent, + n = this.variables[e]; + return void 0 !== n ? n : t && t.lookup(e) + }, t.resolve = function(e, t) { + var n = t && this.isolateWrites ? void 0 : this.parent; + return void 0 !== this.variables[e] ? this : n && n.resolve(e) + }, t.push = function(t) { + return new e(this, t) + }, t.pop = function() { + return this.parent + }, e + }(); + +function br(e) { + return e && Object.prototype.hasOwnProperty.call(e, "__keywords") +} + +function Or(e) { + var t = e.length; + if (t) { + var n = e[t - 1]; + if (br(n)) return n + } + return {} +} + +function yr(e) { + var t = e.length; + return 0 === t ? 0 : br(e[t - 1]) ? t - 1 : t +} + +function Lr(e) { + if ("string" != typeof e) return e; + this.val = e, Object.defineProperty(this, "length", { + writable: !0, + configurable: !0, + value: e.length + }) +} +Lr.prototype = Object.create(String.prototype, { + length: { + writable: !0, + configurable: !0, + value: 0 + } +}), Lr.prototype.valueOf = function() { + return this.val +}, Lr.prototype.toString = function() { + return this.val +}; +var kr = { + Frame: Sr, + makeMacro: function(e, t, n) { + return function() { + for (var r = arguments.length, i = new Array(r), s = 0; s < r; s++) i[s] = arguments[s]; + var a, o = yr(i), + c = Or(i); + if (o > e.length) a = i.slice(0, e.length), i.slice(a.length, o).forEach((function(e, n) { + n < t.length && (c[t[n]] = e) + })), a.push(c); + else if (o < e.length) { + a = i.slice(0, o); + for (var l = o; l < e.length; l++) { + var h = e[l]; + a.push(c[h]), delete c[h] + } + a.push(c) + } else a = i; + return n.apply(this, a) + } + }, + makeKeywordArgs: function(e) { + return e.__keywords = !0, e + }, + numArgs: yr, + suppressValue: function(e, t) { + return "object" == typeof(e = null != e ? e : "") ? new Lr(JSON.stringify(e).toString()) : (!t || e instanceof Lr || (e = je.escape(e.toString())), e) + }, + ensureDefined: function(e, t, n) { + if (null == e) throw new je.TemplateError("attempted to output null or undefined value", t + 1, n + 1); + return e + }, + memberLookup: function(e, t) { + if (null != e) return "function" == typeof e[t] ? function() { + for (var n = arguments.length, r = new Array(n), i = 0; i < n; i++) r[i] = arguments[i]; + return e[t].apply(e, r) + } : e[t] + }, + contextOrFrameLookup: function(e, t, n) { + var r = t.lookup(n); + return void 0 !== r ? r : e.lookup(n) + }, + callWrap: function(e, t, n, r) { + if (!e) throw new Error("Unable to call `" + t + "`, which is undefined or falsey"); + if ("function" != typeof e) throw new Error("Unable to call `" + t + "`, which is not a function"); + return e.apply(n, r) + }, + handleError: function(e, t, n) { + return e.lineno ? e : new je.TemplateError(e, t, n) + }, + isArray: je.isArray, + keys: je.keys, + SafeString: Lr, + copySafeness: function(e, t) { + return e instanceof Lr ? new Lr(t) : t.toString() + }, + markSafe: function(e) { + var t = typeof e; + return "string" === t ? new Lr(e) : "function" !== t ? e : function(t) { + var n = e.apply(this, arguments); + return "string" == typeof n ? new Lr(n) : n + } + }, + asyncEach: function(e, t, n, r) { + if (je.isArray(e)) { + var i = e.length; + je.asyncIter(e, (function(e, r, s) { + switch (t) { + case 1: + n(e, r, i, s); + break; + case 2: + n(e[0], e[1], r, i, s); + break; + case 3: + n(e[0], e[1], e[2], r, i, s); + break; + default: + e.push(r, i, s), n.apply(this, e) + } + }), r) + } else je.asyncFor(e, (function(e, t, r, i, s) { + n(e, t, r, i, s) + }), r) + }, + asyncAll: function(e, t, n, r) { + var i, s, a = 0; + + function o(e, t) { + a++, s[e] = t, a === i && r(null, s.join("")) + } + if (je.isArray(e)) + if (i = e.length, s = new Array(i), 0 === i) r(null, ""); + else + for (var c = 0; c < e.length; c++) { + var l = e[c]; + switch (t) { + case 1: + n(l, c, i, o); + break; + case 2: + n(l[0], l[1], c, i, o); + break; + case 3: + n(l[0], l[1], l[2], c, i, o); + break; + default: + l.push(c, i, o), n.apply(this, l) + } + } else { + var h = je.keys(e || {}); + if (i = h.length, s = new Array(i), 0 === i) r(null, ""); + else + for (var u = 0; u < h.length; u++) { + var p = h[u]; + n(p, e[p], u, i, o) + } + } + }, + inOperator: je.inOperator, + fromIterator: function(e) { + return "object" != typeof e || null === e || je.isArray(e) ? e : Ir && Symbol.iterator in e ? Cr(e) : e + } +}; + +function vr(e, t) { + return vr = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, vr(e, t) +} +kr.Frame, kr.makeMacro, kr.makeKeywordArgs, kr.numArgs, kr.suppressValue, kr.ensureDefined, kr.memberLookup, kr.contextOrFrameLookup, kr.callWrap, kr.handleError, kr.isArray, kr.keys, kr.SafeString, kr.copySafeness, kr.markSafe, kr.asyncEach, kr.asyncAll, kr.inOperator, kr.fromIterator; +var Dr = je.TemplateError, + Rr = kr.Frame, + Mr = { + "==": "==", + "===": "===", + "!=": "!=", + "!==": "!==", + "<": "<", + ">": ">", + "<=": "<=", + ">=": ">=" + }, + Pr = function(e) { + var t, n; + + function r() { + return e.apply(this, arguments) || this + } + n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, vr(t, n); + var i = r.prototype; + return i.init = function(e, t) { + this.templateName = e, this.codebuf = [], this.lastId = 0, this.buffer = null, this.bufferStack = [], this._scopeClosers = "", this.inBlock = !1, this.throwOnUndefined = t + }, i.fail = function(e, t, n) { + throw void 0 !== t && (t += 1), void 0 !== n && (n += 1), new Dr(e, t, n) + }, i._pushBuffer = function() { + var e = this._tmpid(); + return this.bufferStack.push(this.buffer), this.buffer = e, this._emit("var " + this.buffer + ' = "";'), e + }, i._popBuffer = function() { + this.buffer = this.bufferStack.pop() + }, i._emit = function(e) { + this.codebuf.push(e) + }, i._emitLine = function(e) { + this._emit(e + "\n") + }, i._emitLines = function() { + for (var e = this, t = arguments.length, n = new Array(t), r = 0; r < t; r++) n[r] = arguments[r]; + n.forEach((function(t) { + return e._emitLine(t) + })) + }, i._emitFuncBegin = function(e, t) { + this.buffer = "output", this._scopeClosers = "", this._emitLine("function " + t + "(env, context, frame, runtime, cb) {"), this._emitLine("var lineno = " + e.lineno + ";"), this._emitLine("var colno = " + e.colno + ";"), this._emitLine("var " + this.buffer + ' = "";'), this._emitLine("try {") + }, i._emitFuncEnd = function(e) { + e || this._emitLine("cb(null, " + this.buffer + ");"), this._closeScopeLevels(), this._emitLine("} catch (e) {"), this._emitLine(" cb(runtime.handleError(e, lineno, colno));"), this._emitLine("}"), this._emitLine("}"), this.buffer = null + }, i._addScopeLevel = function() { + this._scopeClosers += "})" + }, i._closeScopeLevels = function() { + this._emitLine(this._scopeClosers + ";"), this._scopeClosers = "" + }, i._withScopedSyntax = function(e) { + var t = this._scopeClosers; + this._scopeClosers = "", e.call(this), this._closeScopeLevels(), this._scopeClosers = t + }, i._makeCallback = function(e) { + var t = this._tmpid(); + return "function(" + t + (e ? "," + e : "") + ") {\nif(" + t + ") { cb(" + t + "); return; }" + }, i._tmpid = function() { + return this.lastId++, "t_" + this.lastId + }, i._templateName = function() { + return null == this.templateName ? "undefined" : JSON.stringify(this.templateName) + }, i._compileChildren = function(e, t) { + var n = this; + e.children.forEach((function(e) { + n.compile(e, t) + })) + }, i._compileAggregate = function(e, t, n, r) { + var i = this; + n && this._emit(n), e.children.forEach((function(e, n) { + n > 0 && i._emit(","), i.compile(e, t) + })), r && this._emit(r) + }, i._compileExpression = function(e, t) { + this.assertType(e, hr.Literal, hr.Symbol, hr.Group, hr.Array, hr.Dict, hr.FunCall, hr.Caller, hr.Filter, hr.LookupVal, hr.Compare, hr.InlineIf, hr.In, hr.Is, hr.And, hr.Or, hr.Not, hr.Add, hr.Concat, hr.Sub, hr.Mul, hr.Div, hr.FloorDiv, hr.Mod, hr.Pow, hr.Neg, hr.Pos, hr.Compare, hr.NodeList), this.compile(e, t) + }, i.assertType = function(e) { + for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) n[r - 1] = arguments[r]; + n.some((function(t) { + return e instanceof t + })) || this.fail("assertType: invalid type: " + e.typename, e.lineno, e.colno) + }, i.compileCallExtension = function(e, t, n) { + var r = this, + i = e.args, + s = e.contentArgs, + a = "boolean" != typeof e.autoescape || e.autoescape; + if (n || this._emit(this.buffer + " += runtime.suppressValue("), this._emit('env.getExtension("' + e.extName + '")["' + e.prop + '"]('), this._emit("context"), (i || s) && this._emit(","), i && (i instanceof hr.NodeList || this.fail("compileCallExtension: arguments must be a NodeList, use `parser.parseSignature`"), i.children.forEach((function(e, n) { + r._compileExpression(e, t), (n !== i.children.length - 1 || s.length) && r._emit(",") + }))), s.length && s.forEach((function(e, n) { + if (n > 0 && r._emit(","), e) { + r._emitLine("function(cb) {"), r._emitLine("if(!cb) { cb = function(err) { if(err) { throw err; }}}"); + var i = r._pushBuffer(); + r._withScopedSyntax((function() { + r.compile(e, t), r._emitLine("cb(null, " + i + ");") + })), r._popBuffer(), r._emitLine("return " + i + ";"), r._emitLine("}") + } else r._emit("null") + })), n) { + var o = this._tmpid(); + this._emitLine(", " + this._makeCallback(o)), this._emitLine(this.buffer + " += runtime.suppressValue(" + o + ", " + a + " && env.opts.autoescape);"), this._addScopeLevel() + } else this._emit(")"), this._emit(", " + a + " && env.opts.autoescape);\n") + }, i.compileCallExtensionAsync = function(e, t) { + this.compileCallExtension(e, t, !0) + }, i.compileNodeList = function(e, t) { + this._compileChildren(e, t) + }, i.compileLiteral = function(e) { + if ("string" == typeof e.value) { + var t = e.value.replace(/\\/g, "\\\\"); + t = (t = (t = (t = (t = t.replace(/"/g, '\\"')).replace(/\n/g, "\\n")).replace(/\r/g, "\\r")).replace(/\t/g, "\\t")).replace(/\u2028/g, "\\u2028"), this._emit('"' + t + '"') + } else null === e.value ? this._emit("null") : this._emit(e.value.toString()) + }, i.compileSymbol = function(e, t) { + var n = e.value, + r = t.lookup(n); + r ? this._emit(r) : this._emit('runtime.contextOrFrameLookup(context, frame, "' + n + '")') + }, i.compileGroup = function(e, t) { + this._compileAggregate(e, t, "(", ")") + }, i.compileArray = function(e, t) { + this._compileAggregate(e, t, "[", "]") + }, i.compileDict = function(e, t) { + this._compileAggregate(e, t, "{", "}") + }, i.compilePair = function(e, t) { + var n = e.key, + r = e.value; + n instanceof hr.Symbol ? n = new hr.Literal(n.lineno, n.colno, n.value) : n instanceof hr.Literal && "string" == typeof n.value || this.fail("compilePair: Dict keys must be strings or names", n.lineno, n.colno), this.compile(n, t), this._emit(": "), this._compileExpression(r, t) + }, i.compileInlineIf = function(e, t) { + this._emit("("), this.compile(e.cond, t), this._emit("?"), this.compile(e.body, t), this._emit(":"), null !== e.else_ ? this.compile(e.else_, t) : this._emit('""'), this._emit(")") + }, i.compileIn = function(e, t) { + this._emit("runtime.inOperator("), this.compile(e.left, t), this._emit(","), this.compile(e.right, t), this._emit(")") + }, i.compileIs = function(e, t) { + var n = e.right.name ? e.right.name.value : e.right.value; + this._emit('env.getTest("' + n + '").call(context, '), this.compile(e.left, t), e.right.args && (this._emit(","), this.compile(e.right.args, t)), this._emit(") === true") + }, i._binOpEmitter = function(e, t, n) { + this.compile(e.left, t), this._emit(n), this.compile(e.right, t) + }, i.compileOr = function(e, t) { + return this._binOpEmitter(e, t, " || ") + }, i.compileAnd = function(e, t) { + return this._binOpEmitter(e, t, " && ") + }, i.compileAdd = function(e, t) { + return this._binOpEmitter(e, t, " + ") + }, i.compileConcat = function(e, t) { + return this._binOpEmitter(e, t, ' + "" + ') + }, i.compileSub = function(e, t) { + return this._binOpEmitter(e, t, " - ") + }, i.compileMul = function(e, t) { + return this._binOpEmitter(e, t, " * ") + }, i.compileDiv = function(e, t) { + return this._binOpEmitter(e, t, " / ") + }, i.compileMod = function(e, t) { + return this._binOpEmitter(e, t, " % ") + }, i.compileNot = function(e, t) { + this._emit("!"), this.compile(e.target, t) + }, i.compileFloorDiv = function(e, t) { + this._emit("Math.floor("), this.compile(e.left, t), this._emit(" / "), this.compile(e.right, t), this._emit(")") + }, i.compilePow = function(e, t) { + this._emit("Math.pow("), this.compile(e.left, t), this._emit(", "), this.compile(e.right, t), this._emit(")") + }, i.compileNeg = function(e, t) { + this._emit("-"), this.compile(e.target, t) + }, i.compilePos = function(e, t) { + this._emit("+"), this.compile(e.target, t) + }, i.compileCompare = function(e, t) { + var n = this; + this.compile(e.expr, t), e.ops.forEach((function(e) { + n._emit(" " + Mr[e.type] + " "), n.compile(e.expr, t) + })) + }, i.compileLookupVal = function(e, t) { + this._emit("runtime.memberLookup(("), this._compileExpression(e.target, t), this._emit("),"), this._compileExpression(e.val, t), this._emit(")") + }, i._getNodeName = function(e) { + switch (e.typename) { + case "Symbol": + return e.value; + case "FunCall": + return "the return value of (" + this._getNodeName(e.name) + ")"; + case "LookupVal": + return this._getNodeName(e.target) + '["' + this._getNodeName(e.val) + '"]'; + case "Literal": + return e.value.toString(); + default: + return "--expression--" + } + }, i.compileFunCall = function(e, t) { + this._emit("(lineno = " + e.lineno + ", colno = " + e.colno + ", "), this._emit("runtime.callWrap("), this._compileExpression(e.name, t), this._emit(', "' + this._getNodeName(e.name).replace(/"/g, '\\"') + '", context, '), this._compileAggregate(e.args, t, "[", "])"), this._emit(")") + }, i.compileFilter = function(e, t) { + var n = e.name; + this.assertType(n, hr.Symbol), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emit(")") + }, i.compileFilterAsync = function(e, t) { + var n = e.name, + r = e.symbol.value; + this.assertType(n, hr.Symbol), t.set(r, r), this._emit('env.getFilter("' + n.value + '").call(context, '), this._compileAggregate(e.args, t), this._emitLine(", " + this._makeCallback(r)), this._addScopeLevel() + }, i.compileKeywordArgs = function(e, t) { + this._emit("runtime.makeKeywordArgs("), this.compileDict(e, t), this._emit(")") + }, i.compileSet = function(e, t) { + var n = this, + r = []; + e.targets.forEach((function(e) { + var i = e.value, + s = t.lookup(i); + null == s && (s = n._tmpid(), n._emitLine("var " + s + ";")), r.push(s) + })), e.value ? (this._emit(r.join(" = ") + " = "), this._compileExpression(e.value, t), this._emitLine(";")) : (this._emit(r.join(" = ") + " = "), this.compile(e.body, t), this._emitLine(";")), e.targets.forEach((function(e, t) { + var i = r[t], + s = e.value; + n._emitLine('frame.set("' + s + '", ' + i + ", true);"), n._emitLine("if(frame.topLevel) {"), n._emitLine('context.setVariable("' + s + '", ' + i + ");"), n._emitLine("}"), "_" !== s.charAt(0) && (n._emitLine("if(frame.topLevel) {"), n._emitLine('context.addExport("' + s + '", ' + i + ");"), n._emitLine("}")) + })) + }, i.compileSwitch = function(e, t) { + var n = this; + this._emit("switch ("), this.compile(e.expr, t), this._emit(") {"), e.cases.forEach((function(e, r) { + n._emit("case "), n.compile(e.cond, t), n._emit(": "), n.compile(e.body, t), e.body.children.length && n._emitLine("break;") + })), e.default && (this._emit("default:"), this.compile(e.default, t)), this._emit("}") + }, i.compileIf = function(e, t, n) { + var r = this; + this._emit("if("), this._compileExpression(e.cond, t), this._emitLine(") {"), this._withScopedSyntax((function() { + r.compile(e.body, t), n && r._emit("cb()") + })), e.else_ ? (this._emitLine("}\nelse {"), this._withScopedSyntax((function() { + r.compile(e.else_, t), n && r._emit("cb()") + }))) : n && (this._emitLine("}\nelse {"), this._emit("cb()")), this._emitLine("}") + }, i.compileIfAsync = function(e, t) { + this._emit("(function(cb) {"), this.compileIf(e, t, !0), this._emit("})(" + this._makeCallback()), this._addScopeLevel() + }, i._emitLoopBindings = function(e, t, n, r) { + var i = this; + [{ + name: "index", + val: n + " + 1" + }, { + name: "index0", + val: n + }, { + name: "revindex", + val: r + " - " + n + }, { + name: "revindex0", + val: r + " - " + n + " - 1" + }, { + name: "first", + val: n + " === 0" + }, { + name: "last", + val: n + " === " + r + " - 1" + }, { + name: "length", + val: r + }].forEach((function(e) { + i._emitLine('frame.set("loop.' + e.name + '", ' + e.val + ");") + })) + }, i.compileFor = function(e, t) { + var n = this, + r = this._tmpid(), + i = this._tmpid(), + s = this._tmpid(); + if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + s + " = "), this._compileExpression(e.arr, t), this._emitLine(";"), this._emit("if(" + s + ") {"), this._emitLine(s + " = runtime.fromIterator(" + s + ");"), e.name instanceof hr.Array) { + this._emitLine("var " + r + ";"), this._emitLine("if(runtime.isArray(" + s + ")) {"), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(" + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), e.name.children.forEach((function(i, a) { + var o = n._tmpid(); + n._emitLine("var " + o + " = " + s + "[" + r + "][" + a + "];"), n._emitLine('frame.set("' + i + '", ' + s + "[" + r + "][" + a + "]);"), t.set(e.name.children[a].value, o) + })), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { + n.compile(e.body, t) + })), this._emitLine("}"), this._emitLine("} else {"); + var a = e.name.children, + o = a[0], + c = a[1], + l = this._tmpid(), + h = this._tmpid(); + t.set(o.value, l), t.set(c.value, h), this._emitLine(r + " = -1;"), this._emitLine("var " + i + " = runtime.keys(" + s + ").length;"), this._emitLine("for(var " + l + " in " + s + ") {"), this._emitLine(r + "++;"), this._emitLine("var " + h + " = " + s + "[" + l + "];"), this._emitLine('frame.set("' + o.value + '", ' + l + ");"), this._emitLine('frame.set("' + c.value + '", ' + h + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { + n.compile(e.body, t) + })), this._emitLine("}"), this._emitLine("}") + } else { + var u = this._tmpid(); + t.set(e.name.value, u), this._emitLine("var " + i + " = " + s + ".length;"), this._emitLine("for(var " + r + "=0; " + r + " < " + s + ".length; " + r + "++) {"), this._emitLine("var " + u + " = " + s + "[" + r + "];"), this._emitLine('frame.set("' + e.name.value + '", ' + u + ");"), this._emitLoopBindings(e, s, r, i), this._withScopedSyntax((function() { + n.compile(e.body, t) + })), this._emitLine("}") + } + this._emitLine("}"), e.else_ && (this._emitLine("if (!" + i + ") {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();") + }, i._compileAsyncLoop = function(e, t, n) { + var r = this, + i = this._tmpid(), + s = this._tmpid(), + a = this._tmpid(), + o = n ? "asyncAll" : "asyncEach"; + if (t = t.push(), this._emitLine("frame = frame.push();"), this._emit("var " + a + " = runtime.fromIterator("), this._compileExpression(e.arr, t), this._emitLine(");"), e.name instanceof hr.Array) { + var c = e.name.children.length; + this._emit("runtime." + o + "(" + a + ", " + c + ", function("), e.name.children.forEach((function(e) { + r._emit(e.value + ",") + })), this._emit(i + "," + s + ",next) {"), e.name.children.forEach((function(e) { + var n = e.value; + t.set(n, n), r._emitLine('frame.set("' + n + '", ' + n + ");") + })) + } else { + var l = e.name.value; + this._emitLine("runtime." + o + "(" + a + ", 1, function(" + l + ", " + i + ", " + s + ",next) {"), this._emitLine('frame.set("' + l + '", ' + l + ");"), t.set(l, l) + } + this._emitLoopBindings(e, a, i, s), this._withScopedSyntax((function() { + var s; + n && (s = r._pushBuffer()), r.compile(e.body, t), r._emitLine("next(" + i + (s ? "," + s : "") + ");"), n && r._popBuffer() + })); + var h = this._tmpid(); + this._emitLine("}, " + this._makeCallback(h)), this._addScopeLevel(), n && this._emitLine(this.buffer + " += " + h + ";"), e.else_ && (this._emitLine("if (!" + a + ".length) {"), this.compile(e.else_, t), this._emitLine("}")), this._emitLine("frame = frame.pop();") + }, i.compileAsyncEach = function(e, t) { + this._compileAsyncLoop(e, t) + }, i.compileAsyncAll = function(e, t) { + this._compileAsyncLoop(e, t, !0) + }, i._compileMacro = function(e, t) { + var n = this, + r = [], + i = null, + s = "macro_" + this._tmpid(), + a = void 0 !== t; + e.args.children.forEach((function(t, s) { + s === e.args.children.length - 1 && t instanceof hr.Dict ? i = t : (n.assertType(t, hr.Symbol), r.push(t)) + })); + var o, c = [].concat(r.map((function(e) { + return "l_" + e.value + })), ["kwargs"]), + l = r.map((function(e) { + return '"' + e.value + '"' + })), + h = (i && i.children || []).map((function(e) { + return '"' + e.key.value + '"' + })); + o = a ? t.push(!0) : new Rr, this._emitLines("var " + s + " = runtime.makeMacro(", "[" + l.join(", ") + "], ", "[" + h.join(", ") + "], ", "function (" + c.join(", ") + ") {", "var callerFrame = frame;", "frame = " + (a ? "frame.push(true);" : "new runtime.Frame();"), "kwargs = kwargs || {};", 'if (Object.prototype.hasOwnProperty.call(kwargs, "caller")) {', 'frame.set("caller", kwargs.caller); }'), r.forEach((function(e) { + n._emitLine('frame.set("' + e.value + '", l_' + e.value + ");"), o.set(e.value, "l_" + e.value) + })), i && i.children.forEach((function(e) { + var t = e.key.value; + n._emit('frame.set("' + t + '", '), n._emit('Object.prototype.hasOwnProperty.call(kwargs, "' + t + '")'), n._emit(' ? kwargs["' + t + '"] : '), n._compileExpression(e.value, o), n._emit(");") + })); + var u = this._pushBuffer(); + return this._withScopedSyntax((function() { + n.compile(e.body, o) + })), this._emitLine("frame = " + (a ? "frame.pop();" : "callerFrame;")), this._emitLine("return new runtime.SafeString(" + u + ");"), this._emitLine("});"), this._popBuffer(), s + }, i.compileMacro = function(e, t) { + var n = this._compileMacro(e), + r = e.name.value; + t.set(r, n), t.parent ? this._emitLine('frame.set("' + r + '", ' + n + ");") : ("_" !== e.name.value.charAt(0) && this._emitLine('context.addExport("' + r + '");'), this._emitLine('context.setVariable("' + r + '", ' + n + ");")) + }, i.compileCaller = function(e, t) { + this._emit("(function (){"); + var n = this._compileMacro(e, t); + this._emit("return " + n + ";})()") + }, i._compileGetTemplate = function(e, t, n, r) { + var i = this._tmpid(), + s = this._templateName(), + a = this._makeCallback(i), + o = n ? "true" : "false", + c = r ? "true" : "false"; + return this._emit("env.getTemplate("), this._compileExpression(e.template, t), this._emitLine(", " + o + ", " + s + ", " + c + ", " + a), i + }, i.compileImport = function(e, t) { + var n = e.target.value, + r = this._compileGetTemplate(e, t, !1, !1); + this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), t.set(n, r), t.parent ? this._emitLine('frame.set("' + n + '", ' + r + ");") : this._emitLine('context.setVariable("' + n + '", ' + r + ");") + }, i.compileFromImport = function(e, t) { + var n = this, + r = this._compileGetTemplate(e, t, !1, !1); + this._addScopeLevel(), this._emitLine(r + ".getExported(" + (e.withContext ? "context.getVariables(), frame, " : "") + this._makeCallback(r)), this._addScopeLevel(), e.names.children.forEach((function(e) { + var i, s, a = n._tmpid(); + e instanceof hr.Pair ? (i = e.key.value, s = e.value.value) : s = i = e.value, n._emitLine("if(Object.prototype.hasOwnProperty.call(" + r + ', "' + i + '")) {'), n._emitLine("var " + a + " = " + r + "." + i + ";"), n._emitLine("} else {"), n._emitLine("cb(new Error(\"cannot import '" + i + "'\")); return;"), n._emitLine("}"), t.set(s, a), t.parent ? n._emitLine('frame.set("' + s + '", ' + a + ");") : n._emitLine('context.setVariable("' + s + '", ' + a + ");") + })) + }, i.compileBlock = function(e) { + var t = this._tmpid(); + this.inBlock || this._emit('(parentTemplate ? function(e, c, f, r, cb) { cb(""); } : '), this._emit('context.getBlock("' + e.name.value + '")'), this.inBlock || this._emit(")"), this._emitLine("(env, context, frame, runtime, " + this._makeCallback(t)), this._emitLine(this.buffer + " += " + t + ";"), this._addScopeLevel() + }, i.compileSuper = function(e, t) { + var n = e.blockName.value, + r = e.symbol.value, + i = this._makeCallback(r); + this._emitLine('context.getSuper(env, "' + n + '", b_' + n + ", frame, runtime, " + i), this._emitLine(r + " = runtime.markSafe(" + r + ");"), this._addScopeLevel(), t.set(r, r) + }, i.compileExtends = function(e, t) { + var n = this._tmpid(), + r = this._compileGetTemplate(e, t, !0, !1); + this._emitLine("parentTemplate = " + r), this._emitLine("for(var " + n + " in parentTemplate.blocks) {"), this._emitLine("context.addBlock(" + n + ", parentTemplate.blocks[" + n + "]);"), this._emitLine("}"), this._addScopeLevel() + }, i.compileInclude = function(e, t) { + this._emitLine("var tasks = [];"), this._emitLine("tasks.push("), this._emitLine("function(callback) {"); + var n = this._compileGetTemplate(e, t, !1, e.ignoreMissing); + this._emitLine("callback(null," + n + ");});"), this._emitLine("});"); + var r = this._tmpid(); + this._emitLine("tasks.push("), this._emitLine("function(template, callback){"), this._emitLine("template.render(context.getVariables(), frame, " + this._makeCallback(r)), this._emitLine("callback(null," + r + ");});"), this._emitLine("});"), this._emitLine("tasks.push("), this._emitLine("function(result, callback){"), this._emitLine(this.buffer + " += result;"), this._emitLine("callback(null);"), this._emitLine("});"), this._emitLine("env.waterfall(tasks, function(){"), this._addScopeLevel() + }, i.compileTemplateData = function(e, t) { + this.compileLiteral(e, t) + }, i.compileCapture = function(e, t) { + var n = this, + r = this.buffer; + this.buffer = "output", this._emitLine("(function() {"), this._emitLine('var output = "";'), this._withScopedSyntax((function() { + n.compile(e.body, t) + })), this._emitLine("return output;"), this._emitLine("})()"), this.buffer = r + }, i.compileOutput = function(e, t) { + var n = this; + e.children.forEach((function(r) { + r instanceof hr.TemplateData ? r.value && (n._emit(n.buffer + " += "), n.compileLiteral(r, t), n._emitLine(";")) : (n._emit(n.buffer + " += runtime.suppressValue("), n.throwOnUndefined && n._emit("runtime.ensureDefined("), n.compile(r, t), n.throwOnUndefined && n._emit("," + e.lineno + "," + e.colno + ")"), n._emit(", env.opts.autoescape);\n")) + })) + }, i.compileRoot = function(e, t) { + var n = this; + t && this.fail("compileRoot: root node can't have frame"), t = new Rr, this._emitFuncBegin(e, "root"), this._emitLine("var parentTemplate = null;"), this._compileChildren(e, t), this._emitLine("if(parentTemplate) {"), this._emitLine("parentTemplate.rootRenderFunc(env, context, frame, runtime, cb);"), this._emitLine("} else {"), this._emitLine("cb(null, " + this.buffer + ");"), this._emitLine("}"), this._emitFuncEnd(!0), this.inBlock = !0; + var r = [], + i = e.findAll(hr.Block); + i.forEach((function(e, t) { + var i = e.name.value; + if (-1 !== r.indexOf(i)) throw new Error('Block "' + i + '" defined more than once.'); + r.push(i), n._emitFuncBegin(e, "b_" + i); + var s = new Rr; + n._emitLine("var frame = frame.push(true);"), n.compile(e.body, s), n._emitFuncEnd() + })), this._emitLine("return {"), i.forEach((function(e, t) { + var r = "b_" + e.name.value; + n._emitLine(r + ": " + r + ",") + })), this._emitLine("root: root\n};") + }, i.compile = function(e, t) { + var n = this["compile" + e.typename]; + n ? n.call(this, e, t) : this.fail("compile: Cannot compile node: " + e.typename, e.lineno, e.colno) + }, i.getCode = function() { + return this.codebuf.join("") + }, r + }(en.Obj), + xr = { + compile: function(e, t, n, r, i) { + void 0 === i && (i = {}); + var s = new Pr(r, i.throwOnUndefined), + a = (n || []).map((function(e) { + return e.preprocess + })).filter((function(e) { + return !!e + })).reduce((function(e, t) { + return t(e) + }), e); + return s.compile(Nr.transform(fr.parse(a, n, i), t, r)), s.getCode() + }, + Compiler: Pr + }, + wr = Ke((function(e) { + var t = e.exports = {}; + + function n(e, t) { + return null == e || !1 === e ? t : e + } + + function r(e) { + return e != e + } + + function i(e) { + var t = (e = n(e, "")).toLowerCase(); + return kr.copySafeness(e, t.charAt(0).toUpperCase() + t.slice(1)) + } + + function s(e) { + if (je.isString(e)) return e.split(""); + if (je.isObject(e)) return je._entries(e || {}).map((function(e) { + return { + key: e[0], + value: e[1] + } + })); + if (je.isArray(e)) return e; + throw new je.TemplateError("list filter: type not iterable") + } + + function a(e) { + return function(t, n, r) { + void 0 === n && (n = "truthy"); + var i = this, + s = i.env.getTest(n); + return je.toArray(t).filter((function(t) { + return s.call(i, t, r) === e + })) + } + } + + function o(e) { + return kr.copySafeness(e, e.replace(/^\s*|\s*$/g, "")) + } + t.abs = Math.abs, t.batch = function(e, t, n) { + var r, i = [], + s = []; + for (r = 0; r < e.length; r++) r % t == 0 && s.length && (i.push(s), s = []), s.push(e[r]); + if (s.length) { + if (n) + for (r = s.length; r < t; r++) s.push(n); + i.push(s) + } + return i + }, t.capitalize = i, t.center = function(e, t) { + if (t = t || 80, (e = n(e, "")).length >= t) return e; + var r = t - e.length, + i = je.repeat(" ", r / 2 - r % 2), + s = je.repeat(" ", r / 2); + return kr.copySafeness(e, i + e + s) + }, t.default = function(e, t, n) { + return n ? e || t : void 0 !== e ? e : t + }, t.dictsort = function(e, t, n) { + if (!je.isObject(e)) throw new je.TemplateError("dictsort filter: val must be an object"); + var r, i = []; + for (var s in e) i.push([s, e[s]]); + if (void 0 === n || "key" === n) r = 0; + else { + if ("value" !== n) throw new je.TemplateError("dictsort filter: You can only sort by either key or value"); + r = 1 + } + return i.sort((function(e, n) { + var i = e[r], + s = n[r]; + return t || (je.isString(i) && (i = i.toUpperCase()), je.isString(s) && (s = s.toUpperCase())), i > s ? 1 : i === s ? 0 : -1 + })), i + }, t.dump = function(e, t) { + return JSON.stringify(e, null, t) + }, t.escape = function(e) { + return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(je.escape(e.toString()))) + }, t.safe = function(e) { + return e instanceof kr.SafeString ? e : (e = null == e ? "" : e, kr.markSafe(e.toString())) + }, t.first = function(e) { + return e[0] + }, t.forceescape = function(e) { + return e = null == e ? "" : e, kr.markSafe(je.escape(e.toString())) + }, t.groupby = function(e, t) { + return je.groupBy(e, t, this.env.opts.throwOnUndefined) + }, t.indent = function(e, t, r) { + if ("" === (e = n(e, ""))) return ""; + t = t || 4; + var i = e.split("\n"), + s = je.repeat(" ", t), + a = i.map((function(e, t) { + return 0 !== t || r ? "" + s + e : e + })).join("\n"); + return kr.copySafeness(e, a) + }, t.join = function(e, t, n) { + return t = t || "", n && (e = je.map(e, (function(e) { + return e[n] + }))), e.join(t) + }, t.last = function(e) { + return e[e.length - 1] + }, t.length = function(e) { + var t = n(e, ""); + return void 0 !== t ? "function" == typeof Map && t instanceof Map || "function" == typeof Set && t instanceof Set ? t.size : !je.isObject(t) || t instanceof kr.SafeString ? t.length : je.keys(t).length : 0 + }, t.list = s, t.lower = function(e) { + return (e = n(e, "")).toLowerCase() + }, t.nl2br = function(e) { + return null == e ? "" : kr.copySafeness(e, e.replace(/\r\n|\n/g, "
\n")) + }, t.random = function(e) { + return e[Math.floor(Math.random() * e.length)] + }, t.reject = a(!1), t.rejectattr = function(e, t) { + return e.filter((function(e) { + return !e[t] + })) + }, t.select = a(!0), t.selectattr = function(e, t) { + return e.filter((function(e) { + return !!e[t] + })) + }, t.replace = function(e, t, n, r) { + var i = e; + if (t instanceof RegExp) return e.replace(t, n); + void 0 === r && (r = -1); + var s = ""; + if ("number" == typeof t) t = "" + t; + else if ("string" != typeof t) return e; + if ("number" == typeof e && (e = "" + e), "string" != typeof e && !(e instanceof kr.SafeString)) return e; + if ("" === t) return s = n + e.split("").join(n) + n, kr.copySafeness(e, s); + var a = e.indexOf(t); + if (0 === r || -1 === a) return e; + for (var o = 0, c = 0; a > -1 && (-1 === r || c < r);) s += e.substring(o, a) + n, o = a + t.length, c++, a = e.indexOf(t, o); + return o < e.length && (s += e.substring(o)), kr.copySafeness(i, s) + }, t.reverse = function(e) { + var t; + return (t = je.isString(e) ? s(e) : je.map(e, (function(e) { + return e + }))).reverse(), je.isString(e) ? kr.copySafeness(e, t.join("")) : t + }, t.round = function(e, t, n) { + t = t || 0; + var r = Math.pow(10, t); + return ("ceil" === n ? Math.ceil : "floor" === n ? Math.floor : Math.round)(e * r) / r + }, t.slice = function(e, t, n) { + for (var r = Math.floor(e.length / t), i = e.length % t, s = [], a = 0, o = 0; o < t; o++) { + var c = a + o * r; + o < i && a++; + var l = a + (o + 1) * r, + h = e.slice(c, l); + n && o >= i && h.push(n), s.push(h) + } + return s + }, t.sum = function(e, t, n) { + return void 0 === n && (n = 0), t && (e = je.map(e, (function(e) { + return e[t] + }))), n + e.reduce((function(e, t) { + return e + t + }), 0) + }, t.sort = kr.makeMacro(["value", "reverse", "case_sensitive", "attribute"], [], (function(e, t, n, r) { + var i = this, + s = je.map(e, (function(e) { + return e + })), + a = je.getAttrGetter(r); + return s.sort((function(e, s) { + var o = r ? a(e) : e, + c = r ? a(s) : s; + if (i.env.opts.throwOnUndefined && r && (void 0 === o || void 0 === c)) throw new TypeError('sort: attribute "' + r + '" resolved to undefined'); + return !n && je.isString(o) && je.isString(c) && (o = o.toLowerCase(), c = c.toLowerCase()), o < c ? t ? 1 : -1 : o > c ? t ? -1 : 1 : 0 + })), s + })), t.string = function(e) { + return kr.copySafeness(e, e) + }, t.striptags = function(e, t) { + var r = o((e = n(e, "")).replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi, "")), + i = ""; + return i = t ? r.replace(/^ +| +$/gm, "").replace(/ +/g, " ").replace(/(\r\n)/g, "\n").replace(/\n\n\n+/g, "\n\n") : r.replace(/\s+/gi, " "), kr.copySafeness(e, i) + }, t.title = function(e) { + var t = (e = n(e, "")).split(" ").map((function(e) { + return i(e) + })); + return kr.copySafeness(e, t.join(" ")) + }, t.trim = o, t.truncate = function(e, t, r, i) { + var s = e; + if (t = t || 255, (e = n(e, "")).length <= t) return e; + if (r) e = e.substring(0, t); + else { + var a = e.lastIndexOf(" ", t); - 1 === a && (a = t), e = e.substring(0, a) + } + return e += null != i ? i : "...", kr.copySafeness(s, e) + }, t.upper = function(e) { + return (e = n(e, "")).toUpperCase() + }, t.urlencode = function(e) { + var t = encodeURIComponent; + return je.isString(e) ? t(e) : (je.isArray(e) ? e : je._entries(e)).map((function(e) { + var n = e[0], + r = e[1]; + return t(n) + "=" + t(r) + })).join("&") + }; + var c = /^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/, + l = /^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i, + h = /^https?:\/\/.*$/, + u = /^www\./, + p = /\.(?:org|net|com)(?:\:|\/|$)/; + t.urlize = function(e, t, n) { + r(t) && (t = 1 / 0); + var i = !0 === n ? ' rel="nofollow"' : ""; + return e.split(/(\s+)/).filter((function(e) { + return e && e.length + })).map((function(e) { + var n = e.match(c), + r = n ? n[1] : e, + s = r.substr(0, t); + return h.test(r) ? '" + s + "" : u.test(r) ? '" + s + "" : l.test(r) ? '' + r + "" : p.test(r) ? '" + s + "" : e + })).join("") + }, t.wordcount = function(e) { + var t = (e = n(e, "")) ? e.match(/\w+/g) : null; + return t ? t.length : null + }, t.float = function(e, t) { + var n = parseFloat(e); + return r(n) ? t : n + }; + var f = kr.makeMacro(["value", "default", "base"], [], (function(e, t, n) { + void 0 === n && (n = 10); + var i = parseInt(e, n); + return r(i) ? t : i + })); + t.int = f, t.d = t.default, t.e = t.escape + })), + Br = {}; + +function Fr(e, t) { + for (var n = 0, r = e.length - 1; r >= 0; r--) { + var i = e[r]; + "." === i ? e.splice(r, 1) : ".." === i ? (e.splice(r, 1), n++) : n && (e.splice(r, 1), n--) + } + if (t) + for (; n--; n) e.unshift(".."); + return e +} +var Ur = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/, + Hr = function(e) { + return Ur.exec(e).slice(1) + }; + +function Gr() { + for (var e = "", t = !1, n = arguments.length - 1; n >= -1 && !t; n--) { + var r = n >= 0 ? arguments[n] : "/"; + if ("string" != typeof r) throw new TypeError("Arguments to path.resolve must be strings"); + r && (e = r + "/" + e, t = "/" === r.charAt(0)) + } + return (t ? "/" : "") + (e = Fr(jr(e.split("/"), (function(e) { + return !!e + })), !t).join("/")) || "." +} + +function Yr(e) { + var t = qr(e), + n = "/" === Vr(e, -1); + return (e = Fr(jr(e.split("/"), (function(e) { + return !!e + })), !t).join("/")) || t || (e = "."), e && n && (e += "/"), (t ? "/" : "") + e +} + +function qr(e) { + return "/" === e.charAt(0) +} +var Kr = { + extname: function(e) { + return Hr(e)[3] + }, + basename: function(e, t) { + var n = Hr(e)[2]; + return t && n.substr(-1 * t.length) === t && (n = n.substr(0, n.length - t.length)), n + }, + dirname: function(e) { + var t = Hr(e), + n = t[0], + r = t[1]; + return n || r ? (r && (r = r.substr(0, r.length - 1)), n + r) : "." + }, + sep: "/", + delimiter: ":", + relative: function(e, t) { + function n(e) { + for (var t = 0; t < e.length && "" === e[t]; t++); + for (var n = e.length - 1; n >= 0 && "" === e[n]; n--); + return t > n ? [] : e.slice(t, n - t + 1) + } + e = Gr(e).substr(1), t = Gr(t).substr(1); + for (var r = n(e.split("/")), i = n(t.split("/")), s = Math.min(r.length, i.length), a = s, o = 0; o < s; o++) + if (r[o] !== i[o]) { + a = o; + break + } var c = []; + for (o = a; o < r.length; o++) c.push(".."); + return (c = c.concat(i.slice(a))).join("/") + }, + join: function() { + var e = Array.prototype.slice.call(arguments, 0); + return Yr(jr(e, (function(e, t) { + if ("string" != typeof e) throw new TypeError("Arguments to path.join must be strings"); + return e + })).join("/")) + }, + isAbsolute: qr, + normalize: Yr, + resolve: Gr +}; + +function jr(e, t) { + if (e.filter) return e.filter(t); + for (var n = [], r = 0; r < e.length; r++) t(e[r], r, e) && n.push(e[r]); + return n +} +var Vr = "b" === "ab".substr(-1) ? function(e, t, n) { + return e.substr(t, n) +} : function(e, t, n) { + return t < 0 && (t = e.length + t), e.substr(t, n) +}; + +function Wr(e, t) { + return Wr = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, Wr(e, t) +} +var Qr = function(e) { + var t, n; + + function r() { + return e.apply(this, arguments) || this + } + n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Wr(t, n); + var i = r.prototype; + return i.resolve = function(e, t) { + return Kr.resolve(Kr.dirname(e), t) + }, i.isRelative = function(e) { + return 0 === e.indexOf("./") || 0 === e.indexOf("../") + }, r +}(en.EmitterObj); + +function Xr(e, t) { + return Xr = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, Xr(e, t) +} +var $r = function(e) { + var t, n; + + function r(t) { + var n; + return (n = e.call(this) || this).precompiled = t || {}, n + } + return n = e, (t = r).prototype = Object.create(n.prototype), t.prototype.constructor = t, Xr(t, n), r.prototype.getSource = function(e) { + return this.precompiled[e] ? { + src: { + type: "code", + obj: this.precompiled[e] + }, + path: e + } : null + }, r +}(Qr); + +function zr(e, t) { + e.prototype = Object.create(t.prototype), e.prototype.constructor = e, Jr(e, t) +} + +function Jr(e, t) { + return Jr = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, Jr(e, t) +} +var Zr = { + PrecompiledLoader: $r + }.PrecompiledLoader, + ei = function(e) { + function t(t, n) { + var r; + return n = n || {}, (r = e.call(this) || this).pathsToNames = {}, r.noCache = !!n.noCache, t ? (t = Array.isArray(t) ? t : [t], r.searchPaths = t.map(Kr.normalize)) : r.searchPaths = ["."], r + } + return zr(t, e), t.prototype.getSource = function(e) { + for (var t = null, n = this.searchPaths, r = 0; r < n.length; r++) { + var i = Kr.resolve(n[r]), + s = Kr.resolve(n[r], e); + if (0 === s.indexOf(i) && Br.existsSync(s)) { + t = s; + break + } + } + if (!t) return null; + this.pathsToNames[t] = e; + var a = { + src: Br.readFileSync(t, "utf-8"), + path: t, + noCache: this.noCache + }; + return this.emit("load", e, a), a + }, t + }(Qr), + ti = { + FileSystemLoader: ei, + PrecompiledLoader: Zr, + NodeResolveLoader: function(e) { + function t(t) { + var n; + return t = t || {}, (n = e.call(this) || this).pathsToNames = {}, n.noCache = !!t.noCache, n + } + return zr(t, e), t.prototype.getSource = function(e) { + if (/^\.?\.?(\/|\\)/.test(e)) return null; + if (/^[A-Z]:/.test(e)) return null; + var t; + try { + t = Ye.resolve(e) + } catch (e) { + return null + } + this.pathsToNames[t] = e; + var n = { + src: Br.readFileSync(t, "utf-8"), + path: t, + noCache: this.noCache + }; + return this.emit("load", e, n), n + }, t + }(Qr) + }, + ni = Ke((function(e, t) { + var n = kr.SafeString; + t.callable = function(e) { + return "function" == typeof e + }, t.defined = function(e) { + return void 0 !== e + }, t.divisibleby = function(e, t) { + return e % t == 0 + }, t.escaped = function(e) { + return e instanceof n + }, t.equalto = function(e, t) { + return e === t + }, t.eq = t.equalto, t.sameas = t.equalto, t.even = function(e) { + return e % 2 == 0 + }, t.falsy = function(e) { + return !e + }, t.ge = function(e, t) { + return e >= t + }, t.greaterthan = function(e, t) { + return e > t + }, t.gt = t.greaterthan, t.le = function(e, t) { + return e <= t + }, t.lessthan = function(e, t) { + return e < t + }, t.lt = t.lessthan, t.lower = function(e) { + return e.toLowerCase() === e + }, t.ne = function(e, t) { + return e !== t + }, t.null = function(e) { + return null === e + }, t.number = function(e) { + return "number" == typeof e + }, t.odd = function(e) { + return e % 2 == 1 + }, t.string = function(e) { + return "string" == typeof e + }, t.truthy = function(e) { + return !!e + }, t.undefined = function(e) { + return void 0 === e + }, t.upper = function(e) { + return e.toUpperCase() === e + }, t.iterable = function(e) { + return "undefined" != typeof Symbol ? !!e[Symbol.iterator] : Array.isArray(e) || "string" == typeof e + }, t.mapping = function(e) { + var t = null != e && "object" == typeof e && !Array.isArray(e); + return Set ? t && !(e instanceof Set) : t + } + })); + +function ri(e) { + var t = -1; + return { + current: null, + reset: function() { + t = -1, this.current = null + }, + next: function() { + return ++t >= e.length && (t = 0), this.current = e[t], this.current + } + } +} +ni.callable, ni.defined, ni.divisibleby, ni.escaped, ni.equalto, ni.eq, ni.sameas, ni.even, ni.falsy, ni.ge, ni.greaterthan, ni.gt, ni.le, ni.lessthan, ni.lt, ni.lower, ni.ne, ni.number, ni.odd, ni.string, ni.truthy, ni.undefined, ni.upper, ni.iterable, ni.mapping; +var ii = function() { + return { + range: function(e, t, n) { + void 0 === t ? (t = e, e = 0, n = 1) : n || (n = 1); + var r = []; + if (n > 0) + for (var i = e; i < t; i += n) r.push(i); + else + for (var s = e; s > t; s += n) r.push(s); + return r + }, + cycler: function() { + return ri(Array.prototype.slice.call(arguments)) + }, + joiner: function(e) { + return function(e) { + e = e || ","; + var t = !0; + return function() { + var n = t ? "" : e; + return t = !1, n + } + }(e) + } + } +}; + +function si(e, t) { + e.prototype = Object.create(t.prototype), e.prototype.constructor = e, ai(e, t) +} + +function ai(e, t) { + return ai = Object.setPrototypeOf || function(e, t) { + return e.__proto__ = t, e + }, ai(e, t) +} +var oi = ti.FileSystemLoader, + ci = ti.WebLoader, + li = ti.PrecompiledLoader, + hi = en.Obj, + ui = en.EmitterObj, + pi = kr.handleError, + fi = kr.Frame; + +function di(e, t, n) { + Gt((function() { + e(t, n) + })) +} +var Ei = { + type: "code", + obj: { + root: function(e, t, n, r, i) { + try { + i(null, "") + } catch (e) { + i(pi(e, null, null)) + } + } + } + }, + mi = function(e) { + function t() { + return e.apply(this, arguments) || this + } + si(t, e); + var n = t.prototype; + return n.init = function(e, t) { + var n = this; + t = this.opts = t || {}, this.opts.dev = !!t.dev, this.opts.autoescape = null == t.autoescape || t.autoescape, this.opts.throwOnUndefined = !!t.throwOnUndefined, this.opts.trimBlocks = !!t.trimBlocks, this.opts.lstripBlocks = !!t.lstripBlocks, this.loaders = [], e ? this.loaders = je.isArray(e) ? e : [e] : oi ? this.loaders = [new oi("views")] : ci && (this.loaders = [new ci("/views")]), "undefined" != typeof window && window.jinja2Precompiled && this.loaders.unshift(new li(window.jinja2Precompiled)), this._initLoaders(), this.globals = ii(), this.filters = {}, this.tests = {}, this.asyncFilters = [], this.extensions = {}, this.extensionsList = [], je._entries(wr).forEach((function(e) { + var t = e[0], + r = e[1]; + return n.addFilter(t, r) + })), je._entries(ni).forEach((function(e) { + var t = e[0], + r = e[1]; + return n.addTest(t, r) + })) + }, n._initLoaders = function() { + var e = this; + this.loaders.forEach((function(t) { + t.cache = {}, "function" == typeof t.on && (t.on("update", (function(n, r) { + t.cache[n] = null, e.emit("update", n, r, t) + })), t.on("load", (function(n, r) { + e.emit("load", n, r, t) + }))) + })) + }, n.invalidateCache = function() { + this.loaders.forEach((function(e) { + e.cache = {} + })) + }, n.addExtension = function(e, t) { + return t.__name = e, this.extensions[e] = t, this.extensionsList.push(t), this + }, n.removeExtension = function(e) { + var t = this.getExtension(e); + t && (this.extensionsList = je.without(this.extensionsList, t), delete this.extensions[e]) + }, n.getExtension = function(e) { + return this.extensions[e] + }, n.hasExtension = function(e) { + return !!this.extensions[e] + }, n.addGlobal = function(e, t) { + return this.globals[e] = t, this + }, n.getGlobal = function(e) { + if (void 0 === this.globals[e]) throw new Error("global not found: " + e); + return this.globals[e] + }, n.addFilter = function(e, t, n) { + var r = t; + return n && this.asyncFilters.push(e), this.filters[e] = r, this + }, n.getFilter = function(e) { + if (!this.filters[e]) throw new Error("filter not found: " + e); + return this.filters[e] + }, n.addTest = function(e, t) { + return this.tests[e] = t, this + }, n.getTest = function(e) { + if (!this.tests[e]) throw new Error("test not found: " + e); + return this.tests[e] + }, n.resolveTemplate = function(e, t, n) { + return !(!e.isRelative || !t) && e.isRelative(n) && e.resolve ? e.resolve(t, n) : n + }, n.getTemplate = function(e, t, n, r, i) { + var s, a = this, + o = this, + c = null; + if (e && e.raw && (e = e.raw), je.isFunction(n) && (i = n, n = null, t = t || !1), je.isFunction(t) && (i = t, t = !1), e instanceof _i) c = e; + else { + if ("string" != typeof e) throw new Error("template names must be a string: " + e); + for (var l = 0; l < this.loaders.length; l++) { + var h = this.loaders[l]; + if (c = h.cache[this.resolveTemplate(h, n, e)]) break + } + } + if (c) return t && c.compile(), i ? void i(null, c) : c; + return je.asyncIter(this.loaders, (function(t, r, i, s) { + function a(e, n) { + e ? s(e) : n ? (n.loader = t, s(null, n)) : i() + } + e = o.resolveTemplate(t, n, e), t.async ? t.getSource(e, a) : a(null, t.getSource(e)) + }), (function(n, o) { + if (o || n || r || (n = new Error("template not found: " + e)), n) { + if (i) return void i(n); + throw n + } + var c; + o ? (c = new _i(o.src, a, o.path, t), o.noCache || (o.loader.cache[e] = c)) : c = new _i(Ei, a, "", t), i ? i(null, c) : s = c + })), s + }, n.express = function(e) { + return function(e, t) { + function n(e, t) { + if (this.name = e, this.path = e, this.defaultEngine = t.defaultEngine, this.ext = Kr.extname(e), !this.ext && !this.defaultEngine) throw new Error("No default engine was specified and no extension was provided."); + this.ext || (this.name += this.ext = ("." !== this.defaultEngine[0] ? "." : "") + this.defaultEngine) + } + return n.prototype.render = function(t, n) { + e.render(this.name, t, n) + }, t.set("view", n), t.set("jinja2Env", e), e + }(this, e) + }, n.render = function(e, t, n) { + je.isFunction(t) && (n = t, t = null); + var r = null; + return this.getTemplate(e, (function(e, i) { + if (e && n) di(n, e); + else { + if (e) throw e; + r = i.render(t, n) + } + })), r + }, n.renderString = function(e, t, n, r) { + return je.isFunction(n) && (r = n, n = {}), new _i(e, this, (n = n || {}).path).render(t, r) + }, n.waterfall = function(e, t, n) { + return qt(e, t, n) + }, t + }(ui), + Ti = function(e) { + function t() { + return e.apply(this, arguments) || this + } + si(t, e); + var n = t.prototype; + return n.init = function(e, t, n) { + var r = this; + this.env = n || new mi, this.ctx = je.extend({}, e), this.blocks = {}, this.exported = [], je.keys(t).forEach((function(e) { + r.addBlock(e, t[e]) + })) + }, n.lookup = function(e) { + return e in this.env.globals && !(e in this.ctx) ? this.env.globals[e] : this.ctx[e] + }, n.setVariable = function(e, t) { + this.ctx[e] = t + }, n.getVariables = function() { + return this.ctx + }, n.addBlock = function(e, t) { + return this.blocks[e] = this.blocks[e] || [], this.blocks[e].push(t), this + }, n.getBlock = function(e) { + if (!this.blocks[e]) throw new Error('unknown block "' + e + '"'); + return this.blocks[e][0] + }, n.getSuper = function(e, t, n, r, i, s) { + var a = je.indexOf(this.blocks[t] || [], n), + o = this.blocks[t][a + 1]; + if (-1 === a || !o) throw new Error('no super block available for "' + t + '"'); + o(e, this, r, i, s) + }, n.addExport = function(e) { + this.exported.push(e) + }, n.getExported = function() { + var e = this, + t = {}; + return this.exported.forEach((function(n) { + t[n] = e.ctx[n] + })), t + }, t + }(hi), + _i = function(e) { + function t() { + return e.apply(this, arguments) || this + } + si(t, e); + var n = t.prototype; + return n.init = function(e, t, n, r) { + if (this.env = t || new mi, je.isObject(e)) switch (e.type) { + case "code": + this.tmplProps = e.obj; + break; + case "string": + this.tmplStr = e.obj; + break; + default: + throw new Error("Unexpected template object type " + e.type + "; expected 'code', or 'string'") + } else { + if (!je.isString(e)) throw new Error("src must be a string or an object describing the source"); + this.tmplStr = e + } + if (this.path = n, r) try { + this._compile() + } catch (e) { + throw je._prettifyError(this.path, this.env.opts.dev, e) + } else this.compiled = !1 + }, n.render = function(e, t, n) { + var r = this; + "function" == typeof e ? (n = e, e = {}) : "function" == typeof t && (n = t, t = null); + var i = !t; + try { + this.compile() + } catch (e) { + var s = je._prettifyError(this.path, this.env.opts.dev, e); + if (n) return di(n, s); + throw s + } + var a = new Ti(e || {}, this.blocks, this.env), + o = t ? t.push(!0) : new fi; + o.topLevel = !0; + var c = null, + l = !1; + return this.rootRenderFunc(this.env, a, o, kr, (function(e, t) { + if (!l || !n || void 0 === t) + if (e && (e = je._prettifyError(r.path, r.env.opts.dev, e), l = !0), n) i ? di(n, e, t) : n(e, t); + else { + if (e) throw e; + c = t + } + })), c + }, n.getExported = function(e, t, n) { + "function" == typeof e && (n = e, e = {}), "function" == typeof t && (n = t, t = null); + try { + this.compile() + } catch (e) { + if (n) return n(e); + throw e + } + var r = t ? t.push() : new fi; + r.topLevel = !0; + var i = new Ti(e || {}, this.blocks, this.env); + this.rootRenderFunc(this.env, i, r, kr, (function(e) { + e ? n(e, null) : n(null, i.getExported()) + })) + }, n.compile = function() { + this.compiled || this._compile() + }, n._compile = function() { + var e; + if (this.tmplProps) e = this.tmplProps; + else { + var t = xr.compile(this.tmplStr, this.env.asyncFilters, this.env.extensionsList, this.path, this.env.opts); + e = new Function(t)() + } + this.blocks = this._getBlocks(e), this.rootRenderFunc = e.root, this.compiled = !0 + }, n._getBlocks = function(e) { + var t = {}; + return je.keys(e).forEach((function(n) { + "b_" === n.slice(0, 2) && (t[n.slice(2)] = e[n]) + })), t + }, t + }(hi), + Ai = { + Environment: mi, + Template: _i + }; +je._prettifyError; +var gi, Ni = Ai.Environment; + +function Ci(e, t) { + var n; + return t = t || {}, je.isObject(e) && (t = e, e = null), ti.FileSystemLoader ? n = new ti.FileSystemLoader(e, { + watch: t.watch, + noCache: t.noCache + }) : ti.WebLoader && (n = new ti.WebLoader(e, { + useCache: t.web && t.web.useCache, + async: t.web && t.web.async + })), gi = new Ni(n, t), t && t.express && gi.express(t.express), gi +} +ti.FileSystemLoader, ti.NodeResolveLoader, ti.PrecompiledLoader, ti.WebLoader; +var Ii = function(e, t, n) { + return gi || Ci(), gi.renderString(e, t, n) + }, + Si = function() { + return Si = Object.assign || function(e) { + for (var t, n = 1, r = arguments.length; n < r; n++) + for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); + return e + }, Si.apply(this, arguments) + }; + +function bi(e, t, n) { + return e ? e(null != t ? t : e._root.children, null, void 0, n).toString() : "" +} + +function Oi(e, t) { + return bi(this, function(e, t) { + return !t && "object" == typeof e && null != e && !("length" in e) && !("type" in e) + }(e) ? void(t = e) : e, Si(Si(Si({}, n), null == this ? void 0 : this._options), i(null != t ? t : {}))) +} + +function yi(e) { + return bi(this, e, Si(Si({}, this._options), { + xmlMode: !0 + })) +} + +function Li(e) { + for (var t = e || (this ? this.root() : []), n = "", r = 0; r < t.length; r++) n += z(t[r]); + return n +} + +function ki(e, t, r) { + if (void 0 === r && (r = "boolean" == typeof t && t), !e || "string" != typeof e) return null; + "boolean" == typeof t && (r = t); + var i = this.load(e, n, !1); + return r || i("script").remove(), i.root()[0].children.slice() +} + +function vi() { + return this(this._root) +} + +function Di(e, t) { + if (t === e) return !1; + for (var n = t; n && n !== n.parent;) + if ((n = n.parent) === e) return !0; + return !1 +} + +function Ri(e, t) { + if (Mi(e) && Mi(t)) { + for (var n = e.length, r = +t.length, i = 0; i < r; i++) e[n++] = t[i]; + return e.length = n, e + } +} + +function Mi(e) { + if (Array.isArray(e)) return !0; + if ("object" != typeof e || !Object.prototype.hasOwnProperty.call(e, "length") || "number" != typeof e.length || e.length < 0) return !1; + for (var t = 0; t < e.length; t++) + if (!(t in e)) return !1; + return !0 +} +var Pi, xi = Object.freeze({ + __proto__: null, + html: Oi, + xml: yi, + text: Li, + parseHTML: ki, + root: vi, + contains: Di, + merge: Ri, + jp: function(e, t) { + return He({ + path: e, + json: t + }) + }, + jpo: function(e) { + return He(e) + }, + jinja2: function(e, t) { + return Ii(e, t) + } +}); + +function wi(e) { + return null != e.cheerio +} + +function Bi(e, t) { + for (var n = e.length, r = 0; r < n; r++) t(e[r], r); + return e +} + +function Fi(e) { + var t = "length" in e ? Array.prototype.map.call(e, (function(e) { + return v(e, !0) + })) : [v(e, !0)], + n = new N(t); + return t.forEach((function(e) { + e.parent = n + })), t +} + +function Ui(e) { + var t = e.indexOf("<"); + if (t < 0 || t > e.length - 3) return !1; + var n = e.charCodeAt(t + 1); + return (n >= Pi.LowerA && n <= Pi.LowerZ || n >= Pi.UpperA && n <= Pi.UpperZ || n === Pi.Exclamation) && e.includes(">", t + 2) +}! function(e) { + e[e.LowerA = 97] = "LowerA", e[e.LowerZ = 122] = "LowerZ", e[e.UpperA = 65] = "UpperA", e[e.UpperZ = 90] = "UpperZ", e[e.Exclamation = 33] = "Exclamation" +}(Pi || (Pi = {})); +var Hi = Object.prototype.hasOwnProperty, + Gi = /\s+/, + Yi = { + null: null, + true: !0, + false: !1 + }, + qi = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + Ki = /^{[^]*}$|^\[[^]*]$/; + +function ji(e, t, n) { + var r; + if (e && I(e)) return null !== (r = e.attribs) && void 0 !== r || (e.attribs = {}), t ? Hi.call(e.attribs, t) ? !n && qi.test(t) ? t : e.attribs[t] : "option" === e.name && "value" === t ? Li(e.children) : "input" !== e.name || "radio" !== e.attribs.type && "checkbox" !== e.attribs.type || "value" !== t ? void 0 : "on" : e.attribs +} + +function Vi(e, t, n) { + null === n ? zi(e, t) : e.attribs[t] = "".concat(n) +} + +function Wi(e, t, n) { + return t in e ? e[t] : !n && qi.test(t) ? void 0 !== ji(e, t, !1) : ji(e, t, n) +} + +function Qi(e, t, n, r) { + t in e ? e[t] = n : Vi(e, t, !r && qi.test(t) ? n ? "" : null : "".concat(n)) +} + +function Xi(e, t, n) { + var r, i = e; + null !== (r = i.data) && void 0 !== r || (i.data = {}), "object" == typeof t ? Object.assign(i.data, t) : "string" == typeof t && void 0 !== n && (i.data[t] = n) +} + +function $i(e, t) { + var n, r, i, s; + null == t ? r = (n = Object.keys(e.attribs).filter((function(e) { + return e.startsWith("data-") + }))).map((function(e) { + return e.slice("data-".length).replace(/[_.-](\w|$)/g, (function(e, t) { + return t.toUpperCase() + })) + })) : (n = ["data-" + (s = t, s.replace(/[A-Z]/g, "-$&").toLowerCase())], r = [t]); + for (var a = 0; a < n.length; ++a) { + var o = n[a], + c = r[a]; + if (Hi.call(e.attribs, o) && !Hi.call(e.data, c)) { + if (i = e.attribs[o], Hi.call(Yi, i)) i = Yi[i]; + else if (i === String(Number(i))) i = Number(i); + else if (Ki.test(i)) try { + i = JSON.parse(i) + } catch (e) {} + e.data[c] = i + } + } + return null == t ? e.data : i +} + +function zi(e, t) { + e.attribs && Hi.call(e.attribs, t) && delete e.attribs[t] +} + +function Ji(e) { + return e ? e.trim().split(Gi) : [] +} +var Zi, es, ts = Object.freeze({ + __proto__: null, + attr: function(e, t) { + if ("object" == typeof e || void 0 !== t) { + if ("function" == typeof t) { + if ("string" != typeof e) throw new Error("Bad combination of arguments."); + return Bi(this, (function(n, r) { + I(n) && Vi(n, e, t.call(n, r, n.attribs[e])) + })) + } + return Bi(this, (function(n) { + I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) { + var r = e[t]; + Vi(n, t, r) + })) : Vi(n, e, t)) + })) + } + return arguments.length > 1 ? this : ji(this[0], e, this.options.xmlMode) + }, + prop: function(e, t) { + var n, r = this; + if ("string" == typeof e && void 0 === t) { + var i = this[0]; + if (!i || !I(i)) return; + switch (e) { + case "style": + var s = this.css(), + a = Object.keys(s); + return a.forEach((function(e, t) { + s[t] = e + })), s.length = a.length, s; + case "tagName": + case "nodeName": + return i.name.toUpperCase(); + case "href": + case "src": + var o = null === (n = i.attribs) || void 0 === n ? void 0 : n[e]; + return "undefined" == typeof URL || ("href" !== e || "a" !== i.tagName && "link" !== i.name) && ("src" !== e || "img" !== i.tagName && "iframe" !== i.tagName && "audio" !== i.tagName && "video" !== i.tagName && "source" !== i.tagName) || void 0 === o || !this.options.baseURI ? o : new URL(o, this.options.baseURI).href; + case "innerText": + return J(i); + case "textContent": + return z(i); + case "outerHTML": + return this.clone().wrap("").parent().html(); + case "innerHTML": + return this.html(); + default: + return Wi(i, e, this.options.xmlMode) + } + } + if ("object" == typeof e || void 0 !== t) { + if ("function" == typeof t) { + if ("object" == typeof e) throw new Error("Bad combination of arguments."); + return Bi(this, (function(n, i) { + I(n) && Qi(n, e, t.call(n, i, Wi(n, e, r.options.xmlMode)), r.options.xmlMode) + })) + } + return Bi(this, (function(n) { + I(n) && ("object" == typeof e ? Object.keys(e).forEach((function(t) { + var i = e[t]; + Qi(n, t, i, r.options.xmlMode) + })) : Qi(n, e, t, r.options.xmlMode)) + })) + } + }, + data: function(e, t) { + var n, r = this[0]; + if (r && I(r)) { + var i = r; + return null !== (n = i.data) && void 0 !== n || (i.data = {}), e ? "object" == typeof e || void 0 !== t ? (Bi(this, (function(n) { + I(n) && ("object" == typeof e ? Xi(n, e) : Xi(n, e, t)) + })), this) : Hi.call(i.data, e) ? i.data[e] : $i(i, e) : $i(i) + } + }, + val: function(e) { + var t = 0 === arguments.length, + n = this[0]; + if (!n || !I(n)) return t ? void 0 : this; + switch (n.name) { + case "textarea": + return this.text(e); + case "select": + var r = this.find("option:selected"); + if (!t) { + if (null == this.attr("multiple") && "object" == typeof e) return this; + this.find("option").removeAttr("selected"); + for (var i = "object" != typeof e ? [e] : e, s = 0; s < i.length; s++) this.find('option[value="'.concat(i[s], '"]')).attr("selected", ""); + return this + } + return this.attr("multiple") ? r.toArray().map((function(e) { + return Li(e.children) + })) : r.attr("value"); + case "input": + case "option": + return t ? this.attr("value") : this.attr("value", e) + } + }, + removeAttr: function(e) { + for (var t = Ji(e), n = function(e) { + Bi(r, (function(n) { + I(n) && zi(n, t[e]) + })) + }, r = this, i = 0; i < t.length; i++) n(i); + return this + }, + hasClass: function(e) { + return this.toArray().some((function(t) { + var n = I(t) && t.attribs.class, + r = -1; + if (n && e.length) + for (; + (r = n.indexOf(e, r + 1)) > -1;) { + var i = r + e.length; + if ((0 === r || Gi.test(n[r - 1])) && (i === n.length || Gi.test(n[i]))) return !0 + } + return !1 + })) + }, + addClass: function e(t) { + if ("function" == typeof t) return Bi(this, (function(n, r) { + if (I(n)) { + var i = n.attribs.class || ""; + e.call([n], t.call(n, r, i)) + } + })); + if (!t || "string" != typeof t) return this; + for (var n = t.split(Gi), r = this.length, i = 0; i < r; i++) { + var s = this[i]; + if (I(s)) { + var a = ji(s, "class", !1); + if (a) { + for (var o = " ".concat(a, " "), c = 0; c < n.length; c++) { + var l = "".concat(n[c], " "); + o.includes(" ".concat(l)) || (o += l) + } + Vi(s, "class", o.trim()) + } else Vi(s, "class", n.join(" ").trim()) + } + } + return this + }, + removeClass: function e(t) { + if ("function" == typeof t) return Bi(this, (function(n, r) { + I(n) && e.call([n], t.call(n, r, n.attribs.class || "")) + })); + var n = Ji(t), + r = n.length, + i = 0 === arguments.length; + return Bi(this, (function(e) { + if (I(e)) + if (i) e.attribs.class = ""; + else { + for (var t = Ji(e.attribs.class), s = !1, a = 0; a < r; a++) { + var o = t.indexOf(n[a]); + o >= 0 && (t.splice(o, 1), s = !0, a--) + } + s && (e.attribs.class = t.join(" ")) + } + })) + }, + toggleClass: function e(t, n) { + if ("function" == typeof t) return Bi(this, (function(r, i) { + I(r) && e.call([r], t.call(r, i, r.attribs.class || "", n), n) + })); + if (!t || "string" != typeof t) return this; + for (var r = t.split(Gi), i = r.length, s = "boolean" == typeof n ? n ? 1 : -1 : 0, a = this.length, o = 0; o < a; o++) { + var c = this[o]; + if (I(c)) { + for (var l = Ji(c.attribs.class), h = 0; h < i; h++) { + var u = l.indexOf(r[h]); + s >= 0 && u < 0 ? l.push(r[h]) : s <= 0 && u >= 0 && l.splice(u, 1) + } + c.attribs.class = l.join(" ") + } + } + return this + } +}); +! function(e) { + e.Attribute = "attribute", e.Pseudo = "pseudo", e.PseudoElement = "pseudo-element", e.Tag = "tag", e.Universal = "universal", e.Adjacent = "adjacent", e.Child = "child", e.Descendant = "descendant", e.Parent = "parent", e.Sibling = "sibling", e.ColumnCombinator = "column-combinator" +}(Zi || (Zi = {})), +function(e) { + e.Any = "any", e.Element = "element", e.End = "end", e.Equals = "equals", e.Exists = "exists", e.Hyphen = "hyphen", e.Not = "not", e.Start = "start" +}(es || (es = {})); +const ns = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/, + rs = /\\([\da-f]{1,6}\s?|(\s)|.)/gi, + is = new Map([ + [126, es.Element], + [94, es.Start], + [36, es.End], + [42, es.Any], + [33, es.Not], + [124, es.Hyphen] + ]), + ss = new Set(["has", "not", "matches", "is", "where", "host", "host-context"]); + +function as(e) { + switch (e.type) { + case Zi.Adjacent: + case Zi.Child: + case Zi.Descendant: + case Zi.Parent: + case Zi.Sibling: + case Zi.ColumnCombinator: + return !0; + default: + return !1 + } +} +const os = new Set(["contains", "icontains"]); + +function cs(e, t, n) { + const r = parseInt(t, 16) - 65536; + return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) +} + +function ls(e) { + return e.replace(rs, cs) +} + +function hs(e) { + return 39 === e || 34 === e +} + +function us(e) { + return 32 === e || 9 === e || 10 === e || 12 === e || 13 === e +} + +function ps(e) { + const t = [], + n = fs(t, `${e}`, 0); + if (n < e.length) throw new Error(`Unmatched selector: ${e.slice(n)}`); + return t +} + +function fs(e, t, n) { + let r = []; + + function i(e) { + const r = t.slice(n + e).match(ns); + if (!r) throw new Error(`Expected name, found ${t.slice(n)}`); + const [i] = r; + return n += e + i.length, ls(i) + } + + function s(e) { + for (n += e; n < t.length && us(t.charCodeAt(n));) n++ + } + + function a() { + const e = n += 1; + let r = 1; + for (; r > 0 && n < t.length; n++) 40 !== t.charCodeAt(n) || o(n) ? 41 !== t.charCodeAt(n) || o(n) || r-- : r++; + if (r) throw new Error("Parenthesis not matched"); + return ls(t.slice(e, n - 1)) + } + + function o(e) { + let n = 0; + for (; 92 === t.charCodeAt(--e);) n++; + return 1 == (1 & n) + } + + function c() { + if (r.length > 0 && as(r[r.length - 1])) throw new Error("Did not expect successive traversals.") + } + + function l(e) { + r.length > 0 && r[r.length - 1].type === Zi.Descendant ? r[r.length - 1].type = e : (c(), r.push({ + type: e + })) + } + + function h(e, t) { + r.push({ + type: Zi.Attribute, + name: e, + action: t, + value: i(1), + namespace: null, + ignoreCase: "quirks" + }) + } + + function u() { + if (r.length && r[r.length - 1].type === Zi.Descendant && r.pop(), 0 === r.length) throw new Error("Empty sub-selector"); + e.push(r) + } + if (s(0), t.length === n) return n; + e: for (; n < t.length;) { + const e = t.charCodeAt(n); + switch (e) { + case 32: + case 9: + case 10: + case 12: + case 13: + 0 !== r.length && r[0].type === Zi.Descendant || (c(), r.push({ + type: Zi.Descendant + })), s(1); + break; + case 62: + l(Zi.Child), s(1); + break; + case 60: + l(Zi.Parent), s(1); + break; + case 126: + l(Zi.Sibling), s(1); + break; + case 43: + l(Zi.Adjacent), s(1); + break; + case 46: + h("class", es.Element); + break; + case 35: + h("id", es.Equals); + break; + case 91: { + let e; + s(1); + let a = null; + 124 === t.charCodeAt(n) ? e = i(1) : t.startsWith("*|", n) ? (a = "*", e = i(2)) : (e = i(0), 124 === t.charCodeAt(n) && 61 !== t.charCodeAt(n + 1) && (a = e, e = i(1))), s(0); + let c = es.Exists; + const l = is.get(t.charCodeAt(n)); + if (l) { + if (c = l, 61 !== t.charCodeAt(n + 1)) throw new Error("Expected `=`"); + s(2) + } else 61 === t.charCodeAt(n) && (c = es.Equals, s(1)); + let h = "", + u = null; + if ("exists" !== c) { + if (hs(t.charCodeAt(n))) { + const e = t.charCodeAt(n); + let r = n + 1; + for (; r < t.length && (t.charCodeAt(r) !== e || o(r));) r += 1; + if (t.charCodeAt(r) !== e) throw new Error("Attribute value didn't end"); + h = ls(t.slice(n + 1, r)), n = r + 1 + } else { + const e = n; + for (; n < t.length && (!us(t.charCodeAt(n)) && 93 !== t.charCodeAt(n) || o(n));) n += 1; + h = ls(t.slice(e, n)) + } + s(0); + const e = 32 | t.charCodeAt(n); + 115 === e ? (u = !1, s(1)) : 105 === e && (u = !0, s(1)) + } + if (93 !== t.charCodeAt(n)) throw new Error("Attribute selector didn't terminate"); + n += 1; + const p = { + type: Zi.Attribute, + name: e, + action: c, + value: h, + namespace: a, + ignoreCase: u + }; + r.push(p); + break + } + case 58: { + if (58 === t.charCodeAt(n + 1)) { + r.push({ + type: Zi.PseudoElement, + name: i(2).toLowerCase(), + data: 40 === t.charCodeAt(n) ? a() : null + }); + continue + } + const e = i(1).toLowerCase(); + let s = null; + if (40 === t.charCodeAt(n)) + if (ss.has(e)) { + if (hs(t.charCodeAt(n + 1))) throw new Error(`Pseudo-selector ${e} cannot be quoted`); + if (s = [], n = fs(s, t, n + 1), 41 !== t.charCodeAt(n)) throw new Error(`Missing closing parenthesis in :${e} (${t})`); + n += 1 + } else { + if (s = a(), os.has(e)) { + const e = s.charCodeAt(0); + e === s.charCodeAt(s.length - 1) && hs(e) && (s = s.slice(1, -1)) + } + s = ls(s) + } r.push({ + type: Zi.Pseudo, + name: e, + data: s + }); + break + } + case 44: + u(), r = [], s(1); + break; + default: { + if (t.startsWith("/*", n)) { + const e = t.indexOf("*/", n + 2); + if (e < 0) throw new Error("Comment was not terminated"); + n = e + 2, 0 === r.length && s(0); + break + } + let a, o = null; + if (42 === e) n += 1, a = "*"; + else if (124 === e) { + if (a = "", 124 === t.charCodeAt(n + 1)) { + l(Zi.ColumnCombinator), s(2); + break + } + } else { + if (!ns.test(t.slice(n))) break e; + a = i(0) + } + 124 === t.charCodeAt(n) && 124 !== t.charCodeAt(n + 1) && (o = a, 42 === t.charCodeAt(n + 1) ? (a = "*", n += 2) : a = i(1)), r.push("*" === a ? { + type: Zi.Universal, + namespace: o + } : { + type: Zi.Tag, + name: a, + namespace: o + }) + } + } + } + return u(), n +} +var ds = { + trueFunc: function() { + return !0 + }, + falseFunc: function() { + return !1 + } + }, + Es = ds.trueFunc; +const ms = new Map([ + [Zi.Universal, 50], + [Zi.Tag, 30], + [Zi.Attribute, 1], + [Zi.Pseudo, 0] +]); + +function Ts(e) { + return !ms.has(e.type) +} +const _s = new Map([ + [es.Exists, 10], + [es.Equals, 8], + [es.Not, 7], + [es.Start, 6], + [es.End, 6], + [es.Any, 5] +]); + +function As(e) { + const t = e.map(gs); + for (let n = 1; n < e.length; n++) { + const r = t[n]; + if (!(r < 0)) + for (let i = n - 1; i >= 0 && r < t[i]; i--) { + const n = e[i + 1]; + e[i + 1] = e[i], e[i] = n, t[i + 1] = t[i], t[i] = r + } + } +} + +function gs(e) { + var t, n; + let r = null !== (t = ms.get(e.type)) && void 0 !== t ? t : -1; + return e.type === Zi.Attribute ? (r = null !== (n = _s.get(e.action)) && void 0 !== n ? n : 4, e.action === es.Equals && "id" === e.name && (r = 9), e.ignoreCase && (r >>= 1)) : e.type === Zi.Pseudo && (e.data ? "has" === e.name || "contains" === e.name ? r = 0 : Array.isArray(e.data) ? (r = Math.min(...e.data.map((e => Math.min(...e.map(gs))))), r < 0 && (r = 0)) : r = 2 : r = 3), r +} +const Ns = /[-[\]{}()*+?.,\\^$|#\s]/g; + +function Cs(e) { + return e.replace(Ns, "\\$&") +} +const Is = new Set(["accept", "accept-charset", "align", "alink", "axis", "bgcolor", "charset", "checked", "clear", "codetype", "color", "compact", "declare", "defer", "dir", "direction", "disabled", "enctype", "face", "frame", "hreflang", "http-equiv", "lang", "language", "link", "media", "method", "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly", "rel", "rev", "rules", "scope", "scrolling", "selected", "shape", "target", "text", "type", "valign", "valuetype", "vlink"]); + +function Ss(e, t) { + return "boolean" == typeof e.ignoreCase ? e.ignoreCase : "quirks" === e.ignoreCase ? !!t.quirksMode : !t.xmlMode && Is.has(e.name) +} +const bs = { + equals(e, t, n) { + const { + adapter: r + } = n, { + name: i + } = t; + let { + value: s + } = t; + return Ss(t, n) ? (s = s.toLowerCase(), t => { + const n = r.getAttributeValue(t, i); + return null != n && n.length === s.length && n.toLowerCase() === s && e(t) + }) : t => r.getAttributeValue(t, i) === s && e(t) + }, + hyphen(e, t, n) { + const { + adapter: r + } = n, { + name: i + } = t; + let { + value: s + } = t; + const a = s.length; + return Ss(t, n) ? (s = s.toLowerCase(), function(t) { + const n = r.getAttributeValue(t, i); + return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a).toLowerCase() === s && e(t) + }) : function(t) { + const n = r.getAttributeValue(t, i); + return null != n && (n.length === a || "-" === n.charAt(a)) && n.substr(0, a) === s && e(t) + } + }, + element(e, t, n) { + const { + adapter: r + } = n, { + name: i, + value: s + } = t; + if (/\s/.test(s)) return ds.falseFunc; + const a = new RegExp(`(?:^|\\s)${Cs(s)}(?:$|\\s)`, Ss(t, n) ? "i" : ""); + return function(t) { + const n = r.getAttributeValue(t, i); + return null != n && n.length >= s.length && a.test(n) && e(t) + } + }, + exists: (e, { + name: t + }, { + adapter: n + }) => r => n.hasAttrib(r, t) && e(r), + start(e, t, n) { + const { + adapter: r + } = n, { + name: i + } = t; + let { + value: s + } = t; + const a = s.length; + return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => { + const n = r.getAttributeValue(t, i); + return null != n && n.length >= a && n.substr(0, a).toLowerCase() === s && e(t) + }) : t => { + var n; + return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.startsWith(s)) && e(t) + } + }, + end(e, t, n) { + const { + adapter: r + } = n, { + name: i + } = t; + let { + value: s + } = t; + const a = -s.length; + return 0 === a ? ds.falseFunc : Ss(t, n) ? (s = s.toLowerCase(), t => { + var n; + return (null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.substr(a).toLowerCase()) === s && e(t) + }) : t => { + var n; + return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.endsWith(s)) && e(t) + } + }, + any(e, t, n) { + const { + adapter: r + } = n, { + name: i, + value: s + } = t; + if ("" === s) return ds.falseFunc; + if (Ss(t, n)) { + const t = new RegExp(Cs(s), "i"); + return function(n) { + const a = r.getAttributeValue(n, i); + return null != a && a.length >= s.length && t.test(a) && e(n) + } + } + return t => { + var n; + return !!(null === (n = r.getAttributeValue(t, i)) || void 0 === n ? void 0 : n.includes(s)) && e(t) + } + }, + not(e, t, n) { + const { + adapter: r + } = n, { + name: i + } = t; + let { + value: s + } = t; + return "" === s ? t => !!r.getAttributeValue(t, i) && e(t) : Ss(t, n) ? (s = s.toLowerCase(), t => { + const n = r.getAttributeValue(t, i); + return (null == n || n.length !== s.length || n.toLowerCase() !== s) && e(t) + }) : t => r.getAttributeValue(t, i) !== s && e(t) + } +}; +var Os = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.parse = void 0; + var n = new Set([9, 10, 12, 13, 32]), + r = "0".charCodeAt(0), + i = "9".charCodeAt(0); + t.parse = function(e) { + if ("even" === (e = e.trim().toLowerCase())) return [2, 0]; + if ("odd" === e) return [2, 1]; + var t = 0, + s = 0, + a = c(), + o = l(); + if (t < e.length && "n" === e.charAt(t) && (t++, s = a * (null != o ? o : 1), h(), t < e.length ? (a = c(), h(), o = l()) : a = o = 0), null === o || t < e.length) throw new Error("n-th rule couldn't be parsed ('" + e + "')"); + return [s, a * o]; + + function c() { + return "-" === e.charAt(t) ? (t++, -1) : ("+" === e.charAt(t) && t++, 1) + } + + function l() { + for (var n = t, s = 0; t < e.length && e.charCodeAt(t) >= r && e.charCodeAt(t) <= i;) s = 10 * s + (e.charCodeAt(t) - r), t++; + return t === n ? null : s + } + + function h() { + for (; t < e.length && n.has(e.charCodeAt(t));) t++ + } + } +})); +qe(Os), Os.parse; +var ys = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.compile = void 0, t.compile = function(e) { + var t = e[0], + n = e[1] - 1; + if (n < 0 && t <= 0) return ds.falseFunc; + if (-1 === t) return function(e) { + return e <= n + }; + if (0 === t) return function(e) { + return e === n + }; + if (1 === t) return n < 0 ? ds.trueFunc : function(e) { + return e >= n + }; + var r = Math.abs(t), + i = (n % r + r) % r; + return t > 1 ? function(e) { + return e >= n && e % r === i + } : function(e) { + return e <= n && e % r === i + } + } +})); +qe(ys), ys.compile; +var Ls = Os, + ks = ys, + vs = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.compile = t.parse = void 0, Object.defineProperty(t, "parse", { + enumerable: !0, + get: function() { + return Ls.parse + } + }), Object.defineProperty(t, "compile", { + enumerable: !0, + get: function() { + return ks.compile + } + }), t.default = function(e) { + return (0, ks.compile)((0, Ls.parse)(e)) + } + })), + Ds = qe(vs); + +function Rs(e, t) { + return n => { + const r = t.getParent(n); + return null != r && t.isTag(r) && e(n) + } +} +vs.compile, vs.parse; +const Ms = { + contains: (e, t, { + adapter: n + }) => function(r) { + return e(r) && n.getText(r).includes(t) + }, + icontains(e, t, { + adapter: n + }) { + const r = t.toLowerCase(); + return function(t) { + return e(t) && n.getText(t).toLowerCase().includes(r) + } + }, + "nth-child"(e, t, { + adapter: n, + equals: r + }) { + const i = Ds(t); + return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { + const s = n.getSiblings(t); + let a = 0; + for (let e = 0; e < s.length && !r(t, s[e]); e++) n.isTag(s[e]) && a++; + return i(a) && e(t) + } + }, + "nth-last-child"(e, t, { + adapter: n, + equals: r + }) { + const i = Ds(t); + return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { + const s = n.getSiblings(t); + let a = 0; + for (let e = s.length - 1; e >= 0 && !r(t, s[e]); e--) n.isTag(s[e]) && a++; + return i(a) && e(t) + } + }, + "nth-of-type"(e, t, { + adapter: n, + equals: r + }) { + const i = Ds(t); + return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { + const s = n.getSiblings(t); + let a = 0; + for (let e = 0; e < s.length; e++) { + const i = s[e]; + if (r(t, i)) break; + n.isTag(i) && n.getName(i) === n.getName(t) && a++ + } + return i(a) && e(t) + } + }, + "nth-last-of-type"(e, t, { + adapter: n, + equals: r + }) { + const i = Ds(t); + return i === ds.falseFunc ? ds.falseFunc : i === ds.trueFunc ? Rs(e, n) : function(t) { + const s = n.getSiblings(t); + let a = 0; + for (let e = s.length - 1; e >= 0; e--) { + const i = s[e]; + if (r(t, i)) break; + n.isTag(i) && n.getName(i) === n.getName(t) && a++ + } + return i(a) && e(t) + } + }, + root: (e, t, { + adapter: n + }) => t => { + const r = n.getParent(t); + return (null == r || !n.isTag(r)) && e(t) + }, + scope(e, t, n, r) { + const { + equals: i + } = n; + return r && 0 !== r.length ? 1 === r.length ? t => i(r[0], t) && e(t) : t => r.includes(t) && e(t) : Ms.root(e, t, n) + }, + hover: Ps("isHovered"), + visited: Ps("isVisited"), + active: Ps("isActive") +}; + +function Ps(e) { + return function(t, n, { + adapter: r + }) { + const i = r[e]; + return "function" != typeof i ? ds.falseFunc : function(e) { + return i(e) && t(e) + } + } +} +const xs = { + empty: (e, { + adapter: t + }) => !t.getChildren(e).some((e => t.isTag(e) || "" !== t.getText(e))), + "first-child"(e, { + adapter: t, + equals: n + }) { + if (t.prevElementSibling) return null == t.prevElementSibling(e); + const r = t.getSiblings(e).find((e => t.isTag(e))); + return null != r && n(e, r) + }, + "last-child"(e, { + adapter: t, + equals: n + }) { + const r = t.getSiblings(e); + for (let i = r.length - 1; i >= 0; i--) { + if (n(e, r[i])) return !0; + if (t.isTag(r[i])) break + } + return !1 + }, + "first-of-type"(e, { + adapter: t, + equals: n + }) { + const r = t.getSiblings(e), + i = t.getName(e); + for (let s = 0; s < r.length; s++) { + const a = r[s]; + if (n(e, a)) return !0; + if (t.isTag(a) && t.getName(a) === i) break + } + return !1 + }, + "last-of-type"(e, { + adapter: t, + equals: n + }) { + const r = t.getSiblings(e), + i = t.getName(e); + for (let s = r.length - 1; s >= 0; s--) { + const a = r[s]; + if (n(e, a)) return !0; + if (t.isTag(a) && t.getName(a) === i) break + } + return !1 + }, + "only-of-type"(e, { + adapter: t, + equals: n + }) { + const r = t.getName(e); + return t.getSiblings(e).every((i => n(e, i) || !t.isTag(i) || t.getName(i) !== r)) + }, + "only-child": (e, { + adapter: t, + equals: n + }) => t.getSiblings(e).every((r => n(e, r) || !t.isTag(r))) +}; + +function ws(e, t, n, r) { + if (null === n) { + if (e.length > r) throw new Error(`Pseudo-class :${t} requires an argument`) + } else if (e.length === r) throw new Error(`Pseudo-class :${t} doesn't have any arguments`) +} +const Bs = { + "any-link": ":is(a, area, link)[href]", + link: ":any-link:not(:visited)", + disabled: ":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )", + enabled: ":not(:disabled)", + checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", + required: ":is(input, select, textarea)[required]", + optional: ":is(input, select, textarea):not([required])", + selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", + checkbox: "[type=checkbox]", + file: "[type=file]", + password: "[type=password]", + radio: "[type=radio]", + reset: "[type=reset]", + image: "[type=image]", + submit: "[type=submit]", + parent: ":not(:empty)", + header: ":is(h1, h2, h3, h4, h5, h6)", + button: ":is(button, input[type=button])", + input: ":is(input, textarea, select, button)", + text: "input:is(:not([type!='']), [type=text])" + }, + Fs = {}; + +function Us(e, t) { + const n = t.getSiblings(e); + if (n.length <= 1) return []; + const r = n.indexOf(e); + return r < 0 || r === n.length - 1 ? [] : n.slice(r + 1).filter(t.isTag) +} + +function Hs(e) { + return { + xmlMode: !!e.xmlMode, + lowerCaseAttributeNames: !!e.lowerCaseAttributeNames, + lowerCaseTags: !!e.lowerCaseTags, + quirksMode: !!e.quirksMode, + cacheResults: !!e.cacheResults, + pseudos: e.pseudos, + adapter: e.adapter, + equals: e.equals + } +} +const Gs = (e, t, n, r, i) => { + const s = i(t, Hs(n), r); + return s === ds.trueFunc ? e : s === ds.falseFunc ? ds.falseFunc : t => s(t) && e(t) + }, + Ys = { + is: Gs, + matches: Gs, + where: Gs, + not(e, t, n, r, i) { + const s = i(t, Hs(n), r); + return s === ds.falseFunc ? e : s === ds.trueFunc ? ds.falseFunc : t => !s(t) && e(t) + }, + has(e, t, n, r, i) { + const { + adapter: s + } = n, a = Hs(n); + a.relativeSelector = !0; + const o = t.some((e => e.some(Ts))) ? [Fs] : void 0, + c = i(t, a, o); + if (c === ds.falseFunc) return ds.falseFunc; + const l = function(e, t) { + return e === ds.falseFunc ? ds.falseFunc : n => t.isTag(n) && e(n) + }(c, s); + if (o && c !== ds.trueFunc) { + const { + shouldTestNextSiblings: t = !1 + } = c; + return n => { + if (!e(n)) return !1; + o[0] = n; + const r = s.getChildren(n), + i = t ? [...r, ...Us(n, s)] : r; + return s.existsOne(l, i) + } + } + return t => e(t) && s.existsOne(l, s.getChildren(t)) + } + }; + +function qs(e, t) { + const n = t.getParent(e); + return n && t.isTag(n) ? n : null +} + +function Ks(e, t, n, r, i) { + const { + adapter: s, + equals: a + } = n; + switch (t.type) { + case Zi.PseudoElement: + throw new Error("Pseudo-elements are not supported by css-select"); + case Zi.ColumnCombinator: + throw new Error("Column combinators are not yet supported by css-select"); + case Zi.Attribute: + if (null != t.namespace) throw new Error("Namespaced attributes are not yet supported by css-select"); + return n.xmlMode && !n.lowerCaseAttributeNames || (t.name = t.name.toLowerCase()), bs[t.action](e, t, n); + case Zi.Pseudo: + return function(e, t, n, r, i) { + var s; + const { + name: a, + data: o + } = t; + if (Array.isArray(o)) { + if (!(a in Ys)) throw new Error(`Unknown pseudo-class :${a}(${o})`); + return Ys[a](e, o, n, r, i) + } + const c = null === (s = n.pseudos) || void 0 === s ? void 0 : s[a], + l = "string" == typeof c ? c : Bs[a]; + if ("string" == typeof l) { + if (null != o) throw new Error(`Pseudo ${a} doesn't have any arguments`); + const t = ps(l); + return Ys.is(e, t, n, r, i) + } + if ("function" == typeof c) return ws(c, a, o, 1), t => c(t, o) && e(t); + if (a in Ms) return Ms[a](e, o, n, r); + if (a in xs) { + const t = xs[a]; + return ws(t, a, o, 2), r => t(r, n, o) && e(r) + } + throw new Error(`Unknown pseudo-class :${a}`) + }(e, t, n, r, i); + case Zi.Tag: { + if (null != t.namespace) throw new Error("Namespaced tag names are not yet supported by css-select"); + let { + name: r + } = t; + return n.xmlMode && !n.lowerCaseTags || (r = r.toLowerCase()), + function(t) { + return s.getName(t) === r && e(t) + } + } + case Zi.Descendant: { + if (!1 === n.cacheResults || "undefined" == typeof WeakSet) return function(t) { + let n = t; + for (; n = qs(n, s);) + if (e(n)) return !0; + return !1 + }; + const t = new WeakSet; + return function(n) { + let r = n; + for (; r = qs(r, s);) + if (!t.has(r)) { + if (s.isTag(r) && e(r)) return !0; + t.add(r) + } return !1 + } + } + case "_flexibleDescendant": + return function(t) { + let n = t; + do { + if (e(n)) return !0 + } while (n = qs(n, s)); + return !1 + }; + case Zi.Parent: + return function(t) { + return s.getChildren(t).some((t => s.isTag(t) && e(t))) + }; + case Zi.Child: + return function(t) { + const n = s.getParent(t); + return null != n && s.isTag(n) && e(n) + }; + case Zi.Sibling: + return function(t) { + const n = s.getSiblings(t); + for (let r = 0; r < n.length; r++) { + const i = n[r]; + if (a(t, i)) break; + if (s.isTag(i) && e(i)) return !0 + } + return !1 + }; + case Zi.Adjacent: + return s.prevElementSibling ? function(t) { + const n = s.prevElementSibling(t); + return null != n && e(n) + } : function(t) { + const n = s.getSiblings(t); + let r; + for (let e = 0; e < n.length; e++) { + const i = n[e]; + if (a(t, i)) break; + s.isTag(i) && (r = i) + } + return !!r && e(r) + }; + case Zi.Universal: + if (null != t.namespace && "*" !== t.namespace) throw new Error("Namespaced universal selectors are not yet supported by css-select"); + return e + } +} + +function js(e) { + return e.type === Zi.Pseudo && ("scope" === e.name || Array.isArray(e.data) && e.data.some((e => e.some(js)))) +} +const Vs = { + type: Zi.Descendant + }, + Ws = { + type: "_flexibleDescendant" + }, + Qs = { + type: Zi.Pseudo, + name: "scope", + data: null + }; + +function Xs(e, t, n) { + var r; + e.forEach(As), n = null !== (r = t.context) && void 0 !== r ? r : n; + const i = Array.isArray(n), + s = n && (Array.isArray(n) ? n : [n]); + if (!1 !== t.relativeSelector) ! function(e, { + adapter: t + }, n) { + const r = !!(null == n ? void 0 : n.every((e => { + const n = t.isTag(e) && t.getParent(e); + return e === Fs || n && t.isTag(n) + }))); + for (const t of e) { + if (t.length > 0 && Ts(t[0]) && t[0].type !== Zi.Descendant); + else { + if (!r || t.some(js)) continue; + t.unshift(Vs) + } + t.unshift(Qs) + } + }(e, t, s); + else if (e.some((e => e.length > 0 && Ts(e[0])))) throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); + let a = !1; + const o = e.map((e => { + if (e.length >= 2) { + const [t, n] = e; + t.type !== Zi.Pseudo || "scope" !== t.name || (i && n.type === Zi.Descendant ? e[1] = Ws : n.type !== Zi.Adjacent && n.type !== Zi.Sibling || (a = !0)) + } + return function(e, t, n) { + var r; + return e.reduce(((e, r) => e === ds.falseFunc ? ds.falseFunc : Ks(e, r, t, n, Xs)), null !== (r = t.rootFunc) && void 0 !== r ? r : ds.trueFunc) + }(e, t, s) + })).reduce($s, ds.falseFunc); + return o.shouldTestNextSiblings = a, o +} + +function $s(e, t) { + return t === ds.falseFunc || e === ds.trueFunc ? e : e === ds.falseFunc || t === ds.trueFunc ? t : function(n) { + return e(n) || t(n) + } +} +const zs = (e, t) => e === t, + Js = { + adapter: Se, + equals: zs + }; +const Zs = (ea = Xs, function(e, t, n) { + const r = function(e) { + var t, n, r, i; + const s = null != e ? e : Js; + return null !== (t = s.adapter) && void 0 !== t || (s.adapter = Se), null !== (n = s.equals) && void 0 !== n || (s.equals = null !== (i = null === (r = s.adapter) || void 0 === r ? void 0 : r.equals) && void 0 !== i ? i : zs), s + }(t); + return ea(e, r, n) +}); +var ea; + +function ta(e, t, n = !1) { + return n && (e = function(e, t) { + const n = Array.isArray(e) ? e.slice(0) : [e], + r = n.length; + for (let e = 0; e < r; e++) { + const r = Us(n[e], t); + n.push(...r) + } + return n + }(e, t)), Array.isArray(e) ? t.removeSubsets(e) : t.getChildren(e) +} +const na = new Set(["first", "last", "eq", "gt", "nth", "lt", "even", "odd"]); + +function ra(e) { + return "pseudo" === e.type && (!!na.has(e.name) || !("not" !== e.name || !Array.isArray(e.data)) && e.data.some((e => e.some(ra)))) +} + +function ia(e) { + const t = [], + n = []; + for (const r of e) r.some(ra) ? t.push(r) : n.push(r); + return [n, t] +} +const sa = { + type: Zi.Universal, + namespace: null + }, + aa = { + type: Zi.Pseudo, + name: "scope", + data: null + }; + +function oa(e, t, n = {}) { + return ca([e], t, n) +} + +function ca(e, t, n = {}) { + if ("function" == typeof t) return e.some(t); + const [r, i] = ia(ps(t)); + return r.length > 0 && e.some(Zs(r, n)) || i.some((t => ua(t, e, n).length > 0)) +} + +function la(e, t, n = {}) { + return ha(ps(e), t, n) +} + +function ha(e, t, n) { + if (0 === t.length) return []; + const [r, i] = ia(e); + let s; + if (r.length) { + const e = Ea(t, r, n); + if (0 === i.length) return e; + e.length && (s = new Set(e)) + } + for (let e = 0; e < i.length && (null == s ? void 0 : s.size) !== t.length; e++) { + const r = i[e], + a = s ? t.filter((e => I(e) && !s.has(e))) : t; + if (0 === a.length) break; + const o = ua(r, t, n); + if (o.length) + if (s) o.forEach((e => s.add(e))); + else { + if (e === i.length - 1) return o; + s = new Set(o) + } + } + return void 0 !== s ? s.size === t.length ? t : t.filter((e => s.has(e))) : [] +} + +function ua(e, t, n) { + var r; + if (e.some(as)) { + const i = null !== (r = n.root) && void 0 !== r ? r : function(e) { + for (; e.parent;) e = e.parent; + return e + }(t[0]), + s = { + ...n, + context: t, + relativeSelector: !1 + }; + return e.push(aa), pa(i, e, s, !0, t.length) + } + return pa(t, e, n, !1, t.length) +} + +function pa(e, t, n, r, i) { + const s = t.findIndex(ra), + a = t.slice(0, s), + o = t[s], + c = t.length - 1 === s ? i : 1 / 0, + l = function(e, t, n) { + const r = null != t ? parseInt(t, 10) : NaN; + switch (e) { + case "first": + return 1; + case "nth": + case "eq": + return isFinite(r) ? r >= 0 ? r + 1 : 1 / 0 : 0; + case "lt": + return isFinite(r) ? r >= 0 ? Math.min(r, n) : 1 / 0 : 0; + case "gt": + return isFinite(r) ? 1 / 0 : 0; + case "odd": + return 2 * n; + case "even": + return 2 * n - 1; + case "last": + case "not": + return 1 / 0 + } + }(o.name, o.data, c); + if (0 === l) return []; + const h = (0 !== a.length || Array.isArray(e) ? 0 === a.length ? (Array.isArray(e) ? e : [e]).filter(I) : r || a.some(as) ? fa(e, [a], n, l) : Ea(e, [a], n) : Z(e).filter(I)).slice(0, l); + let u = function(e, t, n, r) { + const i = "string" == typeof n ? parseInt(n, 10) : NaN; + switch (e) { + case "first": + case "lt": + return t; + case "last": + return t.length > 0 ? [t[t.length - 1]] : t; + case "nth": + case "eq": + return isFinite(i) && Math.abs(i) < t.length ? [i < 0 ? t[t.length + i] : t[i]] : []; + case "gt": + return isFinite(i) ? t.slice(i + 1) : []; + case "even": + return t.filter(((e, t) => t % 2 == 0)); + case "odd": + return t.filter(((e, t) => t % 2 == 1)); + case "not": { + const e = new Set(ha(n, t, r)); + return t.filter((t => !e.has(t))) + } + } + }(o.name, h, o.data, n); + if (0 === u.length || t.length === s + 1) return u; + const p = t.slice(s + 1), + f = p.some(as); + if (f) { + if (as(p[0])) { + const { + type: e + } = p[0]; + e !== Zi.Sibling && e !== Zi.Adjacent || (u = ta(u, Se, !0)), p.unshift(sa) + } + n = { + ...n, + relativeSelector: !1, + rootFunc: e => u.includes(e) + } + } else n.rootFunc && n.rootFunc !== Es && (n = { + ...n, + rootFunc: Es + }); + return p.some(ra) ? pa(u, p, n, !1, i) : f ? fa(u, [p], n, i) : Ea(u, [p], n) +} + +function fa(e, t, n, r) { + return da(e, Zs(t, n, e), r) +} + +function da(e, t, n = 1 / 0) { + return ae((e => I(e) && t(e)), ta(e, Se, t.shouldTestNextSiblings), !0, n) +} + +function Ea(e, t, n) { + const r = (Array.isArray(e) ? e : [e]).filter(I); + if (0 === r.length) return r; + const i = Zs(t, n); + return i === Es ? r : r.filter(i) +} +var ma = function(e, t, n) { + if (n || 2 === arguments.length) + for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]); + return e.concat(r || Array.prototype.slice.call(t)) + }, + Ta = /^\s*[~+]/; + +function _a(e) { + return function(t) { + for (var n = [], r = 1; r < arguments.length; r++) n[r - 1] = arguments[r]; + return function(r) { + var i, s = e(t, this); + return r && (s = xa(s, r, this.options.xmlMode, null === (i = this._root) || void 0 === i ? void 0 : i[0])), this._make(this.length > 1 && s.length > 1 ? n.reduce((function(e, t) { + return t(e) + }), s) : s) + } + } +} +var Aa = _a((function(e, t) { + for (var n, r = [], i = 0; i < t.length; i++) { + var s = e(t[i]); + r.push(s) + } + return (n = new Array).concat.apply(n, r) + })), + ga = _a((function(e, t) { + for (var n = [], r = 0; r < t.length; r++) { + var i = e(t[r]); + null !== i && n.push(i) + } + return n + })); + +function Na(e) { + for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; + var r = null, + i = _a((function(e, t) { + var n = []; + return Bi(t, (function(t) { + for (var i; + (i = e(t)) && !(null == r ? void 0 : r(i, n.length)); t = i) n.push(i) + })), n + })).apply(void 0, ma([e], t, !1)); + return function(e, t) { + var n = this; + r = "string" == typeof e ? function(t) { + return oa(t, e, n.options) + } : e ? Pa(e) : null; + var s = i.call(this, t); + return r = null, s + } +} + +function Ca(e) { + return Array.from(new Set(e)) +} +var Ia = ga((function(e) { + var t = e.parent; + return t && !L(t) ? t : null + }), Ca), + Sa = Aa((function(e) { + for (var t = []; e.parent && !L(e.parent);) t.push(e.parent), e = e.parent; + return t + }), Ee, (function(e) { + return e.reverse() + })), + ba = Na((function(e) { + var t = e.parent; + return t && !L(t) ? t : null + }), Ee, (function(e) { + return e.reverse() + })); +var Oa = ga((function(e) { + return ne(e) + })), + ya = Aa((function(e) { + for (var t = []; e.next;) I(e = e.next) && t.push(e); + return t + }), Ca), + La = Na((function(e) { + return ne(e) + }), Ca), + ka = ga((function(e) { + return re(e) + })), + va = Aa((function(e) { + for (var t = []; e.prev;) I(e = e.prev) && t.push(e); + return t + }), Ca), + Da = Na((function(e) { + return re(e) + }), Ca), + Ra = Aa((function(e) { + return te(e).filter((function(t) { + return I(t) && t !== e + })) + }), Ee), + Ma = Aa((function(e) { + return Z(e).filter(I) + }), Ca); + +function Pa(e) { + return "function" == typeof e ? function(t, n) { + return e.call(t, n, t) + } : wi(e) ? function(t) { + return Array.prototype.includes.call(e, t) + } : function(t) { + return e === t + } +} + +function xa(e, t, n, r) { + return "string" == typeof t ? la(t, e, { + xmlMode: n, + root: r + }) : e.filter(Pa(t)) +} +var wa = Object.freeze({ + __proto__: null, + find: function(e) { + var t; + if (!e) return this._make([]); + var n = this.toArray(); + if ("string" != typeof e) { + var r = wi(e) ? e.toArray() : [e]; + return this._make(r.filter((function(e) { + return n.some((function(t) { + return Di(t, e) + })) + }))) + } + var i = Ta.test(e) ? n : this.children().toArray(), + s = { + context: n, + root: null === (t = this._root) || void 0 === t ? void 0 : t[0], + xmlMode: this.options.xmlMode, + lowerCaseTags: this.options.lowerCaseTags, + lowerCaseAttributeNames: this.options.lowerCaseAttributeNames, + pseudos: this.options.pseudos, + quirksMode: this.options.quirksMode + }; + return this._make(function(e, t, n = {}, r = 1 / 0) { + if ("function" == typeof e) return da(t, e); + const [i, s] = ia(ps(e)), a = s.map((e => pa(t, e, n, !0, r))); + return i.length && a.push(fa(t, i, n, r)), 0 === a.length ? [] : 1 === a.length ? a[0] : Ee(a.reduce(((e, t) => [...e, ...t]))) + }(e, i, s)) + }, + parent: Ia, + parents: Sa, + parentsUntil: ba, + closest: function(e) { + var t, n = []; + if (!e) return this._make(n); + var r = { + xmlMode: this.options.xmlMode, + root: null === (t = this._root) || void 0 === t ? void 0 : t[0] + }, + i = "string" == typeof e ? function(t) { + return oa(t, e, r) + } : Pa(e); + return Bi(this, (function(e) { + for (; e && I(e);) { + if (i(e, 0)) { + n.includes(e) || n.push(e); + break + } + e = e.parent + } + })), this._make(n) + }, + next: Oa, + nextAll: ya, + nextUntil: La, + prev: ka, + prevAll: va, + prevUntil: Da, + siblings: Ra, + children: Ma, + contents: function() { + var e = this.toArray().reduce((function(e, t) { + return k(t) ? e.concat(t.children) : e + }), []); + return this._make(e) + }, + each: function(e) { + for (var t = 0, n = this.length; t < n && !1 !== e.call(this[t], t, this[t]);) ++t; + return this + }, + map: function(e) { + for (var t = [], n = 0; n < this.length; n++) { + var r = this[n], + i = e.call(r, n, r); + null != i && (t = t.concat(i)) + } + return this._make(t) + }, + filter: function(e) { + var t; + return this._make(xa(this.toArray(), e, this.options.xmlMode, null === (t = this._root) || void 0 === t ? void 0 : t[0])) + }, + filterArray: xa, + is: function(e) { + var t = this.toArray(); + return "string" == typeof e ? ca(t.filter(I), e, this.options) : !!e && t.some(Pa(e)) + }, + not: function(e) { + var t = this.toArray(); + if ("string" == typeof e) { + var n = new Set(la(e, t, this.options)); + t = t.filter((function(e) { + return !n.has(e) + })) + } else { + var r = Pa(e); + t = t.filter((function(e, t) { + return !r(e, t) + })) + } + return this._make(t) + }, + has: function(e) { + var t = this; + return this.filter("string" == typeof e ? ":has(".concat(e, ")") : function(n, r) { + return t._make(r).find(e).length > 0 + }) + }, + first: function() { + return this.length > 1 ? this._make(this[0]) : this + }, + last: function() { + return this.length > 0 ? this._make(this[this.length - 1]) : this + }, + eq: function(e) { + var t; + return 0 === (e = +e) && this.length <= 1 ? this : (e < 0 && (e = this.length + e), this._make(null !== (t = this[e]) && void 0 !== t ? t : [])) + }, + get: function(e) { + return null == e ? this.toArray() : this[e < 0 ? this.length + e : e] + }, + toArray: function() { + return Array.prototype.slice.call(this) + }, + index: function(e) { + var t, n; + return null == e ? (t = this.parent().children(), n = this[0]) : "string" == typeof e ? (t = this._make(e), n = this[0]) : (t = this, n = wi(e) ? e[0] : e), Array.prototype.indexOf.call(t, n) + }, + slice: function(e, t) { + return this._make(Array.prototype.slice.call(this, e, t)) + }, + end: function() { + var e; + return null !== (e = this.prevObject) && void 0 !== e ? e : this._make([]) + }, + add: function(e, t) { + var n = this._make(e, t), + r = Ee(ma(ma([], this.get(), !0), n.get(), !0)); + return this._make(r) + }, + addBack: function(e) { + return this.prevObject ? this.add(e ? this.prevObject.filter(e) : this.prevObject) : this + } +}); + +function Ba(e, t) { + var n = Array.isArray(e) ? e : [e]; + t ? t.children = n : t = null; + for (var r = 0; r < n.length; r++) { + var i = n[r]; + i.parent && i.parent.children !== n && ie(i), t ? (i.prev = n[r - 1] || null, i.next = n[r + 1] || null) : i.prev = i.next = null, i.parent = t + } + return t +} +var Fa = function(e, t, n) { + if (n || 2 === arguments.length) + for (var r, i = 0, s = t.length; i < s; i++) !r && i in t || (r || (r = Array.prototype.slice.call(t, 0, i)), r[i] = t[i]); + return e.concat(r || Array.prototype.slice.call(t)) +}; + +function Ua(e) { + return function() { + for (var t = this, n = [], r = 0; r < arguments.length; r++) n[r] = arguments[r]; + var i = this.length - 1; + return Bi(this, (function(r, s) { + if (k(r)) { + var a = "function" == typeof n[0] ? n[0].call(r, s, t._render(r.children)) : n, + o = t._makeDomArray(a, s < i); + e(o, r.children, r) + } + })) + } +} + +function Ha(e, t, n, r, i) { + for (var s, a, o = Fa([t, n], r, !0), c = 0 === t ? null : e[t - 1], l = t + n >= e.length ? null : e[t + n], h = 0; h < r.length; ++h) { + var u = r[h], + p = u.parent; + if (p) { + var f = p.children.indexOf(u); + f > -1 && (p.children.splice(f, 1), i === p && t > f && o[0]--) + } + u.parent = i, u.prev && (u.prev.next = null !== (s = u.next) && void 0 !== s ? s : null), u.next && (u.next.prev = null !== (a = u.prev) && void 0 !== a ? a : null), u.prev = 0 === h ? c : r[h - 1], u.next = h === r.length - 1 ? l : r[h + 1] + } + return c && (c.next = r[0]), l && (l.prev = r[r.length - 1]), e.splice.apply(e, o) +} +var Ga = Ua((function(e, t, n) { + Ha(t, t.length, 0, e, n) + })), + Ya = Ua((function(e, t, n) { + Ha(t, 0, 0, e, n) + })); + +function qa(e) { + return function(t) { + for (var n = this.length - 1, r = this.parents().last(), i = 0; i < this.length; i++) { + var s = this[i], + a = "function" == typeof t ? t.call(s, i, s) : "string" != typeof t || Ui(t) ? t : r.find(t).clone(), + o = this._makeDomArray(a, i < n)[0]; + if (o && k(o)) { + for (var c = o, l = 0; l < c.children.length;) { + var h = c.children[l]; + I(h) ? (c = h, l = 0) : l++ + } + e(s, c, [o]) + } + } + return this + } +} +var Ka = qa((function(e, t, n) { + var r = e.parent; + if (r) { + var i = r.children, + s = i.indexOf(e); + Ba([e], t), Ha(i, s, 0, n, r) + } + })), + ja = qa((function(e, t, n) { + k(e) && (Ba(e.children, t), Ba(n, e)) + })); +var Va = Object.freeze({ + __proto__: null, + _makeDomArray: function(e, t) { + var n = this; + return null == e ? [] : wi(e) ? t ? Fi(e.get()) : e.get() : Array.isArray(e) ? e.reduce((function(e, r) { + return e.concat(n._makeDomArray(r, t)) + }), []) : "string" == typeof e ? this._parse(e, this.options, !1, null).children : t ? Fi([e]) : [e] + }, + appendTo: function(e) { + return (wi(e) ? e : this._make(e)).append(this), this + }, + prependTo: function(e) { + return (wi(e) ? e : this._make(e)).prepend(this), this + }, + append: Ga, + prepend: Ya, + wrap: Ka, + wrapInner: ja, + unwrap: function(e) { + var t = this; + return this.parent(e).not("body").each((function(e, n) { + t._make(n).replaceWith(n.children) + })), this + }, + wrapAll: function(e) { + var t = this[0]; + if (t) { + for (var n = this._make("function" == typeof e ? e.call(t, 0, t) : e).insertBefore(t), r = void 0, i = 0; i < n.length; i++) "tag" === n[i].type && (r = n[i]); + for (var s = 0; r && s < r.children.length;) { + var a = r.children[s]; + "tag" === a.type ? (r = a, s = 0) : s++ + } + r && this._make(r).append(this) + } + return this + }, + after: function() { + for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; + var r = this.length - 1; + return Bi(this, (function(n, i) { + var s = n.parent; + if (k(n) && s) { + var a = s.children, + o = a.indexOf(n); + if (!(o < 0)) { + var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t; + Ha(a, o + 1, 0, e._makeDomArray(c, i < r), s) + } + } + })) + }, + insertAfter: function(e) { + var t = this; + "string" == typeof e && (e = this._make(e)), this.remove(); + var n = []; + return this._makeDomArray(e).forEach((function(e) { + var r = t.clone().toArray(), + i = e.parent; + if (i) { + var s = i.children, + a = s.indexOf(e); + a < 0 || (Ha(s, a + 1, 0, r, i), n.push.apply(n, r)) + } + })), this._make(n) + }, + before: function() { + for (var e = this, t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; + var r = this.length - 1; + return Bi(this, (function(n, i) { + var s = n.parent; + if (k(n) && s) { + var a = s.children, + o = a.indexOf(n); + if (!(o < 0)) { + var c = "function" == typeof t[0] ? t[0].call(n, i, e._render(n.children)) : t; + Ha(a, o, 0, e._makeDomArray(c, i < r), s) + } + } + })) + }, + insertBefore: function(e) { + var t = this, + n = this._make(e); + this.remove(); + var r = []; + return Bi(n, (function(e) { + var n = t.clone().toArray(), + i = e.parent; + if (i) { + var s = i.children, + a = s.indexOf(e); + a < 0 || (Ha(s, a, 0, n, i), r.push.apply(r, n)) + } + })), this._make(r) + }, + remove: function(e) { + return Bi(e ? this.filter(e) : this, (function(e) { + ie(e), e.prev = e.next = e.parent = null + })), this + }, + replaceWith: function(e) { + var t = this; + return Bi(this, (function(n, r) { + var i = n.parent; + if (i) { + var s = i.children, + a = "function" == typeof e ? e.call(n, r, n) : e, + o = t._makeDomArray(a); + Ba(o, null); + var c = s.indexOf(n); + Ha(s, c, 1, o, i), o.includes(n) || (n.parent = n.prev = n.next = null) + } + })) + }, + empty: function() { + return Bi(this, (function(e) { + k(e) && (e.children.forEach((function(e) { + e.next = e.prev = e.parent = null + })), e.children.length = 0) + })) + }, + html: function(e) { + var t = this; + if (void 0 === e) { + var n = this[0]; + return n && k(n) ? this._render(n.children) : null + } + return Bi(this, (function(n) { + k(n) && (n.children.forEach((function(e) { + e.next = e.prev = e.parent = null + })), Ba(wi(e) ? e.toArray() : t._parse("".concat(e), t.options, !1, n).children, n)) + })) + }, + toString: function() { + return this._render(this) + }, + text: function(e) { + var t = this; + return void 0 === e ? Li(this) : Bi(this, "function" == typeof e ? function(n, r) { + return t._make(n).text(e.call(n, r, Li([n]))) + } : function(t) { + k(t) && (t.children.forEach((function(e) { + e.next = e.prev = e.parent = null + })), Ba(new m("".concat(e)), t)) + }) + }, + clone: function() { + return this._make(Fi(this.get())) + } +}); + +function Wa(e, t, n, r) { + if ("string" == typeof t) { + var i = Qa(e), + s = "function" == typeof n ? n.call(e, r, i[t]) : n; + "" === s ? delete i[t] : null != s && (i[t] = s), e.attribs.style = (a = i, Object.keys(a).reduce((function(e, t) { + return "".concat(e).concat(e ? " " : "").concat(t, ": ").concat(a[t], ";") + }), "")) + } else "object" == typeof t && Object.keys(t).forEach((function(n, r) { + Wa(e, n, t[n], r) + })); + var a +} + +function Qa(e, t) { + if (e && I(e)) { + var n = function(e) { + if (!(e = (e || "").trim())) return {}; + for (var t, n = {}, r = 0, i = e.split(";"); r < i.length; r++) { + var s = i[r], + a = s.indexOf(":"); + if (a < 1 || a === s.length - 1) { + var o = s.trimEnd(); + o.length > 0 && void 0 !== t && (n[t] += ";".concat(o)) + } else n[t = s.slice(0, a).trim()] = s.slice(a + 1).trim() + } + return n + }(e.attribs.style); + if ("string" == typeof t) return n[t]; + if (Array.isArray(t)) { + var r = {}; + return t.forEach((function(e) { + null != n[e] && (r[e] = n[e]) + })), r + } + return n + } +} +var Xa = Object.freeze({ + __proto__: null, + css: function(e, t) { + return null != e && null != t || "object" == typeof e && !Array.isArray(e) ? Bi(this, (function(n, r) { + I(n) && Wa(n, e, t, r) + })) : 0 !== this.length ? Qa(this[0], e) : void 0 + } + }), + $a = /%20/g, + za = /\r?\n/g; +var Ja = Object.freeze({ + __proto__: null, + serialize: function() { + var e = this.serializeArray().map((function(e) { + return "".concat(encodeURIComponent(e.name), "=").concat(encodeURIComponent(e.value)) + })); + return e.join("&").replace($a, "+") + }, + serializeArray: function() { + var e = this; + return this.map((function(t, n) { + var r = e._make(n); + return I(n) && "form" === n.name ? r.find("input,select,textarea,keygen").toArray() : r.filter("input,select,textarea,keygen").toArray() + })).filter('[name!=""]:enabled:not(:submit, :button, :image, :reset, :file):matches([checked], :not(:checkbox, :radio))').map((function(t, n) { + var r, i = e._make(n), + s = i.attr("name"), + a = null !== (r = i.val()) && void 0 !== r ? r : ""; + return Array.isArray(a) ? a.map((function(e) { + return { + name: s, + value: e.replace(za, "\r\n") + } + })) : { + name: s, + value: a.replace(za, "\r\n") + } + })).toArray() + } + }), + Za = function(e, t, n) { + if (this.length = 0, this.options = n, this._root = t, e) { + for (var r = 0; r < e.length; r++) this[r] = e[r]; + this.length = e.length + } + }; +Za.prototype.cheerio = "[cheerio object]", Za.prototype.splice = Array.prototype.splice, Za.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator], Object.assign(Za.prototype, ts, wa, Va, Xa, Ja); +var eo, to = (eo = function(e, t) { + return eo = Object.setPrototypeOf || { + __proto__: [] + } + instanceof Array && function(e, t) { + e.__proto__ = t + } || function(e, t) { + for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]) + }, eo(e, t) + }, function(e, t) { + if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null"); + + function n() { + this.constructor = e + } + eo(e, t), e.prototype = null === t ? Object.create(t) : (n.prototype = t.prototype, new n) + }), + no = function() { + return no = Object.assign || function(e) { + for (var t, n = 1, r = arguments.length; n < r; n++) + for (var i in t = arguments[n]) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); + return e + }, no.apply(this, arguments) + }; +const ro = new Set([65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111]); +var io; +! function(e) { + e[e.EOF = -1] = "EOF", e[e.NULL = 0] = "NULL", e[e.TABULATION = 9] = "TABULATION", e[e.CARRIAGE_RETURN = 13] = "CARRIAGE_RETURN", e[e.LINE_FEED = 10] = "LINE_FEED", e[e.FORM_FEED = 12] = "FORM_FEED", e[e.SPACE = 32] = "SPACE", e[e.EXCLAMATION_MARK = 33] = "EXCLAMATION_MARK", e[e.QUOTATION_MARK = 34] = "QUOTATION_MARK", e[e.NUMBER_SIGN = 35] = "NUMBER_SIGN", e[e.AMPERSAND = 38] = "AMPERSAND", e[e.APOSTROPHE = 39] = "APOSTROPHE", e[e.HYPHEN_MINUS = 45] = "HYPHEN_MINUS", e[e.SOLIDUS = 47] = "SOLIDUS", e[e.DIGIT_0 = 48] = "DIGIT_0", e[e.DIGIT_9 = 57] = "DIGIT_9", e[e.SEMICOLON = 59] = "SEMICOLON", e[e.LESS_THAN_SIGN = 60] = "LESS_THAN_SIGN", e[e.EQUALS_SIGN = 61] = "EQUALS_SIGN", e[e.GREATER_THAN_SIGN = 62] = "GREATER_THAN_SIGN", e[e.QUESTION_MARK = 63] = "QUESTION_MARK", e[e.LATIN_CAPITAL_A = 65] = "LATIN_CAPITAL_A", e[e.LATIN_CAPITAL_F = 70] = "LATIN_CAPITAL_F", e[e.LATIN_CAPITAL_X = 88] = "LATIN_CAPITAL_X", e[e.LATIN_CAPITAL_Z = 90] = "LATIN_CAPITAL_Z", e[e.RIGHT_SQUARE_BRACKET = 93] = "RIGHT_SQUARE_BRACKET", e[e.GRAVE_ACCENT = 96] = "GRAVE_ACCENT", e[e.LATIN_SMALL_A = 97] = "LATIN_SMALL_A", e[e.LATIN_SMALL_F = 102] = "LATIN_SMALL_F", e[e.LATIN_SMALL_X = 120] = "LATIN_SMALL_X", e[e.LATIN_SMALL_Z = 122] = "LATIN_SMALL_Z", e[e.REPLACEMENT_CHARACTER = 65533] = "REPLACEMENT_CHARACTER" +}(io = io || (io = {})); +const so = "--", + ao = "[CDATA[", + oo = "doctype", + co = "script", + lo = "public", + ho = "system"; + +function uo(e) { + return e >= 55296 && e <= 57343 +} + +function po(e) { + return 32 !== e && 10 !== e && 13 !== e && 9 !== e && 12 !== e && e >= 1 && e <= 31 || e >= 127 && e <= 159 +} + +function fo(e) { + return e >= 64976 && e <= 65007 || ro.has(e) +} +var Eo; +! function(e) { + e.controlCharacterInInputStream = "control-character-in-input-stream", e.noncharacterInInputStream = "noncharacter-in-input-stream", e.surrogateInInputStream = "surrogate-in-input-stream", e.nonVoidHtmlElementStartTagWithTrailingSolidus = "non-void-html-element-start-tag-with-trailing-solidus", e.endTagWithAttributes = "end-tag-with-attributes", e.endTagWithTrailingSolidus = "end-tag-with-trailing-solidus", e.unexpectedSolidusInTag = "unexpected-solidus-in-tag", e.unexpectedNullCharacter = "unexpected-null-character", e.unexpectedQuestionMarkInsteadOfTagName = "unexpected-question-mark-instead-of-tag-name", e.invalidFirstCharacterOfTagName = "invalid-first-character-of-tag-name", e.unexpectedEqualsSignBeforeAttributeName = "unexpected-equals-sign-before-attribute-name", e.missingEndTagName = "missing-end-tag-name", e.unexpectedCharacterInAttributeName = "unexpected-character-in-attribute-name", e.unknownNamedCharacterReference = "unknown-named-character-reference", e.missingSemicolonAfterCharacterReference = "missing-semicolon-after-character-reference", e.unexpectedCharacterAfterDoctypeSystemIdentifier = "unexpected-character-after-doctype-system-identifier", e.unexpectedCharacterInUnquotedAttributeValue = "unexpected-character-in-unquoted-attribute-value", e.eofBeforeTagName = "eof-before-tag-name", e.eofInTag = "eof-in-tag", e.missingAttributeValue = "missing-attribute-value", e.missingWhitespaceBetweenAttributes = "missing-whitespace-between-attributes", e.missingWhitespaceAfterDoctypePublicKeyword = "missing-whitespace-after-doctype-public-keyword", e.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers = "missing-whitespace-between-doctype-public-and-system-identifiers", e.missingWhitespaceAfterDoctypeSystemKeyword = "missing-whitespace-after-doctype-system-keyword", e.missingQuoteBeforeDoctypePublicIdentifier = "missing-quote-before-doctype-public-identifier", e.missingQuoteBeforeDoctypeSystemIdentifier = "missing-quote-before-doctype-system-identifier", e.missingDoctypePublicIdentifier = "missing-doctype-public-identifier", e.missingDoctypeSystemIdentifier = "missing-doctype-system-identifier", e.abruptDoctypePublicIdentifier = "abrupt-doctype-public-identifier", e.abruptDoctypeSystemIdentifier = "abrupt-doctype-system-identifier", e.cdataInHtmlContent = "cdata-in-html-content", e.incorrectlyOpenedComment = "incorrectly-opened-comment", e.eofInScriptHtmlCommentLikeText = "eof-in-script-html-comment-like-text", e.eofInDoctype = "eof-in-doctype", e.nestedComment = "nested-comment", e.abruptClosingOfEmptyComment = "abrupt-closing-of-empty-comment", e.eofInComment = "eof-in-comment", e.incorrectlyClosedComment = "incorrectly-closed-comment", e.eofInCdata = "eof-in-cdata", e.absenceOfDigitsInNumericCharacterReference = "absence-of-digits-in-numeric-character-reference", e.nullCharacterReference = "null-character-reference", e.surrogateCharacterReference = "surrogate-character-reference", e.characterReferenceOutsideUnicodeRange = "character-reference-outside-unicode-range", e.controlCharacterReference = "control-character-reference", e.noncharacterCharacterReference = "noncharacter-character-reference", e.missingWhitespaceBeforeDoctypeName = "missing-whitespace-before-doctype-name", e.missingDoctypeName = "missing-doctype-name", e.invalidCharacterSequenceAfterDoctypeName = "invalid-character-sequence-after-doctype-name", e.duplicateAttribute = "duplicate-attribute", e.nonConformingDoctype = "non-conforming-doctype", e.missingDoctype = "missing-doctype", e.misplacedDoctype = "misplaced-doctype", e.endTagWithoutMatchingOpenElement = "end-tag-without-matching-open-element", e.closingOfElementWithOpenChildElements = "closing-of-element-with-open-child-elements", e.disallowedContentInNoscriptInHead = "disallowed-content-in-noscript-in-head", e.openElementsLeftAfterEof = "open-elements-left-after-eof", e.abandonedHeadElementChild = "abandoned-head-element-child", e.misplacedStartTagForHeadElement = "misplaced-start-tag-for-head-element", e.nestedNoscriptInHead = "nested-noscript-in-head", e.eofInElementThatCanContainOnlyText = "eof-in-element-that-can-contain-only-text" +}(Eo = Eo || (Eo = {})); +class mo { + constructor(e) { + this.handler = e, this.html = "", this.pos = -1, this.lastGapPos = -2, this.gapStack = [], this.skipNextNewLine = !1, this.lastChunkWritten = !1, this.endOfChunkHit = !1, this.bufferWaterline = 65536, this.isEol = !1, this.lineStartPos = 0, this.droppedBufferSize = 0, this.line = 1, this.lastErrOffset = -1 + } + get col() { + return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos) + } + get offset() { + return this.droppedBufferSize + this.pos + } + getError(e) { + const { + line: t, + col: n, + offset: r + } = this; + return { + code: e, + startLine: t, + endLine: t, + startCol: n, + endCol: n, + startOffset: r, + endOffset: r + } + } + _err(e) { + this.handler.onParseError && this.lastErrOffset !== this.offset && (this.lastErrOffset = this.offset, this.handler.onParseError(this.getError(e))) + } + _addGap() { + this.gapStack.push(this.lastGapPos), this.lastGapPos = this.pos + } + _processSurrogate(e) { + if (this.pos !== this.html.length - 1) { + const t = this.html.charCodeAt(this.pos + 1); + if (function(e) { + return e >= 56320 && e <= 57343 + }(t)) return this.pos++, this._addGap(), 1024 * (e - 55296) + 9216 + t + } else if (!this.lastChunkWritten) return this.endOfChunkHit = !0, io.EOF; + return this._err(Eo.surrogateInInputStream), e + } + willDropParsedChunk() { + return this.pos > this.bufferWaterline + } + dropParsedChunk() { + this.willDropParsedChunk() && (this.html = this.html.substring(this.pos), this.lineStartPos -= this.pos, this.droppedBufferSize += this.pos, this.pos = 0, this.lastGapPos = -2, this.gapStack.length = 0) + } + write(e, t) { + this.html.length > 0 ? this.html += e : this.html = e, this.endOfChunkHit = !1, this.lastChunkWritten = t + } + insertHtmlAtCurrentPos(e) { + this.html = this.html.substring(0, this.pos + 1) + e + this.html.substring(this.pos + 1), this.endOfChunkHit = !1 + } + startsWith(e, t) { + if (this.pos + e.length > this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, !1; + if (t) return this.html.startsWith(e, this.pos); + for (let t = 0; t < e.length; t++) { + if ((32 | this.html.charCodeAt(this.pos + t)) !== e.charCodeAt(t)) return !1 + } + return !0 + } + peek(e) { + const t = this.pos + e; + return t >= this.html.length ? (this.endOfChunkHit = !this.lastChunkWritten, io.EOF) : this.html.charCodeAt(t) + } + advance() { + if (this.pos++, this.isEol && (this.isEol = !1, this.line++, this.lineStartPos = this.pos), this.pos >= this.html.length) return this.endOfChunkHit = !this.lastChunkWritten, io.EOF; + let e = this.html.charCodeAt(this.pos); + if (e === io.CARRIAGE_RETURN) return this.isEol = !0, this.skipNextNewLine = !0, io.LINE_FEED; + if (e === io.LINE_FEED && (this.isEol = !0, this.skipNextNewLine)) return this.line--, this.skipNextNewLine = !1, this._addGap(), this.advance(); + this.skipNextNewLine = !1, uo(e) && (e = this._processSurrogate(e)); + return null === this.handler.onParseError || e > 31 && e < 127 || e === io.LINE_FEED || e === io.CARRIAGE_RETURN || e > 159 && e < 64976 || this._checkForProblematicCharacters(e), e + } + _checkForProblematicCharacters(e) { + po(e) ? this._err(Eo.controlCharacterInInputStream) : fo(e) && this._err(Eo.noncharacterInInputStream) + } + retreat(e) { + for (this.pos -= e; this.pos < this.lastGapPos;) this.lastGapPos = this.gapStack.pop(), this.pos--; + this.isEol = !1 + } +} +var To; + +function _o(e, t) { + for (let n = e.attrs.length - 1; n >= 0; n--) + if (e.attrs[n].name === t) return e.attrs[n].value; + return null +}! function(e) { + e[e.CHARACTER = 0] = "CHARACTER", e[e.NULL_CHARACTER = 1] = "NULL_CHARACTER", e[e.WHITESPACE_CHARACTER = 2] = "WHITESPACE_CHARACTER", e[e.START_TAG = 3] = "START_TAG", e[e.END_TAG = 4] = "END_TAG", e[e.COMMENT = 5] = "COMMENT", e[e.DOCTYPE = 6] = "DOCTYPE", e[e.EOF = 7] = "EOF", e[e.HIBERNATION = 8] = "HIBERNATION" +}(To = To || (To = {})); +var Ao = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.default = new Uint16Array('ᵁ<Õıʊҝջאٵ۞ޢߖࠏ੊ઑඡ๭༉༦჊ረዡᐕᒝᓃᓟᔥ\0\0\0\0\0\0ᕫᛍᦍᰒᷝ὾⁠↰⊍⏀⏻⑂⠤⤒ⴈ⹈⿎〖㊺㘹㞬㣾㨨㩱㫠㬮ࠀEMabcfglmnoprstu\\bfms„‹•˜¦³¹ÈÏlig耻Æ䃆P耻&䀦cute耻Á䃁reve;䄂Āiyx}rc耻Â䃂;䐐r;쀀𝔄rave耻À䃀pha;䎑acr;䄀d;橓Āgp¡on;䄄f;쀀𝔸plyFunction;恡ing耻Å䃅Ācs¾Ãr;쀀𝒜ign;扔ilde耻Ã䃃ml耻Ä䃄ЀaceforsuåûþėĜĢħĪĀcrêòkslash;或Ŷöø;櫧ed;挆y;䐑ƀcrtąċĔause;戵noullis;愬a;䎒r;쀀𝔅pf;쀀𝔹eve;䋘còēmpeq;扎܀HOacdefhilorsuōőŖƀƞƢƵƷƺǜȕɳɸɾcy;䐧PY耻©䂩ƀcpyŝŢźute;䄆Ā;iŧŨ拒talDifferentialD;慅leys;愭ȀaeioƉƎƔƘron;䄌dil耻Ç䃇rc;䄈nint;戰ot;䄊ĀdnƧƭilla;䂸terDot;䂷òſi;䎧rcleȀDMPTLJNjǑǖot;抙inus;抖lus;投imes;抗oĀcsǢǸkwiseContourIntegral;戲eCurlyĀDQȃȏoubleQuote;思uote;怙ȀlnpuȞȨɇɕonĀ;eȥȦ户;橴ƀgitȯȶȺruent;扡nt;戯ourIntegral;戮ĀfrɌɎ;愂oduct;成nterClockwiseContourIntegral;戳oss;樯cr;쀀𝒞pĀ;Cʄʅ拓ap;才րDJSZacefiosʠʬʰʴʸˋ˗ˡ˦̳ҍĀ;oŹʥtrahd;椑cy;䐂cy;䐅cy;䐏ƀgrsʿ˄ˇger;怡r;憡hv;櫤Āayː˕ron;䄎;䐔lĀ;t˝˞戇a;䎔r;쀀𝔇Āaf˫̧Ācm˰̢riticalȀADGT̖̜̀̆cute;䂴oŴ̋̍;䋙bleAcute;䋝rave;䁠ilde;䋜ond;拄ferentialD;慆Ѱ̽\0\0\0͔͂\0Ѕf;쀀𝔻ƀ;DE͈͉͍䂨ot;惜qual;扐blèCDLRUVͣͲ΂ϏϢϸontourIntegraìȹoɴ͹\0\0ͻ»͉nArrow;懓Āeo·ΤftƀARTΐΖΡrrow;懐ightArrow;懔eåˊngĀLRΫτeftĀARγιrrow;柸ightArrow;柺ightArrow;柹ightĀATϘϞrrow;懒ee;抨pɁϩ\0\0ϯrrow;懑ownArrow;懕erticalBar;戥ǹABLRTaВЪаўѿͼrrowƀ;BUНОТ憓ar;椓pArrow;懵reve;䌑eft˒к\0ц\0ѐightVector;楐eeVector;楞ectorĀ;Bљњ憽ar;楖ightǔѧ\0ѱeeVector;楟ectorĀ;BѺѻ懁ar;楗eeĀ;A҆҇护rrow;憧ĀctҒҗr;쀀𝒟rok;䄐ࠀNTacdfglmopqstuxҽӀӄӋӞӢӧӮӵԡԯԶՒ՝ՠեG;䅊H耻Ð䃐cute耻É䃉ƀaiyӒӗӜron;䄚rc耻Ê䃊;䐭ot;䄖r;쀀𝔈rave耻È䃈ement;戈ĀapӺӾcr;䄒tyɓԆ\0\0ԒmallSquare;旻erySmallSquare;斫ĀgpԦԪon;䄘f;쀀𝔼silon;䎕uĀaiԼՉlĀ;TՂՃ橵ilde;扂librium;懌Āci՗՚r;愰m;橳a;䎗ml耻Ë䃋Āipժկsts;戃onentialE;慇ʀcfiosօֈ֍ֲ׌y;䐤r;쀀𝔉lledɓ֗\0\0֣mallSquare;旼erySmallSquare;斪Ͱֺ\0ֿ\0\0ׄf;쀀𝔽All;戀riertrf;愱cò׋؀JTabcdfgorstר׬ׯ׺؀ؒؖ؛؝أ٬ٲcy;䐃耻>䀾mmaĀ;d׷׸䎓;䏜reve;䄞ƀeiy؇،ؐdil;䄢rc;䄜;䐓ot;䄠r;쀀𝔊;拙pf;쀀𝔾eater̀EFGLSTصلَٖٛ٦qualĀ;Lؾؿ扥ess;招ullEqual;执reater;檢ess;扷lantEqual;橾ilde;扳cr;쀀𝒢;扫ЀAacfiosuڅڋږڛڞڪھۊRDcy;䐪Āctڐڔek;䋇;䁞irc;䄤r;愌lbertSpace;愋ǰگ\0ڲf;愍izontalLine;攀Āctۃۅòکrok;䄦mpńېۘownHumðįqual;扏܀EJOacdfgmnostuۺ۾܃܇܎ܚܞܡܨ݄ݸދޏޕcy;䐕lig;䄲cy;䐁cute耻Í䃍Āiyܓܘrc耻Î䃎;䐘ot;䄰r;愑rave耻Ì䃌ƀ;apܠܯܿĀcgܴܷr;䄪inaryI;慈lieóϝǴ݉\0ݢĀ;eݍݎ戬Āgrݓݘral;戫section;拂isibleĀCTݬݲomma;恣imes;恢ƀgptݿރވon;䄮f;쀀𝕀a;䎙cr;愐ilde;䄨ǫޚ\0ޞcy;䐆l耻Ï䃏ʀcfosuެ޷޼߂ߐĀiyޱ޵rc;䄴;䐙r;쀀𝔍pf;쀀𝕁ǣ߇\0ߌr;쀀𝒥rcy;䐈kcy;䐄΀HJacfosߤߨ߽߬߱ࠂࠈcy;䐥cy;䐌ppa;䎚Āey߶߻dil;䄶;䐚r;쀀𝔎pf;쀀𝕂cr;쀀𝒦րJTaceflmostࠥࠩࠬࡐࡣ঳সে্਷ੇcy;䐉耻<䀼ʀcmnpr࠷࠼ࡁࡄࡍute;䄹bda;䎛g;柪lacetrf;愒r;憞ƀaeyࡗ࡜ࡡron;䄽dil;䄻;䐛Āfsࡨ॰tԀACDFRTUVarࡾࢩࢱࣦ࣠ࣼयज़ΐ४Ānrࢃ࢏gleBracket;柨rowƀ;BR࢙࢚࢞憐ar;懤ightArrow;懆eiling;挈oǵࢷ\0ࣃbleBracket;柦nǔࣈ\0࣒eeVector;楡ectorĀ;Bࣛࣜ懃ar;楙loor;挊ightĀAV࣯ࣵrrow;憔ector;楎Āerँगeƀ;AVउऊऐ抣rrow;憤ector;楚iangleƀ;BEतथऩ抲ar;槏qual;抴pƀDTVषूौownVector;楑eeVector;楠ectorĀ;Bॖॗ憿ar;楘ectorĀ;B॥०憼ar;楒ightáΜs̀EFGLSTॾঋকঝঢভqualGreater;拚ullEqual;扦reater;扶ess;檡lantEqual;橽ilde;扲r;쀀𝔏Ā;eঽা拘ftarrow;懚idot;䄿ƀnpw৔ਖਛgȀLRlr৞৷ਂਐeftĀAR০৬rrow;柵ightArrow;柷ightArrow;柶eftĀarγਊightáοightáϊf;쀀𝕃erĀLRਢਬeftArrow;憙ightArrow;憘ƀchtਾੀੂòࡌ;憰rok;䅁;扪Ѐacefiosuਗ਼੝੠੷੼અઋ઎p;椅y;䐜Ādl੥੯iumSpace;恟lintrf;愳r;쀀𝔐nusPlus;戓pf;쀀𝕄cò੶;䎜ҀJacefostuણધભીଔଙඑ඗ඞcy;䐊cute;䅃ƀaey઴હાron;䅇dil;䅅;䐝ƀgswે૰଎ativeƀMTV૓૟૨ediumSpace;怋hiĀcn૦૘ë૙eryThiî૙tedĀGL૸ଆreaterGreateòٳessLesóੈLine;䀊r;쀀𝔑ȀBnptଢନଷ଺reak;恠BreakingSpace;䂠f;愕ڀ;CDEGHLNPRSTV୕ୖ୪୼஡௫ఄ౞಄ದ೘ൡඅ櫬Āou୛୤ngruent;扢pCap;扭oubleVerticalBar;戦ƀlqxஃஊ஛ement;戉ualĀ;Tஒஓ扠ilde;쀀≂̸ists;戄reater΀;EFGLSTஶஷ஽௉௓௘௥扯qual;扱ullEqual;쀀≧̸reater;쀀≫̸ess;批lantEqual;쀀⩾̸ilde;扵umpń௲௽ownHump;쀀≎̸qual;쀀≏̸eĀfsఊధtTriangleƀ;BEచఛడ拪ar;쀀⧏̸qual;括s̀;EGLSTవశ఼ౄోౘ扮qual;扰reater;扸ess;쀀≪̸lantEqual;쀀⩽̸ilde;扴estedĀGL౨౹reaterGreater;쀀⪢̸essLess;쀀⪡̸recedesƀ;ESಒಓಛ技qual;쀀⪯̸lantEqual;拠ĀeiಫಹverseElement;戌ghtTriangleƀ;BEೋೌ೒拫ar;쀀⧐̸qual;拭ĀquೝഌuareSuĀbp೨೹setĀ;E೰ೳ쀀⊏̸qual;拢ersetĀ;Eഃആ쀀⊐̸qual;拣ƀbcpഓതൎsetĀ;Eഛഞ쀀⊂⃒qual;抈ceedsȀ;ESTലള഻െ抁qual;쀀⪰̸lantEqual;拡ilde;쀀≿̸ersetĀ;E൘൛쀀⊃⃒qual;抉ildeȀ;EFT൮൯൵ൿ扁qual;扄ullEqual;扇ilde;扉erticalBar;戤cr;쀀𝒩ilde耻Ñ䃑;䎝܀Eacdfgmoprstuvලෂ෉෕ෛ෠෧෼ขภยา฿ไlig;䅒cute耻Ó䃓Āiy෎ීrc耻Ô䃔;䐞blac;䅐r;쀀𝔒rave耻Ò䃒ƀaei෮ෲ෶cr;䅌ga;䎩cron;䎟pf;쀀𝕆enCurlyĀDQฎบoubleQuote;怜uote;怘;橔Āclวฬr;쀀𝒪ash耻Ø䃘iŬื฼de耻Õ䃕es;樷ml耻Ö䃖erĀBP๋๠Āar๐๓r;怾acĀek๚๜;揞et;掴arenthesis;揜Ҁacfhilors๿ງຊຏຒດຝະ໼rtialD;戂y;䐟r;쀀𝔓i;䎦;䎠usMinus;䂱Āipຢອncareplanåڝf;愙Ȁ;eio຺ູ໠໤檻cedesȀ;EST່້໏໚扺qual;檯lantEqual;扼ilde;找me;怳Ādp໩໮uct;戏ortionĀ;aȥ໹l;戝Āci༁༆r;쀀𝒫;䎨ȀUfos༑༖༛༟OT耻"䀢r;쀀𝔔pf;愚cr;쀀𝒬؀BEacefhiorsu༾གྷཇའཱིྦྷྪྭ႖ႩႴႾarr;椐G耻®䂮ƀcnrཎནབute;䅔g;柫rĀ;tཛྷཝ憠l;椖ƀaeyཧཬཱron;䅘dil;䅖;䐠Ā;vླྀཹ愜erseĀEUྂྙĀlq྇ྎement;戋uilibrium;懋pEquilibrium;楯r»ཹo;䎡ghtЀACDFTUVa࿁࿫࿳ဢဨၛႇϘĀnr࿆࿒gleBracket;柩rowƀ;BL࿜࿝࿡憒ar;懥eftArrow;懄eiling;按oǵ࿹\0စbleBracket;柧nǔည\0နeeVector;楝ectorĀ;Bဝသ懂ar;楕loor;挋Āerိ၃eƀ;AVဵံြ抢rrow;憦ector;楛iangleƀ;BEၐၑၕ抳ar;槐qual;抵pƀDTVၣၮၸownVector;楏eeVector;楜ectorĀ;Bႂႃ憾ar;楔ectorĀ;B႑႒懀ar;楓Āpuႛ႞f;愝ndImplies;楰ightarrow;懛ĀchႹႼr;愛;憱leDelayed;槴ڀHOacfhimoqstuფჱჷჽᄙᄞᅑᅖᅡᅧᆵᆻᆿĀCcჩხHcy;䐩y;䐨FTcy;䐬cute;䅚ʀ;aeiyᄈᄉᄎᄓᄗ檼ron;䅠dil;䅞rc;䅜;䐡r;쀀𝔖ortȀDLRUᄪᄴᄾᅉownArrow»ОeftArrow»࢚ightArrow»࿝pArrow;憑gma;䎣allCircle;战pf;쀀𝕊ɲᅭ\0\0ᅰt;戚areȀ;ISUᅻᅼᆉᆯ斡ntersection;抓uĀbpᆏᆞsetĀ;Eᆗᆘ抏qual;抑ersetĀ;Eᆨᆩ抐qual;抒nion;抔cr;쀀𝒮ar;拆ȀbcmpᇈᇛሉላĀ;sᇍᇎ拐etĀ;Eᇍᇕqual;抆ĀchᇠህeedsȀ;ESTᇭᇮᇴᇿ扻qual;檰lantEqual;扽ilde;承Tháྌ;我ƀ;esሒሓሣ拑rsetĀ;Eሜም抃qual;抇et»ሓրHRSacfhiorsሾቄ቉ቕ቞ቱቶኟዂወዑORN耻Þ䃞ADE;愢ĀHc቎ቒcy;䐋y;䐦Ābuቚቜ;䀉;䎤ƀaeyብቪቯron;䅤dil;䅢;䐢r;쀀𝔗Āeiቻ኉Dzኀ\0ኇefore;戴a;䎘Ācn኎ኘkSpace;쀀  Space;怉ldeȀ;EFTካኬኲኼ戼qual;扃ullEqual;扅ilde;扈pf;쀀𝕋ipleDot;惛Āctዖዛr;쀀𝒯rok;䅦ૡዷጎጚጦ\0ጬጱ\0\0\0\0\0ጸጽ፷ᎅ\0᏿ᐄᐊᐐĀcrዻጁute耻Ú䃚rĀ;oጇገ憟cir;楉rǣጓ\0጖y;䐎ve;䅬Āiyጞጣrc耻Û䃛;䐣blac;䅰r;쀀𝔘rave耻Ù䃙acr;䅪Ādiፁ፩erĀBPፈ፝Āarፍፐr;䁟acĀekፗፙ;揟et;掵arenthesis;揝onĀ;P፰፱拃lus;抎Āgp፻፿on;䅲f;쀀𝕌ЀADETadps᎕ᎮᎸᏄϨᏒᏗᏳrrowƀ;BDᅐᎠᎤar;椒ownArrow;懅ownArrow;憕quilibrium;楮eeĀ;AᏋᏌ报rrow;憥ownáϳerĀLRᏞᏨeftArrow;憖ightArrow;憗iĀ;lᏹᏺ䏒on;䎥ing;䅮cr;쀀𝒰ilde;䅨ml耻Ü䃜ҀDbcdefosvᐧᐬᐰᐳᐾᒅᒊᒐᒖash;披ar;櫫y;䐒ashĀ;lᐻᐼ抩;櫦Āerᑃᑅ;拁ƀbtyᑌᑐᑺar;怖Ā;iᑏᑕcalȀBLSTᑡᑥᑪᑴar;戣ine;䁼eparator;杘ilde;所ThinSpace;怊r;쀀𝔙pf;쀀𝕍cr;쀀𝒱dash;抪ʀcefosᒧᒬᒱᒶᒼirc;䅴dge;拀r;쀀𝔚pf;쀀𝕎cr;쀀𝒲Ȁfiosᓋᓐᓒᓘr;쀀𝔛;䎞pf;쀀𝕏cr;쀀𝒳ҀAIUacfosuᓱᓵᓹᓽᔄᔏᔔᔚᔠcy;䐯cy;䐇cy;䐮cute耻Ý䃝Āiyᔉᔍrc;䅶;䐫r;쀀𝔜pf;쀀𝕐cr;쀀𝒴ml;䅸ЀHacdefosᔵᔹᔿᕋᕏᕝᕠᕤcy;䐖cute;䅹Āayᕄᕉron;䅽;䐗ot;䅻Dzᕔ\0ᕛoWidtè૙a;䎖r;愨pf;愤cr;쀀𝒵௡ᖃᖊᖐ\0ᖰᖶᖿ\0\0\0\0ᗆᗛᗫᙟ᙭\0ᚕ᚛ᚲᚹ\0ᚾcute耻á䃡reve;䄃̀;Ediuyᖜᖝᖡᖣᖨᖭ戾;쀀∾̳;房rc耻â䃢te肻´̆;䐰lig耻æ䃦Ā;r²ᖺ;쀀𝔞rave耻à䃠ĀepᗊᗖĀfpᗏᗔsym;愵èᗓha;䎱ĀapᗟcĀclᗤᗧr;䄁g;樿ɤᗰ\0\0ᘊʀ;adsvᗺᗻᗿᘁᘇ戧nd;橕;橜lope;橘;橚΀;elmrszᘘᘙᘛᘞᘿᙏᙙ戠;榤e»ᘙsdĀ;aᘥᘦ戡ѡᘰᘲᘴᘶᘸᘺᘼᘾ;榨;榩;榪;榫;榬;榭;榮;榯tĀ;vᙅᙆ戟bĀ;dᙌᙍ抾;榝Āptᙔᙗh;戢»¹arr;捼Āgpᙣᙧon;䄅f;쀀𝕒΀;Eaeiop዁ᙻᙽᚂᚄᚇᚊ;橰cir;橯;扊d;手s;䀧roxĀ;e዁ᚒñᚃing耻å䃥ƀctyᚡᚦᚨr;쀀𝒶;䀪mpĀ;e዁ᚯñʈilde耻ã䃣ml耻ä䃤Āciᛂᛈoninôɲnt;樑ࠀNabcdefiklnoprsu᛭ᛱᜰ᜼ᝃᝈ᝸᝽០៦ᠹᡐᜍ᤽᥈ᥰot;櫭Ācrᛶ᜞kȀcepsᜀᜅᜍᜓong;扌psilon;䏶rime;怵imĀ;e᜚᜛戽q;拍Ŷᜢᜦee;抽edĀ;gᜬᜭ挅e»ᜭrkĀ;t፜᜷brk;掶Āoyᜁᝁ;䐱quo;怞ʀcmprtᝓ᝛ᝡᝤᝨausĀ;eĊĉptyv;榰séᜌnoõēƀahwᝯ᝱ᝳ;䎲;愶een;扬r;쀀𝔟g΀costuvwឍឝឳេ៕៛៞ƀaiuបពរðݠrc;旯p»፱ƀdptឤឨឭot;樀lus;樁imes;樂ɱឹ\0\0ើcup;樆ar;昅riangleĀdu៍្own;施p;斳plus;樄eåᑄåᒭarow;植ƀako៭ᠦᠵĀcn៲ᠣkƀlst៺֫᠂ozenge;槫riangleȀ;dlr᠒᠓᠘᠝斴own;斾eft;旂ight;斸k;搣Ʊᠫ\0ᠳƲᠯ\0ᠱ;斒;斑4;斓ck;斈ĀeoᠾᡍĀ;qᡃᡆ쀀=⃥uiv;쀀≡⃥t;挐Ȁptwxᡙᡞᡧᡬf;쀀𝕓Ā;tᏋᡣom»Ꮜtie;拈؀DHUVbdhmptuvᢅᢖᢪᢻᣗᣛᣬ᣿ᤅᤊᤐᤡȀLRlrᢎᢐᢒᢔ;敗;敔;敖;敓ʀ;DUduᢡᢢᢤᢦᢨ敐;敦;敩;敤;敧ȀLRlrᢳᢵᢷᢹ;敝;敚;敜;教΀;HLRhlrᣊᣋᣍᣏᣑᣓᣕ救;敬;散;敠;敫;敢;敟ox;槉ȀLRlrᣤᣦᣨᣪ;敕;敒;攐;攌ʀ;DUduڽ᣷᣹᣻᣽;敥;敨;攬;攴inus;抟lus;択imes;抠ȀLRlrᤙᤛᤝ᤟;敛;敘;攘;攔΀;HLRhlrᤰᤱᤳᤵᤷ᤻᤹攂;敪;敡;敞;攼;攤;攜Āevģ᥂bar耻¦䂦Ȁceioᥑᥖᥚᥠr;쀀𝒷mi;恏mĀ;e᜚᜜lƀ;bhᥨᥩᥫ䁜;槅sub;柈Ŭᥴ᥾lĀ;e᥹᥺怢t»᥺pƀ;Eeįᦅᦇ;檮Ā;qۜۛೡᦧ\0᧨ᨑᨕᨲ\0ᨷᩐ\0\0᪴\0\0᫁\0\0ᬡᬮ᭍᭒\0᯽\0ᰌƀcpr᦭ᦲ᧝ute;䄇̀;abcdsᦿᧀᧄ᧊᧕᧙戩nd;橄rcup;橉Āau᧏᧒p;橋p;橇ot;橀;쀀∩︀Āeo᧢᧥t;恁îړȀaeiu᧰᧻ᨁᨅǰ᧵\0᧸s;橍on;䄍dil耻ç䃧rc;䄉psĀ;sᨌᨍ橌m;橐ot;䄋ƀdmnᨛᨠᨦil肻¸ƭptyv;榲t脀¢;eᨭᨮ䂢räƲr;쀀𝔠ƀceiᨽᩀᩍy;䑇ckĀ;mᩇᩈ朓ark»ᩈ;䏇r΀;Ecefms᩟᩠ᩢᩫ᪤᪪᪮旋;槃ƀ;elᩩᩪᩭ䋆q;扗eɡᩴ\0\0᪈rrowĀlr᩼᪁eft;憺ight;憻ʀRSacd᪒᪔᪖᪚᪟»ཇ;擈st;抛irc;抚ash;抝nint;樐id;櫯cir;槂ubsĀ;u᪻᪼晣it»᪼ˬ᫇᫔᫺\0ᬊonĀ;eᫍᫎ䀺Ā;qÇÆɭ᫙\0\0᫢aĀ;t᫞᫟䀬;䁀ƀ;fl᫨᫩᫫戁îᅠeĀmx᫱᫶ent»᫩eóɍǧ᫾\0ᬇĀ;dኻᬂot;橭nôɆƀfryᬐᬔᬗ;쀀𝕔oäɔ脀©;sŕᬝr;愗Āaoᬥᬩrr;憵ss;朗Ācuᬲᬷr;쀀𝒸Ābpᬼ᭄Ā;eᭁᭂ櫏;櫑Ā;eᭉᭊ櫐;櫒dot;拯΀delprvw᭠᭬᭷ᮂᮬᯔ᯹arrĀlr᭨᭪;椸;椵ɰ᭲\0\0᭵r;拞c;拟arrĀ;p᭿ᮀ憶;椽̀;bcdosᮏᮐᮖᮡᮥᮨ截rcap;橈Āauᮛᮞp;橆p;橊ot;抍r;橅;쀀∪︀Ȁalrv᮵ᮿᯞᯣrrĀ;mᮼᮽ憷;椼yƀevwᯇᯔᯘqɰᯎ\0\0ᯒreã᭳uã᭵ee;拎edge;拏en耻¤䂤earrowĀlrᯮ᯳eft»ᮀight»ᮽeäᯝĀciᰁᰇoninôǷnt;戱lcty;挭ঀAHabcdefhijlorstuwz᰸᰻᰿ᱝᱩᱵᲊᲞᲬᲷ᳻᳿ᴍᵻᶑᶫᶻ᷆᷍rò΁ar;楥Ȁglrs᱈ᱍ᱒᱔ger;怠eth;愸òᄳhĀ;vᱚᱛ怐»ऊūᱡᱧarow;椏aã̕Āayᱮᱳron;䄏;䐴ƀ;ao̲ᱼᲄĀgrʿᲁr;懊tseq;橷ƀglmᲑᲔᲘ耻°䂰ta;䎴ptyv;榱ĀirᲣᲨsht;楿;쀀𝔡arĀlrᲳᲵ»ࣜ»သʀaegsv᳂͸᳖᳜᳠mƀ;oș᳊᳔ndĀ;ș᳑uit;晦amma;䏝in;拲ƀ;io᳧᳨᳸䃷de脀÷;o᳧ᳰntimes;拇nø᳷cy;䑒cɯᴆ\0\0ᴊrn;挞op;挍ʀlptuwᴘᴝᴢᵉᵕlar;䀤f;쀀𝕕ʀ;emps̋ᴭᴷᴽᵂqĀ;d͒ᴳot;扑inus;戸lus;戔quare;抡blebarwedgåúnƀadhᄮᵝᵧownarrowóᲃarpoonĀlrᵲᵶefôᲴighôᲶŢᵿᶅkaro÷གɯᶊ\0\0ᶎrn;挟op;挌ƀcotᶘᶣᶦĀryᶝᶡ;쀀𝒹;䑕l;槶rok;䄑Ādrᶰᶴot;拱iĀ;fᶺ᠖斿Āah᷀᷃ròЩaòྦangle;榦Āci᷒ᷕy;䑟grarr;柿ऀDacdefglmnopqrstuxḁḉḙḸոḼṉṡṾấắẽỡἪἷὄ὎὚ĀDoḆᴴoôᲉĀcsḎḔute耻é䃩ter;橮ȀaioyḢḧḱḶron;䄛rĀ;cḭḮ扖耻ê䃪lon;払;䑍ot;䄗ĀDrṁṅot;扒;쀀𝔢ƀ;rsṐṑṗ檚ave耻è䃨Ā;dṜṝ檖ot;檘Ȁ;ilsṪṫṲṴ檙nters;揧;愓Ā;dṹṺ檕ot;檗ƀapsẅẉẗcr;䄓tyƀ;svẒẓẕ戅et»ẓpĀ1;ẝẤijạả;怄;怅怃ĀgsẪẬ;䅋p;怂ĀgpẴẸon;䄙f;쀀𝕖ƀalsỄỎỒrĀ;sỊị拕l;槣us;橱iƀ;lvỚớở䎵on»ớ;䏵ȀcsuvỪỳἋἣĀioữḱrc»Ḯɩỹ\0\0ỻíՈantĀglἂἆtr»ṝess»Ṻƀaeiἒ἖Ἒls;䀽st;扟vĀ;DȵἠD;橸parsl;槥ĀDaἯἳot;打rr;楱ƀcdiἾὁỸr;愯oô͒ĀahὉὋ;䎷耻ð䃰Āmrὓὗl耻ë䃫o;悬ƀcipὡὤὧl;䀡sôծĀeoὬὴctatioîՙnentialåչৡᾒ\0ᾞ\0ᾡᾧ\0\0ῆῌ\0ΐ\0ῦῪ \0 ⁚llingdotseñṄy;䑄male;晀ƀilrᾭᾳ῁lig;耀ffiɩᾹ\0\0᾽g;耀ffig;耀ffl;쀀𝔣lig;耀filig;쀀fjƀaltῙ῜ῡt;晭ig;耀flns;斱of;䆒ǰ΅\0ῳf;쀀𝕗ĀakֿῷĀ;vῼ´拔;櫙artint;樍Āao‌⁕Ācs‑⁒ႉ‸⁅⁈\0⁐β•‥‧‪‬\0‮耻½䂽;慓耻¼䂼;慕;慙;慛Ƴ‴\0‶;慔;慖ʴ‾⁁\0\0⁃耻¾䂾;慗;慜5;慘ƶ⁌\0⁎;慚;慝8;慞l;恄wn;挢cr;쀀𝒻ࢀEabcdefgijlnorstv₂₉₟₥₰₴⃰⃵⃺⃿℃ℒℸ̗ℾ⅒↞Ā;lٍ₇;檌ƀcmpₐₕ₝ute;䇵maĀ;dₜ᳚䎳;檆reve;䄟Āiy₪₮rc;䄝;䐳ot;䄡Ȁ;lqsؾق₽⃉ƀ;qsؾٌ⃄lanô٥Ȁ;cdl٥⃒⃥⃕c;檩otĀ;o⃜⃝檀Ā;l⃢⃣檂;檄Ā;e⃪⃭쀀⋛︀s;檔r;쀀𝔤Ā;gٳ؛mel;愷cy;䑓Ȁ;Eajٚℌℎℐ;檒;檥;檤ȀEaesℛℝ℩ℴ;扩pĀ;p℣ℤ檊rox»ℤĀ;q℮ℯ檈Ā;q℮ℛim;拧pf;쀀𝕘Āci⅃ⅆr;愊mƀ;el٫ⅎ⅐;檎;檐茀>;cdlqr׮ⅠⅪⅮⅳⅹĀciⅥⅧ;檧r;橺ot;拗Par;榕uest;橼ʀadelsↄⅪ←ٖ↛ǰ↉\0↎proø₞r;楸qĀlqؿ↖lesó₈ií٫Āen↣↭rtneqq;쀀≩︀Å↪ԀAabcefkosy⇄⇇⇱⇵⇺∘∝∯≨≽ròΠȀilmr⇐⇔⇗⇛rsðᒄf»․ilôکĀdr⇠⇤cy;䑊ƀ;cwࣴ⇫⇯ir;楈;憭ar;意irc;䄥ƀalr∁∎∓rtsĀ;u∉∊晥it»∊lip;怦con;抹r;쀀𝔥sĀew∣∩arow;椥arow;椦ʀamopr∺∾≃≞≣rr;懿tht;戻kĀlr≉≓eftarrow;憩ightarrow;憪f;쀀𝕙bar;怕ƀclt≯≴≸r;쀀𝒽asè⇴rok;䄧Ābp⊂⊇ull;恃hen»ᱛૡ⊣\0⊪\0⊸⋅⋎\0⋕⋳\0\0⋸⌢⍧⍢⍿\0⎆⎪⎴cute耻í䃭ƀ;iyݱ⊰⊵rc耻î䃮;䐸Ācx⊼⊿y;䐵cl耻¡䂡ĀfrΟ⋉;쀀𝔦rave耻ì䃬Ȁ;inoܾ⋝⋩⋮Āin⋢⋦nt;樌t;戭fin;槜ta;愩lig;䄳ƀaop⋾⌚⌝ƀcgt⌅⌈⌗r;䄫ƀelpܟ⌏⌓inåގarôܠh;䄱f;抷ed;䆵ʀ;cfotӴ⌬⌱⌽⍁are;愅inĀ;t⌸⌹戞ie;槝doô⌙ʀ;celpݗ⍌⍐⍛⍡al;抺Āgr⍕⍙eróᕣã⍍arhk;樗rod;樼Ȁcgpt⍯⍲⍶⍻y;䑑on;䄯f;쀀𝕚a;䎹uest耻¿䂿Āci⎊⎏r;쀀𝒾nʀ;EdsvӴ⎛⎝⎡ӳ;拹ot;拵Ā;v⎦⎧拴;拳Ā;iݷ⎮lde;䄩ǫ⎸\0⎼cy;䑖l耻ï䃯̀cfmosu⏌⏗⏜⏡⏧⏵Āiy⏑⏕rc;䄵;䐹r;쀀𝔧ath;䈷pf;쀀𝕛ǣ⏬\0⏱r;쀀𝒿rcy;䑘kcy;䑔Ѐacfghjos␋␖␢␧␭␱␵␻ppaĀ;v␓␔䎺;䏰Āey␛␠dil;䄷;䐺r;쀀𝔨reen;䄸cy;䑅cy;䑜pf;쀀𝕜cr;쀀𝓀஀ABEHabcdefghjlmnoprstuv⑰⒁⒆⒍⒑┎┽╚▀♎♞♥♹♽⚚⚲⛘❝❨➋⟀⠁⠒ƀart⑷⑺⑼rò৆òΕail;椛arr;椎Ā;gঔ⒋;檋ar;楢ॣ⒥\0⒪\0⒱\0\0\0\0\0⒵Ⓔ\0ⓆⓈⓍ\0⓹ute;䄺mptyv;榴raîࡌbda;䎻gƀ;dlࢎⓁⓃ;榑åࢎ;檅uo耻«䂫rЀ;bfhlpst࢙ⓞⓦⓩ⓫⓮⓱⓵Ā;f࢝ⓣs;椟s;椝ë≒p;憫l;椹im;楳l;憢ƀ;ae⓿─┄檫il;椙Ā;s┉┊檭;쀀⪭︀ƀabr┕┙┝rr;椌rk;杲Āak┢┬cĀek┨┪;䁻;䁛Āes┱┳;榋lĀdu┹┻;榏;榍Ȁaeuy╆╋╖╘ron;䄾Ādi═╔il;䄼ìࢰâ┩;䐻Ȁcqrs╣╦╭╽a;椶uoĀ;rนᝆĀdu╲╷har;楧shar;楋h;憲ʀ;fgqs▋▌উ◳◿扤tʀahlrt▘▤▷◂◨rrowĀ;t࢙□aé⓶arpoonĀdu▯▴own»њp»०eftarrows;懇ightƀahs◍◖◞rrowĀ;sࣴࢧarpoonó྘quigarro÷⇰hreetimes;拋ƀ;qs▋ও◺lanôবʀ;cdgsব☊☍☝☨c;檨otĀ;o☔☕橿Ā;r☚☛檁;檃Ā;e☢☥쀀⋚︀s;檓ʀadegs☳☹☽♉♋pproøⓆot;拖qĀgq♃♅ôউgtò⒌ôছiíলƀilr♕࣡♚sht;楼;쀀𝔩Ā;Eজ♣;檑š♩♶rĀdu▲♮Ā;l॥♳;楪lk;斄cy;䑙ʀ;achtੈ⚈⚋⚑⚖rò◁orneòᴈard;楫ri;旺Āio⚟⚤dot;䅀ustĀ;a⚬⚭掰che»⚭ȀEaes⚻⚽⛉⛔;扨pĀ;p⛃⛄檉rox»⛄Ā;q⛎⛏檇Ā;q⛎⚻im;拦Ѐabnoptwz⛩⛴⛷✚✯❁❇❐Ānr⛮⛱g;柬r;懽rëࣁgƀlmr⛿✍✔eftĀar০✇ightá৲apsto;柼ightá৽parrowĀlr✥✩efô⓭ight;憬ƀafl✶✹✽r;榅;쀀𝕝us;樭imes;樴š❋❏st;戗áፎƀ;ef❗❘᠀旊nge»❘arĀ;l❤❥䀨t;榓ʀachmt❳❶❼➅➇ròࢨorneòᶌarĀ;d྘➃;業;怎ri;抿̀achiqt➘➝ੀ➢➮➻quo;怹r;쀀𝓁mƀ;egল➪➬;檍;檏Ābu┪➳oĀ;rฟ➹;怚rok;䅂萀<;cdhilqrࠫ⟒☹⟜⟠⟥⟪⟰Āci⟗⟙;檦r;橹reå◲mes;拉arr;楶uest;橻ĀPi⟵⟹ar;榖ƀ;ef⠀भ᠛旃rĀdu⠇⠍shar;楊har;楦Āen⠗⠡rtneqq;쀀≨︀Å⠞܀Dacdefhilnopsu⡀⡅⢂⢎⢓⢠⢥⢨⣚⣢⣤ઃ⣳⤂Dot;戺Ȁclpr⡎⡒⡣⡽r耻¯䂯Āet⡗⡙;時Ā;e⡞⡟朠se»⡟Ā;sျ⡨toȀ;dluျ⡳⡷⡻owîҌefôएðᏑker;斮Āoy⢇⢌mma;権;䐼ash;怔asuredangle»ᘦr;쀀𝔪o;愧ƀcdn⢯⢴⣉ro耻µ䂵Ȁ;acdᑤ⢽⣀⣄sôᚧir;櫰ot肻·Ƶusƀ;bd⣒ᤃ⣓戒Ā;uᴼ⣘;横ţ⣞⣡p;櫛ò−ðઁĀdp⣩⣮els;抧f;쀀𝕞Āct⣸⣽r;쀀𝓂pos»ᖝƀ;lm⤉⤊⤍䎼timap;抸ఀGLRVabcdefghijlmoprstuvw⥂⥓⥾⦉⦘⧚⧩⨕⨚⩘⩝⪃⪕⪤⪨⬄⬇⭄⭿⮮ⰴⱧⱼ⳩Āgt⥇⥋;쀀⋙̸Ā;v⥐௏쀀≫⃒ƀelt⥚⥲⥶ftĀar⥡⥧rrow;懍ightarrow;懎;쀀⋘̸Ā;v⥻ే쀀≪⃒ightarrow;懏ĀDd⦎⦓ash;抯ash;抮ʀbcnpt⦣⦧⦬⦱⧌la»˞ute;䅄g;쀀∠⃒ʀ;Eiop඄⦼⧀⧅⧈;쀀⩰̸d;쀀≋̸s;䅉roø඄urĀ;a⧓⧔普lĀ;s⧓ସdz⧟\0⧣p肻 ଷmpĀ;e௹ఀʀaeouy⧴⧾⨃⨐⨓ǰ⧹\0⧻;橃on;䅈dil;䅆ngĀ;dൾ⨊ot;쀀⩭̸p;橂;䐽ash;怓΀;Aadqsxஒ⨩⨭⨻⩁⩅⩐rr;懗rĀhr⨳⨶k;椤Ā;oᏲᏰot;쀀≐̸uiöୣĀei⩊⩎ar;椨í஘istĀ;s஠டr;쀀𝔫ȀEest௅⩦⩹⩼ƀ;qs஼⩭௡ƀ;qs஼௅⩴lanô௢ií௪Ā;rஶ⪁»ஷƀAap⪊⪍⪑rò⥱rr;憮ar;櫲ƀ;svྍ⪜ྌĀ;d⪡⪢拼;拺cy;䑚΀AEadest⪷⪺⪾⫂⫅⫶⫹rò⥦;쀀≦̸rr;憚r;急Ȁ;fqs఻⫎⫣⫯tĀar⫔⫙rro÷⫁ightarro÷⪐ƀ;qs఻⪺⫪lanôౕĀ;sౕ⫴»శiíౝĀ;rవ⫾iĀ;eచథiäඐĀpt⬌⬑f;쀀𝕟膀¬;in⬙⬚⬶䂬nȀ;Edvஉ⬤⬨⬮;쀀⋹̸ot;쀀⋵̸ǡஉ⬳⬵;拷;拶iĀ;vಸ⬼ǡಸ⭁⭃;拾;拽ƀaor⭋⭣⭩rȀ;ast୻⭕⭚⭟lleì୻l;쀀⫽⃥;쀀∂̸lint;樔ƀ;ceಒ⭰⭳uåಥĀ;cಘ⭸Ā;eಒ⭽ñಘȀAait⮈⮋⮝⮧rò⦈rrƀ;cw⮔⮕⮙憛;쀀⤳̸;쀀↝̸ghtarrow»⮕riĀ;eೋೖ΀chimpqu⮽⯍⯙⬄୸⯤⯯Ȁ;cerല⯆ഷ⯉uå൅;쀀𝓃ortɭ⬅\0\0⯖ará⭖mĀ;e൮⯟Ā;q൴൳suĀbp⯫⯭å೸åഋƀbcp⯶ⰑⰙȀ;Ees⯿ⰀഢⰄ抄;쀀⫅̸etĀ;eഛⰋqĀ;qണⰀcĀ;eലⰗñസȀ;EesⰢⰣൟⰧ抅;쀀⫆̸etĀ;e൘ⰮqĀ;qൠⰣȀgilrⰽⰿⱅⱇìௗlde耻ñ䃱çృiangleĀlrⱒⱜeftĀ;eచⱚñదightĀ;eೋⱥñ೗Ā;mⱬⱭ䎽ƀ;esⱴⱵⱹ䀣ro;愖p;怇ҀDHadgilrsⲏⲔⲙⲞⲣⲰⲶⳓⳣash;抭arr;椄p;쀀≍⃒ash;抬ĀetⲨⲬ;쀀≥⃒;쀀>⃒nfin;槞ƀAetⲽⳁⳅrr;椂;쀀≤⃒Ā;rⳊⳍ쀀<⃒ie;쀀⊴⃒ĀAtⳘⳜrr;椃rie;쀀⊵⃒im;쀀∼⃒ƀAan⳰⳴ⴂrr;懖rĀhr⳺⳽k;椣Ā;oᏧᏥear;椧ቓ᪕\0\0\0\0\0\0\0\0\0\0\0\0\0ⴭ\0ⴸⵈⵠⵥ⵲ⶄᬇ\0\0ⶍⶫ\0ⷈⷎ\0ⷜ⸙⸫⸾⹃Ācsⴱ᪗ute耻ó䃳ĀiyⴼⵅrĀ;c᪞ⵂ耻ô䃴;䐾ʀabios᪠ⵒⵗLjⵚlac;䅑v;樸old;榼lig;䅓Ācr⵩⵭ir;榿;쀀𝔬ͯ⵹\0\0⵼\0ⶂn;䋛ave耻ò䃲;槁Ābmⶈ෴ar;榵Ȁacitⶕ⶘ⶥⶨrò᪀Āir⶝ⶠr;榾oss;榻nå๒;槀ƀaeiⶱⶵⶹcr;䅍ga;䏉ƀcdnⷀⷅǍron;䎿;榶pf;쀀𝕠ƀaelⷔ⷗ǒr;榷rp;榹΀;adiosvⷪⷫⷮ⸈⸍⸐⸖戨rò᪆Ȁ;efmⷷⷸ⸂⸅橝rĀ;oⷾⷿ愴f»ⷿ耻ª䂪耻º䂺gof;抶r;橖lope;橗;橛ƀclo⸟⸡⸧ò⸁ash耻ø䃸l;折iŬⸯ⸴de耻õ䃵esĀ;aǛ⸺s;樶ml耻ö䃶bar;挽ૡ⹞\0⹽\0⺀⺝\0⺢⺹\0\0⻋ຜ\0⼓\0\0⼫⾼\0⿈rȀ;astЃ⹧⹲຅脀¶;l⹭⹮䂶leìЃɩ⹸\0\0⹻m;櫳;櫽y;䐿rʀcimpt⺋⺏⺓ᡥ⺗nt;䀥od;䀮il;怰enk;怱r;쀀𝔭ƀimo⺨⺰⺴Ā;v⺭⺮䏆;䏕maô੶ne;明ƀ;tv⺿⻀⻈䏀chfork»´;䏖Āau⻏⻟nĀck⻕⻝kĀ;h⇴⻛;愎ö⇴sҀ;abcdemst⻳⻴ᤈ⻹⻽⼄⼆⼊⼎䀫cir;樣ir;樢Āouᵀ⼂;樥;橲n肻±ຝim;樦wo;樧ƀipu⼙⼠⼥ntint;樕f;쀀𝕡nd耻£䂣Ԁ;Eaceinosu່⼿⽁⽄⽇⾁⾉⾒⽾⾶;檳p;檷uå໙Ā;c໎⽌̀;acens່⽙⽟⽦⽨⽾pproø⽃urlyeñ໙ñ໎ƀaes⽯⽶⽺pprox;檹qq;檵im;拨iíໟmeĀ;s⾈ຮ怲ƀEas⽸⾐⽺ð⽵ƀdfp໬⾙⾯ƀals⾠⾥⾪lar;挮ine;挒urf;挓Ā;t໻⾴ï໻rel;抰Āci⿀⿅r;쀀𝓅;䏈ncsp;怈̀fiopsu⿚⋢⿟⿥⿫⿱r;쀀𝔮pf;쀀𝕢rime;恗cr;쀀𝓆ƀaeo⿸〉〓tĀei⿾々rnionóڰnt;樖stĀ;e【】䀿ñἙô༔઀ABHabcdefhilmnoprstux぀けさすムㄎㄫㅇㅢㅲㆎ㈆㈕㈤㈩㉘㉮㉲㊐㊰㊷ƀartぇおがròႳòϝail;検aròᱥar;楤΀cdenqrtとふへみわゔヌĀeuねぱ;쀀∽̱te;䅕iãᅮmptyv;榳gȀ;del࿑らるろ;榒;榥å࿑uo耻»䂻rր;abcfhlpstw࿜ガクシスゼゾダッデナp;極Ā;f࿠ゴs;椠;椳s;椞ë≝ð✮l;楅im;楴l;憣;憝Āaiパフil;椚oĀ;nホボ戶aló༞ƀabrョリヮrò៥rk;杳ĀakンヽcĀekヹ・;䁽;䁝Āes㄂㄄;榌lĀduㄊㄌ;榎;榐Ȁaeuyㄗㄜㄧㄩron;䅙Ādiㄡㄥil;䅗ì࿲âヺ;䑀Ȁclqsㄴㄷㄽㅄa;椷dhar;楩uoĀ;rȎȍh;憳ƀacgㅎㅟངlȀ;ipsླྀㅘㅛႜnåႻarôྩt;断ƀilrㅩဣㅮsht;楽;쀀𝔯ĀaoㅷㆆrĀduㅽㅿ»ѻĀ;l႑ㆄ;楬Ā;vㆋㆌ䏁;䏱ƀgns㆕ㇹㇼht̀ahlrstㆤㆰ㇂㇘㇤㇮rrowĀ;t࿜ㆭaéトarpoonĀduㆻㆿowîㅾp»႒eftĀah㇊㇐rrowó࿪arpoonóՑightarrows;應quigarro÷ニhreetimes;拌g;䋚ingdotseñἲƀahm㈍㈐㈓rò࿪aòՑ;怏oustĀ;a㈞㈟掱che»㈟mid;櫮Ȁabpt㈲㈽㉀㉒Ānr㈷㈺g;柭r;懾rëဃƀafl㉇㉊㉎r;榆;쀀𝕣us;樮imes;樵Āap㉝㉧rĀ;g㉣㉤䀩t;榔olint;樒arò㇣Ȁachq㉻㊀Ⴜ㊅quo;怺r;쀀𝓇Ābu・㊊oĀ;rȔȓƀhir㊗㊛㊠reåㇸmes;拊iȀ;efl㊪ၙᠡ㊫方tri;槎luhar;楨;愞ൡ㋕㋛㋟㌬㌸㍱\0㍺㎤\0\0㏬㏰\0㐨㑈㑚㒭㒱㓊㓱\0㘖\0\0㘳cute;䅛quï➺Ԁ;Eaceinpsyᇭ㋳㋵㋿㌂㌋㌏㌟㌦㌩;檴ǰ㋺\0㋼;檸on;䅡uåᇾĀ;dᇳ㌇il;䅟rc;䅝ƀEas㌖㌘㌛;檶p;檺im;择olint;樓iíሄ;䑁otƀ;be㌴ᵇ㌵担;橦΀Aacmstx㍆㍊㍗㍛㍞㍣㍭rr;懘rĀhr㍐㍒ë∨Ā;oਸ਼਴t耻§䂧i;䀻war;椩mĀin㍩ðnuóñt;朶rĀ;o㍶⁕쀀𝔰Ȁacoy㎂㎆㎑㎠rp;景Āhy㎋㎏cy;䑉;䑈rtɭ㎙\0\0㎜iäᑤaraì⹯耻­䂭Āgm㎨㎴maƀ;fv㎱㎲㎲䏃;䏂Ѐ;deglnprካ㏅㏉㏎㏖㏞㏡㏦ot;橪Ā;q኱ኰĀ;E㏓㏔檞;檠Ā;E㏛㏜檝;檟e;扆lus;樤arr;楲aròᄽȀaeit㏸㐈㐏㐗Āls㏽㐄lsetmé㍪hp;樳parsl;槤Ādlᑣ㐔e;挣Ā;e㐜㐝檪Ā;s㐢㐣檬;쀀⪬︀ƀflp㐮㐳㑂tcy;䑌Ā;b㐸㐹䀯Ā;a㐾㐿槄r;挿f;쀀𝕤aĀdr㑍ЂesĀ;u㑔㑕晠it»㑕ƀcsu㑠㑹㒟Āau㑥㑯pĀ;sᆈ㑫;쀀⊓︀pĀ;sᆴ㑵;쀀⊔︀uĀbp㑿㒏ƀ;esᆗᆜ㒆etĀ;eᆗ㒍ñᆝƀ;esᆨᆭ㒖etĀ;eᆨ㒝ñᆮƀ;afᅻ㒦ְrť㒫ֱ»ᅼaròᅈȀcemt㒹㒾㓂㓅r;쀀𝓈tmîñiì㐕aræᆾĀar㓎㓕rĀ;f㓔ឿ昆Āan㓚㓭ightĀep㓣㓪psiloîỠhé⺯s»⡒ʀbcmnp㓻㕞ሉ㖋㖎Ҁ;Edemnprs㔎㔏㔑㔕㔞㔣㔬㔱㔶抂;櫅ot;檽Ā;dᇚ㔚ot;櫃ult;櫁ĀEe㔨㔪;櫋;把lus;檿arr;楹ƀeiu㔽㕒㕕tƀ;en㔎㕅㕋qĀ;qᇚ㔏eqĀ;q㔫㔨m;櫇Ābp㕚㕜;櫕;櫓c̀;acensᇭ㕬㕲㕹㕻㌦pproø㋺urlyeñᇾñᇳƀaes㖂㖈㌛pproø㌚qñ㌗g;晪ڀ123;Edehlmnps㖩㖬㖯ሜ㖲㖴㗀㗉㗕㗚㗟㗨㗭耻¹䂹耻²䂲耻³䂳;櫆Āos㖹㖼t;檾ub;櫘Ā;dሢ㗅ot;櫄sĀou㗏㗒l;柉b;櫗arr;楻ult;櫂ĀEe㗤㗦;櫌;抋lus;櫀ƀeiu㗴㘉㘌tƀ;enሜ㗼㘂qĀ;qሢ㖲eqĀ;q㗧㗤m;櫈Ābp㘑㘓;櫔;櫖ƀAan㘜㘠㘭rr;懙rĀhr㘦㘨ë∮Ā;oਫ਩war;椪lig耻ß䃟௡㙑㙝㙠ዎ㙳㙹\0㙾㛂\0\0\0\0\0㛛㜃\0㜉㝬\0\0\0㞇ɲ㙖\0\0㙛get;挖;䏄rë๟ƀaey㙦㙫㙰ron;䅥dil;䅣;䑂lrec;挕r;쀀𝔱Ȁeiko㚆㚝㚵㚼Dz㚋\0㚑eĀ4fኄኁaƀ;sv㚘㚙㚛䎸ym;䏑Ācn㚢㚲kĀas㚨㚮pproø዁im»ኬsðኞĀas㚺㚮ð዁rn耻þ䃾Ǭ̟㛆⋧es膀×;bd㛏㛐㛘䃗Ā;aᤏ㛕r;樱;樰ƀeps㛡㛣㜀á⩍Ȁ;bcf҆㛬㛰㛴ot;挶ir;櫱Ā;o㛹㛼쀀𝕥rk;櫚á㍢rime;怴ƀaip㜏㜒㝤dåቈ΀adempst㜡㝍㝀㝑㝗㝜㝟ngleʀ;dlqr㜰㜱㜶㝀㝂斵own»ᶻeftĀ;e⠀㜾ñम;扜ightĀ;e㊪㝋ñၚot;旬inus;樺lus;樹b;槍ime;樻ezium;揢ƀcht㝲㝽㞁Āry㝷㝻;쀀𝓉;䑆cy;䑛rok;䅧Āio㞋㞎xô᝷headĀlr㞗㞠eftarro÷ࡏightarrow»ཝऀAHabcdfghlmoprstuw㟐㟓㟗㟤㟰㟼㠎㠜㠣㠴㡑㡝㡫㢩㣌㣒㣪㣶ròϭar;楣Ācr㟜㟢ute耻ú䃺òᅐrǣ㟪\0㟭y;䑞ve;䅭Āiy㟵㟺rc耻û䃻;䑃ƀabh㠃㠆㠋ròᎭlac;䅱aòᏃĀir㠓㠘sht;楾;쀀𝔲rave耻ù䃹š㠧㠱rĀlr㠬㠮»ॗ»ႃlk;斀Āct㠹㡍ɯ㠿\0\0㡊rnĀ;e㡅㡆挜r»㡆op;挏ri;旸Āal㡖㡚cr;䅫肻¨͉Āgp㡢㡦on;䅳f;쀀𝕦̀adhlsuᅋ㡸㡽፲㢑㢠ownáᎳarpoonĀlr㢈㢌efô㠭ighô㠯iƀ;hl㢙㢚㢜䏅»ᏺon»㢚parrows;懈ƀcit㢰㣄㣈ɯ㢶\0\0㣁rnĀ;e㢼㢽挝r»㢽op;挎ng;䅯ri;旹cr;쀀𝓊ƀdir㣙㣝㣢ot;拰lde;䅩iĀ;f㜰㣨»᠓Āam㣯㣲rò㢨l耻ü䃼angle;榧ހABDacdeflnoprsz㤜㤟㤩㤭㦵㦸㦽㧟㧤㧨㧳㧹㧽㨁㨠ròϷarĀ;v㤦㤧櫨;櫩asèϡĀnr㤲㤷grt;榜΀eknprst㓣㥆㥋㥒㥝㥤㦖appá␕othinçẖƀhir㓫⻈㥙opô⾵Ā;hᎷ㥢ïㆍĀiu㥩㥭gmá㎳Ābp㥲㦄setneqĀ;q㥽㦀쀀⊊︀;쀀⫋︀setneqĀ;q㦏㦒쀀⊋︀;쀀⫌︀Āhr㦛㦟etá㚜iangleĀlr㦪㦯eft»थight»ၑy;䐲ash»ံƀelr㧄㧒㧗ƀ;beⷪ㧋㧏ar;抻q;扚lip;拮Ābt㧜ᑨaòᑩr;쀀𝔳tré㦮suĀbp㧯㧱»ജ»൙pf;쀀𝕧roð໻tré㦴Ācu㨆㨋r;쀀𝓋Ābp㨐㨘nĀEe㦀㨖»㥾nĀEe㦒㨞»㦐igzag;榚΀cefoprs㨶㨻㩖㩛㩔㩡㩪irc;䅵Ādi㩀㩑Ābg㩅㩉ar;機eĀ;qᗺ㩏;扙erp;愘r;쀀𝔴pf;쀀𝕨Ā;eᑹ㩦atèᑹcr;쀀𝓌ૣណ㪇\0㪋\0㪐㪛\0\0㪝㪨㪫㪯\0\0㫃㫎\0㫘ៜ៟tré៑r;쀀𝔵ĀAa㪔㪗ròσrò৶;䎾ĀAa㪡㪤ròθrò৫að✓is;拻ƀdptឤ㪵㪾Āfl㪺ឩ;쀀𝕩imåឲĀAa㫇㫊ròώròਁĀcq㫒ីr;쀀𝓍Āpt៖㫜ré។Ѐacefiosu㫰㫽㬈㬌㬑㬕㬛㬡cĀuy㫶㫻te耻ý䃽;䑏Āiy㬂㬆rc;䅷;䑋n耻¥䂥r;쀀𝔶cy;䑗pf;쀀𝕪cr;쀀𝓎Ācm㬦㬩y;䑎l耻ÿ䃿Ԁacdefhiosw㭂㭈㭔㭘㭤㭩㭭㭴㭺㮀cute;䅺Āay㭍㭒ron;䅾;䐷ot;䅼Āet㭝㭡træᕟa;䎶r;쀀𝔷cy;䐶grarr;懝pf;쀀𝕫cr;쀀𝓏Ājn㮅㮇;怍j;怌'.split("").map((function(e) { + return e.charCodeAt(0) + }))) +})); +qe(Ao); +var go = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.default = new Uint16Array("Ȁaglq\tɭ\0\0p;䀦os;䀧t;䀾t;䀼uot;䀢".split("").map((function(e) { + return e.charCodeAt(0) + }))) +})); +qe(go); +var No = Ke((function(e, t) { + var n; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.replaceCodePoint = t.fromCodePoint = void 0; + var r = new Map([ + [0, 65533], + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376] + ]); + + function i(e) { + var t; + return e >= 55296 && e <= 57343 || e > 1114111 ? 65533 : null !== (t = r.get(e)) && void 0 !== t ? t : e + } + t.fromCodePoint = null !== (n = String.fromCodePoint) && void 0 !== n ? n : function(e) { + var t = ""; + return e > 65535 && (e -= 65536, t += String.fromCharCode(e >>> 10 & 1023 | 55296), e = 56320 | 1023 & e), t += String.fromCharCode(e) + }, t.replaceCodePoint = i, t.default = function(e) { + return (0, t.fromCodePoint)(i(e)) + } +})); +qe(No), No.replaceCodePoint, No.fromCodePoint; +var Co = Ao, + Io = go, + So = No, + bo = Ke((function(e, t) { + var n = Ge && Ge.__importDefault || function(e) { + return e && e.__esModule ? e : { + default: e + } + }; + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.decodeXML = t.decodeHTMLStrict = t.decodeHTML = t.determineBranch = t.BinTrieFlags = t.fromCodePoint = t.replaceCodePoint = t.decodeCodePoint = t.xmlDecodeTree = t.htmlDecodeTree = void 0; + var r = n(Co); + t.htmlDecodeTree = r.default; + var i = n(Io); + t.xmlDecodeTree = i.default; + var s = n(So); + t.decodeCodePoint = s.default; + var a, o, c = So; + + function l(e) { + return function(t, n) { + for (var r = "", i = 0, c = 0; + (c = t.indexOf("&", c)) >= 0;) + if (r += t.slice(i, c), i = c, c += 1, t.charCodeAt(c) !== a.NUM) { + for (var l = 0, u = 1, p = 0, f = e[p]; c < t.length && !((p = h(e, f, p + 1, t.charCodeAt(c))) < 0); c++, u++) { + var d = (f = e[p]) & o.VALUE_LENGTH; + if (d) { + var E; + if (n && t.charCodeAt(c) !== a.SEMI || (l = p, u = 0), 0 === (E = (d >> 14) - 1)) break; + p += E + } + } + if (0 !== l) r += 1 === (E = (e[l] & o.VALUE_LENGTH) >> 14) ? String.fromCharCode(e[l] & ~o.VALUE_LENGTH) : 2 === E ? String.fromCharCode(e[l + 1]) : String.fromCharCode(e[l + 1], e[l + 2]), i = c - u + 1 + } else { + var m = c + 1, + T = 10, + _ = t.charCodeAt(m); + (_ | a.To_LOWER_BIT) === a.LOWER_X && (T = 16, c += 1, m += 1); + do { + _ = t.charCodeAt(++c) + } while (_ >= a.ZERO && _ <= a.NINE || 16 === T && (_ | a.To_LOWER_BIT) >= a.LOWER_A && (_ | a.To_LOWER_BIT) <= a.LOWER_F); + if (m !== c) { + var A = t.substring(m, c), + g = parseInt(A, T); + if (t.charCodeAt(c) === a.SEMI) c += 1; + else if (n) continue; + r += (0, s.default)(g), i = c + } + } return r + t.slice(i) + } + } + + function h(e, t, n, r) { + var i = (t & o.BRANCH_LENGTH) >> 7, + s = t & o.JUMP_TABLE; + if (0 === i) return 0 !== s && r === s ? n : -1; + if (s) { + var a = r - s; + return a < 0 || a >= i ? -1 : e[n + a] - 1 + } + for (var c = n, l = c + i - 1; c <= l;) { + var h = c + l >>> 1, + u = e[h]; + if (u < r) c = h + 1; + else { + if (!(u > r)) return e[h + i]; + l = h - 1 + } + } + return -1 + } + Object.defineProperty(t, "replaceCodePoint", { + enumerable: !0, + get: function() { + return c.replaceCodePoint + } + }), Object.defineProperty(t, "fromCodePoint", { + enumerable: !0, + get: function() { + return c.fromCodePoint + } + }), + function(e) { + e[e.NUM = 35] = "NUM", e[e.SEMI = 59] = "SEMI", e[e.ZERO = 48] = "ZERO", e[e.NINE = 57] = "NINE", e[e.LOWER_A = 97] = "LOWER_A", e[e.LOWER_F = 102] = "LOWER_F", e[e.LOWER_X = 120] = "LOWER_X", e[e.To_LOWER_BIT = 32] = "To_LOWER_BIT" + }(a || (a = {})), + function(e) { + e[e.VALUE_LENGTH = 49152] = "VALUE_LENGTH", e[e.BRANCH_LENGTH = 16256] = "BRANCH_LENGTH", e[e.JUMP_TABLE = 127] = "JUMP_TABLE" + }(o = t.BinTrieFlags || (t.BinTrieFlags = {})), t.determineBranch = h; + var u = l(r.default), + p = l(i.default); + t.decodeHTML = function(e) { + return u(e, !1) + }, t.decodeHTMLStrict = function(e) { + return u(e, !0) + }, t.decodeXML = function(e) { + return p(e, !0) + } + })); +qe(bo), bo.decodeXML, bo.decodeHTMLStrict, bo.decodeHTML; +var Oo = bo.determineBranch, + yo = bo.BinTrieFlags, + Lo = bo.fromCodePoint, + ko = bo.replaceCodePoint; +bo.decodeCodePoint; +var vo, Do, Ro, Mo, Po, xo = bo.xmlDecodeTree, + wo = bo.htmlDecodeTree; +! function(e) { + e.HTML = "http://www.w3.org/1999/xhtml", e.MATHML = "http://www.w3.org/1998/Math/MathML", e.SVG = "http://www.w3.org/2000/svg", e.XLINK = "http://www.w3.org/1999/xlink", e.XML = "http://www.w3.org/XML/1998/namespace", e.XMLNS = "http://www.w3.org/2000/xmlns/" +}(vo = vo || (vo = {})), +function(e) { + e.TYPE = "type", e.ACTION = "action", e.ENCODING = "encoding", e.PROMPT = "prompt", e.NAME = "name", e.COLOR = "color", e.FACE = "face", e.SIZE = "size" +}(Do = Do || (Do = {})), +function(e) { + e.NO_QUIRKS = "no-quirks", e.QUIRKS = "quirks", e.LIMITED_QUIRKS = "limited-quirks" +}(Ro = Ro || (Ro = {})), +function(e) { + e.A = "a", e.ADDRESS = "address", e.ANNOTATION_XML = "annotation-xml", e.APPLET = "applet", e.AREA = "area", e.ARTICLE = "article", e.ASIDE = "aside", e.B = "b", e.BASE = "base", e.BASEFONT = "basefont", e.BGSOUND = "bgsound", e.BIG = "big", e.BLOCKQUOTE = "blockquote", e.BODY = "body", e.BR = "br", e.BUTTON = "button", e.CAPTION = "caption", e.CENTER = "center", e.CODE = "code", e.COL = "col", e.COLGROUP = "colgroup", e.DD = "dd", e.DESC = "desc", e.DETAILS = "details", e.DIALOG = "dialog", e.DIR = "dir", e.DIV = "div", e.DL = "dl", e.DT = "dt", e.EM = "em", e.EMBED = "embed", e.FIELDSET = "fieldset", e.FIGCAPTION = "figcaption", e.FIGURE = "figure", e.FONT = "font", e.FOOTER = "footer", e.FOREIGN_OBJECT = "foreignObject", e.FORM = "form", e.FRAME = "frame", e.FRAMESET = "frameset", e.H1 = "h1", e.H2 = "h2", e.H3 = "h3", e.H4 = "h4", e.H5 = "h5", e.H6 = "h6", e.HEAD = "head", e.HEADER = "header", e.HGROUP = "hgroup", e.HR = "hr", e.HTML = "html", e.I = "i", e.IMG = "img", e.IMAGE = "image", e.INPUT = "input", e.IFRAME = "iframe", e.KEYGEN = "keygen", e.LABEL = "label", e.LI = "li", e.LINK = "link", e.LISTING = "listing", e.MAIN = "main", e.MALIGNMARK = "malignmark", e.MARQUEE = "marquee", e.MATH = "math", e.MENU = "menu", e.META = "meta", e.MGLYPH = "mglyph", e.MI = "mi", e.MO = "mo", e.MN = "mn", e.MS = "ms", e.MTEXT = "mtext", e.NAV = "nav", e.NOBR = "nobr", e.NOFRAMES = "noframes", e.NOEMBED = "noembed", e.NOSCRIPT = "noscript", e.OBJECT = "object", e.OL = "ol", e.OPTGROUP = "optgroup", e.OPTION = "option", e.P = "p", e.PARAM = "param", e.PLAINTEXT = "plaintext", e.PRE = "pre", e.RB = "rb", e.RP = "rp", e.RT = "rt", e.RTC = "rtc", e.RUBY = "ruby", e.S = "s", e.SCRIPT = "script", e.SECTION = "section", e.SELECT = "select", e.SOURCE = "source", e.SMALL = "small", e.SPAN = "span", e.STRIKE = "strike", e.STRONG = "strong", e.STYLE = "style", e.SUB = "sub", e.SUMMARY = "summary", e.SUP = "sup", e.TABLE = "table", e.TBODY = "tbody", e.TEMPLATE = "template", e.TEXTAREA = "textarea", e.TFOOT = "tfoot", e.TD = "td", e.TH = "th", e.THEAD = "thead", e.TITLE = "title", e.TR = "tr", e.TRACK = "track", e.TT = "tt", e.U = "u", e.UL = "ul", e.SVG = "svg", e.VAR = "var", e.WBR = "wbr", e.XMP = "xmp" +}(Mo = Mo || (Mo = {})), +function(e) { + e[e.UNKNOWN = 0] = "UNKNOWN", e[e.A = 1] = "A", e[e.ADDRESS = 2] = "ADDRESS", e[e.ANNOTATION_XML = 3] = "ANNOTATION_XML", e[e.APPLET = 4] = "APPLET", e[e.AREA = 5] = "AREA", e[e.ARTICLE = 6] = "ARTICLE", e[e.ASIDE = 7] = "ASIDE", e[e.B = 8] = "B", e[e.BASE = 9] = "BASE", e[e.BASEFONT = 10] = "BASEFONT", e[e.BGSOUND = 11] = "BGSOUND", e[e.BIG = 12] = "BIG", e[e.BLOCKQUOTE = 13] = "BLOCKQUOTE", e[e.BODY = 14] = "BODY", e[e.BR = 15] = "BR", e[e.BUTTON = 16] = "BUTTON", e[e.CAPTION = 17] = "CAPTION", e[e.CENTER = 18] = "CENTER", e[e.CODE = 19] = "CODE", e[e.COL = 20] = "COL", e[e.COLGROUP = 21] = "COLGROUP", e[e.DD = 22] = "DD", e[e.DESC = 23] = "DESC", e[e.DETAILS = 24] = "DETAILS", e[e.DIALOG = 25] = "DIALOG", e[e.DIR = 26] = "DIR", e[e.DIV = 27] = "DIV", e[e.DL = 28] = "DL", e[e.DT = 29] = "DT", e[e.EM = 30] = "EM", e[e.EMBED = 31] = "EMBED", e[e.FIELDSET = 32] = "FIELDSET", e[e.FIGCAPTION = 33] = "FIGCAPTION", e[e.FIGURE = 34] = "FIGURE", e[e.FONT = 35] = "FONT", e[e.FOOTER = 36] = "FOOTER", e[e.FOREIGN_OBJECT = 37] = "FOREIGN_OBJECT", e[e.FORM = 38] = "FORM", e[e.FRAME = 39] = "FRAME", e[e.FRAMESET = 40] = "FRAMESET", e[e.H1 = 41] = "H1", e[e.H2 = 42] = "H2", e[e.H3 = 43] = "H3", e[e.H4 = 44] = "H4", e[e.H5 = 45] = "H5", e[e.H6 = 46] = "H6", e[e.HEAD = 47] = "HEAD", e[e.HEADER = 48] = "HEADER", e[e.HGROUP = 49] = "HGROUP", e[e.HR = 50] = "HR", e[e.HTML = 51] = "HTML", e[e.I = 52] = "I", e[e.IMG = 53] = "IMG", e[e.IMAGE = 54] = "IMAGE", e[e.INPUT = 55] = "INPUT", e[e.IFRAME = 56] = "IFRAME", e[e.KEYGEN = 57] = "KEYGEN", e[e.LABEL = 58] = "LABEL", e[e.LI = 59] = "LI", e[e.LINK = 60] = "LINK", e[e.LISTING = 61] = "LISTING", e[e.MAIN = 62] = "MAIN", e[e.MALIGNMARK = 63] = "MALIGNMARK", e[e.MARQUEE = 64] = "MARQUEE", e[e.MATH = 65] = "MATH", e[e.MENU = 66] = "MENU", e[e.META = 67] = "META", e[e.MGLYPH = 68] = "MGLYPH", e[e.MI = 69] = "MI", e[e.MO = 70] = "MO", e[e.MN = 71] = "MN", e[e.MS = 72] = "MS", e[e.MTEXT = 73] = "MTEXT", e[e.NAV = 74] = "NAV", e[e.NOBR = 75] = "NOBR", e[e.NOFRAMES = 76] = "NOFRAMES", e[e.NOEMBED = 77] = "NOEMBED", e[e.NOSCRIPT = 78] = "NOSCRIPT", e[e.OBJECT = 79] = "OBJECT", e[e.OL = 80] = "OL", e[e.OPTGROUP = 81] = "OPTGROUP", e[e.OPTION = 82] = "OPTION", e[e.P = 83] = "P", e[e.PARAM = 84] = "PARAM", e[e.PLAINTEXT = 85] = "PLAINTEXT", e[e.PRE = 86] = "PRE", e[e.RB = 87] = "RB", e[e.RP = 88] = "RP", e[e.RT = 89] = "RT", e[e.RTC = 90] = "RTC", e[e.RUBY = 91] = "RUBY", e[e.S = 92] = "S", e[e.SCRIPT = 93] = "SCRIPT", e[e.SECTION = 94] = "SECTION", e[e.SELECT = 95] = "SELECT", e[e.SOURCE = 96] = "SOURCE", e[e.SMALL = 97] = "SMALL", e[e.SPAN = 98] = "SPAN", e[e.STRIKE = 99] = "STRIKE", e[e.STRONG = 100] = "STRONG", e[e.STYLE = 101] = "STYLE", e[e.SUB = 102] = "SUB", e[e.SUMMARY = 103] = "SUMMARY", e[e.SUP = 104] = "SUP", e[e.TABLE = 105] = "TABLE", e[e.TBODY = 106] = "TBODY", e[e.TEMPLATE = 107] = "TEMPLATE", e[e.TEXTAREA = 108] = "TEXTAREA", e[e.TFOOT = 109] = "TFOOT", e[e.TD = 110] = "TD", e[e.TH = 111] = "TH", e[e.THEAD = 112] = "THEAD", e[e.TITLE = 113] = "TITLE", e[e.TR = 114] = "TR", e[e.TRACK = 115] = "TRACK", e[e.TT = 116] = "TT", e[e.U = 117] = "U", e[e.UL = 118] = "UL", e[e.SVG = 119] = "SVG", e[e.VAR = 120] = "VAR", e[e.WBR = 121] = "WBR", e[e.XMP = 122] = "XMP" +}(Po = Po || (Po = {})); +const Bo = new Map([ + [Mo.A, Po.A], + [Mo.ADDRESS, Po.ADDRESS], + [Mo.ANNOTATION_XML, Po.ANNOTATION_XML], + [Mo.APPLET, Po.APPLET], + [Mo.AREA, Po.AREA], + [Mo.ARTICLE, Po.ARTICLE], + [Mo.ASIDE, Po.ASIDE], + [Mo.B, Po.B], + [Mo.BASE, Po.BASE], + [Mo.BASEFONT, Po.BASEFONT], + [Mo.BGSOUND, Po.BGSOUND], + [Mo.BIG, Po.BIG], + [Mo.BLOCKQUOTE, Po.BLOCKQUOTE], + [Mo.BODY, Po.BODY], + [Mo.BR, Po.BR], + [Mo.BUTTON, Po.BUTTON], + [Mo.CAPTION, Po.CAPTION], + [Mo.CENTER, Po.CENTER], + [Mo.CODE, Po.CODE], + [Mo.COL, Po.COL], + [Mo.COLGROUP, Po.COLGROUP], + [Mo.DD, Po.DD], + [Mo.DESC, Po.DESC], + [Mo.DETAILS, Po.DETAILS], + [Mo.DIALOG, Po.DIALOG], + [Mo.DIR, Po.DIR], + [Mo.DIV, Po.DIV], + [Mo.DL, Po.DL], + [Mo.DT, Po.DT], + [Mo.EM, Po.EM], + [Mo.EMBED, Po.EMBED], + [Mo.FIELDSET, Po.FIELDSET], + [Mo.FIGCAPTION, Po.FIGCAPTION], + [Mo.FIGURE, Po.FIGURE], + [Mo.FONT, Po.FONT], + [Mo.FOOTER, Po.FOOTER], + [Mo.FOREIGN_OBJECT, Po.FOREIGN_OBJECT], + [Mo.FORM, Po.FORM], + [Mo.FRAME, Po.FRAME], + [Mo.FRAMESET, Po.FRAMESET], + [Mo.H1, Po.H1], + [Mo.H2, Po.H2], + [Mo.H3, Po.H3], + [Mo.H4, Po.H4], + [Mo.H5, Po.H5], + [Mo.H6, Po.H6], + [Mo.HEAD, Po.HEAD], + [Mo.HEADER, Po.HEADER], + [Mo.HGROUP, Po.HGROUP], + [Mo.HR, Po.HR], + [Mo.HTML, Po.HTML], + [Mo.I, Po.I], + [Mo.IMG, Po.IMG], + [Mo.IMAGE, Po.IMAGE], + [Mo.INPUT, Po.INPUT], + [Mo.IFRAME, Po.IFRAME], + [Mo.KEYGEN, Po.KEYGEN], + [Mo.LABEL, Po.LABEL], + [Mo.LI, Po.LI], + [Mo.LINK, Po.LINK], + [Mo.LISTING, Po.LISTING], + [Mo.MAIN, Po.MAIN], + [Mo.MALIGNMARK, Po.MALIGNMARK], + [Mo.MARQUEE, Po.MARQUEE], + [Mo.MATH, Po.MATH], + [Mo.MENU, Po.MENU], + [Mo.META, Po.META], + [Mo.MGLYPH, Po.MGLYPH], + [Mo.MI, Po.MI], + [Mo.MO, Po.MO], + [Mo.MN, Po.MN], + [Mo.MS, Po.MS], + [Mo.MTEXT, Po.MTEXT], + [Mo.NAV, Po.NAV], + [Mo.NOBR, Po.NOBR], + [Mo.NOFRAMES, Po.NOFRAMES], + [Mo.NOEMBED, Po.NOEMBED], + [Mo.NOSCRIPT, Po.NOSCRIPT], + [Mo.OBJECT, Po.OBJECT], + [Mo.OL, Po.OL], + [Mo.OPTGROUP, Po.OPTGROUP], + [Mo.OPTION, Po.OPTION], + [Mo.P, Po.P], + [Mo.PARAM, Po.PARAM], + [Mo.PLAINTEXT, Po.PLAINTEXT], + [Mo.PRE, Po.PRE], + [Mo.RB, Po.RB], + [Mo.RP, Po.RP], + [Mo.RT, Po.RT], + [Mo.RTC, Po.RTC], + [Mo.RUBY, Po.RUBY], + [Mo.S, Po.S], + [Mo.SCRIPT, Po.SCRIPT], + [Mo.SECTION, Po.SECTION], + [Mo.SELECT, Po.SELECT], + [Mo.SOURCE, Po.SOURCE], + [Mo.SMALL, Po.SMALL], + [Mo.SPAN, Po.SPAN], + [Mo.STRIKE, Po.STRIKE], + [Mo.STRONG, Po.STRONG], + [Mo.STYLE, Po.STYLE], + [Mo.SUB, Po.SUB], + [Mo.SUMMARY, Po.SUMMARY], + [Mo.SUP, Po.SUP], + [Mo.TABLE, Po.TABLE], + [Mo.TBODY, Po.TBODY], + [Mo.TEMPLATE, Po.TEMPLATE], + [Mo.TEXTAREA, Po.TEXTAREA], + [Mo.TFOOT, Po.TFOOT], + [Mo.TD, Po.TD], + [Mo.TH, Po.TH], + [Mo.THEAD, Po.THEAD], + [Mo.TITLE, Po.TITLE], + [Mo.TR, Po.TR], + [Mo.TRACK, Po.TRACK], + [Mo.TT, Po.TT], + [Mo.U, Po.U], + [Mo.UL, Po.UL], + [Mo.SVG, Po.SVG], + [Mo.VAR, Po.VAR], + [Mo.WBR, Po.WBR], + [Mo.XMP, Po.XMP] +]); + +function Fo(e) { + var t; + return null !== (t = Bo.get(e)) && void 0 !== t ? t : Po.UNKNOWN +} +const Uo = Po, + Ho = { + [vo.HTML]: new Set([Uo.ADDRESS, Uo.APPLET, Uo.AREA, Uo.ARTICLE, Uo.ASIDE, Uo.BASE, Uo.BASEFONT, Uo.BGSOUND, Uo.BLOCKQUOTE, Uo.BODY, Uo.BR, Uo.BUTTON, Uo.CAPTION, Uo.CENTER, Uo.COL, Uo.COLGROUP, Uo.DD, Uo.DETAILS, Uo.DIR, Uo.DIV, Uo.DL, Uo.DT, Uo.EMBED, Uo.FIELDSET, Uo.FIGCAPTION, Uo.FIGURE, Uo.FOOTER, Uo.FORM, Uo.FRAME, Uo.FRAMESET, Uo.H1, Uo.H2, Uo.H3, Uo.H4, Uo.H5, Uo.H6, Uo.HEAD, Uo.HEADER, Uo.HGROUP, Uo.HR, Uo.HTML, Uo.IFRAME, Uo.IMG, Uo.INPUT, Uo.LI, Uo.LINK, Uo.LISTING, Uo.MAIN, Uo.MARQUEE, Uo.MENU, Uo.META, Uo.NAV, Uo.NOEMBED, Uo.NOFRAMES, Uo.NOSCRIPT, Uo.OBJECT, Uo.OL, Uo.P, Uo.PARAM, Uo.PLAINTEXT, Uo.PRE, Uo.SCRIPT, Uo.SECTION, Uo.SELECT, Uo.SOURCE, Uo.STYLE, Uo.SUMMARY, Uo.TABLE, Uo.TBODY, Uo.TD, Uo.TEMPLATE, Uo.TEXTAREA, Uo.TFOOT, Uo.TH, Uo.THEAD, Uo.TITLE, Uo.TR, Uo.TRACK, Uo.UL, Uo.WBR, Uo.XMP]), + [vo.MATHML]: new Set([Uo.MI, Uo.MO, Uo.MN, Uo.MS, Uo.MTEXT, Uo.ANNOTATION_XML]), + [vo.SVG]: new Set([Uo.TITLE, Uo.FOREIGN_OBJECT, Uo.DESC]), + [vo.XLINK]: new Set, + [vo.XML]: new Set, + [vo.XMLNS]: new Set + }; + +function Go(e) { + return e === Uo.H1 || e === Uo.H2 || e === Uo.H3 || e === Uo.H4 || e === Uo.H5 || e === Uo.H6 +} +const Yo = new Set([Mo.STYLE, Mo.SCRIPT, Mo.XMP, Mo.IFRAME, Mo.NOEMBED, Mo.NOFRAMES, Mo.PLAINTEXT]); +const qo = new Map([ + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376] +]); +var Ko; +! function(e) { + e[e.DATA = 0] = "DATA", e[e.RCDATA = 1] = "RCDATA", e[e.RAWTEXT = 2] = "RAWTEXT", e[e.SCRIPT_DATA = 3] = "SCRIPT_DATA", e[e.PLAINTEXT = 4] = "PLAINTEXT", e[e.TAG_OPEN = 5] = "TAG_OPEN", e[e.END_TAG_OPEN = 6] = "END_TAG_OPEN", e[e.TAG_NAME = 7] = "TAG_NAME", e[e.RCDATA_LESS_THAN_SIGN = 8] = "RCDATA_LESS_THAN_SIGN", e[e.RCDATA_END_TAG_OPEN = 9] = "RCDATA_END_TAG_OPEN", e[e.RCDATA_END_TAG_NAME = 10] = "RCDATA_END_TAG_NAME", e[e.RAWTEXT_LESS_THAN_SIGN = 11] = "RAWTEXT_LESS_THAN_SIGN", e[e.RAWTEXT_END_TAG_OPEN = 12] = "RAWTEXT_END_TAG_OPEN", e[e.RAWTEXT_END_TAG_NAME = 13] = "RAWTEXT_END_TAG_NAME", e[e.SCRIPT_DATA_LESS_THAN_SIGN = 14] = "SCRIPT_DATA_LESS_THAN_SIGN", e[e.SCRIPT_DATA_END_TAG_OPEN = 15] = "SCRIPT_DATA_END_TAG_OPEN", e[e.SCRIPT_DATA_END_TAG_NAME = 16] = "SCRIPT_DATA_END_TAG_NAME", e[e.SCRIPT_DATA_ESCAPE_START = 17] = "SCRIPT_DATA_ESCAPE_START", e[e.SCRIPT_DATA_ESCAPE_START_DASH = 18] = "SCRIPT_DATA_ESCAPE_START_DASH", e[e.SCRIPT_DATA_ESCAPED = 19] = "SCRIPT_DATA_ESCAPED", e[e.SCRIPT_DATA_ESCAPED_DASH = 20] = "SCRIPT_DATA_ESCAPED_DASH", e[e.SCRIPT_DATA_ESCAPED_DASH_DASH = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_OPEN = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN", e[e.SCRIPT_DATA_ESCAPED_END_TAG_NAME = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_START = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START", e[e.SCRIPT_DATA_DOUBLE_ESCAPED = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH", e[e.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN", e[e.SCRIPT_DATA_DOUBLE_ESCAPE_END = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END", e[e.BEFORE_ATTRIBUTE_NAME = 31] = "BEFORE_ATTRIBUTE_NAME", e[e.ATTRIBUTE_NAME = 32] = "ATTRIBUTE_NAME", e[e.AFTER_ATTRIBUTE_NAME = 33] = "AFTER_ATTRIBUTE_NAME", e[e.BEFORE_ATTRIBUTE_VALUE = 34] = "BEFORE_ATTRIBUTE_VALUE", e[e.ATTRIBUTE_VALUE_DOUBLE_QUOTED = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED", e[e.ATTRIBUTE_VALUE_SINGLE_QUOTED = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED", e[e.ATTRIBUTE_VALUE_UNQUOTED = 37] = "ATTRIBUTE_VALUE_UNQUOTED", e[e.AFTER_ATTRIBUTE_VALUE_QUOTED = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED", e[e.SELF_CLOSING_START_TAG = 39] = "SELF_CLOSING_START_TAG", e[e.BOGUS_COMMENT = 40] = "BOGUS_COMMENT", e[e.MARKUP_DECLARATION_OPEN = 41] = "MARKUP_DECLARATION_OPEN", e[e.COMMENT_START = 42] = "COMMENT_START", e[e.COMMENT_START_DASH = 43] = "COMMENT_START_DASH", e[e.COMMENT = 44] = "COMMENT", e[e.COMMENT_LESS_THAN_SIGN = 45] = "COMMENT_LESS_THAN_SIGN", e[e.COMMENT_LESS_THAN_SIGN_BANG = 46] = "COMMENT_LESS_THAN_SIGN_BANG", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH", e[e.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH", e[e.COMMENT_END_DASH = 49] = "COMMENT_END_DASH", e[e.COMMENT_END = 50] = "COMMENT_END", e[e.COMMENT_END_BANG = 51] = "COMMENT_END_BANG", e[e.DOCTYPE = 52] = "DOCTYPE", e[e.BEFORE_DOCTYPE_NAME = 53] = "BEFORE_DOCTYPE_NAME", e[e.DOCTYPE_NAME = 54] = "DOCTYPE_NAME", e[e.AFTER_DOCTYPE_NAME = 55] = "AFTER_DOCTYPE_NAME", e[e.AFTER_DOCTYPE_PUBLIC_KEYWORD = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD", e[e.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER", e[e.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_PUBLIC_IDENTIFIER = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER", e[e.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS", e[e.AFTER_DOCTYPE_SYSTEM_KEYWORD = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD", e[e.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER", e[e.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED", e[e.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED", e[e.AFTER_DOCTYPE_SYSTEM_IDENTIFIER = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER", e[e.BOGUS_DOCTYPE = 67] = "BOGUS_DOCTYPE", e[e.CDATA_SECTION = 68] = "CDATA_SECTION", e[e.CDATA_SECTION_BRACKET = 69] = "CDATA_SECTION_BRACKET", e[e.CDATA_SECTION_END = 70] = "CDATA_SECTION_END", e[e.CHARACTER_REFERENCE = 71] = "CHARACTER_REFERENCE", e[e.NAMED_CHARACTER_REFERENCE = 72] = "NAMED_CHARACTER_REFERENCE", e[e.AMBIGUOUS_AMPERSAND = 73] = "AMBIGUOUS_AMPERSAND", e[e.NUMERIC_CHARACTER_REFERENCE = 74] = "NUMERIC_CHARACTER_REFERENCE", e[e.HEXADEMICAL_CHARACTER_REFERENCE_START = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START", e[e.HEXADEMICAL_CHARACTER_REFERENCE = 76] = "HEXADEMICAL_CHARACTER_REFERENCE", e[e.DECIMAL_CHARACTER_REFERENCE = 77] = "DECIMAL_CHARACTER_REFERENCE", e[e.NUMERIC_CHARACTER_REFERENCE_END = 78] = "NUMERIC_CHARACTER_REFERENCE_END" +}(Ko || (Ko = {})); +const jo = { + DATA: Ko.DATA, + RCDATA: Ko.RCDATA, + RAWTEXT: Ko.RAWTEXT, + SCRIPT_DATA: Ko.SCRIPT_DATA, + PLAINTEXT: Ko.PLAINTEXT, + CDATA_SECTION: Ko.CDATA_SECTION +}; + +function Vo(e) { + return e >= io.DIGIT_0 && e <= io.DIGIT_9 +} + +function Wo(e) { + return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_Z +} + +function Qo(e) { + return function(e) { + return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_Z + }(e) || Wo(e) +} + +function Xo(e) { + return Qo(e) || Vo(e) +} + +function $o(e) { + return e >= io.LATIN_CAPITAL_A && e <= io.LATIN_CAPITAL_F +} + +function zo(e) { + return e >= io.LATIN_SMALL_A && e <= io.LATIN_SMALL_F +} + +function Jo(e) { + return e + 32 +} + +function Zo(e) { + return e === io.SPACE || e === io.LINE_FEED || e === io.TABULATION || e === io.FORM_FEED +} + +function ec(e) { + return Zo(e) || e === io.SOLIDUS || e === io.GREATER_THAN_SIGN +} +class tc { + constructor(e, t) { + this.options = e, this.handler = t, this.paused = !1, this.inLoop = !1, this.inForeignNode = !1, this.lastStartTagName = "", this.active = !1, this.state = Ko.DATA, this.returnState = Ko.DATA, this.charRefCode = -1, this.consumedAfterSnapshot = -1, this.currentCharacterToken = null, this.currentToken = null, this.currentAttr = { + name: "", + value: "" + }, this.preprocessor = new mo(t), this.currentLocation = this.getCurrentLocation(-1) + } + _err(e) { + var t, n; + null === (n = (t = this.handler).onParseError) || void 0 === n || n.call(t, this.preprocessor.getError(e)) + } + getCurrentLocation(e) { + return this.options.sourceCodeLocationInfo ? { + startLine: this.preprocessor.line, + startCol: this.preprocessor.col - e, + startOffset: this.preprocessor.offset - e, + endLine: -1, + endCol: -1, + endOffset: -1 + } : null + } + _runParsingLoop() { + if (!this.inLoop) { + for (this.inLoop = !0; this.active && !this.paused;) { + this.consumedAfterSnapshot = 0; + const e = this._consume(); + this._ensureHibernation() || this._callState(e) + } + this.inLoop = !1 + } + } + pause() { + this.paused = !0 + } + resume(e) { + if (!this.paused) throw new Error("Parser was already resumed"); + this.paused = !1, this.inLoop || (this._runParsingLoop(), this.paused || null == e || e()) + } + write(e, t, n) { + this.active = !0, this.preprocessor.write(e, t), this._runParsingLoop(), this.paused || null == n || n() + } + insertHtmlAtCurrentPos(e) { + this.active = !0, this.preprocessor.insertHtmlAtCurrentPos(e), this._runParsingLoop() + } + _ensureHibernation() { + return !!this.preprocessor.endOfChunkHit && (this._unconsume(this.consumedAfterSnapshot), this.active = !1, !0) + } + _consume() { + return this.consumedAfterSnapshot++, this.preprocessor.advance() + } + _unconsume(e) { + this.consumedAfterSnapshot -= e, this.preprocessor.retreat(e) + } + _reconsumeInState(e, t) { + this.state = e, this._callState(t) + } + _advanceBy(e) { + this.consumedAfterSnapshot += e; + for (let t = 0; t < e; t++) this.preprocessor.advance() + } + _consumeSequenceIfMatch(e, t) { + return !!this.preprocessor.startsWith(e, t) && (this._advanceBy(e.length - 1), !0) + } + _createStartTagToken() { + this.currentToken = { + type: To.START_TAG, + tagName: "", + tagID: Po.UNKNOWN, + selfClosing: !1, + ackSelfClosing: !1, + attrs: [], + location: this.getCurrentLocation(1) + } + } + _createEndTagToken() { + this.currentToken = { + type: To.END_TAG, + tagName: "", + tagID: Po.UNKNOWN, + selfClosing: !1, + ackSelfClosing: !1, + attrs: [], + location: this.getCurrentLocation(2) + } + } + _createCommentToken(e) { + this.currentToken = { + type: To.COMMENT, + data: "", + location: this.getCurrentLocation(e) + } + } + _createDoctypeToken(e) { + this.currentToken = { + type: To.DOCTYPE, + name: e, + forceQuirks: !1, + publicId: null, + systemId: null, + location: this.currentLocation + } + } + _createCharacterToken(e, t) { + this.currentCharacterToken = { + type: e, + chars: t, + location: this.currentLocation + } + } + _createAttr(e) { + this.currentAttr = { + name: e, + value: "" + }, this.currentLocation = this.getCurrentLocation(0) + } + _leaveAttrName() { + var e, t; + const n = this.currentToken; + if (null === _o(n, this.currentAttr.name)) { + if (n.attrs.push(this.currentAttr), n.location && this.currentLocation) { + (null !== (e = (t = n.location).attrs) && void 0 !== e ? e : t.attrs = Object.create(null))[this.currentAttr.name] = this.currentLocation, this._leaveAttrValue() + } + } else this._err(Eo.duplicateAttribute) + } + _leaveAttrValue() { + this.currentLocation && (this.currentLocation.endLine = this.preprocessor.line, this.currentLocation.endCol = this.preprocessor.col, this.currentLocation.endOffset = this.preprocessor.offset) + } + prepareToken(e) { + this._emitCurrentCharacterToken(e.location), this.currentToken = null, e.location && (e.location.endLine = this.preprocessor.line, e.location.endCol = this.preprocessor.col + 1, e.location.endOffset = this.preprocessor.offset + 1), this.currentLocation = this.getCurrentLocation(-1) + } + emitCurrentTagToken() { + const e = this.currentToken; + this.prepareToken(e), e.tagID = Fo(e.tagName), e.type === To.START_TAG ? (this.lastStartTagName = e.tagName, this.handler.onStartTag(e)) : (e.attrs.length > 0 && this._err(Eo.endTagWithAttributes), e.selfClosing && this._err(Eo.endTagWithTrailingSolidus), this.handler.onEndTag(e)), this.preprocessor.dropParsedChunk() + } + emitCurrentComment(e) { + this.prepareToken(e), this.handler.onComment(e), this.preprocessor.dropParsedChunk() + } + emitCurrentDoctype(e) { + this.prepareToken(e), this.handler.onDoctype(e), this.preprocessor.dropParsedChunk() + } + _emitCurrentCharacterToken(e) { + if (this.currentCharacterToken) { + switch (e && this.currentCharacterToken.location && (this.currentCharacterToken.location.endLine = e.startLine, this.currentCharacterToken.location.endCol = e.startCol, this.currentCharacterToken.location.endOffset = e.startOffset), this.currentCharacterToken.type) { + case To.CHARACTER: + this.handler.onCharacter(this.currentCharacterToken); + break; + case To.NULL_CHARACTER: + this.handler.onNullCharacter(this.currentCharacterToken); + break; + case To.WHITESPACE_CHARACTER: + this.handler.onWhitespaceCharacter(this.currentCharacterToken) + } + this.currentCharacterToken = null + } + } + _emitEOFToken() { + const e = this.getCurrentLocation(0); + e && (e.endLine = e.startLine, e.endCol = e.startCol, e.endOffset = e.startOffset), this._emitCurrentCharacterToken(e), this.handler.onEof({ + type: To.EOF, + location: e + }), this.active = !1 + } + _appendCharToCurrentCharacterToken(e, t) { + if (this.currentCharacterToken) { + if (this.currentCharacterToken.type === e) return void(this.currentCharacterToken.chars += t); + this.currentLocation = this.getCurrentLocation(0), this._emitCurrentCharacterToken(this.currentLocation), this.preprocessor.dropParsedChunk() + } + this._createCharacterToken(e, t) + } + _emitCodePoint(e) { + const t = Zo(e) ? To.WHITESPACE_CHARACTER : e === io.NULL ? To.NULL_CHARACTER : To.CHARACTER; + this._appendCharToCurrentCharacterToken(t, String.fromCodePoint(e)) + } + _emitChars(e) { + this._appendCharToCurrentCharacterToken(To.CHARACTER, e) + } + _matchNamedCharacterReference(e) { + let t = null, + n = 0, + r = !1; + for (let s = 0, a = wo[0]; s >= 0 && (s = Oo(wo, a, s + 1, e), !(s < 0)); e = this._consume()) { + n += 1, a = wo[s]; + const o = a & yo.VALUE_LENGTH; + if (o) { + const a = (o >> 14) - 1; + if (e !== io.SEMICOLON && this._isCharacterReferenceInAttribute() && ((i = this.preprocessor.peek(1)) === io.EQUALS_SIGN || Xo(i)) ? (t = [io.AMPERSAND], s += a) : (t = 0 === a ? [wo[s] & ~yo.VALUE_LENGTH] : 1 === a ? [wo[++s]] : [wo[++s], wo[++s]], n = 0, r = e !== io.SEMICOLON), 0 === a) { + this._consume(); + break + } + } + } + var i; + return this._unconsume(n), r && !this.preprocessor.endOfChunkHit && this._err(Eo.missingSemicolonAfterCharacterReference), this._unconsume(1), t + } + _isCharacterReferenceInAttribute() { + return this.returnState === Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED || this.returnState === Ko.ATTRIBUTE_VALUE_UNQUOTED + } + _flushCodePointConsumedAsCharacterReference(e) { + this._isCharacterReferenceInAttribute() ? this.currentAttr.value += String.fromCodePoint(e) : this._emitCodePoint(e) + } + _callState(e) { + switch (this.state) { + case Ko.DATA: + this._stateData(e); + break; + case Ko.RCDATA: + this._stateRcdata(e); + break; + case Ko.RAWTEXT: + this._stateRawtext(e); + break; + case Ko.SCRIPT_DATA: + this._stateScriptData(e); + break; + case Ko.PLAINTEXT: + this._statePlaintext(e); + break; + case Ko.TAG_OPEN: + this._stateTagOpen(e); + break; + case Ko.END_TAG_OPEN: + this._stateEndTagOpen(e); + break; + case Ko.TAG_NAME: + this._stateTagName(e); + break; + case Ko.RCDATA_LESS_THAN_SIGN: + this._stateRcdataLessThanSign(e); + break; + case Ko.RCDATA_END_TAG_OPEN: + this._stateRcdataEndTagOpen(e); + break; + case Ko.RCDATA_END_TAG_NAME: + this._stateRcdataEndTagName(e); + break; + case Ko.RAWTEXT_LESS_THAN_SIGN: + this._stateRawtextLessThanSign(e); + break; + case Ko.RAWTEXT_END_TAG_OPEN: + this._stateRawtextEndTagOpen(e); + break; + case Ko.RAWTEXT_END_TAG_NAME: + this._stateRawtextEndTagName(e); + break; + case Ko.SCRIPT_DATA_LESS_THAN_SIGN: + this._stateScriptDataLessThanSign(e); + break; + case Ko.SCRIPT_DATA_END_TAG_OPEN: + this._stateScriptDataEndTagOpen(e); + break; + case Ko.SCRIPT_DATA_END_TAG_NAME: + this._stateScriptDataEndTagName(e); + break; + case Ko.SCRIPT_DATA_ESCAPE_START: + this._stateScriptDataEscapeStart(e); + break; + case Ko.SCRIPT_DATA_ESCAPE_START_DASH: + this._stateScriptDataEscapeStartDash(e); + break; + case Ko.SCRIPT_DATA_ESCAPED: + this._stateScriptDataEscaped(e); + break; + case Ko.SCRIPT_DATA_ESCAPED_DASH: + this._stateScriptDataEscapedDash(e); + break; + case Ko.SCRIPT_DATA_ESCAPED_DASH_DASH: + this._stateScriptDataEscapedDashDash(e); + break; + case Ko.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: + this._stateScriptDataEscapedLessThanSign(e); + break; + case Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: + this._stateScriptDataEscapedEndTagOpen(e); + break; + case Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME: + this._stateScriptDataEscapedEndTagName(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START: + this._stateScriptDataDoubleEscapeStart(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPED: + this._stateScriptDataDoubleEscaped(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: + this._stateScriptDataDoubleEscapedDash(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: + this._stateScriptDataDoubleEscapedDashDash(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: + this._stateScriptDataDoubleEscapedLessThanSign(e); + break; + case Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END: + this._stateScriptDataDoubleEscapeEnd(e); + break; + case Ko.BEFORE_ATTRIBUTE_NAME: + this._stateBeforeAttributeName(e); + break; + case Ko.ATTRIBUTE_NAME: + this._stateAttributeName(e); + break; + case Ko.AFTER_ATTRIBUTE_NAME: + this._stateAfterAttributeName(e); + break; + case Ko.BEFORE_ATTRIBUTE_VALUE: + this._stateBeforeAttributeValue(e); + break; + case Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED: + this._stateAttributeValueDoubleQuoted(e); + break; + case Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED: + this._stateAttributeValueSingleQuoted(e); + break; + case Ko.ATTRIBUTE_VALUE_UNQUOTED: + this._stateAttributeValueUnquoted(e); + break; + case Ko.AFTER_ATTRIBUTE_VALUE_QUOTED: + this._stateAfterAttributeValueQuoted(e); + break; + case Ko.SELF_CLOSING_START_TAG: + this._stateSelfClosingStartTag(e); + break; + case Ko.BOGUS_COMMENT: + this._stateBogusComment(e); + break; + case Ko.MARKUP_DECLARATION_OPEN: + this._stateMarkupDeclarationOpen(e); + break; + case Ko.COMMENT_START: + this._stateCommentStart(e); + break; + case Ko.COMMENT_START_DASH: + this._stateCommentStartDash(e); + break; + case Ko.COMMENT: + this._stateComment(e); + break; + case Ko.COMMENT_LESS_THAN_SIGN: + this._stateCommentLessThanSign(e); + break; + case Ko.COMMENT_LESS_THAN_SIGN_BANG: + this._stateCommentLessThanSignBang(e); + break; + case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH: + this._stateCommentLessThanSignBangDash(e); + break; + case Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: + this._stateCommentLessThanSignBangDashDash(e); + break; + case Ko.COMMENT_END_DASH: + this._stateCommentEndDash(e); + break; + case Ko.COMMENT_END: + this._stateCommentEnd(e); + break; + case Ko.COMMENT_END_BANG: + this._stateCommentEndBang(e); + break; + case Ko.DOCTYPE: + this._stateDoctype(e); + break; + case Ko.BEFORE_DOCTYPE_NAME: + this._stateBeforeDoctypeName(e); + break; + case Ko.DOCTYPE_NAME: + this._stateDoctypeName(e); + break; + case Ko.AFTER_DOCTYPE_NAME: + this._stateAfterDoctypeName(e); + break; + case Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD: + this._stateAfterDoctypePublicKeyword(e); + break; + case Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: + this._stateBeforeDoctypePublicIdentifier(e); + break; + case Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: + this._stateDoctypePublicIdentifierDoubleQuoted(e); + break; + case Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: + this._stateDoctypePublicIdentifierSingleQuoted(e); + break; + case Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: + this._stateAfterDoctypePublicIdentifier(e); + break; + case Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: + this._stateBetweenDoctypePublicAndSystemIdentifiers(e); + break; + case Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD: + this._stateAfterDoctypeSystemKeyword(e); + break; + case Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: + this._stateBeforeDoctypeSystemIdentifier(e); + break; + case Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: + this._stateDoctypeSystemIdentifierDoubleQuoted(e); + break; + case Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: + this._stateDoctypeSystemIdentifierSingleQuoted(e); + break; + case Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: + this._stateAfterDoctypeSystemIdentifier(e); + break; + case Ko.BOGUS_DOCTYPE: + this._stateBogusDoctype(e); + break; + case Ko.CDATA_SECTION: + this._stateCdataSection(e); + break; + case Ko.CDATA_SECTION_BRACKET: + this._stateCdataSectionBracket(e); + break; + case Ko.CDATA_SECTION_END: + this._stateCdataSectionEnd(e); + break; + case Ko.CHARACTER_REFERENCE: + this._stateCharacterReference(e); + break; + case Ko.NAMED_CHARACTER_REFERENCE: + this._stateNamedCharacterReference(e); + break; + case Ko.AMBIGUOUS_AMPERSAND: + this._stateAmbiguousAmpersand(e); + break; + case Ko.NUMERIC_CHARACTER_REFERENCE: + this._stateNumericCharacterReference(e); + break; + case Ko.HEXADEMICAL_CHARACTER_REFERENCE_START: + this._stateHexademicalCharacterReferenceStart(e); + break; + case Ko.HEXADEMICAL_CHARACTER_REFERENCE: + this._stateHexademicalCharacterReference(e); + break; + case Ko.DECIMAL_CHARACTER_REFERENCE: + this._stateDecimalCharacterReference(e); + break; + case Ko.NUMERIC_CHARACTER_REFERENCE_END: + this._stateNumericCharacterReferenceEnd(e); + break; + default: + throw new Error("Unknown state") + } + } + _stateData(e) { + switch (e) { + case io.LESS_THAN_SIGN: + this.state = Ko.TAG_OPEN; + break; + case io.AMPERSAND: + this.returnState = Ko.DATA, this.state = Ko.CHARACTER_REFERENCE; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._emitCodePoint(e); + break; + case io.EOF: + this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _stateRcdata(e) { + switch (e) { + case io.AMPERSAND: + this.returnState = Ko.RCDATA, this.state = Ko.CHARACTER_REFERENCE; + break; + case io.LESS_THAN_SIGN: + this.state = Ko.RCDATA_LESS_THAN_SIGN; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); + break; + case io.EOF: + this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _stateRawtext(e) { + switch (e) { + case io.LESS_THAN_SIGN: + this.state = Ko.RAWTEXT_LESS_THAN_SIGN; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); + break; + case io.EOF: + this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _stateScriptData(e) { + switch (e) { + case io.LESS_THAN_SIGN: + this.state = Ko.SCRIPT_DATA_LESS_THAN_SIGN; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); + break; + case io.EOF: + this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _statePlaintext(e) { + switch (e) { + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._emitChars("�"); + break; + case io.EOF: + this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _stateTagOpen(e) { + if (Qo(e)) this._createStartTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e); + else switch (e) { + case io.EXCLAMATION_MARK: + this.state = Ko.MARKUP_DECLARATION_OPEN; + break; + case io.SOLIDUS: + this.state = Ko.END_TAG_OPEN; + break; + case io.QUESTION_MARK: + this._err(Eo.unexpectedQuestionMarkInsteadOfTagName), this._createCommentToken(1), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e); + break; + case io.EOF: + this._err(Eo.eofBeforeTagName), this._emitChars("<"), this._emitEOFToken(); + break; + default: + this._err(Eo.invalidFirstCharacterOfTagName), this._emitChars("<"), this.state = Ko.DATA, this._stateData(e) + } + } + _stateEndTagOpen(e) { + if (Qo(e)) this._createEndTagToken(), this.state = Ko.TAG_NAME, this._stateTagName(e); + else switch (e) { + case io.GREATER_THAN_SIGN: + this._err(Eo.missingEndTagName), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofBeforeTagName), this._emitChars(""); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitChars("�"); + break; + case io.EOF: + this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken(); + break; + default: + this.state = Ko.SCRIPT_DATA_ESCAPED, this._emitCodePoint(e) + } + } + _stateScriptDataEscapedLessThanSign(e) { + e === io.SOLIDUS ? this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_OPEN : Qo(e) ? (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_START, this._stateScriptDataDoubleEscapeStart(e)) : (this._emitChars("<"), this.state = Ko.SCRIPT_DATA_ESCAPED, this._stateScriptDataEscaped(e)) + } + _stateScriptDataEscapedEndTagOpen(e) { + Qo(e) ? (this.state = Ko.SCRIPT_DATA_ESCAPED_END_TAG_NAME, this._stateScriptDataEscapedEndTagName(e)) : (this._emitChars(""); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitChars("�"); + break; + case io.EOF: + this._err(Eo.eofInScriptHtmlCommentLikeText), this._emitEOFToken(); + break; + default: + this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._emitCodePoint(e) + } + } + _stateScriptDataDoubleEscapedLessThanSign(e) { + e === io.SOLIDUS ? (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPE_END, this._emitChars("/")) : (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e)) + } + _stateScriptDataDoubleEscapeEnd(e) { + if (this.preprocessor.startsWith(co, !1) && ec(this.preprocessor.peek(co.length))) { + this._emitCodePoint(e); + for (let e = 0; e < co.length; e++) this._emitCodePoint(this._consume()); + this.state = Ko.SCRIPT_DATA_ESCAPED + } else this._ensureHibernation() || (this.state = Ko.SCRIPT_DATA_DOUBLE_ESCAPED, this._stateScriptDataDoubleEscaped(e)) + } + _stateBeforeAttributeName(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.SOLIDUS: + case io.GREATER_THAN_SIGN: + case io.EOF: + this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e); + break; + case io.EQUALS_SIGN: + this._err(Eo.unexpectedEqualsSignBeforeAttributeName), this._createAttr("="), this.state = Ko.ATTRIBUTE_NAME; + break; + default: + this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e) + } + } + _stateAttributeName(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + case io.SOLIDUS: + case io.GREATER_THAN_SIGN: + case io.EOF: + this._leaveAttrName(), this.state = Ko.AFTER_ATTRIBUTE_NAME, this._stateAfterAttributeName(e); + break; + case io.EQUALS_SIGN: + this._leaveAttrName(), this.state = Ko.BEFORE_ATTRIBUTE_VALUE; + break; + case io.QUOTATION_MARK: + case io.APOSTROPHE: + case io.LESS_THAN_SIGN: + this._err(Eo.unexpectedCharacterInAttributeName), this.currentAttr.name += String.fromCodePoint(e); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.currentAttr.name += "�"; + break; + default: + this.currentAttr.name += String.fromCodePoint(Wo(e) ? Jo(e) : e) + } + } + _stateAfterAttributeName(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.SOLIDUS: + this.state = Ko.SELF_CLOSING_START_TAG; + break; + case io.EQUALS_SIGN: + this.state = Ko.BEFORE_ATTRIBUTE_VALUE; + break; + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentTagToken(); + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this._createAttr(""), this.state = Ko.ATTRIBUTE_NAME, this._stateAttributeName(e) + } + } + _stateBeforeAttributeValue(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.QUOTATION_MARK: + this.state = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + this.state = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.missingAttributeValue), this.state = Ko.DATA, this.emitCurrentTagToken(); + break; + default: + this.state = Ko.ATTRIBUTE_VALUE_UNQUOTED, this._stateAttributeValueUnquoted(e) + } + } + _stateAttributeValueDoubleQuoted(e) { + switch (e) { + case io.QUOTATION_MARK: + this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + case io.AMPERSAND: + this.returnState = Ko.ATTRIBUTE_VALUE_DOUBLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this.currentAttr.value += String.fromCodePoint(e) + } + } + _stateAttributeValueSingleQuoted(e) { + switch (e) { + case io.APOSTROPHE: + this.state = Ko.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + case io.AMPERSAND: + this.returnState = Ko.ATTRIBUTE_VALUE_SINGLE_QUOTED, this.state = Ko.CHARACTER_REFERENCE; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this.currentAttr.value += String.fromCodePoint(e) + } + } + _stateAttributeValueUnquoted(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME; + break; + case io.AMPERSAND: + this.returnState = Ko.ATTRIBUTE_VALUE_UNQUOTED, this.state = Ko.CHARACTER_REFERENCE; + break; + case io.GREATER_THAN_SIGN: + this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken(); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this.currentAttr.value += "�"; + break; + case io.QUOTATION_MARK: + case io.APOSTROPHE: + case io.LESS_THAN_SIGN: + case io.EQUALS_SIGN: + case io.GRAVE_ACCENT: + this._err(Eo.unexpectedCharacterInUnquotedAttributeValue), this.currentAttr.value += String.fromCodePoint(e); + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this.currentAttr.value += String.fromCodePoint(e) + } + } + _stateAfterAttributeValueQuoted(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this._leaveAttrValue(), this.state = Ko.BEFORE_ATTRIBUTE_NAME; + break; + case io.SOLIDUS: + this._leaveAttrValue(), this.state = Ko.SELF_CLOSING_START_TAG; + break; + case io.GREATER_THAN_SIGN: + this._leaveAttrValue(), this.state = Ko.DATA, this.emitCurrentTagToken(); + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this._err(Eo.missingWhitespaceBetweenAttributes), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e) + } + } + _stateSelfClosingStartTag(e) { + switch (e) { + case io.GREATER_THAN_SIGN: + this.currentToken.selfClosing = !0, this.state = Ko.DATA, this.emitCurrentTagToken(); + break; + case io.EOF: + this._err(Eo.eofInTag), this._emitEOFToken(); + break; + default: + this._err(Eo.unexpectedSolidusInTag), this.state = Ko.BEFORE_ATTRIBUTE_NAME, this._stateBeforeAttributeName(e) + } + } + _stateBogusComment(e) { + const t = this.currentToken; + switch (e) { + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentComment(t); + break; + case io.EOF: + this.emitCurrentComment(t), this._emitEOFToken(); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.data += "�"; + break; + default: + t.data += String.fromCodePoint(e) + } + } + _stateMarkupDeclarationOpen(e) { + this._consumeSequenceIfMatch(so, !0) ? (this._createCommentToken(so.length + 1), this.state = Ko.COMMENT_START) : this._consumeSequenceIfMatch(oo, !1) ? (this.currentLocation = this.getCurrentLocation(oo.length + 1), this.state = Ko.DOCTYPE) : this._consumeSequenceIfMatch(ao, !0) ? this.inForeignNode ? this.state = Ko.CDATA_SECTION : (this._err(Eo.cdataInHtmlContent), this._createCommentToken(ao.length + 1), this.currentToken.data = "[CDATA[", this.state = Ko.BOGUS_COMMENT) : this._ensureHibernation() || (this._err(Eo.incorrectlyOpenedComment), this._createCommentToken(2), this.state = Ko.BOGUS_COMMENT, this._stateBogusComment(e)) + } + _stateCommentStart(e) { + switch (e) { + case io.HYPHEN_MINUS: + this.state = Ko.COMMENT_START_DASH; + break; + case io.GREATER_THAN_SIGN: { + this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA; + const e = this.currentToken; + this.emitCurrentComment(e); + break + } + default: + this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateCommentStartDash(e) { + const t = this.currentToken; + switch (e) { + case io.HYPHEN_MINUS: + this.state = Ko.COMMENT_END; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.abruptClosingOfEmptyComment), this.state = Ko.DATA, this.emitCurrentComment(t); + break; + case io.EOF: + this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); + break; + default: + t.data += "-", this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateComment(e) { + const t = this.currentToken; + switch (e) { + case io.HYPHEN_MINUS: + this.state = Ko.COMMENT_END_DASH; + break; + case io.LESS_THAN_SIGN: + t.data += "<", this.state = Ko.COMMENT_LESS_THAN_SIGN; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.data += "�"; + break; + case io.EOF: + this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); + break; + default: + t.data += String.fromCodePoint(e) + } + } + _stateCommentLessThanSign(e) { + const t = this.currentToken; + switch (e) { + case io.EXCLAMATION_MARK: + t.data += "!", this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG; + break; + case io.LESS_THAN_SIGN: + t.data += "<"; + break; + default: + this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateCommentLessThanSignBang(e) { + e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH : (this.state = Ko.COMMENT, this._stateComment(e)) + } + _stateCommentLessThanSignBangDash(e) { + e === io.HYPHEN_MINUS ? this.state = Ko.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH : (this.state = Ko.COMMENT_END_DASH, this._stateCommentEndDash(e)) + } + _stateCommentLessThanSignBangDashDash(e) { + e !== io.GREATER_THAN_SIGN && e !== io.EOF && this._err(Eo.nestedComment), this.state = Ko.COMMENT_END, this._stateCommentEnd(e) + } + _stateCommentEndDash(e) { + const t = this.currentToken; + switch (e) { + case io.HYPHEN_MINUS: + this.state = Ko.COMMENT_END; + break; + case io.EOF: + this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); + break; + default: + t.data += "-", this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateCommentEnd(e) { + const t = this.currentToken; + switch (e) { + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentComment(t); + break; + case io.EXCLAMATION_MARK: + this.state = Ko.COMMENT_END_BANG; + break; + case io.HYPHEN_MINUS: + t.data += "-"; + break; + case io.EOF: + this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); + break; + default: + t.data += "--", this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateCommentEndBang(e) { + const t = this.currentToken; + switch (e) { + case io.HYPHEN_MINUS: + t.data += "--!", this.state = Ko.COMMENT_END_DASH; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.incorrectlyClosedComment), this.state = Ko.DATA, this.emitCurrentComment(t); + break; + case io.EOF: + this._err(Eo.eofInComment), this.emitCurrentComment(t), this._emitEOFToken(); + break; + default: + t.data += "--!", this.state = Ko.COMMENT, this._stateComment(e) + } + } + _stateDoctype(e) { + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this.state = Ko.BEFORE_DOCTYPE_NAME; + break; + case io.GREATER_THAN_SIGN: + this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e); + break; + case io.EOF: { + this._err(Eo.eofInDoctype), this._createDoctypeToken(null); + const e = this.currentToken; + e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken(); + break + } + default: + this._err(Eo.missingWhitespaceBeforeDoctypeName), this.state = Ko.BEFORE_DOCTYPE_NAME, this._stateBeforeDoctypeName(e) + } + } + _stateBeforeDoctypeName(e) { + if (Wo(e)) this._createDoctypeToken(String.fromCharCode(Jo(e))), this.state = Ko.DOCTYPE_NAME; + else switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), this._createDoctypeToken("�"), this.state = Ko.DOCTYPE_NAME; + break; + case io.GREATER_THAN_SIGN: { + this._err(Eo.missingDoctypeName), this._createDoctypeToken(null); + const e = this.currentToken; + e.forceQuirks = !0, this.emitCurrentDoctype(e), this.state = Ko.DATA; + break + } + case io.EOF: { + this._err(Eo.eofInDoctype), this._createDoctypeToken(null); + const e = this.currentToken; + e.forceQuirks = !0, this.emitCurrentDoctype(e), this._emitEOFToken(); + break + } + default: + this._createDoctypeToken(String.fromCodePoint(e)), this.state = Ko.DOCTYPE_NAME + } + } + _stateDoctypeName(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this.state = Ko.AFTER_DOCTYPE_NAME; + break; + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.name += "�"; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + t.name += String.fromCodePoint(Wo(e) ? Jo(e) : e) + } + } + _stateAfterDoctypeName(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._consumeSequenceIfMatch(lo, !1) ? this.state = Ko.AFTER_DOCTYPE_PUBLIC_KEYWORD : this._consumeSequenceIfMatch(ho, !1) ? this.state = Ko.AFTER_DOCTYPE_SYSTEM_KEYWORD : this._ensureHibernation() || (this._err(Eo.invalidCharacterSequenceAfterDoctypeName), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e)) + } + } + _stateAfterDoctypePublicKeyword(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this.state = Ko.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case io.QUOTATION_MARK: + this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + this._err(Eo.missingWhitespaceAfterDoctypePublicKeyword), t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateBeforeDoctypePublicIdentifier(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.QUOTATION_MARK: + t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + t.publicId = "", this.state = Ko.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.missingDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypePublicIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateDoctypePublicIdentifierDoubleQuoted(e) { + const t = this.currentToken; + switch (e) { + case io.QUOTATION_MARK: + this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.publicId += "�"; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + t.publicId += String.fromCodePoint(e) + } + } + _stateDoctypePublicIdentifierSingleQuoted(e) { + const t = this.currentToken; + switch (e) { + case io.APOSTROPHE: + this.state = Ko.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.publicId += "�"; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.abruptDoctypePublicIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + t.publicId += String.fromCodePoint(e) + } + } + _stateAfterDoctypePublicIdentifier(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this.state = Ko.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; + break; + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.QUOTATION_MARK: + this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + this._err(Eo.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateBetweenDoctypePublicAndSystemIdentifiers(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.GREATER_THAN_SIGN: + this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.QUOTATION_MARK: + t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateAfterDoctypeSystemKeyword(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + this.state = Ko.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case io.QUOTATION_MARK: + this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + this._err(Eo.missingWhitespaceAfterDoctypeSystemKeyword), t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateBeforeDoctypeSystemIdentifier(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.QUOTATION_MARK: + t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + case io.APOSTROPHE: + t.systemId = "", this.state = Ko.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.missingDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.DATA, this.emitCurrentDoctype(t); + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.missingQuoteBeforeDoctypeSystemIdentifier), t.forceQuirks = !0, this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateDoctypeSystemIdentifierDoubleQuoted(e) { + const t = this.currentToken; + switch (e) { + case io.QUOTATION_MARK: + this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.systemId += "�"; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + t.systemId += String.fromCodePoint(e) + } + } + _stateDoctypeSystemIdentifierSingleQuoted(e) { + const t = this.currentToken; + switch (e) { + case io.APOSTROPHE: + this.state = Ko.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter), t.systemId += "�"; + break; + case io.GREATER_THAN_SIGN: + this._err(Eo.abruptDoctypeSystemIdentifier), t.forceQuirks = !0, this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + t.systemId += String.fromCodePoint(e) + } + } + _stateAfterDoctypeSystemIdentifier(e) { + const t = this.currentToken; + switch (e) { + case io.SPACE: + case io.LINE_FEED: + case io.TABULATION: + case io.FORM_FEED: + break; + case io.GREATER_THAN_SIGN: + this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.EOF: + this._err(Eo.eofInDoctype), t.forceQuirks = !0, this.emitCurrentDoctype(t), this._emitEOFToken(); + break; + default: + this._err(Eo.unexpectedCharacterAfterDoctypeSystemIdentifier), this.state = Ko.BOGUS_DOCTYPE, this._stateBogusDoctype(e) + } + } + _stateBogusDoctype(e) { + const t = this.currentToken; + switch (e) { + case io.GREATER_THAN_SIGN: + this.emitCurrentDoctype(t), this.state = Ko.DATA; + break; + case io.NULL: + this._err(Eo.unexpectedNullCharacter); + break; + case io.EOF: + this.emitCurrentDoctype(t), this._emitEOFToken() + } + } + _stateCdataSection(e) { + switch (e) { + case io.RIGHT_SQUARE_BRACKET: + this.state = Ko.CDATA_SECTION_BRACKET; + break; + case io.EOF: + this._err(Eo.eofInCdata), this._emitEOFToken(); + break; + default: + this._emitCodePoint(e) + } + } + _stateCdataSectionBracket(e) { + e === io.RIGHT_SQUARE_BRACKET ? this.state = Ko.CDATA_SECTION_END : (this._emitChars("]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e)) + } + _stateCdataSectionEnd(e) { + switch (e) { + case io.GREATER_THAN_SIGN: + this.state = Ko.DATA; + break; + case io.RIGHT_SQUARE_BRACKET: + this._emitChars("]"); + break; + default: + this._emitChars("]]"), this.state = Ko.CDATA_SECTION, this._stateCdataSection(e) + } + } + _stateCharacterReference(e) { + e === io.NUMBER_SIGN ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE : Xo(e) ? (this.state = Ko.NAMED_CHARACTER_REFERENCE, this._stateNamedCharacterReference(e)) : (this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._reconsumeInState(this.returnState, e)) + } + _stateNamedCharacterReference(e) { + const t = this._matchNamedCharacterReference(e); + if (this._ensureHibernation()); + else if (t) { + for (let e = 0; e < t.length; e++) this._flushCodePointConsumedAsCharacterReference(t[e]); + this.state = this.returnState + } else this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this.state = Ko.AMBIGUOUS_AMPERSAND + } + _stateAmbiguousAmpersand(e) { + Xo(e) ? this._flushCodePointConsumedAsCharacterReference(e) : (e === io.SEMICOLON && this._err(Eo.unknownNamedCharacterReference), this._reconsumeInState(this.returnState, e)) + } + _stateNumericCharacterReference(e) { + this.charRefCode = 0, e === io.LATIN_SMALL_X || e === io.LATIN_CAPITAL_X ? this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE_START : Vo(e) ? (this.state = Ko.DECIMAL_CHARACTER_REFERENCE, this._stateDecimalCharacterReference(e)) : (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._reconsumeInState(this.returnState, e)) + } + _stateHexademicalCharacterReferenceStart(e) { + ! function(e) { + return Vo(e) || $o(e) || zo(e) + }(e) ? (this._err(Eo.absenceOfDigitsInNumericCharacterReference), this._flushCodePointConsumedAsCharacterReference(io.AMPERSAND), this._flushCodePointConsumedAsCharacterReference(io.NUMBER_SIGN), this._unconsume(2), this.state = this.returnState) : (this.state = Ko.HEXADEMICAL_CHARACTER_REFERENCE, this._stateHexademicalCharacterReference(e)) + } + _stateHexademicalCharacterReference(e) { + $o(e) ? this.charRefCode = 16 * this.charRefCode + e - 55 : zo(e) ? this.charRefCode = 16 * this.charRefCode + e - 87 : Vo(e) ? this.charRefCode = 16 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e)) + } + _stateDecimalCharacterReference(e) { + Vo(e) ? this.charRefCode = 10 * this.charRefCode + e - 48 : e === io.SEMICOLON ? this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END : (this._err(Eo.missingSemicolonAfterCharacterReference), this.state = Ko.NUMERIC_CHARACTER_REFERENCE_END, this._stateNumericCharacterReferenceEnd(e)) + } + _stateNumericCharacterReferenceEnd(e) { + if (this.charRefCode === io.NULL) this._err(Eo.nullCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER; + else if (this.charRefCode > 1114111) this._err(Eo.characterReferenceOutsideUnicodeRange), this.charRefCode = io.REPLACEMENT_CHARACTER; + else if (uo(this.charRefCode)) this._err(Eo.surrogateCharacterReference), this.charRefCode = io.REPLACEMENT_CHARACTER; + else if (fo(this.charRefCode)) this._err(Eo.noncharacterCharacterReference); + else if (po(this.charRefCode) || this.charRefCode === io.CARRIAGE_RETURN) { + this._err(Eo.controlCharacterReference); + const e = qo.get(this.charRefCode); + void 0 !== e && (this.charRefCode = e) + } + this._flushCodePointConsumedAsCharacterReference(this.charRefCode), this._reconsumeInState(this.returnState, e) + } +} +const nc = new Set([Po.DD, Po.DT, Po.LI, Po.OPTGROUP, Po.OPTION, Po.P, Po.RB, Po.RP, Po.RT, Po.RTC]), + rc = new Set([...nc, Po.CAPTION, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]), + ic = new Map([ + [Po.APPLET, vo.HTML], + [Po.CAPTION, vo.HTML], + [Po.HTML, vo.HTML], + [Po.MARQUEE, vo.HTML], + [Po.OBJECT, vo.HTML], + [Po.TABLE, vo.HTML], + [Po.TD, vo.HTML], + [Po.TEMPLATE, vo.HTML], + [Po.TH, vo.HTML], + [Po.ANNOTATION_XML, vo.MATHML], + [Po.MI, vo.MATHML], + [Po.MN, vo.MATHML], + [Po.MO, vo.MATHML], + [Po.MS, vo.MATHML], + [Po.MTEXT, vo.MATHML], + [Po.DESC, vo.SVG], + [Po.FOREIGN_OBJECT, vo.SVG], + [Po.TITLE, vo.SVG] + ]), + sc = [Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6], + ac = [Po.TR, Po.TEMPLATE, Po.HTML], + oc = [Po.TBODY, Po.TFOOT, Po.THEAD, Po.TEMPLATE, Po.HTML], + cc = [Po.TABLE, Po.TEMPLATE, Po.HTML], + lc = [Po.TD, Po.TH]; +class hc { + constructor(e, t, n) { + this.treeAdapter = t, this.handler = n, this.items = [], this.tagIDs = [], this.stackTop = -1, this.tmplCount = 0, this.currentTagId = Po.UNKNOWN, this.current = e + } + get currentTmplContentOrNode() { + return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current + } + _indexOf(e) { + return this.items.lastIndexOf(e, this.stackTop) + } + _isInTemplate() { + return this.currentTagId === Po.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === vo.HTML + } + _updateCurrentElement() { + this.current = this.items[this.stackTop], this.currentTagId = this.tagIDs[this.stackTop] + } + push(e, t) { + this.stackTop++, this.items[this.stackTop] = e, this.current = e, this.tagIDs[this.stackTop] = t, this.currentTagId = t, this._isInTemplate() && this.tmplCount++, this.handler.onItemPush(e, t, !0) + } + pop() { + const e = this.current; + this.tmplCount > 0 && this._isInTemplate() && this.tmplCount--, this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !0) + } + replace(e, t) { + const n = this._indexOf(e); + this.items[n] = t, n === this.stackTop && (this.current = t) + } + insertAfter(e, t, n) { + const r = this._indexOf(e) + 1; + this.items.splice(r, 0, t), this.tagIDs.splice(r, 0, n), this.stackTop++, r === this.stackTop && this._updateCurrentElement(), this.handler.onItemPush(this.current, this.currentTagId, r === this.stackTop) + } + popUntilTagNamePopped(e) { + let t = this.stackTop + 1; + do { + t = this.tagIDs.lastIndexOf(e, t - 1) + } while (t > 0 && this.treeAdapter.getNamespaceURI(this.items[t]) !== vo.HTML); + this.shortenToLength(t < 0 ? 0 : t) + } + shortenToLength(e) { + for (; this.stackTop >= e;) { + const t = this.current; + this.tmplCount > 0 && this._isInTemplate() && (this.tmplCount -= 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(t, this.stackTop < e) + } + } + popUntilElementPopped(e) { + const t = this._indexOf(e); + this.shortenToLength(t < 0 ? 0 : t) + } + popUntilPopped(e, t) { + const n = this._indexOfTagNames(e, t); + this.shortenToLength(n < 0 ? 0 : n) + } + popUntilNumberedHeaderPopped() { + this.popUntilPopped(sc, vo.HTML) + } + popUntilTableCellPopped() { + this.popUntilPopped(lc, vo.HTML) + } + popAllUpToHtmlElement() { + this.tmplCount = 0, this.shortenToLength(1) + } + _indexOfTagNames(e, t) { + for (let n = this.stackTop; n >= 0; n--) + if (e.includes(this.tagIDs[n]) && this.treeAdapter.getNamespaceURI(this.items[n]) === t) return n; + return -1 + } + clearBackTo(e, t) { + const n = this._indexOfTagNames(e, t); + this.shortenToLength(n + 1) + } + clearBackToTableContext() { + this.clearBackTo(cc, vo.HTML) + } + clearBackToTableBodyContext() { + this.clearBackTo(oc, vo.HTML) + } + clearBackToTableRowContext() { + this.clearBackTo(ac, vo.HTML) + } + remove(e) { + const t = this._indexOf(e); + t >= 0 && (t === this.stackTop ? this.pop() : (this.items.splice(t, 1), this.tagIDs.splice(t, 1), this.stackTop--, this._updateCurrentElement(), this.handler.onItemPop(e, !1))) + } + tryPeekProperlyNestedBodyElement() { + return this.stackTop >= 1 && this.tagIDs[1] === Po.BODY ? this.items[1] : null + } + contains(e) { + return this._indexOf(e) > -1 + } + getCommonAncestor(e) { + const t = this._indexOf(e) - 1; + return t >= 0 ? this.items[t] : null + } + isRootHtmlElementCurrent() { + return 0 === this.stackTop && this.tagIDs[0] === Po.HTML + } + hasInScope(e) { + for (let t = this.stackTop; t >= 0; t--) { + const n = this.tagIDs[t], + r = this.treeAdapter.getNamespaceURI(this.items[t]); + if (n === e && r === vo.HTML) return !0; + if (ic.get(n) === r) return !1 + } + return !0 + } + hasNumberedHeaderInScope() { + for (let e = this.stackTop; e >= 0; e--) { + const t = this.tagIDs[e], + n = this.treeAdapter.getNamespaceURI(this.items[e]); + if (Go(t) && n === vo.HTML) return !0; + if (ic.get(t) === n) return !1 + } + return !0 + } + hasInListItemScope(e) { + for (let t = this.stackTop; t >= 0; t--) { + const n = this.tagIDs[t], + r = this.treeAdapter.getNamespaceURI(this.items[t]); + if (n === e && r === vo.HTML) return !0; + if ((n === Po.UL || n === Po.OL) && r === vo.HTML || ic.get(n) === r) return !1 + } + return !0 + } + hasInButtonScope(e) { + for (let t = this.stackTop; t >= 0; t--) { + const n = this.tagIDs[t], + r = this.treeAdapter.getNamespaceURI(this.items[t]); + if (n === e && r === vo.HTML) return !0; + if (n === Po.BUTTON && r === vo.HTML || ic.get(n) === r) return !1 + } + return !0 + } + hasInTableScope(e) { + for (let t = this.stackTop; t >= 0; t--) { + const n = this.tagIDs[t]; + if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) { + if (n === e) return !0; + if (n === Po.TABLE || n === Po.TEMPLATE || n === Po.HTML) return !1 + } + } + return !0 + } + hasTableBodyContextInTableScope() { + for (let e = this.stackTop; e >= 0; e--) { + const t = this.tagIDs[e]; + if (this.treeAdapter.getNamespaceURI(this.items[e]) === vo.HTML) { + if (t === Po.TBODY || t === Po.THEAD || t === Po.TFOOT) return !0; + if (t === Po.TABLE || t === Po.HTML) return !1 + } + } + return !0 + } + hasInSelectScope(e) { + for (let t = this.stackTop; t >= 0; t--) { + const n = this.tagIDs[t]; + if (this.treeAdapter.getNamespaceURI(this.items[t]) === vo.HTML) { + if (n === e) return !0; + if (n !== Po.OPTION && n !== Po.OPTGROUP) return !1 + } + } + return !0 + } + generateImpliedEndTags() { + for (; nc.has(this.currentTagId);) this.pop() + } + generateImpliedEndTagsThoroughly() { + for (; rc.has(this.currentTagId);) this.pop() + } + generateImpliedEndTagsWithExclusion(e) { + for (; this.currentTagId !== e && rc.has(this.currentTagId);) this.pop() + } +} +var uc; +! function(e) { + e[e.Marker = 0] = "Marker", e[e.Element = 1] = "Element" +}(uc = uc || (uc = {})); +const pc = { + type: uc.Marker +}; +class fc { + constructor(e) { + this.treeAdapter = e, this.entries = [], this.bookmark = null + } + _getNoahArkConditionCandidates(e, t) { + const n = [], + r = t.length, + i = this.treeAdapter.getTagName(e), + s = this.treeAdapter.getNamespaceURI(e); + for (let e = 0; e < this.entries.length; e++) { + const t = this.entries[e]; + if (t.type === uc.Marker) break; + const { + element: a + } = t; + if (this.treeAdapter.getTagName(a) === i && this.treeAdapter.getNamespaceURI(a) === s) { + const t = this.treeAdapter.getAttrList(a); + t.length === r && n.push({ + idx: e, + attrs: t + }) + } + } + return n + } + _ensureNoahArkCondition(e) { + if (this.entries.length < 3) return; + const t = this.treeAdapter.getAttrList(e), + n = this._getNoahArkConditionCandidates(e, t); + if (n.length < 3) return; + const r = new Map(t.map((e => [e.name, e.value]))); + let i = 0; + for (let e = 0; e < n.length; e++) { + const t = n[e]; + t.attrs.every((e => r.get(e.name) === e.value)) && (i += 1, i >= 3 && this.entries.splice(t.idx, 1)) + } + } + insertMarker() { + this.entries.unshift(pc) + } + pushElement(e, t) { + this._ensureNoahArkCondition(e), this.entries.unshift({ + type: uc.Element, + element: e, + token: t + }) + } + insertElementAfterBookmark(e, t) { + const n = this.entries.indexOf(this.bookmark); + this.entries.splice(n, 0, { + type: uc.Element, + element: e, + token: t + }) + } + removeEntry(e) { + const t = this.entries.indexOf(e); + t >= 0 && this.entries.splice(t, 1) + } + clearToLastMarker() { + const e = this.entries.indexOf(pc); + e >= 0 ? this.entries.splice(0, e + 1) : this.entries.length = 0 + } + getElementEntryInScopeWithTagName(e) { + const t = this.entries.find((t => t.type === uc.Marker || this.treeAdapter.getTagName(t.element) === e)); + return t && t.type === uc.Element ? t : null + } + getElementEntry(e) { + return this.entries.find((t => t.type === uc.Element && t.element === e)) + } +} + +function dc(e) { + return { + nodeName: "#text", + value: e, + parentNode: null + } +} +const Ec = { + createDocument: () => ({ + nodeName: "#document", + mode: Ro.NO_QUIRKS, + childNodes: [] + }), + createDocumentFragment: () => ({ + nodeName: "#document-fragment", + childNodes: [] + }), + createElement: (e, t, n) => ({ + nodeName: e, + tagName: e, + attrs: n, + namespaceURI: t, + childNodes: [], + parentNode: null + }), + createCommentNode: e => ({ + nodeName: "#comment", + data: e, + parentNode: null + }), + appendChild(e, t) { + e.childNodes.push(t), t.parentNode = e + }, + insertBefore(e, t, n) { + const r = e.childNodes.indexOf(n); + e.childNodes.splice(r, 0, t), t.parentNode = e + }, + setTemplateContent(e, t) { + e.content = t + }, + getTemplateContent: e => e.content, + setDocumentType(e, t, n, r) { + const i = e.childNodes.find((e => "#documentType" === e.nodeName)); + if (i) i.name = t, i.publicId = n, i.systemId = r; + else { + const i = { + nodeName: "#documentType", + name: t, + publicId: n, + systemId: r, + parentNode: null + }; + Ec.appendChild(e, i) + } + }, + setDocumentMode(e, t) { + e.mode = t + }, + getDocumentMode: e => e.mode, + detachNode(e) { + if (e.parentNode) { + const t = e.parentNode.childNodes.indexOf(e); + e.parentNode.childNodes.splice(t, 1), e.parentNode = null + } + }, + insertText(e, t) { + if (e.childNodes.length > 0) { + const n = e.childNodes[e.childNodes.length - 1]; + if (Ec.isTextNode(n)) return void(n.value += t) + } + Ec.appendChild(e, dc(t)) + }, + insertTextBefore(e, t, n) { + const r = e.childNodes[e.childNodes.indexOf(n) - 1]; + r && Ec.isTextNode(r) ? r.value += t : Ec.insertBefore(e, dc(t), n) + }, + adoptAttributes(e, t) { + const n = new Set(e.attrs.map((e => e.name))); + for (let r = 0; r < t.length; r++) n.has(t[r].name) || e.attrs.push(t[r]) + }, + getFirstChild: e => e.childNodes[0], + getChildNodes: e => e.childNodes, + getParentNode: e => e.parentNode, + getAttrList: e => e.attrs, + getTagName: e => e.tagName, + getNamespaceURI: e => e.namespaceURI, + getTextNodeContent: e => e.value, + getCommentNodeContent: e => e.data, + getDocumentTypeNodeName: e => e.name, + getDocumentTypeNodePublicId: e => e.publicId, + getDocumentTypeNodeSystemId: e => e.systemId, + isTextNode: e => "#text" === e.nodeName, + isCommentNode: e => "#comment" === e.nodeName, + isDocumentTypeNode: e => "#documentType" === e.nodeName, + isElementNode: e => Object.prototype.hasOwnProperty.call(e, "tagName"), + setNodeSourceCodeLocation(e, t) { + e.sourceCodeLocation = t + }, + getNodeSourceCodeLocation: e => e.sourceCodeLocation, + updateNodeSourceCodeLocation(e, t) { + e.sourceCodeLocation = { + ...e.sourceCodeLocation, + ...t + } + } + }, + mc = ["+//silmaril//dtd html pro v0r11 19970101//", "-//as//dtd html 3.0 aswedit + extensions//", "-//advasoft ltd//dtd html 3.0 aswedit + extensions//", "-//ietf//dtd html 2.0 level 1//", "-//ietf//dtd html 2.0 level 2//", "-//ietf//dtd html 2.0 strict level 1//", "-//ietf//dtd html 2.0 strict level 2//", "-//ietf//dtd html 2.0 strict//", "-//ietf//dtd html 2.0//", "-//ietf//dtd html 2.1e//", "-//ietf//dtd html 3.0//", "-//ietf//dtd html 3.2 final//", "-//ietf//dtd html 3.2//", "-//ietf//dtd html 3//", "-//ietf//dtd html level 0//", "-//ietf//dtd html level 1//", "-//ietf//dtd html level 2//", "-//ietf//dtd html level 3//", "-//ietf//dtd html strict level 0//", "-//ietf//dtd html strict level 1//", "-//ietf//dtd html strict level 2//", "-//ietf//dtd html strict level 3//", "-//ietf//dtd html strict//", "-//ietf//dtd html//", "-//metrius//dtd metrius presentational//", "-//microsoft//dtd internet explorer 2.0 html strict//", "-//microsoft//dtd internet explorer 2.0 html//", "-//microsoft//dtd internet explorer 2.0 tables//", "-//microsoft//dtd internet explorer 3.0 html strict//", "-//microsoft//dtd internet explorer 3.0 html//", "-//microsoft//dtd internet explorer 3.0 tables//", "-//netscape comm. corp.//dtd html//", "-//netscape comm. corp.//dtd strict html//", "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", "-//sq//dtd html 2.0 hotmetal + extensions//", "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//", "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//", "-//spyglass//dtd html 2.0 extended//", "-//sun microsystems corp.//dtd hotjava html//", "-//sun microsystems corp.//dtd hotjava strict html//", "-//w3c//dtd html 3 1995-03-24//", "-//w3c//dtd html 3.2 draft//", "-//w3c//dtd html 3.2 final//", "-//w3c//dtd html 3.2//", "-//w3c//dtd html 3.2s draft//", "-//w3c//dtd html 4.0 frameset//", "-//w3c//dtd html 4.0 transitional//", "-//w3c//dtd html experimental 19960712//", "-//w3c//dtd html experimental 970421//", "-//w3c//dtd w3 html//", "-//w3o//dtd w3 html 3.0//", "-//webtechs//dtd mozilla html 2.0//", "-//webtechs//dtd mozilla html//"], + Tc = [...mc, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"], + _c = new Set(["-//w3o//dtd w3 html strict 3.0//en//", "-/w3c/dtd html 4.0 transitional/en", "html"]), + Ac = ["-//w3c//dtd xhtml 1.0 frameset//", "-//w3c//dtd xhtml 1.0 transitional//"], + gc = [...Ac, "-//w3c//dtd html 4.01 frameset//", "-//w3c//dtd html 4.01 transitional//"]; + +function Nc(e, t) { + return t.some((t => e.startsWith(t))) +} +const Cc = "text/html", + Ic = "application/xhtml+xml", + Sc = new Map(["attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan"].map((e => [e.toLowerCase(), e]))), + bc = new Map([ + ["xlink:actuate", { + prefix: "xlink", + name: "actuate", + namespace: vo.XLINK + }], + ["xlink:arcrole", { + prefix: "xlink", + name: "arcrole", + namespace: vo.XLINK + }], + ["xlink:href", { + prefix: "xlink", + name: "href", + namespace: vo.XLINK + }], + ["xlink:role", { + prefix: "xlink", + name: "role", + namespace: vo.XLINK + }], + ["xlink:show", { + prefix: "xlink", + name: "show", + namespace: vo.XLINK + }], + ["xlink:title", { + prefix: "xlink", + name: "title", + namespace: vo.XLINK + }], + ["xlink:type", { + prefix: "xlink", + name: "type", + namespace: vo.XLINK + }], + ["xml:base", { + prefix: "xml", + name: "base", + namespace: vo.XML + }], + ["xml:lang", { + prefix: "xml", + name: "lang", + namespace: vo.XML + }], + ["xml:space", { + prefix: "xml", + name: "space", + namespace: vo.XML + }], + ["xmlns", { + prefix: "", + name: "xmlns", + namespace: vo.XMLNS + }], + ["xmlns:xlink", { + prefix: "xmlns", + name: "xlink", + namespace: vo.XMLNS + }] + ]), + Oc = new Map(["altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath"].map((e => [e.toLowerCase(), e]))), + yc = new Set([Po.B, Po.BIG, Po.BLOCKQUOTE, Po.BODY, Po.BR, Po.CENTER, Po.CODE, Po.DD, Po.DIV, Po.DL, Po.DT, Po.EM, Po.EMBED, Po.H1, Po.H2, Po.H3, Po.H4, Po.H5, Po.H6, Po.HEAD, Po.HR, Po.I, Po.IMG, Po.LI, Po.LISTING, Po.MENU, Po.META, Po.NOBR, Po.OL, Po.P, Po.PRE, Po.RUBY, Po.S, Po.SMALL, Po.SPAN, Po.STRONG, Po.STRIKE, Po.SUB, Po.SUP, Po.TABLE, Po.TT, Po.U, Po.UL, Po.VAR]); + +function Lc(e) { + for (let t = 0; t < e.attrs.length; t++) + if ("definitionurl" === e.attrs[t].name) { + e.attrs[t].name = "definitionURL"; + break + } +} + +function kc(e) { + for (let t = 0; t < e.attrs.length; t++) { + const n = Sc.get(e.attrs[t].name); + null != n && (e.attrs[t].name = n) + } +} + +function vc(e) { + for (let t = 0; t < e.attrs.length; t++) { + const n = bc.get(e.attrs[t].name); + n && (e.attrs[t].prefix = n.prefix, e.attrs[t].name = n.name, e.attrs[t].namespace = n.namespace) + } +} + +function Dc(e, t, n, r) { + return (!r || r === vo.HTML) && function(e, t, n) { + if (t === vo.MATHML && e === Po.ANNOTATION_XML) + for (let e = 0; e < n.length; e++) + if (n[e].name === Do.ENCODING) { + const t = n[e].value.toLowerCase(); + return t === Cc || t === Ic + } return t === vo.SVG && (e === Po.FOREIGN_OBJECT || e === Po.DESC || e === Po.TITLE) + }(e, t, n) || (!r || r === vo.MATHML) && function(e, t) { + return t === vo.MATHML && (e === Po.MI || e === Po.MO || e === Po.MN || e === Po.MS || e === Po.MTEXT) + }(e, t) +} +var Rc; +! function(e) { + e[e.INITIAL = 0] = "INITIAL", e[e.BEFORE_HTML = 1] = "BEFORE_HTML", e[e.BEFORE_HEAD = 2] = "BEFORE_HEAD", e[e.IN_HEAD = 3] = "IN_HEAD", e[e.IN_HEAD_NO_SCRIPT = 4] = "IN_HEAD_NO_SCRIPT", e[e.AFTER_HEAD = 5] = "AFTER_HEAD", e[e.IN_BODY = 6] = "IN_BODY", e[e.TEXT = 7] = "TEXT", e[e.IN_TABLE = 8] = "IN_TABLE", e[e.IN_TABLE_TEXT = 9] = "IN_TABLE_TEXT", e[e.IN_CAPTION = 10] = "IN_CAPTION", e[e.IN_COLUMN_GROUP = 11] = "IN_COLUMN_GROUP", e[e.IN_TABLE_BODY = 12] = "IN_TABLE_BODY", e[e.IN_ROW = 13] = "IN_ROW", e[e.IN_CELL = 14] = "IN_CELL", e[e.IN_SELECT = 15] = "IN_SELECT", e[e.IN_SELECT_IN_TABLE = 16] = "IN_SELECT_IN_TABLE", e[e.IN_TEMPLATE = 17] = "IN_TEMPLATE", e[e.AFTER_BODY = 18] = "AFTER_BODY", e[e.IN_FRAMESET = 19] = "IN_FRAMESET", e[e.AFTER_FRAMESET = 20] = "AFTER_FRAMESET", e[e.AFTER_AFTER_BODY = 21] = "AFTER_AFTER_BODY", e[e.AFTER_AFTER_FRAMESET = 22] = "AFTER_AFTER_FRAMESET" +}(Rc || (Rc = {})); +const Mc = { + startLine: -1, + startCol: -1, + startOffset: -1, + endLine: -1, + endCol: -1, + endOffset: -1 + }, + Pc = new Set([Po.TABLE, Po.TBODY, Po.TFOOT, Po.THEAD, Po.TR]), + xc = { + scriptingEnabled: !0, + sourceCodeLocationInfo: !1, + treeAdapter: Ec, + onParseError: null + }; +class wc { + constructor(e, t, n = null, r = null) { + this.fragmentContext = n, this.scriptHandler = r, this.currentToken = null, this.stopped = !1, this.insertionMode = Rc.INITIAL, this.originalInsertionMode = Rc.INITIAL, this.headElement = null, this.formElement = null, this.currentNotInHTML = !1, this.tmplInsertionModeStack = [], this.pendingCharacterTokens = [], this.hasNonWhitespacePendingCharacterToken = !1, this.framesetOk = !0, this.skipNextNewLine = !1, this.fosterParentingEnabled = !1, this.options = { + ...xc, + ...e + }, this.treeAdapter = this.options.treeAdapter, this.onParseError = this.options.onParseError, this.onParseError && (this.options.sourceCodeLocationInfo = !0), this.document = null != t ? t : this.treeAdapter.createDocument(), this.tokenizer = new tc(this.options, this), this.activeFormattingElements = new fc(this.treeAdapter), this.fragmentContextID = n ? Fo(this.treeAdapter.getTagName(n)) : Po.UNKNOWN, this._setContextModes(null != n ? n : this.document, this.fragmentContextID), this.openElements = new hc(this.document, this.treeAdapter, this) + } + static parse(e, t) { + const n = new this(t); + return n.tokenizer.write(e, !0), n.document + } + static getFragmentParser(e, t) { + const n = { + ...xc, + ...t + }; + null != e || (e = n.treeAdapter.createElement(Mo.TEMPLATE, vo.HTML, [])); + const r = n.treeAdapter.createElement("documentmock", vo.HTML, []), + i = new this(n, r, e); + return i.fragmentContextID === Po.TEMPLATE && i.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE), i._initTokenizerForFragmentParsing(), i._insertFakeRootElement(), i._resetInsertionMode(), i._findFormInFragmentContext(), i + } + getFragment() { + const e = this.treeAdapter.getFirstChild(this.document), + t = this.treeAdapter.createDocumentFragment(); + return this._adoptNodes(e, t), t + } + _err(e, t, n) { + var r; + if (!this.onParseError) return; + const i = null !== (r = e.location) && void 0 !== r ? r : Mc, + s = { + code: t, + startLine: i.startLine, + startCol: i.startCol, + startOffset: i.startOffset, + endLine: n ? i.startLine : i.endLine, + endCol: n ? i.startCol : i.endCol, + endOffset: n ? i.startOffset : i.endOffset + }; + this.onParseError(s) + } + onItemPush(e, t, n) { + var r, i; + null === (i = (r = this.treeAdapter).onItemPush) || void 0 === i || i.call(r, e), n && this.openElements.stackTop > 0 && this._setContextModes(e, t) + } + onItemPop(e, t) { + var n, r; + if (this.options.sourceCodeLocationInfo && this._setEndLocation(e, this.currentToken), null === (r = (n = this.treeAdapter).onItemPop) || void 0 === r || r.call(n, e, this.openElements.current), t) { + let e, t; + 0 === this.openElements.stackTop && this.fragmentContext ? (e = this.fragmentContext, t = this.fragmentContextID) : ({ + current: e, + currentTagId: t + } = this.openElements), this._setContextModes(e, t) + } + } + _setContextModes(e, t) { + const n = e === this.document || this.treeAdapter.getNamespaceURI(e) === vo.HTML; + this.currentNotInHTML = !n, this.tokenizer.inForeignNode = !n && !this._isIntegrationPoint(t, e) + } + _switchToTextParsing(e, t) { + this._insertElement(e, vo.HTML), this.tokenizer.state = t, this.originalInsertionMode = this.insertionMode, this.insertionMode = Rc.TEXT + } + switchToPlaintextParsing() { + this.insertionMode = Rc.TEXT, this.originalInsertionMode = Rc.IN_BODY, this.tokenizer.state = jo.PLAINTEXT + } + _getAdjustedCurrentElement() { + return 0 === this.openElements.stackTop && this.fragmentContext ? this.fragmentContext : this.openElements.current + } + _findFormInFragmentContext() { + let e = this.fragmentContext; + for (; e;) { + if (this.treeAdapter.getTagName(e) === Mo.FORM) { + this.formElement = e; + break + } + e = this.treeAdapter.getParentNode(e) + } + } + _initTokenizerForFragmentParsing() { + if (this.fragmentContext && this.treeAdapter.getNamespaceURI(this.fragmentContext) === vo.HTML) switch (this.fragmentContextID) { + case Po.TITLE: + case Po.TEXTAREA: + this.tokenizer.state = jo.RCDATA; + break; + case Po.STYLE: + case Po.XMP: + case Po.IFRAME: + case Po.NOEMBED: + case Po.NOFRAMES: + case Po.NOSCRIPT: + this.tokenizer.state = jo.RAWTEXT; + break; + case Po.SCRIPT: + this.tokenizer.state = jo.SCRIPT_DATA; + break; + case Po.PLAINTEXT: + this.tokenizer.state = jo.PLAINTEXT + } + } + _setDocumentType(e) { + const t = e.name || "", + n = e.publicId || "", + r = e.systemId || ""; + if (this.treeAdapter.setDocumentType(this.document, t, n, r), e.location) { + const t = this.treeAdapter.getChildNodes(this.document).find((e => this.treeAdapter.isDocumentTypeNode(e))); + t && this.treeAdapter.setNodeSourceCodeLocation(t, e.location) + } + } + _attachElementToTree(e, t) { + if (this.options.sourceCodeLocationInfo) { + const n = t && { + ...t, + startTag: t + }; + this.treeAdapter.setNodeSourceCodeLocation(e, n) + } + if (this._shouldFosterParentOnInsertion()) this._fosterParentElement(e); + else { + const t = this.openElements.currentTmplContentOrNode; + this.treeAdapter.appendChild(t, e) + } + } + _appendElement(e, t) { + const n = this.treeAdapter.createElement(e.tagName, t, e.attrs); + this._attachElementToTree(n, e.location) + } + _insertElement(e, t) { + const n = this.treeAdapter.createElement(e.tagName, t, e.attrs); + this._attachElementToTree(n, e.location), this.openElements.push(n, e.tagID) + } + _insertFakeElement(e, t) { + const n = this.treeAdapter.createElement(e, vo.HTML, []); + this._attachElementToTree(n, null), this.openElements.push(n, t) + } + _insertTemplate(e) { + const t = this.treeAdapter.createElement(e.tagName, vo.HTML, e.attrs), + n = this.treeAdapter.createDocumentFragment(); + this.treeAdapter.setTemplateContent(t, n), this._attachElementToTree(t, e.location), this.openElements.push(t, e.tagID), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, null) + } + _insertFakeRootElement() { + const e = this.treeAdapter.createElement(Mo.HTML, vo.HTML, []); + this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(e, null), this.treeAdapter.appendChild(this.openElements.current, e), this.openElements.push(e, Po.HTML) + } + _appendCommentNode(e, t) { + const n = this.treeAdapter.createCommentNode(e.data); + this.treeAdapter.appendChild(t, n), this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(n, e.location) + } + _insertCharacters(e) { + let t, n; + if (this._shouldFosterParentOnInsertion() ? (({ + parent: t, + beforeElement: n + } = this._findFosterParentingLocation()), n ? this.treeAdapter.insertTextBefore(t, e.chars, n) : this.treeAdapter.insertText(t, e.chars)) : (t = this.openElements.currentTmplContentOrNode, this.treeAdapter.insertText(t, e.chars)), !e.location) return; + const r = this.treeAdapter.getChildNodes(t), + i = n ? r.lastIndexOf(n) : r.length, + s = r[i - 1]; + if (this.treeAdapter.getNodeSourceCodeLocation(s)) { + const { + endLine: t, + endCol: n, + endOffset: r + } = e.location; + this.treeAdapter.updateNodeSourceCodeLocation(s, { + endLine: t, + endCol: n, + endOffset: r + }) + } else this.options.sourceCodeLocationInfo && this.treeAdapter.setNodeSourceCodeLocation(s, e.location) + } + _adoptNodes(e, t) { + for (let n = this.treeAdapter.getFirstChild(e); n; n = this.treeAdapter.getFirstChild(e)) this.treeAdapter.detachNode(n), this.treeAdapter.appendChild(t, n) + } + _setEndLocation(e, t) { + if (this.treeAdapter.getNodeSourceCodeLocation(e) && t.location) { + const n = t.location, + r = this.treeAdapter.getTagName(e), + i = t.type === To.END_TAG && r === t.tagName ? { + endTag: { + ...n + }, + endLine: n.endLine, + endCol: n.endCol, + endOffset: n.endOffset + } : { + endLine: n.startLine, + endCol: n.startCol, + endOffset: n.startOffset + }; + this.treeAdapter.updateNodeSourceCodeLocation(e, i) + } + } + shouldProcessStartTagTokenInForeignContent(e) { + if (!this.currentNotInHTML) return !1; + let t, n; + return 0 === this.openElements.stackTop && this.fragmentContext ? (t = this.fragmentContext, n = this.fragmentContextID) : ({ + current: t, + currentTagId: n + } = this.openElements), (e.tagID !== Po.SVG || this.treeAdapter.getTagName(t) !== Mo.ANNOTATION_XML || this.treeAdapter.getNamespaceURI(t) !== vo.MATHML) && (this.tokenizer.inForeignNode || (e.tagID === Po.MGLYPH || e.tagID === Po.MALIGNMARK) && !this._isIntegrationPoint(n, t, vo.HTML)) + } + _processToken(e) { + switch (e.type) { + case To.CHARACTER: + this.onCharacter(e); + break; + case To.NULL_CHARACTER: + this.onNullCharacter(e); + break; + case To.COMMENT: + this.onComment(e); + break; + case To.DOCTYPE: + this.onDoctype(e); + break; + case To.START_TAG: + this._processStartTag(e); + break; + case To.END_TAG: + this.onEndTag(e); + break; + case To.EOF: + this.onEof(e); + break; + case To.WHITESPACE_CHARACTER: + this.onWhitespaceCharacter(e) + } + } + _isIntegrationPoint(e, t, n) { + return Dc(e, this.treeAdapter.getNamespaceURI(t), this.treeAdapter.getAttrList(t), n) + } + _reconstructActiveFormattingElements() { + const e = this.activeFormattingElements.entries.length; + if (e) { + const t = this.activeFormattingElements.entries.findIndex((e => e.type === uc.Marker || this.openElements.contains(e.element))); + for (let n = t < 0 ? e - 1 : t - 1; n >= 0; n--) { + const e = this.activeFormattingElements.entries[n]; + this._insertElement(e.token, this.treeAdapter.getNamespaceURI(e.element)), e.element = this.openElements.current + } + } + } + _closeTableCell() { + this.openElements.generateImpliedEndTags(), this.openElements.popUntilTableCellPopped(), this.activeFormattingElements.clearToLastMarker(), this.insertionMode = Rc.IN_ROW + } + _closePElement() { + this.openElements.generateImpliedEndTagsWithExclusion(Po.P), this.openElements.popUntilTagNamePopped(Po.P) + } + _resetInsertionMode() { + for (let e = this.openElements.stackTop; e >= 0; e--) switch (0 === e && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[e]) { + case Po.TR: + return void(this.insertionMode = Rc.IN_ROW); + case Po.TBODY: + case Po.THEAD: + case Po.TFOOT: + return void(this.insertionMode = Rc.IN_TABLE_BODY); + case Po.CAPTION: + return void(this.insertionMode = Rc.IN_CAPTION); + case Po.COLGROUP: + return void(this.insertionMode = Rc.IN_COLUMN_GROUP); + case Po.TABLE: + return void(this.insertionMode = Rc.IN_TABLE); + case Po.BODY: + return void(this.insertionMode = Rc.IN_BODY); + case Po.FRAMESET: + return void(this.insertionMode = Rc.IN_FRAMESET); + case Po.SELECT: + return void this._resetInsertionModeForSelect(e); + case Po.TEMPLATE: + return void(this.insertionMode = this.tmplInsertionModeStack[0]); + case Po.HTML: + return void(this.insertionMode = this.headElement ? Rc.AFTER_HEAD : Rc.BEFORE_HEAD); + case Po.TD: + case Po.TH: + if (e > 0) return void(this.insertionMode = Rc.IN_CELL); + break; + case Po.HEAD: + if (e > 0) return void(this.insertionMode = Rc.IN_HEAD) + } + this.insertionMode = Rc.IN_BODY + } + _resetInsertionModeForSelect(e) { + if (e > 0) + for (let t = e - 1; t > 0; t--) { + const e = this.openElements.tagIDs[t]; + if (e === Po.TEMPLATE) break; + if (e === Po.TABLE) return void(this.insertionMode = Rc.IN_SELECT_IN_TABLE) + } + this.insertionMode = Rc.IN_SELECT + } + _isElementCausesFosterParenting(e) { + return Pc.has(e) + } + _shouldFosterParentOnInsertion() { + return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId) + } + _findFosterParentingLocation() { + for (let e = this.openElements.stackTop; e >= 0; e--) { + const t = this.openElements.items[e]; + switch (this.openElements.tagIDs[e]) { + case Po.TEMPLATE: + if (this.treeAdapter.getNamespaceURI(t) === vo.HTML) return { + parent: this.treeAdapter.getTemplateContent(t), + beforeElement: null + }; + break; + case Po.TABLE: { + const n = this.treeAdapter.getParentNode(t); + return n ? { + parent: n, + beforeElement: t + } : { + parent: this.openElements.items[e - 1], + beforeElement: null + } + } + } + } + return { + parent: this.openElements.items[0], + beforeElement: null + } + } + _fosterParentElement(e) { + const t = this._findFosterParentingLocation(); + t.beforeElement ? this.treeAdapter.insertBefore(t.parent, e, t.beforeElement) : this.treeAdapter.appendChild(t.parent, e) + } + _isSpecialElement(e, t) { + const n = this.treeAdapter.getNamespaceURI(e); + return Ho[n].has(t) + } + onCharacter(e) { + if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) { + e._insertCharacters(t), e.framesetOk = !1 + }(this, e); + else switch (this.insertionMode) { + case Rc.INITIAL: + Vc(this, e); + break; + case Rc.BEFORE_HTML: + Wc(this, e); + break; + case Rc.BEFORE_HEAD: + Qc(this, e); + break; + case Rc.IN_HEAD: + zc(this, e); + break; + case Rc.IN_HEAD_NO_SCRIPT: + Jc(this, e); + break; + case Rc.AFTER_HEAD: + Zc(this, e); + break; + case Rc.IN_BODY: + case Rc.IN_CAPTION: + case Rc.IN_CELL: + case Rc.IN_TEMPLATE: + nl(this, e); + break; + case Rc.TEXT: + case Rc.IN_SELECT: + case Rc.IN_SELECT_IN_TABLE: + this._insertCharacters(e); + break; + case Rc.IN_TABLE: + case Rc.IN_TABLE_BODY: + case Rc.IN_ROW: + ul(this, e); + break; + case Rc.IN_TABLE_TEXT: + ml(this, e); + break; + case Rc.IN_COLUMN_GROUP: + gl(this, e); + break; + case Rc.AFTER_BODY: + kl(this, e); + break; + case Rc.AFTER_AFTER_BODY: + vl(this, e) + } + } + onNullCharacter(e) { + if (this.skipNextNewLine = !1, this.tokenizer.inForeignNode) ! function(e, t) { + t.chars = "�", e._insertCharacters(t) + }(this, e); + else switch (this.insertionMode) { + case Rc.INITIAL: + Vc(this, e); + break; + case Rc.BEFORE_HTML: + Wc(this, e); + break; + case Rc.BEFORE_HEAD: + Qc(this, e); + break; + case Rc.IN_HEAD: + zc(this, e); + break; + case Rc.IN_HEAD_NO_SCRIPT: + Jc(this, e); + break; + case Rc.AFTER_HEAD: + Zc(this, e); + break; + case Rc.TEXT: + this._insertCharacters(e); + break; + case Rc.IN_TABLE: + case Rc.IN_TABLE_BODY: + case Rc.IN_ROW: + ul(this, e); + break; + case Rc.IN_COLUMN_GROUP: + gl(this, e); + break; + case Rc.AFTER_BODY: + kl(this, e); + break; + case Rc.AFTER_AFTER_BODY: + vl(this, e) + } + } + onComment(e) { + if (this.skipNextNewLine = !1, this.currentNotInHTML) Kc(this, e); + else switch (this.insertionMode) { + case Rc.INITIAL: + case Rc.BEFORE_HTML: + case Rc.BEFORE_HEAD: + case Rc.IN_HEAD: + case Rc.IN_HEAD_NO_SCRIPT: + case Rc.AFTER_HEAD: + case Rc.IN_BODY: + case Rc.IN_TABLE: + case Rc.IN_CAPTION: + case Rc.IN_COLUMN_GROUP: + case Rc.IN_TABLE_BODY: + case Rc.IN_ROW: + case Rc.IN_CELL: + case Rc.IN_SELECT: + case Rc.IN_SELECT_IN_TABLE: + case Rc.IN_TEMPLATE: + case Rc.IN_FRAMESET: + case Rc.AFTER_FRAMESET: + Kc(this, e); + break; + case Rc.IN_TABLE_TEXT: + Tl(this, e); + break; + case Rc.AFTER_BODY: + ! function(e, t) { + e._appendCommentNode(t, e.openElements.items[0]) + }(this, e); + break; + case Rc.AFTER_AFTER_BODY: + case Rc.AFTER_AFTER_FRAMESET: + ! function(e, t) { + e._appendCommentNode(t, e.document) + }(this, e) + } + } + onDoctype(e) { + switch (this.skipNextNewLine = !1, this.insertionMode) { + case Rc.INITIAL: + ! function(e, t) { + e._setDocumentType(t); + const n = t.forceQuirks ? Ro.QUIRKS : function(e) { + if ("html" !== e.name) return Ro.QUIRKS; + const { + systemId: t + } = e; + if (t && "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" === t.toLowerCase()) return Ro.QUIRKS; + let { + publicId: n + } = e; + if (null !== n) { + if (n = n.toLowerCase(), _c.has(n)) return Ro.QUIRKS; + let e = null === t ? Tc : mc; + if (Nc(n, e)) return Ro.QUIRKS; + if (e = null === t ? Ac : gc, Nc(n, e)) return Ro.LIMITED_QUIRKS + } + return Ro.NO_QUIRKS + }(t); + (function(e) { + return "html" === e.name && null === e.publicId && (null === e.systemId || "about:legacy-compat" === e.systemId) + })(t) || e._err(t, Eo.nonConformingDoctype); + e.treeAdapter.setDocumentMode(e.document, n), e.insertionMode = Rc.BEFORE_HTML + }(this, e); + break; + case Rc.BEFORE_HEAD: + case Rc.IN_HEAD: + case Rc.IN_HEAD_NO_SCRIPT: + case Rc.AFTER_HEAD: + this._err(e, Eo.misplacedDoctype); + break; + case Rc.IN_TABLE_TEXT: + Tl(this, e) + } + } + onStartTag(e) { + this.skipNextNewLine = !1, this.currentToken = e, this._processStartTag(e), e.selfClosing && !e.ackSelfClosing && this._err(e, Eo.nonVoidHtmlElementStartTagWithTrailingSolidus) + } + _processStartTag(e) { + this.shouldProcessStartTagTokenInForeignContent(e) ? function(e, t) { + if (function(e) { + const t = e.tagID; + return t === Po.FONT && e.attrs.some((({ + name: e + }) => e === Do.COLOR || e === Do.SIZE || e === Do.FACE)) || yc.has(t) + }(t)) Dl(e), e._startTagOutsideForeignContent(t); + else { + const n = e._getAdjustedCurrentElement(), + r = e.treeAdapter.getNamespaceURI(n); + r === vo.MATHML ? Lc(t) : r === vo.SVG && (! function(e) { + const t = Oc.get(e.tagName); + null != t && (e.tagName = t, e.tagID = Fo(e.tagName)) + }(t), kc(t)), vc(t), t.selfClosing ? e._appendElement(t, r) : e._insertElement(t, r), t.ackSelfClosing = !0 + } + }(this, e) : this._startTagOutsideForeignContent(e) + } + _startTagOutsideForeignContent(e) { + switch (this.insertionMode) { + case Rc.INITIAL: + Vc(this, e); + break; + case Rc.BEFORE_HTML: + ! function(e, t) { + t.tagID === Po.HTML ? (e._insertElement(t, vo.HTML), e.insertionMode = Rc.BEFORE_HEAD) : Wc(e, t) + }(this, e); + break; + case Rc.BEFORE_HEAD: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.HEAD: + e._insertElement(t, vo.HTML), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD; + break; + default: + Qc(e, t) + } + }(this, e); + break; + case Rc.IN_HEAD: + Xc(this, e); + break; + case Rc.IN_HEAD_NO_SCRIPT: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.BASEFONT: + case Po.BGSOUND: + case Po.HEAD: + case Po.LINK: + case Po.META: + case Po.NOFRAMES: + case Po.STYLE: + Xc(e, t); + break; + case Po.NOSCRIPT: + e._err(t, Eo.nestedNoscriptInHead); + break; + default: + Jc(e, t) + } + }(this, e); + break; + case Rc.AFTER_HEAD: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.BODY: + e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_BODY; + break; + case Po.FRAMESET: + e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET; + break; + case Po.BASE: + case Po.BASEFONT: + case Po.BGSOUND: + case Po.LINK: + case Po.META: + case Po.NOFRAMES: + case Po.SCRIPT: + case Po.STYLE: + case Po.TEMPLATE: + case Po.TITLE: + e._err(t, Eo.abandonedHeadElementChild), e.openElements.push(e.headElement, Po.HEAD), Xc(e, t), e.openElements.remove(e.headElement); + break; + case Po.HEAD: + e._err(t, Eo.misplacedStartTagForHeadElement); + break; + default: + Zc(e, t) + } + }(this, e); + break; + case Rc.IN_BODY: + ol(this, e); + break; + case Rc.IN_TABLE: + pl(this, e); + break; + case Rc.IN_TABLE_TEXT: + Tl(this, e); + break; + case Rc.IN_CAPTION: + ! function(e, t) { + const n = t.tagID; + _l.has(n) ? e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, pl(e, t)) : ol(e, t) + }(this, e); + break; + case Rc.IN_COLUMN_GROUP: + Al(this, e); + break; + case Rc.IN_TABLE_BODY: + Nl(this, e); + break; + case Rc.IN_ROW: + Il(this, e); + break; + case Rc.IN_CELL: + ! function(e, t) { + const n = t.tagID; + _l.has(n) ? (e.openElements.hasInTableScope(Po.TD) || e.openElements.hasInTableScope(Po.TH)) && (e._closeTableCell(), Il(e, t)) : ol(e, t) + }(this, e); + break; + case Rc.IN_SELECT: + bl(this, e); + break; + case Rc.IN_SELECT_IN_TABLE: + ! function(e, t) { + const n = t.tagID; + n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e._processStartTag(t)) : bl(e, t) + }(this, e); + break; + case Rc.IN_TEMPLATE: + ! function(e, t) { + switch (t.tagID) { + case Po.BASE: + case Po.BASEFONT: + case Po.BGSOUND: + case Po.LINK: + case Po.META: + case Po.NOFRAMES: + case Po.SCRIPT: + case Po.STYLE: + case Po.TEMPLATE: + case Po.TITLE: + Xc(e, t); + break; + case Po.CAPTION: + case Po.COLGROUP: + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + e.tmplInsertionModeStack[0] = Rc.IN_TABLE, e.insertionMode = Rc.IN_TABLE, pl(e, t); + break; + case Po.COL: + e.tmplInsertionModeStack[0] = Rc.IN_COLUMN_GROUP, e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t); + break; + case Po.TR: + e.tmplInsertionModeStack[0] = Rc.IN_TABLE_BODY, e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t); + break; + case Po.TD: + case Po.TH: + e.tmplInsertionModeStack[0] = Rc.IN_ROW, e.insertionMode = Rc.IN_ROW, Il(e, t); + break; + default: + e.tmplInsertionModeStack[0] = Rc.IN_BODY, e.insertionMode = Rc.IN_BODY, ol(e, t) + } + }(this, e); + break; + case Rc.AFTER_BODY: + ! function(e, t) { + t.tagID === Po.HTML ? ol(e, t) : kl(e, t) + }(this, e); + break; + case Rc.IN_FRAMESET: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.FRAMESET: + e._insertElement(t, vo.HTML); + break; + case Po.FRAME: + e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; + break; + case Po.NOFRAMES: + Xc(e, t) + } + }(this, e); + break; + case Rc.AFTER_FRAMESET: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.NOFRAMES: + Xc(e, t) + } + }(this, e); + break; + case Rc.AFTER_AFTER_BODY: + ! function(e, t) { + t.tagID === Po.HTML ? ol(e, t) : vl(e, t) + }(this, e); + break; + case Rc.AFTER_AFTER_FRAMESET: + ! function(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.NOFRAMES: + Xc(e, t) + } + }(this, e) + } + } + onEndTag(e) { + this.skipNextNewLine = !1, this.currentToken = e, this.currentNotInHTML ? function(e, t) { + if (t.tagID === Po.P || t.tagID === Po.BR) return Dl(e), void e._endTagOutsideForeignContent(t); + for (let n = e.openElements.stackTop; n > 0; n--) { + const r = e.openElements.items[n]; + if (e.treeAdapter.getNamespaceURI(r) === vo.HTML) { + e._endTagOutsideForeignContent(t); + break + } + const i = e.treeAdapter.getTagName(r); + if (i.toLowerCase() === t.tagName) { + t.tagName = i, e.openElements.shortenToLength(n); + break + } + } + }(this, e) : this._endTagOutsideForeignContent(e) + } + _endTagOutsideForeignContent(e) { + switch (this.insertionMode) { + case Rc.INITIAL: + Vc(this, e); + break; + case Rc.BEFORE_HTML: + ! function(e, t) { + const n = t.tagID; + n !== Po.HTML && n !== Po.HEAD && n !== Po.BODY && n !== Po.BR || Wc(e, t) + }(this, e); + break; + case Rc.BEFORE_HEAD: + ! function(e, t) { + const n = t.tagID; + n === Po.HEAD || n === Po.BODY || n === Po.HTML || n === Po.BR ? Qc(e, t) : e._err(t, Eo.endTagWithoutMatchingOpenElement) + }(this, e); + break; + case Rc.IN_HEAD: + ! function(e, t) { + switch (t.tagID) { + case Po.HEAD: + e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD; + break; + case Po.BODY: + case Po.BR: + case Po.HTML: + zc(e, t); + break; + case Po.TEMPLATE: + $c(e, t); + break; + default: + e._err(t, Eo.endTagWithoutMatchingOpenElement) + } + }(this, e); + break; + case Rc.IN_HEAD_NO_SCRIPT: + ! function(e, t) { + switch (t.tagID) { + case Po.NOSCRIPT: + e.openElements.pop(), e.insertionMode = Rc.IN_HEAD; + break; + case Po.BR: + Jc(e, t); + break; + default: + e._err(t, Eo.endTagWithoutMatchingOpenElement) + } + }(this, e); + break; + case Rc.AFTER_HEAD: + ! function(e, t) { + switch (t.tagID) { + case Po.BODY: + case Po.HTML: + case Po.BR: + Zc(e, t); + break; + case Po.TEMPLATE: + $c(e, t); + break; + default: + e._err(t, Eo.endTagWithoutMatchingOpenElement) + } + }(this, e); + break; + case Rc.IN_BODY: + ll(this, e); + break; + case Rc.TEXT: + ! function(e, t) { + var n; + t.tagID === Po.SCRIPT && (null === (n = e.scriptHandler) || void 0 === n || n.call(e, e.openElements.current)); + e.openElements.pop(), e.insertionMode = e.originalInsertionMode + }(this, e); + break; + case Rc.IN_TABLE: + fl(this, e); + break; + case Rc.IN_TABLE_TEXT: + Tl(this, e); + break; + case Rc.IN_CAPTION: + ! function(e, t) { + const n = t.tagID; + switch (n) { + case Po.CAPTION: + case Po.TABLE: + e.openElements.hasInTableScope(Po.CAPTION) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.CAPTION), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_TABLE, n === Po.TABLE && fl(e, t)); + break; + case Po.BODY: + case Po.COL: + case Po.COLGROUP: + case Po.HTML: + case Po.TBODY: + case Po.TD: + case Po.TFOOT: + case Po.TH: + case Po.THEAD: + case Po.TR: + break; + default: + ll(e, t) + } + }(this, e); + break; + case Rc.IN_COLUMN_GROUP: + ! function(e, t) { + switch (t.tagID) { + case Po.COLGROUP: + e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE); + break; + case Po.TEMPLATE: + $c(e, t); + break; + case Po.COL: + break; + default: + gl(e, t) + } + }(this, e); + break; + case Rc.IN_TABLE_BODY: + Cl(this, e); + break; + case Rc.IN_ROW: + Sl(this, e); + break; + case Rc.IN_CELL: + ! function(e, t) { + const n = t.tagID; + switch (n) { + case Po.TD: + case Po.TH: + e.openElements.hasInTableScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker(), e.insertionMode = Rc.IN_ROW); + break; + case Po.TABLE: + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + case Po.TR: + e.openElements.hasInTableScope(n) && (e._closeTableCell(), Sl(e, t)); + break; + case Po.BODY: + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.HTML: + break; + default: + ll(e, t) + } + }(this, e); + break; + case Rc.IN_SELECT: + Ol(this, e); + break; + case Rc.IN_SELECT_IN_TABLE: + ! function(e, t) { + const n = t.tagID; + n === Po.CAPTION || n === Po.TABLE || n === Po.TBODY || n === Po.TFOOT || n === Po.THEAD || n === Po.TR || n === Po.TD || n === Po.TH ? e.openElements.hasInTableScope(n) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), e.onEndTag(t)) : Ol(e, t) + }(this, e); + break; + case Rc.IN_TEMPLATE: + ! function(e, t) { + t.tagID === Po.TEMPLATE && $c(e, t) + }(this, e); + break; + case Rc.AFTER_BODY: + Ll(this, e); + break; + case Rc.IN_FRAMESET: + ! function(e, t) { + t.tagID !== Po.FRAMESET || e.openElements.isRootHtmlElementCurrent() || (e.openElements.pop(), e.fragmentContext || e.openElements.currentTagId === Po.FRAMESET || (e.insertionMode = Rc.AFTER_FRAMESET)) + }(this, e); + break; + case Rc.AFTER_FRAMESET: + ! function(e, t) { + t.tagID === Po.HTML && (e.insertionMode = Rc.AFTER_AFTER_FRAMESET) + }(this, e); + break; + case Rc.AFTER_AFTER_BODY: + vl(this, e) + } + } + onEof(e) { + switch (this.insertionMode) { + case Rc.INITIAL: + Vc(this, e); + break; + case Rc.BEFORE_HTML: + Wc(this, e); + break; + case Rc.BEFORE_HEAD: + Qc(this, e); + break; + case Rc.IN_HEAD: + zc(this, e); + break; + case Rc.IN_HEAD_NO_SCRIPT: + Jc(this, e); + break; + case Rc.AFTER_HEAD: + Zc(this, e); + break; + case Rc.IN_BODY: + case Rc.IN_TABLE: + case Rc.IN_CAPTION: + case Rc.IN_COLUMN_GROUP: + case Rc.IN_TABLE_BODY: + case Rc.IN_ROW: + case Rc.IN_CELL: + case Rc.IN_SELECT: + case Rc.IN_SELECT_IN_TABLE: + hl(this, e); + break; + case Rc.TEXT: + ! function(e, t) { + e._err(t, Eo.eofInElementThatCanContainOnlyText), e.openElements.pop(), e.insertionMode = e.originalInsertionMode, e.onEof(t) + }(this, e); + break; + case Rc.IN_TABLE_TEXT: + Tl(this, e); + break; + case Rc.IN_TEMPLATE: + yl(this, e); + break; + case Rc.AFTER_BODY: + case Rc.IN_FRAMESET: + case Rc.AFTER_FRAMESET: + case Rc.AFTER_AFTER_BODY: + case Rc.AFTER_AFTER_FRAMESET: + jc(this, e) + } + } + onWhitespaceCharacter(e) { + if (this.skipNextNewLine && (this.skipNextNewLine = !1, e.chars.charCodeAt(0) === io.LINE_FEED)) { + if (1 === e.chars.length) return; + e.chars = e.chars.substr(1) + } + if (this.tokenizer.inForeignNode) this._insertCharacters(e); + else switch (this.insertionMode) { + case Rc.IN_HEAD: + case Rc.IN_HEAD_NO_SCRIPT: + case Rc.AFTER_HEAD: + case Rc.TEXT: + case Rc.IN_COLUMN_GROUP: + case Rc.IN_SELECT: + case Rc.IN_SELECT_IN_TABLE: + case Rc.IN_FRAMESET: + case Rc.AFTER_FRAMESET: + this._insertCharacters(e); + break; + case Rc.IN_BODY: + case Rc.IN_CAPTION: + case Rc.IN_CELL: + case Rc.IN_TEMPLATE: + case Rc.AFTER_BODY: + case Rc.AFTER_AFTER_BODY: + case Rc.AFTER_AFTER_FRAMESET: + tl(this, e); + break; + case Rc.IN_TABLE: + case Rc.IN_TABLE_BODY: + case Rc.IN_ROW: + ul(this, e); + break; + case Rc.IN_TABLE_TEXT: + El(this, e) + } + } +} + +function Bc(e, t) { + let n = e.activeFormattingElements.getElementEntryInScopeWithTagName(t.tagName); + return n ? e.openElements.contains(n.element) ? e.openElements.hasInScope(t.tagID) || (n = null) : (e.activeFormattingElements.removeEntry(n), n = null) : cl(e, t), n +} + +function Fc(e, t) { + let n = null, + r = e.openElements.stackTop; + for (; r >= 0; r--) { + const i = e.openElements.items[r]; + if (i === t.element) break; + e._isSpecialElement(i, e.openElements.tagIDs[r]) && (n = i) + } + return n || (e.openElements.shortenToLength(r < 0 ? 0 : r), e.activeFormattingElements.removeEntry(t)), n +} + +function Uc(e, t, n) { + let r = t, + i = e.openElements.getCommonAncestor(t); + for (let s = 0, a = i; a !== n; s++, a = i) { + i = e.openElements.getCommonAncestor(a); + const n = e.activeFormattingElements.getElementEntry(a), + o = n && s >= 3; + !n || o ? (o && e.activeFormattingElements.removeEntry(n), e.openElements.remove(a)) : (a = Hc(e, n), r === t && (e.activeFormattingElements.bookmark = n), e.treeAdapter.detachNode(r), e.treeAdapter.appendChild(a, r), r = a) + } + return r +} + +function Hc(e, t) { + const n = e.treeAdapter.getNamespaceURI(t.element), + r = e.treeAdapter.createElement(t.token.tagName, n, t.token.attrs); + return e.openElements.replace(t.element, r), t.element = r, r +} + +function Gc(e, t, n) { + const r = Fo(e.treeAdapter.getTagName(t)); + if (e._isElementCausesFosterParenting(r)) e._fosterParentElement(n); + else { + const i = e.treeAdapter.getNamespaceURI(t); + r === Po.TEMPLATE && i === vo.HTML && (t = e.treeAdapter.getTemplateContent(t)), e.treeAdapter.appendChild(t, n) + } +} + +function Yc(e, t, n) { + const r = e.treeAdapter.getNamespaceURI(n.element), + { + token: i + } = n, + s = e.treeAdapter.createElement(i.tagName, r, i.attrs); + e._adoptNodes(t, s), e.treeAdapter.appendChild(t, s), e.activeFormattingElements.insertElementAfterBookmark(s, i), e.activeFormattingElements.removeEntry(n), e.openElements.remove(n.element), e.openElements.insertAfter(t, s, i.tagID) +} + +function qc(e, t) { + for (let n = 0; n < 8; n++) { + const n = Bc(e, t); + if (!n) break; + const r = Fc(e, n); + if (!r) break; + e.activeFormattingElements.bookmark = n; + const i = Uc(e, r, n.element), + s = e.openElements.getCommonAncestor(n.element); + e.treeAdapter.detachNode(i), s && Gc(e, s, i), Yc(e, r, n) + } +} + +function Kc(e, t) { + e._appendCommentNode(t, e.openElements.currentTmplContentOrNode) +} + +function jc(e, t) { + if (e.stopped = !0, t.location) { + const n = e.fragmentContext ? 0 : 2; + for (let r = e.openElements.stackTop; r >= n; r--) e._setEndLocation(e.openElements.items[r], t); + if (!e.fragmentContext && e.openElements.stackTop >= 0) { + const n = e.openElements.items[0], + r = e.treeAdapter.getNodeSourceCodeLocation(n); + if (r && !r.endTag && (e._setEndLocation(n, t), e.openElements.stackTop >= 1)) { + const n = e.openElements.items[1], + r = e.treeAdapter.getNodeSourceCodeLocation(n); + r && !r.endTag && e._setEndLocation(n, t) + } + } + } +} + +function Vc(e, t) { + e._err(t, Eo.missingDoctype, !0), e.treeAdapter.setDocumentMode(e.document, Ro.QUIRKS), e.insertionMode = Rc.BEFORE_HTML, e._processToken(t) +} + +function Wc(e, t) { + e._insertFakeRootElement(), e.insertionMode = Rc.BEFORE_HEAD, e._processToken(t) +} + +function Qc(e, t) { + e._insertFakeElement(Mo.HEAD, Po.HEAD), e.headElement = e.openElements.current, e.insertionMode = Rc.IN_HEAD, e._processToken(t) +} + +function Xc(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.BASE: + case Po.BASEFONT: + case Po.BGSOUND: + case Po.LINK: + case Po.META: + e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; + break; + case Po.TITLE: + e._switchToTextParsing(t, jo.RCDATA); + break; + case Po.NOSCRIPT: + e.options.scriptingEnabled ? e._switchToTextParsing(t, jo.RAWTEXT) : (e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_HEAD_NO_SCRIPT); + break; + case Po.NOFRAMES: + case Po.STYLE: + e._switchToTextParsing(t, jo.RAWTEXT); + break; + case Po.SCRIPT: + e._switchToTextParsing(t, jo.SCRIPT_DATA); + break; + case Po.TEMPLATE: + e._insertTemplate(t), e.activeFormattingElements.insertMarker(), e.framesetOk = !1, e.insertionMode = Rc.IN_TEMPLATE, e.tmplInsertionModeStack.unshift(Rc.IN_TEMPLATE); + break; + case Po.HEAD: + e._err(t, Eo.misplacedStartTagForHeadElement); + break; + default: + zc(e, t) + } +} + +function $c(e, t) { + e.openElements.tmplCount > 0 ? (e.openElements.generateImpliedEndTagsThoroughly(), e.openElements.currentTagId !== Po.TEMPLATE && e._err(t, Eo.closingOfElementWithOpenChildElements), e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode()) : e._err(t, Eo.endTagWithoutMatchingOpenElement) +} + +function zc(e, t) { + e.openElements.pop(), e.insertionMode = Rc.AFTER_HEAD, e._processToken(t) +} + +function Jc(e, t) { + const n = t.type === To.EOF ? Eo.openElementsLeftAfterEof : Eo.disallowedContentInNoscriptInHead; + e._err(t, n), e.openElements.pop(), e.insertionMode = Rc.IN_HEAD, e._processToken(t) +} + +function Zc(e, t) { + e._insertFakeElement(Mo.BODY, Po.BODY), e.insertionMode = Rc.IN_BODY, el(e, t) +} + +function el(e, t) { + switch (t.type) { + case To.CHARACTER: + nl(e, t); + break; + case To.WHITESPACE_CHARACTER: + tl(e, t); + break; + case To.COMMENT: + Kc(e, t); + break; + case To.START_TAG: + ol(e, t); + break; + case To.END_TAG: + ll(e, t); + break; + case To.EOF: + hl(e, t) + } +} + +function tl(e, t) { + e._reconstructActiveFormattingElements(), e._insertCharacters(t) +} + +function nl(e, t) { + e._reconstructActiveFormattingElements(), e._insertCharacters(t), e.framesetOk = !1 +} + +function rl(e, t) { + e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0 +} + +function il(e) { + const t = _o(e, Do.TYPE); + return null != t && "hidden" === t.toLowerCase() +} + +function sl(e, t) { + e._switchToTextParsing(t, jo.RAWTEXT) +} + +function al(e, t) { + e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML) +} + +function ol(e, t) { + switch (t.tagID) { + case Po.I: + case Po.S: + case Po.B: + case Po.U: + case Po.EM: + case Po.TT: + case Po.BIG: + case Po.CODE: + case Po.FONT: + case Po.SMALL: + case Po.STRIKE: + case Po.STRONG: + ! function(e, t) { + e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) + }(e, t); + break; + case Po.A: + ! function(e, t) { + const n = e.activeFormattingElements.getElementEntryInScopeWithTagName(Mo.A); + n && (qc(e, t), e.openElements.remove(n.element), e.activeFormattingElements.removeEntry(n)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) + }(e, t); + break; + case Po.H1: + case Po.H2: + case Po.H3: + case Po.H4: + case Po.H5: + case Po.H6: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), Go(e.openElements.currentTagId) && e.openElements.pop(), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.P: + case Po.DL: + case Po.OL: + case Po.UL: + case Po.DIV: + case Po.DIR: + case Po.NAV: + case Po.MAIN: + case Po.MENU: + case Po.ASIDE: + case Po.CENTER: + case Po.FIGURE: + case Po.FOOTER: + case Po.HEADER: + case Po.HGROUP: + case Po.DIALOG: + case Po.DETAILS: + case Po.ADDRESS: + case Po.ARTICLE: + case Po.SECTION: + case Po.SUMMARY: + case Po.FIELDSET: + case Po.BLOCKQUOTE: + case Po.FIGCAPTION: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.LI: + case Po.DD: + case Po.DT: + ! function(e, t) { + e.framesetOk = !1; + const n = t.tagID; + for (let t = e.openElements.stackTop; t >= 0; t--) { + const r = e.openElements.tagIDs[t]; + if (n === Po.LI && r === Po.LI || (n === Po.DD || n === Po.DT) && (r === Po.DD || r === Po.DT)) { + e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.popUntilTagNamePopped(r); + break + } + if (r !== Po.ADDRESS && r !== Po.DIV && r !== Po.P && e._isSpecialElement(e.openElements.items[t], r)) break + } + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.BR: + case Po.IMG: + case Po.WBR: + case Po.AREA: + case Po.EMBED: + case Po.KEYGEN: + rl(e, t); + break; + case Po.HR: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._appendElement(t, vo.HTML), e.framesetOk = !1, t.ackSelfClosing = !0 + }(e, t); + break; + case Po.RB: + case Po.RTC: + ! function(e, t) { + e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTags(), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.RT: + case Po.RP: + ! function(e, t) { + e.openElements.hasInScope(Po.RUBY) && e.openElements.generateImpliedEndTagsWithExclusion(Po.RTC), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.PRE: + case Po.LISTING: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.framesetOk = !1 + }(e, t); + break; + case Po.XMP: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._reconstructActiveFormattingElements(), e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT) + }(e, t); + break; + case Po.SVG: + ! function(e, t) { + e._reconstructActiveFormattingElements(), kc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.SVG) : e._insertElement(t, vo.SVG), t.ackSelfClosing = !0 + }(e, t); + break; + case Po.HTML: + ! function(e, t) { + 0 === e.openElements.tmplCount && e.treeAdapter.adoptAttributes(e.openElements.items[0], t.attrs) + }(e, t); + break; + case Po.BASE: + case Po.LINK: + case Po.META: + case Po.STYLE: + case Po.TITLE: + case Po.SCRIPT: + case Po.BGSOUND: + case Po.BASEFONT: + case Po.TEMPLATE: + Xc(e, t); + break; + case Po.BODY: + ! function(e, t) { + const n = e.openElements.tryPeekProperlyNestedBodyElement(); + n && 0 === e.openElements.tmplCount && (e.framesetOk = !1, e.treeAdapter.adoptAttributes(n, t.attrs)) + }(e, t); + break; + case Po.FORM: + ! function(e, t) { + const n = e.openElements.tmplCount > 0; + e.formElement && !n || (e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), n || (e.formElement = e.openElements.current)) + }(e, t); + break; + case Po.NOBR: + ! function(e, t) { + e._reconstructActiveFormattingElements(), e.openElements.hasInScope(Po.NOBR) && (qc(e, t), e._reconstructActiveFormattingElements()), e._insertElement(t, vo.HTML), e.activeFormattingElements.pushElement(e.openElements.current, t) + }(e, t); + break; + case Po.MATH: + ! function(e, t) { + e._reconstructActiveFormattingElements(), Lc(t), vc(t), t.selfClosing ? e._appendElement(t, vo.MATHML) : e._insertElement(t, vo.MATHML), t.ackSelfClosing = !0 + }(e, t); + break; + case Po.TABLE: + ! function(e, t) { + e.treeAdapter.getDocumentMode(e.document) !== Ro.QUIRKS && e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = Rc.IN_TABLE + }(e, t); + break; + case Po.INPUT: + ! function(e, t) { + e._reconstructActiveFormattingElements(), e._appendElement(t, vo.HTML), il(t) || (e.framesetOk = !1), t.ackSelfClosing = !0 + }(e, t); + break; + case Po.PARAM: + case Po.TRACK: + case Po.SOURCE: + ! function(e, t) { + e._appendElement(t, vo.HTML), t.ackSelfClosing = !0 + }(e, t); + break; + case Po.IMAGE: + ! function(e, t) { + t.tagName = Mo.IMG, t.tagID = Po.IMG, rl(e, t) + }(e, t); + break; + case Po.BUTTON: + ! function(e, t) { + e.openElements.hasInScope(Po.BUTTON) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(Po.BUTTON)), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1 + }(e, t); + break; + case Po.APPLET: + case Po.OBJECT: + case Po.MARQUEE: + ! function(e, t) { + e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.activeFormattingElements.insertMarker(), e.framesetOk = !1 + }(e, t); + break; + case Po.IFRAME: + ! function(e, t) { + e.framesetOk = !1, e._switchToTextParsing(t, jo.RAWTEXT) + }(e, t); + break; + case Po.SELECT: + ! function(e, t) { + e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML), e.framesetOk = !1, e.insertionMode = e.insertionMode === Rc.IN_TABLE || e.insertionMode === Rc.IN_CAPTION || e.insertionMode === Rc.IN_TABLE_BODY || e.insertionMode === Rc.IN_ROW || e.insertionMode === Rc.IN_CELL ? Rc.IN_SELECT_IN_TABLE : Rc.IN_SELECT + }(e, t); + break; + case Po.OPTION: + case Po.OPTGROUP: + ! function(e, t) { + e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._reconstructActiveFormattingElements(), e._insertElement(t, vo.HTML) + }(e, t); + break; + case Po.NOEMBED: + sl(e, t); + break; + case Po.FRAMESET: + ! function(e, t) { + const n = e.openElements.tryPeekProperlyNestedBodyElement(); + e.framesetOk && n && (e.treeAdapter.detachNode(n), e.openElements.popAllUpToHtmlElement(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_FRAMESET) + }(e, t); + break; + case Po.TEXTAREA: + ! function(e, t) { + e._insertElement(t, vo.HTML), e.skipNextNewLine = !0, e.tokenizer.state = jo.RCDATA, e.originalInsertionMode = e.insertionMode, e.framesetOk = !1, e.insertionMode = Rc.TEXT + }(e, t); + break; + case Po.NOSCRIPT: + e.options.scriptingEnabled ? sl(e, t) : al(e, t); + break; + case Po.PLAINTEXT: + ! function(e, t) { + e.openElements.hasInButtonScope(Po.P) && e._closePElement(), e._insertElement(t, vo.HTML), e.tokenizer.state = jo.PLAINTEXT + }(e, t); + break; + case Po.COL: + case Po.TH: + case Po.TD: + case Po.TR: + case Po.HEAD: + case Po.FRAME: + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + case Po.CAPTION: + case Po.COLGROUP: + break; + default: + al(e, t) + } +} + +function cl(e, t) { + const n = t.tagName, + r = t.tagID; + for (let t = e.openElements.stackTop; t > 0; t--) { + const i = e.openElements.items[t], + s = e.openElements.tagIDs[t]; + if (r === s && (r !== Po.UNKNOWN || e.treeAdapter.getTagName(i) === n)) { + e.openElements.generateImpliedEndTagsWithExclusion(r), e.openElements.stackTop >= t && e.openElements.shortenToLength(t); + break + } + if (e._isSpecialElement(i, s)) break + } +} + +function ll(e, t) { + switch (t.tagID) { + case Po.A: + case Po.B: + case Po.I: + case Po.S: + case Po.U: + case Po.EM: + case Po.TT: + case Po.BIG: + case Po.CODE: + case Po.FONT: + case Po.NOBR: + case Po.SMALL: + case Po.STRIKE: + case Po.STRONG: + qc(e, t); + break; + case Po.P: + ! function(e) { + e.openElements.hasInButtonScope(Po.P) || e._insertFakeElement(Mo.P, Po.P), e._closePElement() + }(e); + break; + case Po.DL: + case Po.UL: + case Po.OL: + case Po.DIR: + case Po.DIV: + case Po.NAV: + case Po.PRE: + case Po.MAIN: + case Po.MENU: + case Po.ASIDE: + case Po.BUTTON: + case Po.CENTER: + case Po.FIGURE: + case Po.FOOTER: + case Po.HEADER: + case Po.HGROUP: + case Po.DIALOG: + case Po.ADDRESS: + case Po.ARTICLE: + case Po.DETAILS: + case Po.SECTION: + case Po.SUMMARY: + case Po.LISTING: + case Po.FIELDSET: + case Po.BLOCKQUOTE: + case Po.FIGCAPTION: + ! function(e, t) { + const n = t.tagID; + e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n)) + }(e, t); + break; + case Po.LI: + ! function(e) { + e.openElements.hasInListItemScope(Po.LI) && (e.openElements.generateImpliedEndTagsWithExclusion(Po.LI), e.openElements.popUntilTagNamePopped(Po.LI)) + }(e); + break; + case Po.DD: + case Po.DT: + ! function(e, t) { + const n = t.tagID; + e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTagsWithExclusion(n), e.openElements.popUntilTagNamePopped(n)) + }(e, t); + break; + case Po.H1: + case Po.H2: + case Po.H3: + case Po.H4: + case Po.H5: + case Po.H6: + ! function(e) { + e.openElements.hasNumberedHeaderInScope() && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilNumberedHeaderPopped()) + }(e); + break; + case Po.BR: + ! function(e) { + e._reconstructActiveFormattingElements(), e._insertFakeElement(Mo.BR, Po.BR), e.openElements.pop(), e.framesetOk = !1 + }(e); + break; + case Po.BODY: + ! function(e, t) { + if (e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, e.options.sourceCodeLocationInfo)) { + const n = e.openElements.tryPeekProperlyNestedBodyElement(); + n && e._setEndLocation(n, t) + } + }(e, t); + break; + case Po.HTML: + ! function(e, t) { + e.openElements.hasInScope(Po.BODY) && (e.insertionMode = Rc.AFTER_BODY, Ll(e, t)) + }(e, t); + break; + case Po.FORM: + ! function(e) { + const t = e.openElements.tmplCount > 0, + { + formElement: n + } = e; + t || (e.formElement = null), (n || t) && e.openElements.hasInScope(Po.FORM) && (e.openElements.generateImpliedEndTags(), t ? e.openElements.popUntilTagNamePopped(Po.FORM) : n && e.openElements.remove(n)) + }(e); + break; + case Po.APPLET: + case Po.OBJECT: + case Po.MARQUEE: + ! function(e, t) { + const n = t.tagID; + e.openElements.hasInScope(n) && (e.openElements.generateImpliedEndTags(), e.openElements.popUntilTagNamePopped(n), e.activeFormattingElements.clearToLastMarker()) + }(e, t); + break; + case Po.TEMPLATE: + $c(e, t); + break; + default: + cl(e, t) + } +} + +function hl(e, t) { + e.tmplInsertionModeStack.length > 0 ? yl(e, t) : jc(e, t) +} + +function ul(e, t) { + if (Pc.has(e.openElements.currentTagId)) switch (e.pendingCharacterTokens.length = 0, e.hasNonWhitespacePendingCharacterToken = !1, e.originalInsertionMode = e.insertionMode, e.insertionMode = Rc.IN_TABLE_TEXT, t.type) { + case To.CHARACTER: + ml(e, t); + break; + case To.WHITESPACE_CHARACTER: + El(e, t) + } else dl(e, t) +} + +function pl(e, t) { + switch (t.tagID) { + case Po.TD: + case Po.TH: + case Po.TR: + ! function(e, t) { + e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.TBODY, Po.TBODY), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t) + }(e, t); + break; + case Po.STYLE: + case Po.SCRIPT: + case Po.TEMPLATE: + Xc(e, t); + break; + case Po.COL: + ! function(e, t) { + e.openElements.clearBackToTableContext(), e._insertFakeElement(Mo.COLGROUP, Po.COLGROUP), e.insertionMode = Rc.IN_COLUMN_GROUP, Al(e, t) + }(e, t); + break; + case Po.FORM: + ! function(e, t) { + e.formElement || 0 !== e.openElements.tmplCount || (e._insertElement(t, vo.HTML), e.formElement = e.openElements.current, e.openElements.pop()) + }(e, t); + break; + case Po.TABLE: + ! function(e, t) { + e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode(), e._processStartTag(t)) + }(e, t); + break; + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + ! function(e, t) { + e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_TABLE_BODY + }(e, t); + break; + case Po.INPUT: + ! function(e, t) { + il(t) ? e._appendElement(t, vo.HTML) : dl(e, t), t.ackSelfClosing = !0 + }(e, t); + break; + case Po.CAPTION: + ! function(e, t) { + e.openElements.clearBackToTableContext(), e.activeFormattingElements.insertMarker(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CAPTION + }(e, t); + break; + case Po.COLGROUP: + ! function(e, t) { + e.openElements.clearBackToTableContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_COLUMN_GROUP + }(e, t); + break; + default: + dl(e, t) + } +} + +function fl(e, t) { + switch (t.tagID) { + case Po.TABLE: + e.openElements.hasInTableScope(Po.TABLE) && (e.openElements.popUntilTagNamePopped(Po.TABLE), e._resetInsertionMode()); + break; + case Po.TEMPLATE: + $c(e, t); + break; + case Po.BODY: + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.HTML: + case Po.TBODY: + case Po.TD: + case Po.TFOOT: + case Po.TH: + case Po.THEAD: + case Po.TR: + break; + default: + dl(e, t) + } +} + +function dl(e, t) { + const n = e.fosterParentingEnabled; + e.fosterParentingEnabled = !0, el(e, t), e.fosterParentingEnabled = n +} + +function El(e, t) { + e.pendingCharacterTokens.push(t) +} + +function ml(e, t) { + e.pendingCharacterTokens.push(t), e.hasNonWhitespacePendingCharacterToken = !0 +} + +function Tl(e, t) { + let n = 0; + if (e.hasNonWhitespacePendingCharacterToken) + for (; n < e.pendingCharacterTokens.length; n++) dl(e, e.pendingCharacterTokens[n]); + else + for (; n < e.pendingCharacterTokens.length; n++) e._insertCharacters(e.pendingCharacterTokens[n]); + e.insertionMode = e.originalInsertionMode, e._processToken(t) +} +const _l = new Set([Po.CAPTION, Po.COL, Po.COLGROUP, Po.TBODY, Po.TD, Po.TFOOT, Po.TH, Po.THEAD, Po.TR]); + +function Al(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.COL: + e._appendElement(t, vo.HTML), t.ackSelfClosing = !0; + break; + case Po.TEMPLATE: + Xc(e, t); + break; + default: + gl(e, t) + } +} + +function gl(e, t) { + e.openElements.currentTagId === Po.COLGROUP && (e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, e._processToken(t)) +} + +function Nl(e, t) { + switch (t.tagID) { + case Po.TR: + e.openElements.clearBackToTableBodyContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_ROW; + break; + case Po.TH: + case Po.TD: + e.openElements.clearBackToTableBodyContext(), e._insertFakeElement(Mo.TR, Po.TR), e.insertionMode = Rc.IN_ROW, Il(e, t); + break; + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, pl(e, t)); + break; + default: + pl(e, t) + } +} + +function Cl(e, t) { + const n = t.tagID; + switch (t.tagID) { + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + e.openElements.hasInTableScope(n) && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE); + break; + case Po.TABLE: + e.openElements.hasTableBodyContextInTableScope() && (e.openElements.clearBackToTableBodyContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE, fl(e, t)); + break; + case Po.BODY: + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.HTML: + case Po.TD: + case Po.TH: + case Po.TR: + break; + default: + fl(e, t) + } +} + +function Il(e, t) { + switch (t.tagID) { + case Po.TH: + case Po.TD: + e.openElements.clearBackToTableRowContext(), e._insertElement(t, vo.HTML), e.insertionMode = Rc.IN_CELL, e.activeFormattingElements.insertMarker(); + break; + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + case Po.TR: + e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Nl(e, t)); + break; + default: + pl(e, t) + } +} + +function Sl(e, t) { + switch (t.tagID) { + case Po.TR: + e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY); + break; + case Po.TABLE: + e.openElements.hasInTableScope(Po.TR) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t)); + break; + case Po.TBODY: + case Po.TFOOT: + case Po.THEAD: + (e.openElements.hasInTableScope(t.tagID) || e.openElements.hasInTableScope(Po.TR)) && (e.openElements.clearBackToTableRowContext(), e.openElements.pop(), e.insertionMode = Rc.IN_TABLE_BODY, Cl(e, t)); + break; + case Po.BODY: + case Po.CAPTION: + case Po.COL: + case Po.COLGROUP: + case Po.HTML: + case Po.TD: + case Po.TH: + break; + default: + fl(e, t) + } +} + +function bl(e, t) { + switch (t.tagID) { + case Po.HTML: + ol(e, t); + break; + case Po.OPTION: + e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e._insertElement(t, vo.HTML); + break; + case Po.OPTGROUP: + e.openElements.currentTagId === Po.OPTION && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop(), e._insertElement(t, vo.HTML); + break; + case Po.INPUT: + case Po.KEYGEN: + case Po.TEXTAREA: + case Po.SELECT: + e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode(), t.tagID !== Po.SELECT && e._processStartTag(t)); + break; + case Po.SCRIPT: + case Po.TEMPLATE: + Xc(e, t) + } +} + +function Ol(e, t) { + switch (t.tagID) { + case Po.OPTGROUP: + e.openElements.stackTop > 0 && e.openElements.currentTagId === Po.OPTION && e.openElements.tagIDs[e.openElements.stackTop - 1] === Po.OPTGROUP && e.openElements.pop(), e.openElements.currentTagId === Po.OPTGROUP && e.openElements.pop(); + break; + case Po.OPTION: + e.openElements.currentTagId === Po.OPTION && e.openElements.pop(); + break; + case Po.SELECT: + e.openElements.hasInSelectScope(Po.SELECT) && (e.openElements.popUntilTagNamePopped(Po.SELECT), e._resetInsertionMode()); + break; + case Po.TEMPLATE: + $c(e, t) + } +} + +function yl(e, t) { + e.openElements.tmplCount > 0 ? (e.openElements.popUntilTagNamePopped(Po.TEMPLATE), e.activeFormattingElements.clearToLastMarker(), e.tmplInsertionModeStack.shift(), e._resetInsertionMode(), e.onEof(t)) : jc(e, t) +} + +function Ll(e, t) { + var n; + if (t.tagID === Po.HTML) { + if (e.fragmentContext || (e.insertionMode = Rc.AFTER_AFTER_BODY), e.options.sourceCodeLocationInfo && e.openElements.tagIDs[0] === Po.HTML) { + e._setEndLocation(e.openElements.items[0], t); + const r = e.openElements.items[1]; + r && !(null === (n = e.treeAdapter.getNodeSourceCodeLocation(r)) || void 0 === n ? void 0 : n.endTag) && e._setEndLocation(r, t) + } + } else kl(e, t) +} + +function kl(e, t) { + e.insertionMode = Rc.IN_BODY, el(e, t) +} + +function vl(e, t) { + e.insertionMode = Rc.IN_BODY, el(e, t) +} + +function Dl(e) { + for (; e.treeAdapter.getNamespaceURI(e.openElements.current) !== vo.HTML && !e._isIntegrationPoint(e.openElements.currentTagId, e.openElements.current);) e.openElements.pop() +} +var Rl = Ke((function(e, t) { + Object.defineProperty(t, "__esModule", { + value: !0 + }), t.escapeText = t.escapeAttribute = t.escapeUTF8 = t.escape = t.encodeXML = t.getCodePoint = t.xmlReplacer = void 0, t.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; + var n = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"] + ]); + + function r(e) { + for (var r, i = "", s = 0; null !== (r = t.xmlReplacer.exec(e));) { + var a = r.index, + o = e.charCodeAt(a), + c = n.get(o); + void 0 !== c ? (i += e.substring(s, a) + c, s = a + 1) : (i += "".concat(e.substring(s, a), "&#x").concat((0, t.getCodePoint)(e, a).toString(16), ";"), s = t.xmlReplacer.lastIndex += Number(55296 == (64512 & o))) + } + return i + e.substr(s) + } + + function i(e, t) { + return function(n) { + for (var r, i = 0, s = ""; r = e.exec(n);) i !== r.index && (s += n.substring(i, r.index)), s += t.get(r[0].charCodeAt(0)), i = r.index + 1; + return s + n.substring(i) + } + } + t.getCodePoint = null != String.prototype.codePointAt ? function(e, t) { + return e.codePointAt(t) + } : function(e, t) { + return 55296 == (64512 & e.charCodeAt(t)) ? 1024 * (e.charCodeAt(t) - 55296) + e.charCodeAt(t + 1) - 56320 + 65536 : e.charCodeAt(t) + }, t.encodeXML = r, t.escape = r, t.escapeUTF8 = i(/[&<>'"]/g, n), t.escapeAttribute = i(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "] + ])), t.escapeText = i(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "] + ])) +})); +qe(Rl); +var Ml = Rl.escapeText, + Pl = Rl.escapeAttribute; +Rl.escapeUTF8, Rl.escape, Rl.encodeXML, Rl.getCodePoint, Rl.xmlReplacer; +const xl = new Set([Mo.AREA, Mo.BASE, Mo.BASEFONT, Mo.BGSOUND, Mo.BR, Mo.COL, Mo.EMBED, Mo.FRAME, Mo.HR, Mo.IMG, Mo.INPUT, Mo.KEYGEN, Mo.LINK, Mo.META, Mo.PARAM, Mo.SOURCE, Mo.TRACK, Mo.WBR]); +const wl = { + treeAdapter: Ec, + scriptingEnabled: !0 +}; + +function Bl(e, t) { + return Fl(e, { + ...wl, + ...t + }) +} + +function Fl(e, t) { + return t.treeAdapter.isElementNode(e) ? function(e, t) { + const n = t.treeAdapter.getTagName(e); + return `<${n}${function(e,{treeAdapter:t}){let n="";for(const r of t.getAttrList(e)){if(n+=" ",r.namespace)switch(r.namespace){case vo.XML:n+=` + xml: $ { + r.name + } + `;break;case vo.XMLNS:"xmlns"!==r.name&&(n+="xmlns:"),n+=r.name;break;case vo.XLINK:n+=` + xlink: $ { + r.name + } + `;break;default:n+=` + $ { + r.prefix + }: $ { + r.name + } + `}else n+=r.name;n+=` = "${Pl(r.value)}" + `}return n}(e,t)}>${function(e,t){return t.treeAdapter.isElementNode(e)&&t.treeAdapter.getNamespaceURI(e)===vo.HTML&&xl.has(t.treeAdapter.getTagName(e))}(e,t)?"":` + $ { + function(e, t) { + let n = ""; + const r = t.treeAdapter.isElementNode(e) && t.treeAdapter.getTagName(e) === Mo.TEMPLATE && t.treeAdapter.getNamespaceURI(e) === vo.HTML ? t.treeAdapter.getTemplateContent(e) : e, + i = t.treeAdapter.getChildNodes(r); + if (i) + for (const e of i) n += Fl(e, t); + return n + }(e, t) + } < /${n}>`}`}(e,t):t.treeAdapter.isTextNode(e)?function(e,t){const{treeAdapter:n}=t,r=n.getTextNodeContent(e),i=n.getParentNode(e),s=i&&n.isElementNode(i)&&n.getTagName(i);return s&&n.getNamespaceURI(i)===vo.HTML&&(a=s,o=t.scriptingEnabled,Yo.has(a)||o&&a===Mo.NOSCRIPT)?r:Ml(r);var a,o}(e,t):t.treeAdapter.isCommentNode(e)?function(e,{treeAdapter:t}){return`\x3c!--${t.getCommentNodeContent(e)}--\x3e`}(e,t):t.treeAdapter.isDocumentTypeNode(e)?function(e,{treeAdapter:t}){return``}(e,t):""}function Ul(e){return new m(e)}function Hl(e){const t=e.includes('"')?"'":'"';return t+e+t}const Gl={isCommentNode:O,isElementNode:I,isTextNode:b,createDocument(){const e=new N([]);return e["x-mode"]=Ro.NO_QUIRKS,e},createDocumentFragment:()=>new N([]),createElement(e,t,n){const r=Object.create(null),i=Object.create(null),s=Object.create(null);for(let e=0;enew T(e),appendChild(e,t){const n=e.children[e.children.length-1];n&&(n.next=t,t.prev=n),e.children.push(t),t.parent=e},insertBefore(e,t,n){const r=e.children.indexOf(n),{prev:i}=n;i&&(i.next=t,t.prev=i),n.prev=t,t.next=n,e.children.splice(r,0,t),t.parent=e},setTemplateContent(e,t){Gl.appendChild(e,t)},getTemplateContent:e=>e.children[0],setDocumentType(e,t,n,r){const i=function(e,t,n){let r="!DOCTYPE ";return e&&(r+=e),t?r+=` PUBLIC ${Hl(t)}`:n&&(r+=" SYSTEM"),n&&(r+=` ${Hl(n)}`),r}(t,n,r);let s=e.children.find((e=>y(e)&&"!doctype"===e.name));s?s.data=null!=i?i:null:(s=new _("!doctype",i),Gl.appendChild(e,s)),s["x-name"]=null!=t?t:void 0,s["x-publicId"]=null!=n?n:void 0,s["x-systemId"]=null!=r?r:void 0},setDocumentMode(e,t){e["x-mode"]=t},getDocumentMode:e=>e["x-mode"],detachNode(e){if(e.parent){const t=e.parent.children.indexOf(e),{prev:n,next:r}=e;e.prev=null,e.next=null,n&&(n.next=r),r&&(r.prev=n),e.parent.children.splice(t,1),e.parent=null}},insertText(e,t){const n=e.children[e.children.length-1];n&&b(n)?n.data+=t:Gl.appendChild(e,Ul(t))},insertTextBefore(e,t,n){const r=e.children[e.children.indexOf(n)-1];r&&b(r)?r.data+=t:Gl.insertBefore(e,Ul(t),n)},adoptAttributes(e,t){for(let n=0;ne.children[0],getChildNodes:e=>e.children,getParentNode:e=>e.parent,getAttrList:e=>e.attributes,getTagName:e=>e.name,getNamespaceURI:e=>e.namespace,getTextNodeContent:e=>e.data,getCommentNodeContent:e=>e.data,getDocumentTypeNodeName(e){var t;return null!==(t=e["x-name"])&&void 0!==t?t:""},getDocumentTypeNodePublicId(e){var t;return null!==(t=e["x-publicId"])&&void 0!==t?t:""},getDocumentTypeNodeSystemId(e){var t;return null!==(t=e["x-systemId"])&&void 0!==t?t:""},isDocumentTypeNode:e=>y(e)&&"!doctype"===e.name,setNodeSourceCodeLocation(e,t){t&&(e.startIndex=t.startOffset,e.endIndex=t.endOffset),e.sourceCodeLocation=t},getNodeSourceCodeLocation:e=>e.sourceCodeLocation,updateNodeSourceCodeLocation(e,t){null!=t.endOffset&&(e.endIndex=t.endOffset),e.sourceCodeLocation={...e.sourceCodeLocation,...t}}};var Yl=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,s=t.length;i=Kl.Zero&&e<=Kl.Nine}!function(e){e[e.Tab=9]="Tab",e[e.NewLine=10]="NewLine",e[e.FormFeed=12]="FormFeed",e[e.CarriageReturn=13]="CarriageReturn",e[e.Space=32]="Space",e[e.ExclamationMark=33]="ExclamationMark",e[e.Num=35]="Num",e[e.Amp=38]="Amp",e[e.SingleQuote=39]="SingleQuote",e[e.DoubleQuote=34]="DoubleQuote",e[e.Dash=45]="Dash",e[e.Slash=47]="Slash",e[e.Zero=48]="Zero",e[e.Nine=57]="Nine",e[e.Semi=59]="Semi",e[e.Lt=60]="Lt",e[e.Eq=61]="Eq",e[e.Gt=62]="Gt",e[e.Questionmark=63]="Questionmark",e[e.UpperA=65]="UpperA",e[e.LowerA=97]="LowerA",e[e.UpperF=70]="UpperF",e[e.LowerF=102]="LowerF",e[e.UpperZ=90]="UpperZ",e[e.LowerZ=122]="LowerZ",e[e.LowerX=120]="LowerX",e[e.OpeningSquareBracket=91]="OpeningSquareBracket"}(Kl||(Kl={})),function(e){e[e.Text=1]="Text",e[e.BeforeTagName=2]="BeforeTagName",e[e.InTagName=3]="InTagName",e[e.InSelfClosingTag=4]="InSelfClosingTag",e[e.BeforeClosingTagName=5]="BeforeClosingTagName",e[e.InClosingTagName=6]="InClosingTagName",e[e.AfterClosingTagName=7]="AfterClosingTagName",e[e.BeforeAttributeName=8]="BeforeAttributeName",e[e.InAttributeName=9]="InAttributeName",e[e.AfterAttributeName=10]="AfterAttributeName",e[e.BeforeAttributeValue=11]="BeforeAttributeValue",e[e.InAttributeValueDq=12]="InAttributeValueDq",e[e.InAttributeValueSq=13]="InAttributeValueSq",e[e.InAttributeValueNq=14]="InAttributeValueNq",e[e.BeforeDeclaration=15]="BeforeDeclaration",e[e.InDeclaration=16]="InDeclaration",e[e.InProcessingInstruction=17]="InProcessingInstruction",e[e.BeforeComment=18]="BeforeComment",e[e.CDATASequence=19]="CDATASequence",e[e.InSpecialComment=20]="InSpecialComment",e[e.InCommentLike=21]="InCommentLike",e[e.BeforeSpecialS=22]="BeforeSpecialS",e[e.SpecialStartSequence=23]="SpecialStartSequence",e[e.InSpecialTag=24]="InSpecialTag",e[e.BeforeEntity=25]="BeforeEntity",e[e.BeforeNumericEntity=26]="BeforeNumericEntity",e[e.InNamedEntity=27]="InNamedEntity",e[e.InNumericEntity=28]="InNumericEntity",e[e.InHexEntity=29]="InHexEntity"}(jl||(jl={})),function(e){e[e.NoValue=0]="NoValue",e[e.Unquoted=1]="Unquoted",e[e.Single=2]="Single",e[e.Double=3]="Double"}(Vl||(Vl={}));const zl={Cdata:new Uint8Array([67,68,65,84,65,91]),CdataEnd:new Uint8Array([93,93,62]),CommentEnd:new Uint8Array([45,45,62]),ScriptEnd:new Uint8Array([60,47,115,99,114,105,112,116]),StyleEnd:new Uint8Array([60,47,115,116,121,108,101]),TitleEnd:new Uint8Array([60,47,116,105,116,108,101])};class Jl{constructor({xmlMode:e=!1,decodeEntities:t=!0},n){this.cbs=n,this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.isSpecial=!1,this.running=!0,this.offset=0,this.sequenceIndex=0,this.trieIndex=0,this.trieCurrent=0,this.entityResult=0,this.entityExcess=0,this.xmlMode=e,this.decodeEntities=t,this.entityTrie=e?xo:wo}reset(){this.state=jl.Text,this.buffer="",this.sectionStart=0,this.index=0,this.baseState=jl.Text,this.currentSequence=void 0,this.running=!0,this.offset=0}write(e){this.offset+=this.buffer.length,this.buffer=e,this.parse()}end(){this.running&&this.finish()}pause(){this.running=!1}resume(){this.running=!0,this.indexthis.sectionStart&&this.cbs.ontext(this.sectionStart,this.index),this.state=jl.BeforeTagName,this.sectionStart=this.index):this.decodeEntities&&e===Kl.Amp&&(this.state=jl.BeforeEntity)}stateSpecialStartSequence(e){const t=this.sequenceIndex===this.currentSequence.length;if(t?Xl(e):(32|e)===this.currentSequence[this.sequenceIndex]){if(!t)return void this.sequenceIndex++}else this.isSpecial=!1;this.sequenceIndex=0,this.state=jl.InTagName,this.stateInTagName(e)}stateInSpecialTag(e){if(this.sequenceIndex===this.currentSequence.length){if(e===Kl.Gt||Ql(e)){const t=this.index-this.currentSequence.length;if(this.sectionStart=Kl.LowerA&&e<=Kl.LowerZ||e>=Kl.UpperA&&e<=Kl.UpperZ}(e)}startSpecial(e,t){this.isSpecial=!0,this.currentSequence=e,this.sequenceIndex=t,this.state=jl.SpecialStartSequence}stateBeforeTagName(e){if(e===Kl.ExclamationMark)this.state=jl.BeforeDeclaration,this.sectionStart=this.index+1;else if(e===Kl.Questionmark)this.state=jl.InProcessingInstruction,this.sectionStart=this.index+1;else if(this.isTagStartChar(e)){const t=32|e;this.sectionStart=this.index,this.xmlMode||t!==zl.TitleEnd[2]?this.state=this.xmlMode||t!==zl.ScriptEnd[2]?jl.InTagName:jl.BeforeSpecialS:this.startSpecial(zl.TitleEnd,3)}else e===Kl.Slash?this.state=jl.BeforeClosingTagName:(this.state=jl.Text,this.stateText(e))}stateInTagName(e){Xl(e)&&(this.cbs.onopentagname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateBeforeClosingTagName(e){Ql(e)||(e===Kl.Gt?this.state=jl.Text:(this.state=this.isTagStartChar(e)?jl.InClosingTagName:jl.InSpecialComment,this.sectionStart=this.index))}stateInClosingTagName(e){(e===Kl.Gt||Ql(e))&&(this.cbs.onclosetag(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterClosingTagName,this.stateAfterClosingTagName(e))}stateAfterClosingTagName(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeAttributeName(e){e===Kl.Gt?(this.cbs.onopentagend(this.index),this.isSpecial?(this.state=jl.InSpecialTag,this.sequenceIndex=0):this.state=jl.Text,this.baseState=this.state,this.sectionStart=this.index+1):e===Kl.Slash?this.state=jl.InSelfClosingTag:Ql(e)||(this.state=jl.InAttributeName,this.sectionStart=this.index)}stateInSelfClosingTag(e){e===Kl.Gt?(this.cbs.onselfclosingtag(this.index),this.state=jl.Text,this.baseState=jl.Text,this.sectionStart=this.index+1,this.isSpecial=!1):Ql(e)||(this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e))}stateInAttributeName(e){(e===Kl.Eq||Xl(e))&&(this.cbs.onattribname(this.sectionStart,this.index),this.sectionStart=-1,this.state=jl.AfterAttributeName,this.stateAfterAttributeName(e))}stateAfterAttributeName(e){e===Kl.Eq?this.state=jl.BeforeAttributeValue:e===Kl.Slash||e===Kl.Gt?(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):Ql(e)||(this.cbs.onattribend(Vl.NoValue,this.index),this.state=jl.InAttributeName,this.sectionStart=this.index)}stateBeforeAttributeValue(e){e===Kl.DoubleQuote?(this.state=jl.InAttributeValueDq,this.sectionStart=this.index+1):e===Kl.SingleQuote?(this.state=jl.InAttributeValueSq,this.sectionStart=this.index+1):Ql(e)||(this.sectionStart=this.index,this.state=jl.InAttributeValueNq,this.stateInAttributeValueNoQuotes(e))}handleInAttributeValue(e,t){e===t||!this.decodeEntities&&this.fastForwardTo(t)?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(t===Kl.DoubleQuote?Vl.Double:Vl.Single,this.index),this.state=jl.BeforeAttributeName):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateInAttributeValueDoubleQuotes(e){this.handleInAttributeValue(e,Kl.DoubleQuote)}stateInAttributeValueSingleQuotes(e){this.handleInAttributeValue(e,Kl.SingleQuote)}stateInAttributeValueNoQuotes(e){Ql(e)||e===Kl.Gt?(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=-1,this.cbs.onattribend(Vl.Unquoted,this.index),this.state=jl.BeforeAttributeName,this.stateBeforeAttributeName(e)):this.decodeEntities&&e===Kl.Amp&&(this.baseState=this.state,this.state=jl.BeforeEntity)}stateBeforeDeclaration(e){e===Kl.OpeningSquareBracket?(this.state=jl.CDATASequence,this.sequenceIndex=0):this.state=e===Kl.Dash?jl.BeforeComment:jl.InDeclaration}stateInDeclaration(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.ondeclaration(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateInProcessingInstruction(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.onprocessinginstruction(this.sectionStart,this.index),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeComment(e){e===Kl.Dash?(this.state=jl.InCommentLike,this.currentSequence=zl.CommentEnd,this.sequenceIndex=2,this.sectionStart=this.index+1):this.state=jl.InDeclaration}stateInSpecialComment(e){(e===Kl.Gt||this.fastForwardTo(Kl.Gt))&&(this.cbs.oncomment(this.sectionStart,this.index,0),this.state=jl.Text,this.sectionStart=this.index+1)}stateBeforeSpecialS(e){const t=32|e;t===zl.ScriptEnd[3]?this.startSpecial(zl.ScriptEnd,4):t===zl.StyleEnd[3]?this.startSpecial(zl.StyleEnd,4):(this.state=jl.InTagName,this.stateInTagName(e))}stateBeforeEntity(e){this.entityExcess=1,this.entityResult=0,e===Kl.Num?this.state=jl.BeforeNumericEntity:e===Kl.Amp||(this.trieIndex=0,this.trieCurrent=this.entityTrie[0],this.state=jl.InNamedEntity,this.stateInNamedEntity(e))}stateInNamedEntity(e){if(this.entityExcess+=1,this.trieIndex=Oo(this.entityTrie,this.trieCurrent,this.trieIndex+1,e),this.trieIndex<0)return this.emitNamedEntity(),void this.index--;this.trieCurrent=this.entityTrie[this.trieIndex];const t=this.trieCurrent&yo.VALUE_LENGTH;if(t){const n=(t>>14)-1;if(this.allowLegacyEntity()||e===Kl.Semi){const e=this.index-this.entityExcess+1;e>this.sectionStart&&this.emitPartial(this.sectionStart,e),this.entityResult=this.trieIndex,this.trieIndex+=n,this.entityExcess=0,this.sectionStart=this.index+1,0===n&&this.emitNamedEntity()}else this.trieIndex+=n}}emitNamedEntity(){if(this.state=this.baseState,0===this.entityResult)return;switch((this.entityTrie[this.entityResult]&yo.VALUE_LENGTH)>>14){case 1:this.emitCodePoint(this.entityTrie[this.entityResult]&~yo.VALUE_LENGTH);break;case 2:this.emitCodePoint(this.entityTrie[this.entityResult+1]);break;case 3:this.emitCodePoint(this.entityTrie[this.entityResult+1]),this.emitCodePoint(this.entityTrie[this.entityResult+2])}}stateBeforeNumericEntity(e){(32|e)===Kl.LowerX?(this.entityExcess++,this.state=jl.InHexEntity):(this.state=jl.InNumericEntity,this.stateInNumericEntity(e))}emitNumericEntity(e){const t=this.index-this.entityExcess-1;t+2+Number(this.state===jl.InHexEntity)!==this.index&&(t>this.sectionStart&&this.emitPartial(this.sectionStart,t),this.sectionStart=this.index+Number(e),this.emitCodePoint(ko(this.entityResult))),this.state=this.baseState}stateInNumericEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=10*this.entityResult+(e-Kl.Zero),this.entityExcess++):(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--)}stateInHexEntity(e){e===Kl.Semi?this.emitNumericEntity(!0):$l(e)?(this.entityResult=16*this.entityResult+(e-Kl.Zero),this.entityExcess++):!function(e){return e>=Kl.UpperA&&e<=Kl.UpperF||e>=Kl.LowerA&&e<=Kl.LowerF}(e)?(this.allowLegacyEntity()?this.emitNumericEntity(!1):this.state=this.baseState,this.index--):(this.entityResult=16*this.entityResult+((32|e)-Kl.LowerA+10),this.entityExcess++)}allowLegacyEntity(){return!this.xmlMode&&(this.baseState===jl.Text||this.baseState===jl.InSpecialTag)}cleanup(){this.running&&this.sectionStart!==this.index&&(this.state===jl.Text||this.state===jl.InSpecialTag&&0===this.sequenceIndex?(this.cbs.ontext(this.sectionStart,this.index),this.sectionStart=this.index):this.state!==jl.InAttributeValueDq&&this.state!==jl.InAttributeValueSq&&this.state!==jl.InAttributeValueNq||(this.cbs.onattribdata(this.sectionStart,this.index),this.sectionStart=this.index))}shouldContinue(){return this.index0&&s.has(this.stack[this.stack.length-1]);){const e=this.stack.pop();null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,e,!0)}this.isVoidElement(e)||(this.stack.push(e),ah.has(e)?this.foreignContext.push(!0):oh.has(e)&&this.foreignContext.push(!1)),null===(i=(r=this.cbs).onopentagname)||void 0===i||i.call(r,e),this.cbs.onopentag&&(this.attribs={})}endOpenTag(e){var t,n;this.startIndex=this.openTagStart,this.attribs&&(null===(n=(t=this.cbs).onopentag)||void 0===n||n.call(t,this.tagname,this.attribs,e),this.attribs=null),this.cbs.onclosetag&&this.isVoidElement(this.tagname)&&this.cbs.onclosetag(this.tagname,!0),this.tagname=""}onopentagend(e){this.endIndex=e,this.endOpenTag(!1),this.startIndex=e+1}onclosetag(e,t){var n,r,i,s,a,o;this.endIndex=t;let c=this.getSlice(e,t);if(this.lowerCaseTagNames&&(c=c.toLowerCase()),(ah.has(c)||oh.has(c))&&this.foreignContext.pop(),this.isVoidElement(c))this.options.xmlMode||"br"!==c||(null===(r=(n=this.cbs).onopentagname)||void 0===r||r.call(n,"br"),null===(s=(i=this.cbs).onopentag)||void 0===s||s.call(i,"br",{},!0),null===(o=(a=this.cbs).onclosetag)||void 0===o||o.call(a,"br",!1));else{const e=this.stack.lastIndexOf(c);if(-1!==e)if(this.cbs.onclosetag){let t=this.stack.length-e;for(;t--;)this.cbs.onclosetag(this.stack.pop(),0!==t)}else this.stack.length=e;else this.options.xmlMode||"p"!==c||(this.emitOpenTag("p"),this.closeCurrentTag(!0))}this.startIndex=t+1}onselfclosingtag(e){this.endIndex=e,this.options.xmlMode||this.options.recognizeSelfClosing||this.foreignContext[this.foreignContext.length-1]?(this.closeCurrentTag(!1),this.startIndex=e+1):this.onopentagend(e)}closeCurrentTag(e){var t,n;const r=this.tagname;this.endOpenTag(e),this.stack[this.stack.length-1]===r&&(null===(n=(t=this.cbs).onclosetag)||void 0===n||n.call(t,r,!e),this.stack.pop())}onattribname(e,t){this.startIndex=e;const n=this.getSlice(e,t);this.attribname=this.lowerCaseAttributeNames?n.toLowerCase():n}onattribdata(e,t){this.attribvalue+=this.getSlice(e,t)}onattribentity(e){this.attribvalue+=Lo(e)}onattribend(e,t){var n,r;this.endIndex=t,null===(r=(n=this.cbs).onattribute)||void 0===r||r.call(n,this.attribname,this.attribvalue,e===Vl.Double?'"':e===Vl.Single?"'":e===Vl.NoValue?void 0:null),this.attribs&&!Object.prototype.hasOwnProperty.call(this.attribs,this.attribname)&&(this.attribs[this.attribname]=this.attribvalue),this.attribvalue=""}getInstructionName(e){const t=e.search(ch);let n=t<0?e:e.substr(0,t);return this.lowerCaseTagNames&&(n=n.toLowerCase()),n}ondeclaration(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`!${e}`,`!${n}`)}this.startIndex=t+1}onprocessinginstruction(e,t){this.endIndex=t;const n=this.getSlice(e,t);if(this.cbs.onprocessinginstruction){const e=this.getInstructionName(n);this.cbs.onprocessinginstruction(`?${e}`,`?${n}`)}this.startIndex=t+1}oncomment(e,t,n){var r,i,s,a;this.endIndex=t,null===(i=(r=this.cbs).oncomment)||void 0===i||i.call(r,this.getSlice(e,t-n)),null===(a=(s=this.cbs).oncommentend)||void 0===a||a.call(s),this.startIndex=t+1}oncdata(e,t,n){var r,i,s,a,o,c,l,h,u,p;this.endIndex=t;const f=this.getSlice(e,t-n);this.options.xmlMode||this.options.recognizeCDATA?(null===(i=(r=this.cbs).oncdatastart)||void 0===i||i.call(r),null===(a=(s=this.cbs).ontext)||void 0===a||a.call(s,f),null===(c=(o=this.cbs).oncdataend)||void 0===c||c.call(o)):(null===(h=(l=this.cbs).oncomment)||void 0===h||h.call(l,`[CDATA[${f}]]`),null===(p=(u=this.cbs).oncommentend)||void 0===p||p.call(u)),this.startIndex=t+1}onend(){var e,t;if(this.cbs.onclosetag){this.endIndex=this.startIndex;for(let e=this.stack.length;e>0;this.cbs.onclosetag(this.stack[--e],!0));}null===(t=(e=this.cbs).onend)||void 0===t||t.call(e)}reset(){var e,t,n,r;null===(t=(e=this.cbs).onreset)||void 0===t||t.call(e),this.tokenizer.reset(),this.tagname="",this.attribname="",this.attribs=null,this.stack.length=0,this.startIndex=0,this.endIndex=0,null===(r=(n=this.cbs).onparserinit)||void 0===r||r.call(n,this),this.buffers.length=0,this.bufferOffset=0,this.writeIndex=0,this.ended=!1}parseComplete(e){this.reset(),this.end(e)}getSlice(e,t){for(;e-this.bufferOffset>=this.buffers[0].length;)this.shiftBuffer();let n=this.buffers[0].slice(e-this.bufferOffset,t-this.bufferOffset);for(;t-this.bufferOffset>this.buffers[0].length;)this.shiftBuffer(),n+=this.buffers[0].slice(0,t-this.bufferOffset);return n}shiftBuffer(){this.bufferOffset+=this.buffers[0].length,this.writeIndex--,this.buffers.shift()}write(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,new Error(".write() after done!")):(this.buffers.push(e),this.tokenizer.running&&(this.tokenizer.write(e),this.writeIndex++))}end(e){var t,n;this.ended?null===(n=(t=this.cbs).onerror)||void 0===n||n.call(t,Error(".end() after done!")):(e&&this.write(e),this.ended=!0,this.tokenizer.end())}pause(){this.tokenizer.pause()}resume(){for(this.tokenizer.resume();this.tokenizer.running&&this.writeIndex>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else { + // Copy one word at a time + for (var i = 0; i < thatSigBytes; i += 4) { + thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]; + } + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function() { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function(nBytes) { + var words = []; + + for (var i = 0; i < nBytes; i += 4) { + words.push(cryptoSecureRandomInt()); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function(hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function(latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function(wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function(utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function() { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function(data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function(doFlush) { + var processedWords; + + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function(cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function(messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function(messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512 / 32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function(hasher) { + return function(message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function(hasher) { + return function(message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; +}(Math)); + + + + + + + + +(function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var X32WordArray = C_lib.WordArray; + + /** + * x64 namespace. + */ + var C_x64 = C.x64 = {}; + + /** + * A 64-bit word. + */ + var X64Word = C_x64.Word = Base.extend({ + /** + * Initializes a newly created 64-bit word. + * + * @param {number} high The high 32 bits. + * @param {number} low The low 32 bits. + * + * @example + * + * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); + */ + init: function(high, low) { + this.high = high; + this.low = low; + } + + /** + * Bitwise NOTs this word. + * + * @return {X64Word} A new x64-Word object after negating. + * + * @example + * + * var negated = x64Word.not(); + */ + // not: function () { + // var high = ~this.high; + // var low = ~this.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ANDs this word with the passed word. + * + * @param {X64Word} word The x64-Word to AND with this word. + * + * @return {X64Word} A new x64-Word object after ANDing. + * + * @example + * + * var anded = x64Word.and(anotherX64Word); + */ + // and: function (word) { + // var high = this.high & word.high; + // var low = this.low & word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to OR with this word. + * + * @return {X64Word} A new x64-Word object after ORing. + * + * @example + * + * var ored = x64Word.or(anotherX64Word); + */ + // or: function (word) { + // var high = this.high | word.high; + // var low = this.low | word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise XORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to XOR with this word. + * + * @return {X64Word} A new x64-Word object after XORing. + * + * @example + * + * var xored = x64Word.xor(anotherX64Word); + */ + // xor: function (word) { + // var high = this.high ^ word.high; + // var low = this.low ^ word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the left. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftL(25); + */ + // shiftL: function (n) { + // if (n < 32) { + // var high = (this.high << n) | (this.low >>> (32 - n)); + // var low = this.low << n; + // } else { + // var high = this.low << (n - 32); + // var low = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the right. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftR(7); + */ + // shiftR: function (n) { + // if (n < 32) { + // var low = (this.low >>> n) | (this.high << (32 - n)); + // var high = this.high >>> n; + // } else { + // var low = this.high >>> (n - 32); + // var high = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Rotates this word n bits to the left. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotL(25); + */ + // rotL: function (n) { + // return this.shiftL(n).or(this.shiftR(64 - n)); + // }, + + /** + * Rotates this word n bits to the right. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotR(7); + */ + // rotR: function (n) { + // return this.shiftR(n).or(this.shiftL(64 - n)); + // }, + + /** + * Adds this word with the passed word. + * + * @param {X64Word} word The x64-Word to add with this word. + * + * @return {X64Word} A new x64-Word object after adding. + * + * @example + * + * var added = x64Word.add(anotherX64Word); + */ + // add: function (word) { + // var low = (this.low + word.low) | 0; + // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; + // var high = (this.high + word.high + carry) | 0; + + // return X64Word.create(high, low); + // } + }); + + /** + * An array of 64-bit words. + * + * @property {Array} words The array of CryptoJS.x64.Word objects. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var X64WordArray = C_x64.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.x64.WordArray.create(); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ]); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ], 10); + */ + init: function(words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 8; + } + }, + + /** + * Converts this 64-bit word array to a 32-bit word array. + * + * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. + * + * @example + * + * var x32WordArray = x64WordArray.toX32(); + */ + toX32: function() { + // Shortcuts + var x64Words = this.words; + var x64WordsLength = x64Words.length; + + // Convert + var x32Words = []; + for (var i = 0; i < x64WordsLength; i++) { + var x64Word = x64Words[i]; + x32Words.push(x64Word.high); + x32Words.push(x64Word.low); + } + + return X32WordArray.create(x32Words, this.sigBytes); + }, + + /** + * Creates a copy of this word array. + * + * @return {X64WordArray} The clone. + * + * @example + * + * var clone = x64WordArray.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + + // Clone "words" array + var words = clone.words = this.words.slice(0); + + // Clone each X64Word object + var wordsLength = words.length; + for (var i = 0; i < wordsLength; i++) { + words[i] = words[i].clone(); + } + + return clone; + } + }); +}()); + + + + + + + + + +(function() { + // Check if typed arrays are supported + if (typeof ArrayBuffer != 'function') { + return; + } + + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + + // Reference original init + var superInit = WordArray.init; + + // Augment WordArray.init to handle typed arrays + var subInit = WordArray.init = function(typedArray) { + // Convert buffers to uint8 + if (typedArray instanceof ArrayBuffer) { + typedArray = new Uint8Array(typedArray); + } + + // Convert other array views to uint8 + if ( + typedArray instanceof Int8Array || + (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || + typedArray instanceof Int16Array || + typedArray instanceof Uint16Array || + typedArray instanceof Int32Array || + typedArray instanceof Uint32Array || + typedArray instanceof Float32Array || + typedArray instanceof Float64Array + ) { + typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + } + + // Handle Uint8Array + if (typedArray instanceof Uint8Array) { + // Shortcut + var typedArrayByteLength = typedArray.byteLength; + + // Extract bytes + var words = []; + for (var i = 0; i < typedArrayByteLength; i++) { + words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); + } + + // Initialize this word array + superInit.call(this, words, typedArrayByteLength); + } else { + // Else call normal init + superInit.apply(this, arguments); + } + }; + + subInit.prototype = WordArray; +}()); + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * UTF-16 BE encoding strategy. + */ + var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { + /** + * Converts a word array to a UTF-16 BE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 BE string. + * + * @static + * + * @example + * + * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 BE string to a word array. + * + * @param {string} utf16Str The UTF-16 BE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); + */ + parse: function(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + /** + * UTF-16 LE encoding strategy. + */ + C_enc.Utf16LE = { + /** + * Converts a word array to a UTF-16 LE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 LE string. + * + * @static + * + * @example + * + * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 LE string to a word array. + * + * @param {string} utf16Str The UTF-16 LE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); + */ + parse: function(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + function swapEndian(word) { + return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); + } +}()); + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + var Base64 = C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; + (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function(base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } +}()); + + + + + + + + + + + + + +(function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function() { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function(M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); +}(Math)); + + + + + + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Reusable object + var W = []; + + /** + * SHA-1 hash algorithm. + */ + var SHA1 = C_algo.SHA1 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476, + 0xc3d2e1f0 + ]); + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + + // Computation + for (var i = 0; i < 80; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + W[i] = (n << 1) | (n >>> 31); + } + + var t = ((a << 5) | (a >>> 27)) + e + W[i]; + if (i < 20) { + t += ((b & c) | (~b & d)) + 0x5a827999; + } else if (i < 40) { + t += (b ^ c ^ d) + 0x6ed9eba1; + } else if (i < 60) { + t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; + } else /* if (i < 80) */ { + t += (b ^ c ^ d) - 0x359d3e2a; + } + + e = d; + d = c; + c = (b << 30) | (b >>> 2); + b = a; + a = t; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA1('message'); + * var hash = CryptoJS.SHA1(wordArray); + */ + C.SHA1 = Hasher._createHelper(SHA1); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA1(message, key); + */ + C.HmacSHA1 = Hasher._createHmacHelper(SHA1); +}()); + + + + + + + + + + + + +(function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Initialization and round constants tables + var H = []; + var K = []; + + // Compute constants + (function() { + function isPrime(n) { + var sqrtN = Math.sqrt(n); + for (var factor = 2; factor <= sqrtN; factor++) { + if (!(n % factor)) { + return false; + } + } + + return true; + } + + function getFractionalBits(n) { + return ((n - (n | 0)) * 0x100000000) | 0; + } + + var n = 2; + var nPrime = 0; + while (nPrime < 64) { + if (isPrime(n)) { + if (nPrime < 8) { + H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); + } + K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); + + nPrime++; + } + + n++; + } + }()); + + // Reusable object + var W = []; + + /** + * SHA-256 hash algorithm. + */ + var SHA256 = C_algo.SHA256 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init(H.slice(0)); + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + var f = H[5]; + var g = H[6]; + var h = H[7]; + + // Computation + for (var i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var gamma0x = W[i - 15]; + var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ + ((gamma0x << 14) | (gamma0x >>> 18)) ^ + (gamma0x >>> 3); + + var gamma1x = W[i - 2]; + var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ + ((gamma1x << 13) | (gamma1x >>> 19)) ^ + (gamma1x >>> 10); + + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + + var ch = (e & f) ^ (~e & g); + var maj = (a & b) ^ (a & c) ^ (b & c); + + var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); + var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); + + var t1 = h + sigma1 + ch + K[i] + W[i]; + var t2 = sigma0 + maj; + + h = g; + g = f; + f = e; + e = (d + t1) | 0; + d = c; + c = b; + b = a; + a = (t1 + t2) | 0; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + H[5] = (H[5] + f) | 0; + H[6] = (H[6] + g) | 0; + H[7] = (H[7] + h) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA256('message'); + * var hash = CryptoJS.SHA256(wordArray); + */ + C.SHA256 = Hasher._createHelper(SHA256); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA256(message, key); + */ + C.HmacSHA256 = Hasher._createHmacHelper(SHA256); +}(Math)); + + + + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA256 = C_algo.SHA256; + + /** + * SHA-224 hash algorithm. + */ + var SHA224 = C_algo.SHA224 = SHA256.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 + ]); + }, + + _doFinalize: function() { + var hash = SHA256._doFinalize.call(this); + + hash.sigBytes -= 4; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA224('message'); + * var hash = CryptoJS.SHA224(wordArray); + */ + C.SHA224 = SHA256._createHelper(SHA224); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA224(message, key); + */ + C.HmacSHA224 = SHA256._createHmacHelper(SHA224); +}()); + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + + function X64Word_create() { + return X64Word.create.apply(X64Word, arguments); + } + + // Constants + var K = [ + X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), + X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), + X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), + X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), + X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), + X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), + X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), + X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), + X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), + X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), + X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), + X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), + X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), + X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), + X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), + X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), + X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), + X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), + X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), + X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), + X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), + X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), + X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), + X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), + X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), + X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), + X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), + X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), + X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), + X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), + X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), + X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), + X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), + X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), + X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), + X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), + X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), + X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), + X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), + X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) + ]; + + // Reusable objects + var W = []; + (function() { + for (var i = 0; i < 80; i++) { + W[i] = X64Word_create(); + } + }()); + + /** + * SHA-512 hash algorithm. + */ + var SHA512 = C_algo.SHA512 = Hasher.extend({ + _doReset: function() { + this._hash = new X64WordArray.init([ + new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), + new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), + new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), + new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) + ]); + }, + + _doProcessBlock: function(M, offset) { + // Shortcuts + var H = this._hash.words; + + var H0 = H[0]; + var H1 = H[1]; + var H2 = H[2]; + var H3 = H[3]; + var H4 = H[4]; + var H5 = H[5]; + var H6 = H[6]; + var H7 = H[7]; + + var H0h = H0.high; + var H0l = H0.low; + var H1h = H1.high; + var H1l = H1.low; + var H2h = H2.high; + var H2l = H2.low; + var H3h = H3.high; + var H3l = H3.low; + var H4h = H4.high; + var H4l = H4.low; + var H5h = H5.high; + var H5l = H5.low; + var H6h = H6.high; + var H6l = H6.low; + var H7h = H7.high; + var H7l = H7.low; + + // Working variables + var ah = H0h; + var al = H0l; + var bh = H1h; + var bl = H1l; + var ch = H2h; + var cl = H2l; + var dh = H3h; + var dl = H3l; + var eh = H4h; + var el = H4l; + var fh = H5h; + var fl = H5l; + var gh = H6h; + var gl = H6l; + var hh = H7h; + var hl = H7l; + + // Rounds + for (var i = 0; i < 80; i++) { + var Wil; + var Wih; + + // Shortcut + var Wi = W[i]; + + // Extend message + if (i < 16) { + Wih = Wi.high = M[offset + i * 2] | 0; + Wil = Wi.low = M[offset + i * 2 + 1] | 0; + } else { + // Gamma0 + var gamma0x = W[i - 15]; + var gamma0xh = gamma0x.high; + var gamma0xl = gamma0x.low; + var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); + var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); + + // Gamma1 + var gamma1x = W[i - 2]; + var gamma1xh = gamma1x.high; + var gamma1xl = gamma1x.low; + var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); + var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7 = W[i - 7]; + var Wi7h = Wi7.high; + var Wi7l = Wi7.low; + + var Wi16 = W[i - 16]; + var Wi16h = Wi16.high; + var Wi16l = Wi16.low; + + Wil = gamma0l + Wi7l; + Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); + Wil = Wil + gamma1l; + Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); + Wil = Wil + Wi16l; + Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); + + Wi.high = Wih; + Wi.low = Wil; + } + + var chh = (eh & fh) ^ (~eh & gh); + var chl = (el & fl) ^ (~el & gl); + var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); + var majl = (al & bl) ^ (al & cl) ^ (bl & cl); + + var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); + var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); + var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); + var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); + + // t1 = h + sigma1 + ch + K[i] + W[i] + var Ki = K[i]; + var Kih = Ki.high; + var Kil = Ki.low; + + var t1l = hl + sigma1l; + var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); + var t1l = t1l + chl; + var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); + var t1l = t1l + Kil; + var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); + var t1l = t1l + Wil; + var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); + + // t2 = sigma0 + maj + var t2l = sigma0l + majl; + var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); + + // Update working variables + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; + } + + // Intermediate hash value + H0l = H0.low = (H0l + al); + H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); + H1l = H1.low = (H1l + bl); + H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); + H2l = H2.low = (H2l + cl); + H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); + H3l = H3.low = (H3l + dl); + H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); + H4l = H4.low = (H4l + el); + H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); + H5l = H5.low = (H5l + fl); + H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); + H6l = H6.low = (H6l + gl); + H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); + H7l = H7.low = (H7l + hl); + H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Convert hash to 32-bit word array before returning + var hash = this._hash.toX32(); + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + }, + + blockSize: 1024 / 32 + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA512('message'); + * var hash = CryptoJS.SHA512(wordArray); + */ + C.SHA512 = Hasher._createHelper(SHA512); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA512(message, key); + */ + C.HmacSHA512 = Hasher._createHmacHelper(SHA512); +}()); + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + var SHA512 = C_algo.SHA512; + + /** + * SHA-384 hash algorithm. + */ + var SHA384 = C_algo.SHA384 = SHA512.extend({ + _doReset: function() { + this._hash = new X64WordArray.init([ + new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), + new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), + new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), + new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) + ]); + }, + + _doFinalize: function() { + var hash = SHA512._doFinalize.call(this); + + hash.sigBytes -= 16; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA384('message'); + * var hash = CryptoJS.SHA384(wordArray); + */ + C.SHA384 = SHA512._createHelper(SHA384); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA384(message, key); + */ + C.HmacSHA384 = SHA512._createHmacHelper(SHA384); +}()); + + + + + + + + + + +(function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var C_algo = C.algo; + + // Constants tables + var RHO_OFFSETS = []; + var PI_INDEXES = []; + var ROUND_CONSTANTS = []; + + // Compute Constants + (function() { + // Compute rho offset constants + var x = 1, + y = 0; + for (var t = 0; t < 24; t++) { + RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; + + var newX = y % 5; + var newY = (2 * x + 3 * y) % 5; + x = newX; + y = newY; + } + + // Compute pi index constants + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; + } + } + + // Compute round constants + var LFSR = 0x01; + for (var i = 0; i < 24; i++) { + var roundConstantMsw = 0; + var roundConstantLsw = 0; + + for (var j = 0; j < 7; j++) { + if (LFSR & 0x01) { + var bitPosition = (1 << j) - 1; + if (bitPosition < 32) { + roundConstantLsw ^= 1 << bitPosition; + } else /* if (bitPosition >= 32) */ { + roundConstantMsw ^= 1 << (bitPosition - 32); + } + } + + // Compute next LFSR + if (LFSR & 0x80) { + // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 + LFSR = (LFSR << 1) ^ 0x71; + } else { + LFSR <<= 1; + } + } + + ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); + } + }()); + + // Reusable objects for temporary values + var T = []; + (function() { + for (var i = 0; i < 25; i++) { + T[i] = X64Word.create(); + } + }()); + + /** + * SHA-3 hash algorithm. + */ + var SHA3 = C_algo.SHA3 = Hasher.extend({ + /** + * Configuration options. + * + * @property {number} outputLength + * The desired number of bits in the output hash. + * Only values permitted are: 224, 256, 384, 512. + * Default: 512 + */ + cfg: Hasher.cfg.extend({ + outputLength: 512 + }), + + _doReset: function() { + var state = this._state = [] + for (var i = 0; i < 25; i++) { + state[i] = new X64Word.init(); + } + + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + + _doProcessBlock: function(M, offset) { + // Shortcuts + var state = this._state; + var nBlockSizeLanes = this.blockSize / 2; + + // Absorb + for (var i = 0; i < nBlockSizeLanes; i++) { + // Shortcuts + var M2i = M[offset + 2 * i]; + var M2i1 = M[offset + 2 * i + 1]; + + // Swap endian + M2i = ( + (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | + (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) + ); + M2i1 = ( + (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | + (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) + ); + + // Absorb message into state + var lane = state[i]; + lane.high ^= M2i1; + lane.low ^= M2i; + } + + // Rounds + for (var round = 0; round < 24; round++) { + // Theta + for (var x = 0; x < 5; x++) { + // Mix column lanes + var tMsw = 0, + tLsw = 0; + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + tMsw ^= lane.high; + tLsw ^= lane.low; + } + + // Temporary values + var Tx = T[x]; + Tx.high = tMsw; + Tx.low = tLsw; + } + for (var x = 0; x < 5; x++) { + // Shortcuts + var Tx4 = T[(x + 4) % 5]; + var Tx1 = T[(x + 1) % 5]; + var Tx1Msw = Tx1.high; + var Tx1Lsw = Tx1.low; + + // Mix surrounding columns + var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); + var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + lane.high ^= tMsw; + lane.low ^= tLsw; + } + } + + // Rho Pi + for (var laneIndex = 1; laneIndex < 25; laneIndex++) { + var tMsw; + var tLsw; + + // Shortcuts + var lane = state[laneIndex]; + var laneMsw = lane.high; + var laneLsw = lane.low; + var rhoOffset = RHO_OFFSETS[laneIndex]; + + // Rotate lanes + if (rhoOffset < 32) { + tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); + tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); + } else /* if (rhoOffset >= 32) */ { + tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); + tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); + } + + // Transpose lanes + var TPiLane = T[PI_INDEXES[laneIndex]]; + TPiLane.high = tMsw; + TPiLane.low = tLsw; + } + + // Rho pi at x = y = 0 + var T0 = T[0]; + var state0 = state[0]; + T0.high = state0.high; + T0.low = state0.low; + + // Chi + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + // Shortcuts + var laneIndex = x + 5 * y; + var lane = state[laneIndex]; + var TLane = T[laneIndex]; + var Tx1Lane = T[((x + 1) % 5) + 5 * y]; + var Tx2Lane = T[((x + 2) % 5) + 5 * y]; + + // Mix rows + lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); + lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); + } + } + + // Iota + var lane = state[0]; + var roundConstant = ROUND_CONSTANTS[round]; + lane.high ^= roundConstant.high; + lane.low ^= roundConstant.low; + } + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + var blockSizeBits = this.blockSize * 32; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); + dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var state = this._state; + var outputLengthBytes = this.cfg.outputLength / 8; + var outputLengthLanes = outputLengthBytes / 8; + + // Squeeze + var hashWords = []; + for (var i = 0; i < outputLengthLanes; i++) { + // Shortcuts + var lane = state[i]; + var laneMsw = lane.high; + var laneLsw = lane.low; + + // Swap endian + laneMsw = ( + (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | + (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) + ); + laneLsw = ( + (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | + (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) + ); + + // Squeeze state to retrieve hash + hashWords.push(laneLsw); + hashWords.push(laneMsw); + } + + // Return final computed hash + return new WordArray.init(hashWords, outputLengthBytes); + }, + + clone: function() { + var clone = Hasher.clone.call(this); + + var state = clone._state = this._state.slice(0); + for (var i = 0; i < 25; i++) { + state[i] = state[i].clone(); + } + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA3('message'); + * var hash = CryptoJS.SHA3(wordArray); + */ + C.SHA3 = Hasher._createHelper(SHA3); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA3(message, key); + */ + C.HmacSHA3 = Hasher._createHmacHelper(SHA3); +}(Math)); + + + + + + + + + + +/** @preserve +(c) 2012 by Cédric Mesnil. All rights reserved. +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +(function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var _zl = WordArray.create([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 + ]); + var _zr = WordArray.create([ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 + ]); + var _sl = WordArray.create([ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 + ]); + var _sr = WordArray.create([ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 + ]); + + var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); + var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); + + /** + * RIPEMD160 hash algorithm. + */ + var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ + _doReset: function() { + this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); + }, + + _doProcessBlock: function(M, offset) { + + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + // Shortcut + var H = this._hash.words; + var hl = _hl.words; + var hr = _hr.words; + var zl = _zl.words; + var zr = _zr.words; + var sl = _sl.words; + var sr = _sr.words; + + // Working variables + var al, bl, cl, dl, el; + var ar, br, cr, dr, er; + + ar = al = H[0]; + br = bl = H[1]; + cr = cl = H[2]; + dr = dl = H[3]; + er = el = H[4]; + // Computation + var t; + for (var i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0; + if (i < 16) { + t += f1(bl, cl, dl) + hl[0]; + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1]; + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2]; + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3]; + } else { // if (i<80) { + t += f5(bl, cl, dl) + hl[4]; + } + t = t | 0; + t = rotl(t, sl[i]); + t = (t + el) | 0; + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = t; + + t = (ar + M[offset + zr[i]]) | 0; + if (i < 16) { + t += f5(br, cr, dr) + hr[0]; + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1]; + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2]; + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3]; + } else { // if (i<80) { + t += f1(br, cr, dr) + hr[4]; + } + t = t | 0; + t = rotl(t, sr[i]); + t = (t + er) | 0; + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = t; + } + // Intermediate hash value + t = (H[1] + cl + dr) | 0; + H[1] = (H[2] + dl + er) | 0; + H[2] = (H[3] + el + ar) | 0; + H[3] = (H[4] + al + br) | 0; + H[4] = (H[0] + bl + cr) | 0; + H[0] = t; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ); + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 5; i++) { + // Shortcut + var H_i = H[i]; + + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + + function f1(x, y, z) { + return ((x) ^ (y) ^ (z)); + + } + + function f2(x, y, z) { + return (((x) & (y)) | ((~x) & (z))); + } + + function f3(x, y, z) { + return (((x) | (~(y))) ^ (z)); + } + + function f4(x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))); + } + + function f5(x, y, z) { + return ((x) ^ ((y) | (~(z)))); + + } + + function rotl(x, n) { + return (x << n) | (x >>> (32 - n)); + } + + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.RIPEMD160('message'); + * var hash = CryptoJS.RIPEMD160(wordArray); + */ + C.RIPEMD160 = Hasher._createHelper(RIPEMD160); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacRIPEMD160(message, key); + */ + C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); +}(Math)); + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var C_algo = C.algo; + + /** + * HMAC algorithm. + */ + var HMAC = C_algo.HMAC = Base.extend({ + /** + * Initializes a newly created HMAC. + * + * @param {Hasher} hasher The hash algorithm to use. + * @param {WordArray|string} key The secret key. + * + * @example + * + * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + */ + init: function(hasher, key) { + // Init hasher + hasher = this._hasher = new hasher.init(); + + // Convert string to WordArray, else assume WordArray already + if (typeof key == 'string') { + key = Utf8.parse(key); + } + + // Shortcuts + var hasherBlockSize = hasher.blockSize; + var hasherBlockSizeBytes = hasherBlockSize * 4; + + // Allow arbitrary length keys + if (key.sigBytes > hasherBlockSizeBytes) { + key = hasher.finalize(key); + } + + // Clamp excess bits + key.clamp(); + + // Clone key for inner and outer pads + var oKey = this._oKey = key.clone(); + var iKey = this._iKey = key.clone(); + + // Shortcuts + var oKeyWords = oKey.words; + var iKeyWords = iKey.words; + + // XOR keys with pad constants + for (var i = 0; i < hasherBlockSize; i++) { + oKeyWords[i] ^= 0x5c5c5c5c; + iKeyWords[i] ^= 0x36363636; + } + oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; + + // Set initial values + this.reset(); + }, + + /** + * Resets this HMAC to its initial state. + * + * @example + * + * hmacHasher.reset(); + */ + reset: function() { + // Shortcut + var hasher = this._hasher; + + // Reset + hasher.reset(); + hasher.update(this._iKey); + }, + + /** + * Updates this HMAC with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {HMAC} This HMAC instance. + * + * @example + * + * hmacHasher.update('message'); + * hmacHasher.update(wordArray); + */ + update: function(messageUpdate) { + this._hasher.update(messageUpdate); + + // Chainable + return this; + }, + + /** + * Finalizes the HMAC computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The HMAC. + * + * @example + * + * var hmac = hmacHasher.finalize(); + * var hmac = hmacHasher.finalize('message'); + * var hmac = hmacHasher.finalize(wordArray); + */ + finalize: function(messageUpdate) { + // Shortcut + var hasher = this._hasher; + + // Compute HMAC + var innerHash = hasher.finalize(messageUpdate); + hasher.reset(); + var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); + + return hmac; + } + }); +}()); + + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA1 = C_algo.SHA1; + var HMAC = C_algo.HMAC; + + /** + * Password-Based Key Derivation Function 2 algorithm. + */ + var PBKDF2 = C_algo.PBKDF2 = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hasher to use. Default: SHA1 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128 / 32, + hasher: SHA1, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.PBKDF2.create(); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); + */ + init: function(cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function(password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init HMAC + var hmac = HMAC.create(cfg.hasher, password); + + // Initial values + var derivedKey = WordArray.create(); + var blockIndex = WordArray.create([0x00000001]); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var blockIndexWords = blockIndex.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + var block = hmac.update(salt).finalize(blockIndex); + hmac.reset(); + + // Shortcuts + var blockWords = block.words; + var blockWordsLength = blockWords.length; + + // Iterations + var intermediate = block; + for (var i = 1; i < iterations; i++) { + intermediate = hmac.finalize(intermediate); + hmac.reset(); + + // Shortcut + var intermediateWords = intermediate.words; + + // XOR intermediate with block + for (var j = 0; j < blockWordsLength; j++) { + blockWords[j] ^= intermediateWords[j]; + } + } + + derivedKey.concat(block); + blockIndexWords[0]++; + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.PBKDF2(password, salt); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.PBKDF2 = function(password, salt, cfg) { + return PBKDF2.create(cfg).compute(password, salt); + }; +}()); + + + + + + + + + + + + +/** + * Cipher core components. + */ +CryptoJS.lib.Cipher || (function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function(key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function(key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function(xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function(dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function(dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128 / 32, + + ivSize: 128 / 32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function() { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function(cipher) { + return { + encrypt: function(message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function(ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + var StreamCipher = C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function() { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function(cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function(cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function(cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function() { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + var block; + + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + var BlockCipher = C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function() { + var modeCreator; + + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + modeCreator = mode.createDecryptor; + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + + if (this._mode && this._mode.__creator == modeCreator) { + this._mode.init(this, iv && iv.words); + } else { + this._mode = modeCreator.call(mode, this, iv && iv.words); + this._mode.__creator = modeCreator; + } + }, + + _doProcessBlock: function(words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function() { + var finalProcessedBlocks; + + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128 / 32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function(cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function(formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function(cipherParams) { + var wordArray; + + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function(openSSLStr) { + var salt; + + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ + ciphertext: ciphertext, + salt: salt + }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function(cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function(cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function(ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function(password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64 / 8); + } + + // Derive key and IV + var key = EvpKDF.create({ + keySize: keySize + ivSize + }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ + key: key, + iv: iv, + salt: salt + }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function(cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function(cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); +}()); + + + + + + + + + +/** + * Cipher Feedback block mode. + */ +CryptoJS.mode.CFB = (function() { + var CFB = CryptoJS.lib.BlockCipherMode.extend(); + + CFB.Encryptor = CFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + CFB.Decryptor = CFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { + var keystream; + + // Shortcut + var iv = this._iv; + + // Generate keystream + if (iv) { + keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + keystream = this._prevBlock; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + + return CFB; +}()); + + + + + + + + +/** + * Counter block mode. + */ +CryptoJS.mode.CTR = (function() { + var CTR = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = CTR.Encryptor = CTR.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Increment counter + counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTR.Decryptor = Encryptor; + + return CTR; +}()); + + + + + + +/** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ +CryptoJS.mode.CTRGladman = (function() { + var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); + + function incWord(word) { + if (((word >> 24) & 0xff) === 0xff) { //overflow + var b1 = (word >> 16) & 0xff; + var b2 = (word >> 8) & 0xff; + var b3 = word & 0xff; + + if (b1 === 0xff) // overflow b1 + { + b1 = 0; + if (b2 === 0xff) { + b2 = 0; + if (b3 === 0xff) { + b3 = 0; + } else { + ++b3; + } + } else { + ++b2; + } + } else { + ++b1; + } + + word = 0; + word += (b1 << 16); + word += (b2 << 8); + word += b3; + } else { + word += (0x01 << 24); + } + return word; + } + + function incCounter(counter) { + if ((counter[0] = incWord(counter[0])) === 0) { + // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 + counter[1] = incWord(counter[1]); + } + return counter; + } + + var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + + incCounter(counter); + + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTRGladman.Decryptor = Encryptor; + + return CTRGladman; +}()); + + + + + + + + + +/** + * Output Feedback block mode. + */ +CryptoJS.mode.OFB = (function() { + var OFB = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = OFB.Encryptor = OFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var keystream = this._keystream; + + // Generate keystream + if (iv) { + keystream = this._keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + OFB.Decryptor = Encryptor; + + return OFB; +}()); + + + + + + + + +/** + * Electronic Codebook block mode. + */ +CryptoJS.mode.ECB = (function() { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + + ECB.Encryptor = ECB.extend({ + processBlock: function(words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + + ECB.Decryptor = ECB.extend({ + processBlock: function(words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + + return ECB; +}()); + + + + + + + + + +/** + * ANSI X.923 padding strategy. + */ +CryptoJS.pad.AnsiX923 = { + pad: function(data, blockSize) { + // Shortcuts + var dataSigBytes = data.sigBytes; + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; + + // Compute last byte position + var lastBytePos = dataSigBytes + nPaddingBytes - 1; + + // Pad + data.clamp(); + data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); + data.sigBytes += nPaddingBytes; + }, + + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } +}; + + + + + + + + +/** + * ISO 10126 padding strategy. + */ +CryptoJS.pad.Iso10126 = { + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Pad + data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). + concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); + }, + + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } +}; + + + + + + +/** + * ISO/IEC 9797-1 Padding Method 2. + */ +CryptoJS.pad.Iso97971 = { + pad: function(data, blockSize) { + // Add 0x80 byte + data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); + + // Zero pad the rest + CryptoJS.pad.ZeroPadding.pad(data, blockSize); + }, + + unpad: function(data) { + // Remove zero padding + CryptoJS.pad.ZeroPadding.unpad(data); + + // Remove one more byte -- the 0x80 byte + data.sigBytes--; + } +}; + + + + + + + + + +/** + * Zero padding strategy. + */ +CryptoJS.pad.ZeroPadding = { + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Pad + data.clamp(); + data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); + }, + + unpad: function(data) { + // Shortcut + var dataWords = data.words; + + // Unpad + var i = data.sigBytes - 1; + for (var i = data.sigBytes - 1; i >= 0; i--) { + if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { + data.sigBytes = i + 1; + break; + } + } + } +}; + + + + + + + +/** + * A noop padding strategy. + */ +CryptoJS.pad.NoPadding = { + pad: function() {}, + + unpad: function() {} +}; + + +(function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var CipherParams = C_lib.CipherParams; + var C_enc = C.enc; + var Hex = C_enc.Hex; + var C_format = C.format; + + var HexFormatter = C_format.Hex = { + /** + * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The hexadecimally encoded string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.format.Hex.stringify(cipherParams); + */ + stringify: function(cipherParams) { + return cipherParams.ciphertext.toString(Hex); + }, + + /** + * Converts a hexadecimally encoded ciphertext string to a cipher params object. + * + * @param {string} input The hexadecimally encoded string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.Hex.parse(hexString); + */ + parse: function(input) { + var ciphertext = Hex.parse(input); + return CipherParams.create({ + ciphertext: ciphertext + }); + } + }; +}()); + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function() { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function() { + var t; + + // Skip reset of nRounds has been set before and key did not change + if (this._nRounds && this._keyPriorReset === this._key) { + return; + } + + // Shortcuts + var key = this._keyPriorReset = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function(M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256 / 32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); +}()); + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Permuted Choice 1 constants + var PC1 = [ + 57, 49, 41, 33, 25, 17, 9, 1, + 58, 50, 42, 34, 26, 18, 10, 2, + 59, 51, 43, 35, 27, 19, 11, 3, + 60, 52, 44, 36, 63, 55, 47, 39, + 31, 23, 15, 7, 62, 54, 46, 38, + 30, 22, 14, 6, 61, 53, 45, 37, + 29, 21, 13, 5, 28, 20, 12, 4 + ]; + + // Permuted Choice 2 constants + var PC2 = [ + 14, 17, 11, 24, 1, 5, + 3, 28, 15, 6, 21, 10, + 23, 19, 12, 4, 26, 8, + 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, + 30, 40, 51, 45, 33, 48, + 44, 49, 39, 56, 34, 53, + 46, 42, 50, 36, 29, 32 + ]; + + // Cumulative bit shift constants + var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; + + // SBOXes and round permutation constants + var SBOX_P = [{ + 0x0: 0x808200, + 0x10000000: 0x8000, + 0x20000000: 0x808002, + 0x30000000: 0x2, + 0x40000000: 0x200, + 0x50000000: 0x808202, + 0x60000000: 0x800202, + 0x70000000: 0x800000, + 0x80000000: 0x202, + 0x90000000: 0x800200, + 0xa0000000: 0x8200, + 0xb0000000: 0x808000, + 0xc0000000: 0x8002, + 0xd0000000: 0x800002, + 0xe0000000: 0x0, + 0xf0000000: 0x8202, + 0x8000000: 0x0, + 0x18000000: 0x808202, + 0x28000000: 0x8202, + 0x38000000: 0x8000, + 0x48000000: 0x808200, + 0x58000000: 0x200, + 0x68000000: 0x808002, + 0x78000000: 0x2, + 0x88000000: 0x800200, + 0x98000000: 0x8200, + 0xa8000000: 0x808000, + 0xb8000000: 0x800202, + 0xc8000000: 0x800002, + 0xd8000000: 0x8002, + 0xe8000000: 0x202, + 0xf8000000: 0x800000, + 0x1: 0x8000, + 0x10000001: 0x2, + 0x20000001: 0x808200, + 0x30000001: 0x800000, + 0x40000001: 0x808002, + 0x50000001: 0x8200, + 0x60000001: 0x200, + 0x70000001: 0x800202, + 0x80000001: 0x808202, + 0x90000001: 0x808000, + 0xa0000001: 0x800002, + 0xb0000001: 0x8202, + 0xc0000001: 0x202, + 0xd0000001: 0x800200, + 0xe0000001: 0x8002, + 0xf0000001: 0x0, + 0x8000001: 0x808202, + 0x18000001: 0x808000, + 0x28000001: 0x800000, + 0x38000001: 0x200, + 0x48000001: 0x8000, + 0x58000001: 0x800002, + 0x68000001: 0x2, + 0x78000001: 0x8202, + 0x88000001: 0x8002, + 0x98000001: 0x800202, + 0xa8000001: 0x202, + 0xb8000001: 0x808200, + 0xc8000001: 0x800200, + 0xd8000001: 0x0, + 0xe8000001: 0x8200, + 0xf8000001: 0x808002 + }, + { + 0x0: 0x40084010, + 0x1000000: 0x4000, + 0x2000000: 0x80000, + 0x3000000: 0x40080010, + 0x4000000: 0x40000010, + 0x5000000: 0x40084000, + 0x6000000: 0x40004000, + 0x7000000: 0x10, + 0x8000000: 0x84000, + 0x9000000: 0x40004010, + 0xa000000: 0x40000000, + 0xb000000: 0x84010, + 0xc000000: 0x80010, + 0xd000000: 0x0, + 0xe000000: 0x4010, + 0xf000000: 0x40080000, + 0x800000: 0x40004000, + 0x1800000: 0x84010, + 0x2800000: 0x10, + 0x3800000: 0x40004010, + 0x4800000: 0x40084010, + 0x5800000: 0x40000000, + 0x6800000: 0x80000, + 0x7800000: 0x40080010, + 0x8800000: 0x80010, + 0x9800000: 0x0, + 0xa800000: 0x4000, + 0xb800000: 0x40080000, + 0xc800000: 0x40000010, + 0xd800000: 0x84000, + 0xe800000: 0x40084000, + 0xf800000: 0x4010, + 0x10000000: 0x0, + 0x11000000: 0x40080010, + 0x12000000: 0x40004010, + 0x13000000: 0x40084000, + 0x14000000: 0x40080000, + 0x15000000: 0x10, + 0x16000000: 0x84010, + 0x17000000: 0x4000, + 0x18000000: 0x4010, + 0x19000000: 0x80000, + 0x1a000000: 0x80010, + 0x1b000000: 0x40000010, + 0x1c000000: 0x84000, + 0x1d000000: 0x40004000, + 0x1e000000: 0x40000000, + 0x1f000000: 0x40084010, + 0x10800000: 0x84010, + 0x11800000: 0x80000, + 0x12800000: 0x40080000, + 0x13800000: 0x4000, + 0x14800000: 0x40004000, + 0x15800000: 0x40084010, + 0x16800000: 0x10, + 0x17800000: 0x40000000, + 0x18800000: 0x40084000, + 0x19800000: 0x40000010, + 0x1a800000: 0x40004010, + 0x1b800000: 0x80010, + 0x1c800000: 0x0, + 0x1d800000: 0x4010, + 0x1e800000: 0x40080010, + 0x1f800000: 0x84000 + }, + { + 0x0: 0x104, + 0x100000: 0x0, + 0x200000: 0x4000100, + 0x300000: 0x10104, + 0x400000: 0x10004, + 0x500000: 0x4000004, + 0x600000: 0x4010104, + 0x700000: 0x4010000, + 0x800000: 0x4000000, + 0x900000: 0x4010100, + 0xa00000: 0x10100, + 0xb00000: 0x4010004, + 0xc00000: 0x4000104, + 0xd00000: 0x10000, + 0xe00000: 0x4, + 0xf00000: 0x100, + 0x80000: 0x4010100, + 0x180000: 0x4010004, + 0x280000: 0x0, + 0x380000: 0x4000100, + 0x480000: 0x4000004, + 0x580000: 0x10000, + 0x680000: 0x10004, + 0x780000: 0x104, + 0x880000: 0x4, + 0x980000: 0x100, + 0xa80000: 0x4010000, + 0xb80000: 0x10104, + 0xc80000: 0x10100, + 0xd80000: 0x4000104, + 0xe80000: 0x4010104, + 0xf80000: 0x4000000, + 0x1000000: 0x4010100, + 0x1100000: 0x10004, + 0x1200000: 0x10000, + 0x1300000: 0x4000100, + 0x1400000: 0x100, + 0x1500000: 0x4010104, + 0x1600000: 0x4000004, + 0x1700000: 0x0, + 0x1800000: 0x4000104, + 0x1900000: 0x4000000, + 0x1a00000: 0x4, + 0x1b00000: 0x10100, + 0x1c00000: 0x4010000, + 0x1d00000: 0x104, + 0x1e00000: 0x10104, + 0x1f00000: 0x4010004, + 0x1080000: 0x4000000, + 0x1180000: 0x104, + 0x1280000: 0x4010100, + 0x1380000: 0x0, + 0x1480000: 0x10004, + 0x1580000: 0x4000100, + 0x1680000: 0x100, + 0x1780000: 0x4010004, + 0x1880000: 0x10000, + 0x1980000: 0x4010104, + 0x1a80000: 0x10104, + 0x1b80000: 0x4000004, + 0x1c80000: 0x4000104, + 0x1d80000: 0x4010000, + 0x1e80000: 0x4, + 0x1f80000: 0x10100 + }, + { + 0x0: 0x80401000, + 0x10000: 0x80001040, + 0x20000: 0x401040, + 0x30000: 0x80400000, + 0x40000: 0x0, + 0x50000: 0x401000, + 0x60000: 0x80000040, + 0x70000: 0x400040, + 0x80000: 0x80000000, + 0x90000: 0x400000, + 0xa0000: 0x40, + 0xb0000: 0x80001000, + 0xc0000: 0x80400040, + 0xd0000: 0x1040, + 0xe0000: 0x1000, + 0xf0000: 0x80401040, + 0x8000: 0x80001040, + 0x18000: 0x40, + 0x28000: 0x80400040, + 0x38000: 0x80001000, + 0x48000: 0x401000, + 0x58000: 0x80401040, + 0x68000: 0x0, + 0x78000: 0x80400000, + 0x88000: 0x1000, + 0x98000: 0x80401000, + 0xa8000: 0x400000, + 0xb8000: 0x1040, + 0xc8000: 0x80000000, + 0xd8000: 0x400040, + 0xe8000: 0x401040, + 0xf8000: 0x80000040, + 0x100000: 0x400040, + 0x110000: 0x401000, + 0x120000: 0x80000040, + 0x130000: 0x0, + 0x140000: 0x1040, + 0x150000: 0x80400040, + 0x160000: 0x80401000, + 0x170000: 0x80001040, + 0x180000: 0x80401040, + 0x190000: 0x80000000, + 0x1a0000: 0x80400000, + 0x1b0000: 0x401040, + 0x1c0000: 0x80001000, + 0x1d0000: 0x400000, + 0x1e0000: 0x40, + 0x1f0000: 0x1000, + 0x108000: 0x80400000, + 0x118000: 0x80401040, + 0x128000: 0x0, + 0x138000: 0x401000, + 0x148000: 0x400040, + 0x158000: 0x80000000, + 0x168000: 0x80001040, + 0x178000: 0x40, + 0x188000: 0x80000040, + 0x198000: 0x1000, + 0x1a8000: 0x80001000, + 0x1b8000: 0x80400040, + 0x1c8000: 0x1040, + 0x1d8000: 0x80401000, + 0x1e8000: 0x400000, + 0x1f8000: 0x401040 + }, + { + 0x0: 0x80, + 0x1000: 0x1040000, + 0x2000: 0x40000, + 0x3000: 0x20000000, + 0x4000: 0x20040080, + 0x5000: 0x1000080, + 0x6000: 0x21000080, + 0x7000: 0x40080, + 0x8000: 0x1000000, + 0x9000: 0x20040000, + 0xa000: 0x20000080, + 0xb000: 0x21040080, + 0xc000: 0x21040000, + 0xd000: 0x0, + 0xe000: 0x1040080, + 0xf000: 0x21000000, + 0x800: 0x1040080, + 0x1800: 0x21000080, + 0x2800: 0x80, + 0x3800: 0x1040000, + 0x4800: 0x40000, + 0x5800: 0x20040080, + 0x6800: 0x21040000, + 0x7800: 0x20000000, + 0x8800: 0x20040000, + 0x9800: 0x0, + 0xa800: 0x21040080, + 0xb800: 0x1000080, + 0xc800: 0x20000080, + 0xd800: 0x21000000, + 0xe800: 0x1000000, + 0xf800: 0x40080, + 0x10000: 0x40000, + 0x11000: 0x80, + 0x12000: 0x20000000, + 0x13000: 0x21000080, + 0x14000: 0x1000080, + 0x15000: 0x21040000, + 0x16000: 0x20040080, + 0x17000: 0x1000000, + 0x18000: 0x21040080, + 0x19000: 0x21000000, + 0x1a000: 0x1040000, + 0x1b000: 0x20040000, + 0x1c000: 0x40080, + 0x1d000: 0x20000080, + 0x1e000: 0x0, + 0x1f000: 0x1040080, + 0x10800: 0x21000080, + 0x11800: 0x1000000, + 0x12800: 0x1040000, + 0x13800: 0x20040080, + 0x14800: 0x20000000, + 0x15800: 0x1040080, + 0x16800: 0x80, + 0x17800: 0x21040000, + 0x18800: 0x40080, + 0x19800: 0x21040080, + 0x1a800: 0x0, + 0x1b800: 0x21000000, + 0x1c800: 0x1000080, + 0x1d800: 0x40000, + 0x1e800: 0x20040000, + 0x1f800: 0x20000080 + }, + { + 0x0: 0x10000008, + 0x100: 0x2000, + 0x200: 0x10200000, + 0x300: 0x10202008, + 0x400: 0x10002000, + 0x500: 0x200000, + 0x600: 0x200008, + 0x700: 0x10000000, + 0x800: 0x0, + 0x900: 0x10002008, + 0xa00: 0x202000, + 0xb00: 0x8, + 0xc00: 0x10200008, + 0xd00: 0x202008, + 0xe00: 0x2008, + 0xf00: 0x10202000, + 0x80: 0x10200000, + 0x180: 0x10202008, + 0x280: 0x8, + 0x380: 0x200000, + 0x480: 0x202008, + 0x580: 0x10000008, + 0x680: 0x10002000, + 0x780: 0x2008, + 0x880: 0x200008, + 0x980: 0x2000, + 0xa80: 0x10002008, + 0xb80: 0x10200008, + 0xc80: 0x0, + 0xd80: 0x10202000, + 0xe80: 0x202000, + 0xf80: 0x10000000, + 0x1000: 0x10002000, + 0x1100: 0x10200008, + 0x1200: 0x10202008, + 0x1300: 0x2008, + 0x1400: 0x200000, + 0x1500: 0x10000000, + 0x1600: 0x10000008, + 0x1700: 0x202000, + 0x1800: 0x202008, + 0x1900: 0x0, + 0x1a00: 0x8, + 0x1b00: 0x10200000, + 0x1c00: 0x2000, + 0x1d00: 0x10002008, + 0x1e00: 0x10202000, + 0x1f00: 0x200008, + 0x1080: 0x8, + 0x1180: 0x202000, + 0x1280: 0x200000, + 0x1380: 0x10000008, + 0x1480: 0x10002000, + 0x1580: 0x2008, + 0x1680: 0x10202008, + 0x1780: 0x10200000, + 0x1880: 0x10202000, + 0x1980: 0x10200008, + 0x1a80: 0x2000, + 0x1b80: 0x202008, + 0x1c80: 0x200008, + 0x1d80: 0x0, + 0x1e80: 0x10000000, + 0x1f80: 0x10002008 + }, + { + 0x0: 0x100000, + 0x10: 0x2000401, + 0x20: 0x400, + 0x30: 0x100401, + 0x40: 0x2100401, + 0x50: 0x0, + 0x60: 0x1, + 0x70: 0x2100001, + 0x80: 0x2000400, + 0x90: 0x100001, + 0xa0: 0x2000001, + 0xb0: 0x2100400, + 0xc0: 0x2100000, + 0xd0: 0x401, + 0xe0: 0x100400, + 0xf0: 0x2000000, + 0x8: 0x2100001, + 0x18: 0x0, + 0x28: 0x2000401, + 0x38: 0x2100400, + 0x48: 0x100000, + 0x58: 0x2000001, + 0x68: 0x2000000, + 0x78: 0x401, + 0x88: 0x100401, + 0x98: 0x2000400, + 0xa8: 0x2100000, + 0xb8: 0x100001, + 0xc8: 0x400, + 0xd8: 0x2100401, + 0xe8: 0x1, + 0xf8: 0x100400, + 0x100: 0x2000000, + 0x110: 0x100000, + 0x120: 0x2000401, + 0x130: 0x2100001, + 0x140: 0x100001, + 0x150: 0x2000400, + 0x160: 0x2100400, + 0x170: 0x100401, + 0x180: 0x401, + 0x190: 0x2100401, + 0x1a0: 0x100400, + 0x1b0: 0x1, + 0x1c0: 0x0, + 0x1d0: 0x2100000, + 0x1e0: 0x2000001, + 0x1f0: 0x400, + 0x108: 0x100400, + 0x118: 0x2000401, + 0x128: 0x2100001, + 0x138: 0x1, + 0x148: 0x2000000, + 0x158: 0x100000, + 0x168: 0x401, + 0x178: 0x2100400, + 0x188: 0x2000001, + 0x198: 0x2100000, + 0x1a8: 0x0, + 0x1b8: 0x2100401, + 0x1c8: 0x100401, + 0x1d8: 0x400, + 0x1e8: 0x2000400, + 0x1f8: 0x100001 + }, + { + 0x0: 0x8000820, + 0x1: 0x20000, + 0x2: 0x8000000, + 0x3: 0x20, + 0x4: 0x20020, + 0x5: 0x8020820, + 0x6: 0x8020800, + 0x7: 0x800, + 0x8: 0x8020000, + 0x9: 0x8000800, + 0xa: 0x20800, + 0xb: 0x8020020, + 0xc: 0x820, + 0xd: 0x0, + 0xe: 0x8000020, + 0xf: 0x20820, + 0x80000000: 0x800, + 0x80000001: 0x8020820, + 0x80000002: 0x8000820, + 0x80000003: 0x8000000, + 0x80000004: 0x8020000, + 0x80000005: 0x20800, + 0x80000006: 0x20820, + 0x80000007: 0x20, + 0x80000008: 0x8000020, + 0x80000009: 0x820, + 0x8000000a: 0x20020, + 0x8000000b: 0x8020800, + 0x8000000c: 0x0, + 0x8000000d: 0x8020020, + 0x8000000e: 0x8000800, + 0x8000000f: 0x20000, + 0x10: 0x20820, + 0x11: 0x8020800, + 0x12: 0x20, + 0x13: 0x800, + 0x14: 0x8000800, + 0x15: 0x8000020, + 0x16: 0x8020020, + 0x17: 0x20000, + 0x18: 0x0, + 0x19: 0x20020, + 0x1a: 0x8020000, + 0x1b: 0x8000820, + 0x1c: 0x8020820, + 0x1d: 0x20800, + 0x1e: 0x820, + 0x1f: 0x8000000, + 0x80000010: 0x20000, + 0x80000011: 0x800, + 0x80000012: 0x8020020, + 0x80000013: 0x20820, + 0x80000014: 0x20, + 0x80000015: 0x8020000, + 0x80000016: 0x8000000, + 0x80000017: 0x8000820, + 0x80000018: 0x8020820, + 0x80000019: 0x8000020, + 0x8000001a: 0x8000800, + 0x8000001b: 0x0, + 0x8000001c: 0x20800, + 0x8000001d: 0x820, + 0x8000001e: 0x20020, + 0x8000001f: 0x8020800 + } + ]; + + // Masks that select the SBOX input + var SBOX_MASK = [ + 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, + 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f + ]; + + /** + * DES block cipher algorithm. + */ + var DES = C_algo.DES = BlockCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + + // Select 56 bits according to PC1 + var keyBits = []; + for (var i = 0; i < 56; i++) { + var keyBitPos = PC1[i] - 1; + keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; + } + + // Assemble 16 subkeys + var subKeys = this._subKeys = []; + for (var nSubKey = 0; nSubKey < 16; nSubKey++) { + // Create subkey + var subKey = subKeys[nSubKey] = []; + + // Shortcut + var bitShift = BIT_SHIFTS[nSubKey]; + + // Select 48 bits according to PC2 + for (var i = 0; i < 24; i++) { + // Select from the left 28 key bits + subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); + + // Select from the right 28 key bits + subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); + } + + // Since each subkey is applied to an expanded 32-bit input, + // the subkey can be broken into 8 values scaled to 32-bits, + // which allows the key to be used without expansion + subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); + for (var i = 1; i < 7; i++) { + subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); + } + subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); + } + + // Compute inverse subkeys + var invSubKeys = this._invSubKeys = []; + for (var i = 0; i < 16; i++) { + invSubKeys[i] = subKeys[15 - i]; + } + }, + + encryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._subKeys); + }, + + decryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._invSubKeys); + }, + + _doCryptBlock: function(M, offset, subKeys) { + // Get input + this._lBlock = M[offset]; + this._rBlock = M[offset + 1]; + + // Initial permutation + exchangeLR.call(this, 4, 0x0f0f0f0f); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeRL.call(this, 2, 0x33333333); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeLR.call(this, 1, 0x55555555); + + // Rounds + for (var round = 0; round < 16; round++) { + // Shortcuts + var subKey = subKeys[round]; + var lBlock = this._lBlock; + var rBlock = this._rBlock; + + // Feistel function + var f = 0; + for (var i = 0; i < 8; i++) { + f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; + } + this._lBlock = rBlock; + this._rBlock = lBlock ^ f; + } + + // Undo swap from last round + var t = this._lBlock; + this._lBlock = this._rBlock; + this._rBlock = t; + + // Final permutation + exchangeLR.call(this, 1, 0x55555555); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeRL.call(this, 2, 0x33333333); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeLR.call(this, 4, 0x0f0f0f0f); + + // Set output + M[offset] = this._lBlock; + M[offset + 1] = this._rBlock; + }, + + keySize: 64 / 32, + + ivSize: 64 / 32, + + blockSize: 64 / 32 + }); + + // Swap bits across the left and right words + function exchangeLR(offset, mask) { + var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; + this._rBlock ^= t; + this._lBlock ^= t << offset; + } + + function exchangeRL(offset, mask) { + var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; + this._lBlock ^= t; + this._rBlock ^= t << offset; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); + */ + C.DES = BlockCipher._createHelper(DES); + + /** + * Triple-DES block cipher algorithm. + */ + var TripleDES = C_algo.TripleDES = BlockCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + // Make sure the key length is valid (64, 128 or >= 192 bit) + if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { + throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); + } + + // Extend the key according to the keying options defined in 3DES standard + var key1 = keyWords.slice(0, 2); + var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); + var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); + + // Create DES instances + this._des1 = DES.createEncryptor(WordArray.create(key1)); + this._des2 = DES.createEncryptor(WordArray.create(key2)); + this._des3 = DES.createEncryptor(WordArray.create(key3)); + }, + + encryptBlock: function(M, offset) { + this._des1.encryptBlock(M, offset); + this._des2.decryptBlock(M, offset); + this._des3.encryptBlock(M, offset); + }, + + decryptBlock: function(M, offset) { + this._des3.decryptBlock(M, offset); + this._des2.encryptBlock(M, offset); + this._des1.decryptBlock(M, offset); + }, + + keySize: 192 / 32, + + ivSize: 64 / 32, + + blockSize: 64 / 32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); + */ + C.TripleDES = BlockCipher._createHelper(TripleDES); +}()); + + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + /** + * RC4 stream cipher algorithm. + */ + var RC4 = C_algo.RC4 = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySigBytes = key.sigBytes; + + // Init sbox + var S = this._S = []; + for (var i = 0; i < 256; i++) { + S[i] = i; + } + + // Key setup + for (var i = 0, j = 0; i < 256; i++) { + var keyByteIndex = i % keySigBytes; + var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; + + j = (j + S[i] + keyByte) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + } + + // Counters + this._i = this._j = 0; + }, + + _doProcessBlock: function(M, offset) { + M[offset] ^= generateKeystreamWord.call(this); + }, + + keySize: 256 / 32, + + ivSize: 0 + }); + + function generateKeystreamWord() { + // Shortcuts + var S = this._S; + var i = this._i; + var j = this._j; + + // Generate keystream word + var keystreamWord = 0; + for (var n = 0; n < 4; n++) { + i = (i + 1) % 256; + j = (j + S[i]) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + + keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); + } + + // Update counters + this._i = i; + this._j = j; + + return keystreamWord; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); + */ + C.RC4 = StreamCipher._createHelper(RC4); + + /** + * Modified RC4 stream cipher algorithm. + */ + var RC4Drop = C_algo.RC4Drop = RC4.extend({ + /** + * Configuration options. + * + * @property {number} drop The number of keystream words to drop. Default 192 + */ + cfg: RC4.cfg.extend({ + drop: 192 + }), + + _doReset: function() { + RC4._doReset.call(this); + + // Drop + for (var i = this.cfg.drop; i > 0; i--) { + generateKeystreamWord.call(this); + } + } + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); + */ + C.RC4Drop = StreamCipher._createHelper(RC4Drop); +}()); + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm + */ + var Rabbit = C_algo.Rabbit = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Swap endian + for (var i = 0; i < 4; i++) { + K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | + (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); + } + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128 / 32, + + ivSize: 64 / 32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); + * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); + */ + C.Rabbit = StreamCipher._createHelper(Rabbit); +}()); + + + + + + + + + + +(function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm. + * + * This is a legacy version that neglected to convert the key to little-endian. + * This error doesn't affect the cipher's security, + * but it does affect its compatibility with other implementations. + */ + var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128 / 32, + + ivSize: 64 / 32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); + */ + C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); +}()); \ No newline at end of file diff --git a/xiaosa/JS/crypto-js.js b/xiaosa/JS/crypto-js.js new file mode 100644 index 00000000..46313ca4 --- /dev/null +++ b/xiaosa/JS/crypto-js.js @@ -0,0 +1,6192 @@ +; +(function(root, factory) { + if (typeof exports === "object") { + // CommonJS + module.exports = exports = factory(); + } else if (typeof define === "function" && define.amd) { + // AMD + define([], factory); + } else { + // Global (browser) + globalThis.CryptoJS = factory(); + } +}(this, function() { + + /*globals window, global, require*/ + + /** + * CryptoJS core components. + */ + var CryptoJS = CryptoJS || (function(Math, undefined) { + + var crypto; + + // Native crypto from window (Browser) + if (typeof window !== 'undefined' && window.crypto) { + crypto = window.crypto; + } + + // Native crypto in web worker (Browser) + if (typeof self !== 'undefined' && self.crypto) { + crypto = self.crypto; + } + + // Native crypto from worker + if (typeof globalThis !== 'undefined' && globalThis.crypto) { + crypto = globalThis.crypto; + } + + // Native (experimental IE 11) crypto from window (Browser) + if (!crypto && typeof window !== 'undefined' && window.msCrypto) { + crypto = window.msCrypto; + } + + // Native crypto from global (NodeJS) + if (!crypto && typeof global !== 'undefined' && global.crypto) { + crypto = global.crypto; + } + + // Native crypto import via require (NodeJS) + if (!crypto && typeof require === 'function') { + try { + crypto = require('crypto'); + } catch (err) {} + } + + /* + * Cryptographically secure pseudorandom number generator + * + * As Math.random() is cryptographically not safe to use + */ + var cryptoSecureRandomInt = function() { + if (crypto) { + // Use getRandomValues method (Browser) + if (typeof crypto.getRandomValues === 'function') { + try { + return crypto.getRandomValues(new Uint32Array(1))[0]; + } catch (err) {} + } + + // Use randomBytes method (NodeJS) + if (typeof crypto.randomBytes === 'function') { + try { + return crypto.randomBytes(4).readInt32LE(); + } catch (err) {} + } + } + + throw new Error('Native crypto module could not be used to get secure random number.'); + }; + + /* + * Local polyfill of Object.create + + */ + var create = Object.create || (function() { + function F() {} + + return function(obj) { + var subtype; + + F.prototype = obj; + + subtype = new F(); + + F.prototype = null; + + return subtype; + }; + }()); + + /** + * CryptoJS namespace. + */ + var C = {}; + + /** + * Library namespace. + */ + var C_lib = C.lib = {}; + + /** + * Base object for prototypal inheritance. + */ + var Base = C_lib.Base = (function() { + + + return { + /** + * Creates a new object that inherits from this object. + * + * @param {Object} overrides Properties to copy into the new object. + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * field: 'value', + * + * method: function () { + * } + * }); + */ + extend: function(overrides) { + // Spawn + var subtype = create(this); + + // Augment + if (overrides) { + subtype.mixIn(overrides); + } + + // Create default initializer + if (!subtype.hasOwnProperty('init') || this.init === subtype.init) { + subtype.init = function() { + subtype.$super.init.apply(this, arguments); + }; + } + + // Initializer's prototype is the subtype object + subtype.init.prototype = subtype; + + // Reference supertype + subtype.$super = this; + + return subtype; + }, + + /** + * Extends this object and runs the init method. + * Arguments to create() will be passed to init(). + * + * @return {Object} The new object. + * + * @static + * + * @example + * + * var instance = MyType.create(); + */ + create: function() { + var instance = this.extend(); + instance.init.apply(instance, arguments); + + return instance; + }, + + /** + * Initializes a newly created object. + * Override this method to add some logic when your objects are created. + * + * @example + * + * var MyType = CryptoJS.lib.Base.extend({ + * init: function () { + * // ... + * } + * }); + */ + init: function() {}, + + /** + * Copies properties into this object. + * + * @param {Object} properties The properties to mix in. + * + * @example + * + * MyType.mixIn({ + * field: 'value' + * }); + */ + mixIn: function(properties) { + for (var propertyName in properties) { + if (properties.hasOwnProperty(propertyName)) { + this[propertyName] = properties[propertyName]; + } + } + + // IE won't copy toString using the loop above + if (properties.hasOwnProperty('toString')) { + this.toString = properties.toString; + } + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = instance.clone(); + */ + clone: function() { + return this.init.prototype.extend(this); + } + }; + }()); + + /** + * An array of 32-bit words. + * + * @property {Array} words The array of 32-bit words. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var WordArray = C_lib.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of 32-bit words. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.create(); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); + * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); + */ + init: function(words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 4; + } + }, + + /** + * Converts this word array to a string. + * + * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex + * + * @return {string} The stringified word array. + * + * @example + * + * var string = wordArray + ''; + * var string = wordArray.toString(); + * var string = wordArray.toString(CryptoJS.enc.Utf8); + */ + toString: function(encoder) { + return (encoder || Hex).stringify(this); + }, + + /** + * Concatenates a word array to this word array. + * + * @param {WordArray} wordArray The word array to append. + * + * @return {WordArray} This word array. + * + * @example + * + * wordArray1.concat(wordArray2); + */ + concat: function(wordArray) { + // Shortcuts + var thisWords = this.words; + var thatWords = wordArray.words; + var thisSigBytes = this.sigBytes; + var thatSigBytes = wordArray.sigBytes; + + // Clamp excess bits + this.clamp(); + + // Concat + if (thisSigBytes % 4) { + // Copy one byte at a time + for (var i = 0; i < thatSigBytes; i++) { + var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8); + } + } else { + // Copy one word at a time + for (var j = 0; j < thatSigBytes; j += 4) { + thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2]; + } + } + this.sigBytes += thatSigBytes; + + // Chainable + return this; + }, + + /** + * Removes insignificant bits. + * + * @example + * + * wordArray.clamp(); + */ + clamp: function() { + // Shortcuts + var words = this.words; + var sigBytes = this.sigBytes; + + // Clamp + words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8); + words.length = Math.ceil(sigBytes / 4); + }, + + /** + * Creates a copy of this word array. + * + * @return {WordArray} The clone. + * + * @example + * + * var clone = wordArray.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + clone.words = this.words.slice(0); + + return clone; + }, + + /** + * Creates a word array filled with random bytes. + * + * @param {number} nBytes The number of random bytes to generate. + * + * @return {WordArray} The random word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.lib.WordArray.random(16); + */ + random: function(nBytes) { + var words = []; + + for (var i = 0; i < nBytes; i += 4) { + words.push(cryptoSecureRandomInt()); + } + + return new WordArray.init(words, nBytes); + } + }); + + /** + * Encoder namespace. + */ + var C_enc = C.enc = {}; + + /** + * Hex encoding strategy. + */ + var Hex = C_enc.Hex = { + /** + * Converts a word array to a hex string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The hex string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.enc.Hex.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var hexChars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + hexChars.push((bite >>> 4).toString(16)); + hexChars.push((bite & 0x0f).toString(16)); + } + + return hexChars.join(''); + }, + + /** + * Converts a hex string to a word array. + * + * @param {string} hexStr The hex string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Hex.parse(hexString); + */ + parse: function(hexStr) { + // Shortcut + var hexStrLength = hexStr.length; + + // Convert + var words = []; + for (var i = 0; i < hexStrLength; i += 2) { + words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4); + } + + return new WordArray.init(words, hexStrLength / 2); + } + }; + + /** + * Latin1 encoding strategy. + */ + var Latin1 = C_enc.Latin1 = { + /** + * Converts a word array to a Latin1 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Latin1 string. + * + * @static + * + * @example + * + * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var latin1Chars = []; + for (var i = 0; i < sigBytes; i++) { + var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + latin1Chars.push(String.fromCharCode(bite)); + } + + return latin1Chars.join(''); + }, + + /** + * Converts a Latin1 string to a word array. + * + * @param {string} latin1Str The Latin1 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); + */ + parse: function(latin1Str) { + // Shortcut + var latin1StrLength = latin1Str.length; + + // Convert + var words = []; + for (var i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8); + } + + return new WordArray.init(words, latin1StrLength); + } + }; + + /** + * UTF-8 encoding strategy. + */ + var Utf8 = C_enc.Utf8 = { + /** + * Converts a word array to a UTF-8 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-8 string. + * + * @static + * + * @example + * + * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); + */ + stringify: function(wordArray) { + try { + return decodeURIComponent(escape(Latin1.stringify(wordArray))); + } catch (e) { + throw new Error('Malformed UTF-8 data'); + } + }, + + /** + * Converts a UTF-8 string to a word array. + * + * @param {string} utf8Str The UTF-8 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); + */ + parse: function(utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } + }; + + /** + * Abstract buffered block algorithm template. + * + * The property blockSize must be implemented in a concrete subtype. + * + * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 + */ + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ + /** + * Resets this block algorithm's data buffer to its initial state. + * + * @example + * + * bufferedBlockAlgorithm.reset(); + */ + reset: function() { + // Initial values + this._data = new WordArray.init(); + this._nDataBytes = 0; + }, + + /** + * Adds new data to this block algorithm's buffer. + * + * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. + * + * @example + * + * bufferedBlockAlgorithm._append('data'); + * bufferedBlockAlgorithm._append(wordArray); + */ + _append: function(data) { + // Convert string to WordArray, else assume WordArray already + if (typeof data == 'string') { + data = Utf8.parse(data); + } + + // Append + this._data.concat(data); + this._nDataBytes += data.sigBytes; + }, + + /** + * Processes available data blocks. + * + * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. + * + * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. + * + * @return {WordArray} The processed data. + * + * @example + * + * var processedData = bufferedBlockAlgorithm._process(); + * var processedData = bufferedBlockAlgorithm._process(!!'flush'); + */ + _process: function(doFlush) { + var processedWords; + + // Shortcuts + var data = this._data; + var dataWords = data.words; + var dataSigBytes = data.sigBytes; + var blockSize = this.blockSize; + var blockSizeBytes = blockSize * 4; + + // Count blocks ready + var nBlocksReady = dataSigBytes / blockSizeBytes; + if (doFlush) { + // Round up to include partial blocks + nBlocksReady = Math.ceil(nBlocksReady); + } else { + // Round down to include only full blocks, + // less the number of blocks that must remain in the buffer + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + + // Count words ready + var nWordsReady = nBlocksReady * blockSize; + + // Count bytes ready + var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes); + + // Process blocks + if (nWordsReady) { + for (var offset = 0; offset < nWordsReady; offset += blockSize) { + // Perform concrete-algorithm logic + this._doProcessBlock(dataWords, offset); + } + + // Remove processed words + processedWords = dataWords.splice(0, nWordsReady); + data.sigBytes -= nBytesReady; + } + + // Return processed words + return new WordArray.init(processedWords, nBytesReady); + }, + + /** + * Creates a copy of this object. + * + * @return {Object} The clone. + * + * @example + * + * var clone = bufferedBlockAlgorithm.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + clone._data = this._data.clone(); + + return clone; + }, + + _minBufferSize: 0 + }); + + /** + * Abstract hasher template. + * + * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) + */ + var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + */ + cfg: Base.extend(), + + /** + * Initializes a newly created hasher. + * + * @param {Object} cfg (Optional) The configuration options to use for this hash computation. + * + * @example + * + * var hasher = CryptoJS.algo.SHA256.create(); + */ + init: function(cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Set initial values + this.reset(); + }, + + /** + * Resets this hasher to its initial state. + * + * @example + * + * hasher.reset(); + */ + reset: function() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-hasher logic + this._doReset(); + }, + + /** + * Updates this hasher with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {Hasher} This hasher. + * + * @example + * + * hasher.update('message'); + * hasher.update(wordArray); + */ + update: function(messageUpdate) { + // Append + this._append(messageUpdate); + + // Update the hash + this._process(); + + // Chainable + return this; + }, + + /** + * Finalizes the hash computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The hash. + * + * @example + * + * var hash = hasher.finalize(); + * var hash = hasher.finalize('message'); + * var hash = hasher.finalize(wordArray); + */ + finalize: function(messageUpdate) { + // Final message update + if (messageUpdate) { + this._append(messageUpdate); + } + + // Perform concrete-hasher logic + var hash = this._doFinalize(); + + return hash; + }, + + blockSize: 512 / 32, + + /** + * Creates a shortcut function to a hasher's object interface. + * + * @param {Hasher} hasher The hasher to create a helper for. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); + */ + _createHelper: function(hasher) { + return function(message, cfg) { + return new hasher.init(cfg).finalize(message); + }; + }, + + /** + * Creates a shortcut function to the HMAC's object interface. + * + * @param {Hasher} hasher The hasher to use in this HMAC helper. + * + * @return {Function} The shortcut function. + * + * @static + * + * @example + * + * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); + */ + _createHmacHelper: function(hasher) { + return function(message, key) { + return new C_algo.HMAC.init(hasher, key).finalize(message); + }; + } + }); + + /** + * Algorithm namespace. + */ + var C_algo = C.algo = {}; + + return C; + }(Math)); + + + (function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var X32WordArray = C_lib.WordArray; + + /** + * x64 namespace. + */ + var C_x64 = C.x64 = {}; + + /** + * A 64-bit word. + */ + var X64Word = C_x64.Word = Base.extend({ + /** + * Initializes a newly created 64-bit word. + * + * @param {number} high The high 32 bits. + * @param {number} low The low 32 bits. + * + * @example + * + * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607); + */ + init: function(high, low) { + this.high = high; + this.low = low; + } + + /** + * Bitwise NOTs this word. + * + * @return {X64Word} A new x64-Word object after negating. + * + * @example + * + * var negated = x64Word.not(); + */ + // not: function () { + // var high = ~this.high; + // var low = ~this.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ANDs this word with the passed word. + * + * @param {X64Word} word The x64-Word to AND with this word. + * + * @return {X64Word} A new x64-Word object after ANDing. + * + * @example + * + * var anded = x64Word.and(anotherX64Word); + */ + // and: function (word) { + // var high = this.high & word.high; + // var low = this.low & word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise ORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to OR with this word. + * + * @return {X64Word} A new x64-Word object after ORing. + * + * @example + * + * var ored = x64Word.or(anotherX64Word); + */ + // or: function (word) { + // var high = this.high | word.high; + // var low = this.low | word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Bitwise XORs this word with the passed word. + * + * @param {X64Word} word The x64-Word to XOR with this word. + * + * @return {X64Word} A new x64-Word object after XORing. + * + * @example + * + * var xored = x64Word.xor(anotherX64Word); + */ + // xor: function (word) { + // var high = this.high ^ word.high; + // var low = this.low ^ word.low; + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the left. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftL(25); + */ + // shiftL: function (n) { + // if (n < 32) { + // var high = (this.high << n) | (this.low >>> (32 - n)); + // var low = this.low << n; + // } else { + // var high = this.low << (n - 32); + // var low = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Shifts this word n bits to the right. + * + * @param {number} n The number of bits to shift. + * + * @return {X64Word} A new x64-Word object after shifting. + * + * @example + * + * var shifted = x64Word.shiftR(7); + */ + // shiftR: function (n) { + // if (n < 32) { + // var low = (this.low >>> n) | (this.high << (32 - n)); + // var high = this.high >>> n; + // } else { + // var low = this.high >>> (n - 32); + // var high = 0; + // } + + // return X64Word.create(high, low); + // }, + + /** + * Rotates this word n bits to the left. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotL(25); + */ + // rotL: function (n) { + // return this.shiftL(n).or(this.shiftR(64 - n)); + // }, + + /** + * Rotates this word n bits to the right. + * + * @param {number} n The number of bits to rotate. + * + * @return {X64Word} A new x64-Word object after rotating. + * + * @example + * + * var rotated = x64Word.rotR(7); + */ + // rotR: function (n) { + // return this.shiftR(n).or(this.shiftL(64 - n)); + // }, + + /** + * Adds this word with the passed word. + * + * @param {X64Word} word The x64-Word to add with this word. + * + * @return {X64Word} A new x64-Word object after adding. + * + * @example + * + * var added = x64Word.add(anotherX64Word); + */ + // add: function (word) { + // var low = (this.low + word.low) | 0; + // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0; + // var high = (this.high + word.high + carry) | 0; + + // return X64Word.create(high, low); + // } + }); + + /** + * An array of 64-bit words. + * + * @property {Array} words The array of CryptoJS.x64.Word objects. + * @property {number} sigBytes The number of significant bytes in this word array. + */ + var X64WordArray = C_x64.WordArray = Base.extend({ + /** + * Initializes a newly created word array. + * + * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects. + * @param {number} sigBytes (Optional) The number of significant bytes in the words. + * + * @example + * + * var wordArray = CryptoJS.x64.WordArray.create(); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ]); + * + * var wordArray = CryptoJS.x64.WordArray.create([ + * CryptoJS.x64.Word.create(0x00010203, 0x04050607), + * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f) + * ], 10); + */ + init: function(words, sigBytes) { + words = this.words = words || []; + + if (sigBytes != undefined) { + this.sigBytes = sigBytes; + } else { + this.sigBytes = words.length * 8; + } + }, + + /** + * Converts this 64-bit word array to a 32-bit word array. + * + * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array. + * + * @example + * + * var x32WordArray = x64WordArray.toX32(); + */ + toX32: function() { + // Shortcuts + var x64Words = this.words; + var x64WordsLength = x64Words.length; + + // Convert + var x32Words = []; + for (var i = 0; i < x64WordsLength; i++) { + var x64Word = x64Words[i]; + x32Words.push(x64Word.high); + x32Words.push(x64Word.low); + } + + return X32WordArray.create(x32Words, this.sigBytes); + }, + + /** + * Creates a copy of this word array. + * + * @return {X64WordArray} The clone. + * + * @example + * + * var clone = x64WordArray.clone(); + */ + clone: function() { + var clone = Base.clone.call(this); + + // Clone "words" array + var words = clone.words = this.words.slice(0); + + // Clone each X64Word object + var wordsLength = words.length; + for (var i = 0; i < wordsLength; i++) { + words[i] = words[i].clone(); + } + + return clone; + } + }); + }()); + + + (function() { + // Check if typed arrays are supported + if (typeof ArrayBuffer != 'function') { + return; + } + + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + + // Reference original init + var superInit = WordArray.init; + + // Augment WordArray.init to handle typed arrays + var subInit = WordArray.init = function(typedArray) { + // Convert buffers to uint8 + if (typedArray instanceof ArrayBuffer) { + typedArray = new Uint8Array(typedArray); + } + + // Convert other array views to uint8 + if ( + typedArray instanceof Int8Array || + (typeof Uint8ClampedArray !== "undefined" && typedArray instanceof Uint8ClampedArray) || + typedArray instanceof Int16Array || + typedArray instanceof Uint16Array || + typedArray instanceof Int32Array || + typedArray instanceof Uint32Array || + typedArray instanceof Float32Array || + typedArray instanceof Float64Array + ) { + typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength); + } + + // Handle Uint8Array + if (typedArray instanceof Uint8Array) { + // Shortcut + var typedArrayByteLength = typedArray.byteLength; + + // Extract bytes + var words = []; + for (var i = 0; i < typedArrayByteLength; i++) { + words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8); + } + + // Initialize this word array + superInit.call(this, words, typedArrayByteLength); + } else { + // Else call normal init + superInit.apply(this, arguments); + } + }; + + subInit.prototype = WordArray; + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * UTF-16 BE encoding strategy. + */ + var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = { + /** + * Converts a word array to a UTF-16 BE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 BE string. + * + * @static + * + * @example + * + * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff; + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 BE string to a word array. + * + * @param {string} utf16Str The UTF-16 BE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16.parse(utf16String); + */ + parse: function(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + /** + * UTF-16 LE encoding strategy. + */ + C_enc.Utf16LE = { + /** + * Converts a word array to a UTF-16 LE string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The UTF-16 LE string. + * + * @static + * + * @example + * + * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + + // Convert + var utf16Chars = []; + for (var i = 0; i < sigBytes; i += 2) { + var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff); + utf16Chars.push(String.fromCharCode(codePoint)); + } + + return utf16Chars.join(''); + }, + + /** + * Converts a UTF-16 LE string to a word array. + * + * @param {string} utf16Str The UTF-16 LE string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str); + */ + parse: function(utf16Str) { + // Shortcut + var utf16StrLength = utf16Str.length; + + // Convert + var words = []; + for (var i = 0; i < utf16StrLength; i++) { + words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16)); + } + + return WordArray.create(words, utf16StrLength * 2); + } + }; + + function swapEndian(word) { + return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff); + } + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64 encoding strategy. + */ + var Base64 = C_enc.Base64 = { + /** + * Converts a word array to a Base64 string. + * + * @param {WordArray} wordArray The word array. + * + * @return {string} The Base64 string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64.stringify(wordArray); + */ + stringify: function(wordArray) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; + (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64 string to a word array. + * + * @param {string} base64Str The Base64 string. + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64.parse(base64String); + */ + parse: function(base64Str) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=' + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_enc = C.enc; + + /** + * Base64url encoding strategy. + */ + var Base64url = C_enc.Base64url = { + /** + * Converts a word array to a Base64url string. + * + * @param {WordArray} wordArray The word array. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {string} The Base64url string. + * + * @static + * + * @example + * + * var base64String = CryptoJS.enc.Base64url.stringify(wordArray); + */ + stringify: function(wordArray, urlSafe = true) { + // Shortcuts + var words = wordArray.words; + var sigBytes = wordArray.sigBytes; + var map = urlSafe ? this._safe_map : this._map; + + // Clamp excess bits + wordArray.clamp(); + + // Convert + var base64Chars = []; + for (var i = 0; i < sigBytes; i += 3) { + var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff; + var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff; + var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff; + + var triplet = (byte1 << 16) | (byte2 << 8) | byte3; + + for (var j = 0; + (j < 4) && (i + j * 0.75 < sigBytes); j++) { + base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f)); + } + } + + // Add padding + var paddingChar = map.charAt(64); + if (paddingChar) { + while (base64Chars.length % 4) { + base64Chars.push(paddingChar); + } + } + + return base64Chars.join(''); + }, + + /** + * Converts a Base64url string to a word array. + * + * @param {string} base64Str The Base64url string. + * + * @param {boolean} urlSafe Whether to use url safe + * + * @return {WordArray} The word array. + * + * @static + * + * @example + * + * var wordArray = CryptoJS.enc.Base64url.parse(base64String); + */ + parse: function(base64Str, urlSafe = true) { + // Shortcuts + var base64StrLength = base64Str.length; + var map = urlSafe ? this._safe_map : this._map; + var reverseMap = this._reverseMap; + + if (!reverseMap) { + reverseMap = this._reverseMap = []; + for (var j = 0; j < map.length; j++) { + reverseMap[map.charCodeAt(j)] = j; + } + } + + // Ignore padding + var paddingChar = map.charAt(64); + if (paddingChar) { + var paddingIndex = base64Str.indexOf(paddingChar); + if (paddingIndex !== -1) { + base64StrLength = paddingIndex; + } + } + + // Convert + return parseLoop(base64Str, base64StrLength, reverseMap); + + }, + + _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', + _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_', + }; + + function parseLoop(base64Str, base64StrLength, reverseMap) { + var words = []; + var nBytes = 0; + for (var i = 0; i < base64StrLength; i++) { + if (i % 4) { + var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2); + var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2); + var bitsCombined = bits1 | bits2; + words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8); + nBytes++; + } + } + return WordArray.create(words, nBytes); + } + }()); + + (function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var T = []; + + // Compute constants + (function() { + for (var i = 0; i < 64; i++) { + T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0; + } + }()); + + /** + * MD5 hash algorithm. + */ + var MD5 = C_algo.MD5 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476 + ]); + }, + + _doProcessBlock: function(M, offset) { + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + + // Shortcuts + var H = this._hash.words; + + var M_offset_0 = M[offset + 0]; + var M_offset_1 = M[offset + 1]; + var M_offset_2 = M[offset + 2]; + var M_offset_3 = M[offset + 3]; + var M_offset_4 = M[offset + 4]; + var M_offset_5 = M[offset + 5]; + var M_offset_6 = M[offset + 6]; + var M_offset_7 = M[offset + 7]; + var M_offset_8 = M[offset + 8]; + var M_offset_9 = M[offset + 9]; + var M_offset_10 = M[offset + 10]; + var M_offset_11 = M[offset + 11]; + var M_offset_12 = M[offset + 12]; + var M_offset_13 = M[offset + 13]; + var M_offset_14 = M[offset + 14]; + var M_offset_15 = M[offset + 15]; + + // Working varialbes + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + + // Computation + a = FF(a, b, c, d, M_offset_0, 7, T[0]); + d = FF(d, a, b, c, M_offset_1, 12, T[1]); + c = FF(c, d, a, b, M_offset_2, 17, T[2]); + b = FF(b, c, d, a, M_offset_3, 22, T[3]); + a = FF(a, b, c, d, M_offset_4, 7, T[4]); + d = FF(d, a, b, c, M_offset_5, 12, T[5]); + c = FF(c, d, a, b, M_offset_6, 17, T[6]); + b = FF(b, c, d, a, M_offset_7, 22, T[7]); + a = FF(a, b, c, d, M_offset_8, 7, T[8]); + d = FF(d, a, b, c, M_offset_9, 12, T[9]); + c = FF(c, d, a, b, M_offset_10, 17, T[10]); + b = FF(b, c, d, a, M_offset_11, 22, T[11]); + a = FF(a, b, c, d, M_offset_12, 7, T[12]); + d = FF(d, a, b, c, M_offset_13, 12, T[13]); + c = FF(c, d, a, b, M_offset_14, 17, T[14]); + b = FF(b, c, d, a, M_offset_15, 22, T[15]); + + a = GG(a, b, c, d, M_offset_1, 5, T[16]); + d = GG(d, a, b, c, M_offset_6, 9, T[17]); + c = GG(c, d, a, b, M_offset_11, 14, T[18]); + b = GG(b, c, d, a, M_offset_0, 20, T[19]); + a = GG(a, b, c, d, M_offset_5, 5, T[20]); + d = GG(d, a, b, c, M_offset_10, 9, T[21]); + c = GG(c, d, a, b, M_offset_15, 14, T[22]); + b = GG(b, c, d, a, M_offset_4, 20, T[23]); + a = GG(a, b, c, d, M_offset_9, 5, T[24]); + d = GG(d, a, b, c, M_offset_14, 9, T[25]); + c = GG(c, d, a, b, M_offset_3, 14, T[26]); + b = GG(b, c, d, a, M_offset_8, 20, T[27]); + a = GG(a, b, c, d, M_offset_13, 5, T[28]); + d = GG(d, a, b, c, M_offset_2, 9, T[29]); + c = GG(c, d, a, b, M_offset_7, 14, T[30]); + b = GG(b, c, d, a, M_offset_12, 20, T[31]); + + a = HH(a, b, c, d, M_offset_5, 4, T[32]); + d = HH(d, a, b, c, M_offset_8, 11, T[33]); + c = HH(c, d, a, b, M_offset_11, 16, T[34]); + b = HH(b, c, d, a, M_offset_14, 23, T[35]); + a = HH(a, b, c, d, M_offset_1, 4, T[36]); + d = HH(d, a, b, c, M_offset_4, 11, T[37]); + c = HH(c, d, a, b, M_offset_7, 16, T[38]); + b = HH(b, c, d, a, M_offset_10, 23, T[39]); + a = HH(a, b, c, d, M_offset_13, 4, T[40]); + d = HH(d, a, b, c, M_offset_0, 11, T[41]); + c = HH(c, d, a, b, M_offset_3, 16, T[42]); + b = HH(b, c, d, a, M_offset_6, 23, T[43]); + a = HH(a, b, c, d, M_offset_9, 4, T[44]); + d = HH(d, a, b, c, M_offset_12, 11, T[45]); + c = HH(c, d, a, b, M_offset_15, 16, T[46]); + b = HH(b, c, d, a, M_offset_2, 23, T[47]); + + a = II(a, b, c, d, M_offset_0, 6, T[48]); + d = II(d, a, b, c, M_offset_7, 10, T[49]); + c = II(c, d, a, b, M_offset_14, 15, T[50]); + b = II(b, c, d, a, M_offset_5, 21, T[51]); + a = II(a, b, c, d, M_offset_12, 6, T[52]); + d = II(d, a, b, c, M_offset_3, 10, T[53]); + c = II(c, d, a, b, M_offset_10, 15, T[54]); + b = II(b, c, d, a, M_offset_1, 21, T[55]); + a = II(a, b, c, d, M_offset_8, 6, T[56]); + d = II(d, a, b, c, M_offset_15, 10, T[57]); + c = II(c, d, a, b, M_offset_6, 15, T[58]); + b = II(b, c, d, a, M_offset_13, 21, T[59]); + a = II(a, b, c, d, M_offset_4, 6, T[60]); + d = II(d, a, b, c, M_offset_11, 10, T[61]); + c = II(c, d, a, b, M_offset_2, 15, T[62]); + b = II(b, c, d, a, M_offset_9, 21, T[63]); + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + + var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000); + var nBitsTotalL = nBitsTotal; + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = ( + (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) | + (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00) + ); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) | + (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00) + ); + + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 4; i++) { + // Shortcut + var H_i = H[i]; + + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + function FF(a, b, c, d, x, s, t) { + var n = a + ((b & c) | (~b & d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function GG(a, b, c, d, x, s, t) { + var n = a + ((b & d) | (c & ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function HH(a, b, c, d, x, s, t) { + var n = a + (b ^ c ^ d) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + function II(a, b, c, d, x, s, t) { + var n = a + (c ^ (b | ~d)) + x + t; + return ((n << s) | (n >>> (32 - s))) + b; + } + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.MD5('message'); + * var hash = CryptoJS.MD5(wordArray); + */ + C.MD5 = Hasher._createHelper(MD5); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacMD5(message, key); + */ + C.HmacMD5 = Hasher._createHmacHelper(MD5); + }(Math)); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Reusable object + var W = []; + + /** + * SHA-1 hash algorithm. + */ + var SHA1 = C_algo.SHA1 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0x67452301, 0xefcdab89, + 0x98badcfe, 0x10325476, + 0xc3d2e1f0 + ]); + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + + // Computation + for (var i = 0; i < 80; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]; + W[i] = (n << 1) | (n >>> 31); + } + + var t = ((a << 5) | (a >>> 27)) + e + W[i]; + if (i < 20) { + t += ((b & c) | (~b & d)) + 0x5a827999; + } else if (i < 40) { + t += (b ^ c ^ d) + 0x6ed9eba1; + } else if (i < 60) { + t += ((b & c) | (b & d) | (c & d)) - 0x70e44324; + } else /* if (i < 80) */ { + t += (b ^ c ^ d) - 0x359d3e2a; + } + + e = d; + d = c; + c = (b << 30) | (b >>> 2); + b = a; + a = t; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA1('message'); + * var hash = CryptoJS.SHA1(wordArray); + */ + C.SHA1 = Hasher._createHelper(SHA1); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA1(message, key); + */ + C.HmacSHA1 = Hasher._createHmacHelper(SHA1); + }()); + + + (function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Initialization and round constants tables + var H = []; + var K = []; + + // Compute constants + (function() { + function isPrime(n) { + var sqrtN = Math.sqrt(n); + for (var factor = 2; factor <= sqrtN; factor++) { + if (!(n % factor)) { + return false; + } + } + + return true; + } + + function getFractionalBits(n) { + return ((n - (n | 0)) * 0x100000000) | 0; + } + + var n = 2; + var nPrime = 0; + while (nPrime < 64) { + if (isPrime(n)) { + if (nPrime < 8) { + H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2)); + } + K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3)); + + nPrime++; + } + + n++; + } + }()); + + // Reusable object + var W = []; + + /** + * SHA-256 hash algorithm. + */ + var SHA256 = C_algo.SHA256 = Hasher.extend({ + _doReset: function() { + this._hash = new WordArray.init(H.slice(0)); + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var H = this._hash.words; + + // Working variables + var a = H[0]; + var b = H[1]; + var c = H[2]; + var d = H[3]; + var e = H[4]; + var f = H[5]; + var g = H[6]; + var h = H[7]; + + // Computation + for (var i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + var gamma0x = W[i - 15]; + var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^ + ((gamma0x << 14) | (gamma0x >>> 18)) ^ + (gamma0x >>> 3); + + var gamma1x = W[i - 2]; + var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^ + ((gamma1x << 13) | (gamma1x >>> 19)) ^ + (gamma1x >>> 10); + + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + + var ch = (e & f) ^ (~e & g); + var maj = (a & b) ^ (a & c) ^ (b & c); + + var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22)); + var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25)); + + var t1 = h + sigma1 + ch + K[i] + W[i]; + var t2 = sigma0 + maj; + + h = g; + g = f; + f = e; + e = (d + t1) | 0; + d = c; + c = b; + b = a; + a = (t1 + t2) | 0; + } + + // Intermediate hash value + H[0] = (H[0] + a) | 0; + H[1] = (H[1] + b) | 0; + H[2] = (H[2] + c) | 0; + H[3] = (H[3] + d) | 0; + H[4] = (H[4] + e) | 0; + H[5] = (H[5] + f) | 0; + H[6] = (H[6] + g) | 0; + H[7] = (H[7] + h) | 0; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Return final computed hash + return this._hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA256('message'); + * var hash = CryptoJS.SHA256(wordArray); + */ + C.SHA256 = Hasher._createHelper(SHA256); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA256(message, key); + */ + C.HmacSHA256 = Hasher._createHmacHelper(SHA256); + }(Math)); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA256 = C_algo.SHA256; + + /** + * SHA-224 hash algorithm. + */ + var SHA224 = C_algo.SHA224 = SHA256.extend({ + _doReset: function() { + this._hash = new WordArray.init([ + 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 + ]); + }, + + _doFinalize: function() { + var hash = SHA256._doFinalize.call(this); + + hash.sigBytes -= 4; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA224('message'); + * var hash = CryptoJS.SHA224(wordArray); + */ + C.SHA224 = SHA256._createHelper(SHA224); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA224(message, key); + */ + C.HmacSHA224 = SHA256._createHmacHelper(SHA224); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + + function X64Word_create() { + return X64Word.create.apply(X64Word, arguments); + } + + // Constants + var K = [ + X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd), + X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc), + X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019), + X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118), + X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe), + X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2), + X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1), + X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694), + X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3), + X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65), + X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483), + X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5), + X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210), + X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4), + X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725), + X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70), + X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926), + X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df), + X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8), + X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b), + X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001), + X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30), + X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910), + X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8), + X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53), + X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8), + X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb), + X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3), + X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60), + X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec), + X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9), + X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b), + X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207), + X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178), + X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6), + X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b), + X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493), + X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c), + X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a), + X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817) + ]; + + // Reusable objects + var W = []; + (function() { + for (var i = 0; i < 80; i++) { + W[i] = X64Word_create(); + } + }()); + + /** + * SHA-512 hash algorithm. + */ + var SHA512 = C_algo.SHA512 = Hasher.extend({ + _doReset: function() { + this._hash = new X64WordArray.init([ + new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b), + new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1), + new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f), + new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179) + ]); + }, + + _doProcessBlock: function(M, offset) { + // Shortcuts + var H = this._hash.words; + + var H0 = H[0]; + var H1 = H[1]; + var H2 = H[2]; + var H3 = H[3]; + var H4 = H[4]; + var H5 = H[5]; + var H6 = H[6]; + var H7 = H[7]; + + var H0h = H0.high; + var H0l = H0.low; + var H1h = H1.high; + var H1l = H1.low; + var H2h = H2.high; + var H2l = H2.low; + var H3h = H3.high; + var H3l = H3.low; + var H4h = H4.high; + var H4l = H4.low; + var H5h = H5.high; + var H5l = H5.low; + var H6h = H6.high; + var H6l = H6.low; + var H7h = H7.high; + var H7l = H7.low; + + // Working variables + var ah = H0h; + var al = H0l; + var bh = H1h; + var bl = H1l; + var ch = H2h; + var cl = H2l; + var dh = H3h; + var dl = H3l; + var eh = H4h; + var el = H4l; + var fh = H5h; + var fl = H5l; + var gh = H6h; + var gl = H6l; + var hh = H7h; + var hl = H7l; + + // Rounds + for (var i = 0; i < 80; i++) { + var Wil; + var Wih; + + // Shortcut + var Wi = W[i]; + + // Extend message + if (i < 16) { + Wih = Wi.high = M[offset + i * 2] | 0; + Wil = Wi.low = M[offset + i * 2 + 1] | 0; + } else { + // Gamma0 + var gamma0x = W[i - 15]; + var gamma0xh = gamma0x.high; + var gamma0xl = gamma0x.low; + var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7); + var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25)); + + // Gamma1 + var gamma1x = W[i - 2]; + var gamma1xh = gamma1x.high; + var gamma1xl = gamma1x.low; + var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6); + var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26)); + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7 = W[i - 7]; + var Wi7h = Wi7.high; + var Wi7l = Wi7.low; + + var Wi16 = W[i - 16]; + var Wi16h = Wi16.high; + var Wi16l = Wi16.low; + + Wil = gamma0l + Wi7l; + Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0); + Wil = Wil + gamma1l; + Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0); + Wil = Wil + Wi16l; + Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0); + + Wi.high = Wih; + Wi.low = Wil; + } + + var chh = (eh & fh) ^ (~eh & gh); + var chl = (el & fl) ^ (~el & gl); + var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch); + var majl = (al & bl) ^ (al & cl) ^ (bl & cl); + + var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7)); + var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7)); + var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9)); + var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9)); + + // t1 = h + sigma1 + ch + K[i] + W[i] + var Ki = K[i]; + var Kih = Ki.high; + var Kil = Ki.low; + + var t1l = hl + sigma1l; + var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0); + var t1l = t1l + chl; + var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0); + var t1l = t1l + Kil; + var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0); + var t1l = t1l + Wil; + var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0); + + // t2 = sigma0 + maj + var t2l = sigma0l + majl; + var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0); + + // Update working variables + hh = gh; + hl = gl; + gh = fh; + gl = fl; + fh = eh; + fl = el; + el = (dl + t1l) | 0; + eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0; + dh = ch; + dl = cl; + ch = bh; + cl = bl; + bh = ah; + bl = al; + al = (t1l + t2l) | 0; + ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0; + } + + // Intermediate hash value + H0l = H0.low = (H0l + al); + H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0)); + H1l = H1.low = (H1l + bl); + H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0)); + H2l = H2.low = (H2l + cl); + H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0)); + H3l = H3.low = (H3l + dl); + H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0)); + H4l = H4.low = (H4l + el); + H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0)); + H5l = H5.low = (H5l + fl); + H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0)); + H6l = H6.low = (H6l + gl); + H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0)); + H7l = H7.low = (H7l + hl); + H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0)); + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000); + dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Convert hash to 32-bit word array before returning + var hash = this._hash.toX32(); + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + }, + + blockSize: 1024 / 32 + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA512('message'); + * var hash = CryptoJS.SHA512(wordArray); + */ + C.SHA512 = Hasher._createHelper(SHA512); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA512(message, key); + */ + C.HmacSHA512 = Hasher._createHmacHelper(SHA512); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var X64WordArray = C_x64.WordArray; + var C_algo = C.algo; + var SHA512 = C_algo.SHA512; + + /** + * SHA-384 hash algorithm. + */ + var SHA384 = C_algo.SHA384 = SHA512.extend({ + _doReset: function() { + this._hash = new X64WordArray.init([ + new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507), + new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939), + new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511), + new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4) + ]); + }, + + _doFinalize: function() { + var hash = SHA512._doFinalize.call(this); + + hash.sigBytes -= 16; + + return hash; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA384('message'); + * var hash = CryptoJS.SHA384(wordArray); + */ + C.SHA384 = SHA512._createHelper(SHA384); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA384(message, key); + */ + C.HmacSHA384 = SHA512._createHmacHelper(SHA384); + }()); + + + (function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_x64 = C.x64; + var X64Word = C_x64.Word; + var C_algo = C.algo; + + // Constants tables + var RHO_OFFSETS = []; + var PI_INDEXES = []; + var ROUND_CONSTANTS = []; + + // Compute Constants + (function() { + // Compute rho offset constants + var x = 1, + y = 0; + for (var t = 0; t < 24; t++) { + RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64; + + var newX = y % 5; + var newY = (2 * x + 3 * y) % 5; + x = newX; + y = newY; + } + + // Compute pi index constants + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5; + } + } + + // Compute round constants + var LFSR = 0x01; + for (var i = 0; i < 24; i++) { + var roundConstantMsw = 0; + var roundConstantLsw = 0; + + for (var j = 0; j < 7; j++) { + if (LFSR & 0x01) { + var bitPosition = (1 << j) - 1; + if (bitPosition < 32) { + roundConstantLsw ^= 1 << bitPosition; + } else /* if (bitPosition >= 32) */ { + roundConstantMsw ^= 1 << (bitPosition - 32); + } + } + + // Compute next LFSR + if (LFSR & 0x80) { + // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1 + LFSR = (LFSR << 1) ^ 0x71; + } else { + LFSR <<= 1; + } + } + + ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw); + } + }()); + + // Reusable objects for temporary values + var T = []; + (function() { + for (var i = 0; i < 25; i++) { + T[i] = X64Word.create(); + } + }()); + + /** + * SHA-3 hash algorithm. + */ + var SHA3 = C_algo.SHA3 = Hasher.extend({ + /** + * Configuration options. + * + * @property {number} outputLength + * The desired number of bits in the output hash. + * Only values permitted are: 224, 256, 384, 512. + * Default: 512 + */ + cfg: Hasher.cfg.extend({ + outputLength: 512 + }), + + _doReset: function() { + var state = this._state = [] + for (var i = 0; i < 25; i++) { + state[i] = new X64Word.init(); + } + + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + + _doProcessBlock: function(M, offset) { + // Shortcuts + var state = this._state; + var nBlockSizeLanes = this.blockSize / 2; + + // Absorb + for (var i = 0; i < nBlockSizeLanes; i++) { + // Shortcuts + var M2i = M[offset + 2 * i]; + var M2i1 = M[offset + 2 * i + 1]; + + // Swap endian + M2i = ( + (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) | + (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00) + ); + M2i1 = ( + (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) | + (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00) + ); + + // Absorb message into state + var lane = state[i]; + lane.high ^= M2i1; + lane.low ^= M2i; + } + + // Rounds + for (var round = 0; round < 24; round++) { + // Theta + for (var x = 0; x < 5; x++) { + // Mix column lanes + var tMsw = 0, + tLsw = 0; + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + tMsw ^= lane.high; + tLsw ^= lane.low; + } + + // Temporary values + var Tx = T[x]; + Tx.high = tMsw; + Tx.low = tLsw; + } + for (var x = 0; x < 5; x++) { + // Shortcuts + var Tx4 = T[(x + 4) % 5]; + var Tx1 = T[(x + 1) % 5]; + var Tx1Msw = Tx1.high; + var Tx1Lsw = Tx1.low; + + // Mix surrounding columns + var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31)); + var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31)); + for (var y = 0; y < 5; y++) { + var lane = state[x + 5 * y]; + lane.high ^= tMsw; + lane.low ^= tLsw; + } + } + + // Rho Pi + for (var laneIndex = 1; laneIndex < 25; laneIndex++) { + var tMsw; + var tLsw; + + // Shortcuts + var lane = state[laneIndex]; + var laneMsw = lane.high; + var laneLsw = lane.low; + var rhoOffset = RHO_OFFSETS[laneIndex]; + + // Rotate lanes + if (rhoOffset < 32) { + tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset)); + tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset)); + } else /* if (rhoOffset >= 32) */ { + tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset)); + tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset)); + } + + // Transpose lanes + var TPiLane = T[PI_INDEXES[laneIndex]]; + TPiLane.high = tMsw; + TPiLane.low = tLsw; + } + + // Rho pi at x = y = 0 + var T0 = T[0]; + var state0 = state[0]; + T0.high = state0.high; + T0.low = state0.low; + + // Chi + for (var x = 0; x < 5; x++) { + for (var y = 0; y < 5; y++) { + // Shortcuts + var laneIndex = x + 5 * y; + var lane = state[laneIndex]; + var TLane = T[laneIndex]; + var Tx1Lane = T[((x + 1) % 5) + 5 * y]; + var Tx2Lane = T[((x + 2) % 5) + 5 * y]; + + // Mix rows + lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high); + lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low); + } + } + + // Iota + var lane = state[0]; + var roundConstant = ROUND_CONSTANTS[round]; + lane.high ^= roundConstant.high; + lane.low ^= roundConstant.low; + } + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + var blockSizeBits = this.blockSize * 32; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32); + dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80; + data.sigBytes = dataWords.length * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var state = this._state; + var outputLengthBytes = this.cfg.outputLength / 8; + var outputLengthLanes = outputLengthBytes / 8; + + // Squeeze + var hashWords = []; + for (var i = 0; i < outputLengthLanes; i++) { + // Shortcuts + var lane = state[i]; + var laneMsw = lane.high; + var laneLsw = lane.low; + + // Swap endian + laneMsw = ( + (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) | + (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00) + ); + laneLsw = ( + (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) | + (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00) + ); + + // Squeeze state to retrieve hash + hashWords.push(laneLsw); + hashWords.push(laneMsw); + } + + // Return final computed hash + return new WordArray.init(hashWords, outputLengthBytes); + }, + + clone: function() { + var clone = Hasher.clone.call(this); + + var state = clone._state = this._state.slice(0); + for (var i = 0; i < 25; i++) { + state[i] = state[i].clone(); + } + + return clone; + } + }); + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.SHA3('message'); + * var hash = CryptoJS.SHA3(wordArray); + */ + C.SHA3 = Hasher._createHelper(SHA3); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacSHA3(message, key); + */ + C.HmacSHA3 = Hasher._createHmacHelper(SHA3); + }(Math)); + + + /** @preserve + (c) 2012 by Cédric Mesnil. All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + (function(Math) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var Hasher = C_lib.Hasher; + var C_algo = C.algo; + + // Constants table + var _zl = WordArray.create([ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 + ]); + var _zr = WordArray.create([ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 + ]); + var _sl = WordArray.create([ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 + ]); + var _sr = WordArray.create([ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 + ]); + + var _hl = WordArray.create([0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]); + var _hr = WordArray.create([0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]); + + /** + * RIPEMD160 hash algorithm. + */ + var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({ + _doReset: function() { + this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]); + }, + + _doProcessBlock: function(M, offset) { + + // Swap endian + for (var i = 0; i < 16; i++) { + // Shortcuts + var offset_i = offset + i; + var M_offset_i = M[offset_i]; + + // Swap + M[offset_i] = ( + (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) | + (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00) + ); + } + // Shortcut + var H = this._hash.words; + var hl = _hl.words; + var hr = _hr.words; + var zl = _zl.words; + var zr = _zr.words; + var sl = _sl.words; + var sr = _sr.words; + + // Working variables + var al, bl, cl, dl, el; + var ar, br, cr, dr, er; + + ar = al = H[0]; + br = bl = H[1]; + cr = cl = H[2]; + dr = dl = H[3]; + er = el = H[4]; + // Computation + var t; + for (var i = 0; i < 80; i += 1) { + t = (al + M[offset + zl[i]]) | 0; + if (i < 16) { + t += f1(bl, cl, dl) + hl[0]; + } else if (i < 32) { + t += f2(bl, cl, dl) + hl[1]; + } else if (i < 48) { + t += f3(bl, cl, dl) + hl[2]; + } else if (i < 64) { + t += f4(bl, cl, dl) + hl[3]; + } else { // if (i<80) { + t += f5(bl, cl, dl) + hl[4]; + } + t = t | 0; + t = rotl(t, sl[i]); + t = (t + el) | 0; + al = el; + el = dl; + dl = rotl(cl, 10); + cl = bl; + bl = t; + + t = (ar + M[offset + zr[i]]) | 0; + if (i < 16) { + t += f5(br, cr, dr) + hr[0]; + } else if (i < 32) { + t += f4(br, cr, dr) + hr[1]; + } else if (i < 48) { + t += f3(br, cr, dr) + hr[2]; + } else if (i < 64) { + t += f2(br, cr, dr) + hr[3]; + } else { // if (i<80) { + t += f1(br, cr, dr) + hr[4]; + } + t = t | 0; + t = rotl(t, sr[i]); + t = (t + er) | 0; + ar = er; + er = dr; + dr = rotl(cr, 10); + cr = br; + br = t; + } + // Intermediate hash value + t = (H[1] + cl + dr) | 0; + H[1] = (H[2] + dl + er) | 0; + H[2] = (H[3] + el + ar) | 0; + H[3] = (H[4] + al + br) | 0; + H[4] = (H[0] + bl + cr) | 0; + H[0] = t; + }, + + _doFinalize: function() { + // Shortcuts + var data = this._data; + var dataWords = data.words; + + var nBitsTotal = this._nDataBytes * 8; + var nBitsLeft = data.sigBytes * 8; + + // Add padding + dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32); + dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = ( + (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) | + (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00) + ); + data.sigBytes = (dataWords.length + 1) * 4; + + // Hash final blocks + this._process(); + + // Shortcuts + var hash = this._hash; + var H = hash.words; + + // Swap endian + for (var i = 0; i < 5; i++) { + // Shortcut + var H_i = H[i]; + + // Swap + H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) | + (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00); + } + + // Return final computed hash + return hash; + }, + + clone: function() { + var clone = Hasher.clone.call(this); + clone._hash = this._hash.clone(); + + return clone; + } + }); + + + function f1(x, y, z) { + return ((x) ^ (y) ^ (z)); + + } + + function f2(x, y, z) { + return (((x) & (y)) | ((~x) & (z))); + } + + function f3(x, y, z) { + return (((x) | (~(y))) ^ (z)); + } + + function f4(x, y, z) { + return (((x) & (z)) | ((y) & (~(z)))); + } + + function f5(x, y, z) { + return ((x) ^ ((y) | (~(z)))); + + } + + function rotl(x, n) { + return (x << n) | (x >>> (32 - n)); + } + + + /** + * Shortcut function to the hasher's object interface. + * + * @param {WordArray|string} message The message to hash. + * + * @return {WordArray} The hash. + * + * @static + * + * @example + * + * var hash = CryptoJS.RIPEMD160('message'); + * var hash = CryptoJS.RIPEMD160(wordArray); + */ + C.RIPEMD160 = Hasher._createHelper(RIPEMD160); + + /** + * Shortcut function to the HMAC's object interface. + * + * @param {WordArray|string} message The message to hash. + * @param {WordArray|string} key The secret key. + * + * @return {WordArray} The HMAC. + * + * @static + * + * @example + * + * var hmac = CryptoJS.HmacRIPEMD160(message, key); + */ + C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160); + }(Math)); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var C_algo = C.algo; + + /** + * HMAC algorithm. + */ + var HMAC = C_algo.HMAC = Base.extend({ + /** + * Initializes a newly created HMAC. + * + * @param {Hasher} hasher The hash algorithm to use. + * @param {WordArray|string} key The secret key. + * + * @example + * + * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); + */ + init: function(hasher, key) { + // Init hasher + hasher = this._hasher = new hasher.init(); + + // Convert string to WordArray, else assume WordArray already + if (typeof key == 'string') { + key = Utf8.parse(key); + } + + // Shortcuts + var hasherBlockSize = hasher.blockSize; + var hasherBlockSizeBytes = hasherBlockSize * 4; + + // Allow arbitrary length keys + if (key.sigBytes > hasherBlockSizeBytes) { + key = hasher.finalize(key); + } + + // Clamp excess bits + key.clamp(); + + // Clone key for inner and outer pads + var oKey = this._oKey = key.clone(); + var iKey = this._iKey = key.clone(); + + // Shortcuts + var oKeyWords = oKey.words; + var iKeyWords = iKey.words; + + // XOR keys with pad constants + for (var i = 0; i < hasherBlockSize; i++) { + oKeyWords[i] ^= 0x5c5c5c5c; + iKeyWords[i] ^= 0x36363636; + } + oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes; + + // Set initial values + this.reset(); + }, + + /** + * Resets this HMAC to its initial state. + * + * @example + * + * hmacHasher.reset(); + */ + reset: function() { + // Shortcut + var hasher = this._hasher; + + // Reset + hasher.reset(); + hasher.update(this._iKey); + }, + + /** + * Updates this HMAC with a message. + * + * @param {WordArray|string} messageUpdate The message to append. + * + * @return {HMAC} This HMAC instance. + * + * @example + * + * hmacHasher.update('message'); + * hmacHasher.update(wordArray); + */ + update: function(messageUpdate) { + this._hasher.update(messageUpdate); + + // Chainable + return this; + }, + + /** + * Finalizes the HMAC computation. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} messageUpdate (Optional) A final message update. + * + * @return {WordArray} The HMAC. + * + * @example + * + * var hmac = hmacHasher.finalize(); + * var hmac = hmacHasher.finalize('message'); + * var hmac = hmacHasher.finalize(wordArray); + */ + finalize: function(messageUpdate) { + // Shortcut + var hasher = this._hasher; + + // Compute HMAC + var innerHash = hasher.finalize(messageUpdate); + hasher.reset(); + var hmac = hasher.finalize(this._oKey.clone().concat(innerHash)); + + return hmac; + } + }); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var SHA1 = C_algo.SHA1; + var HMAC = C_algo.HMAC; + + /** + * Password-Based Key Derivation Function 2 algorithm. + */ + var PBKDF2 = C_algo.PBKDF2 = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hasher to use. Default: SHA1 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128 / 32, + hasher: SHA1, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.PBKDF2.create(); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 }); + */ + init: function(cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function(password, salt) { + // Shortcut + var cfg = this.cfg; + + // Init HMAC + var hmac = HMAC.create(cfg.hasher, password); + + // Initial values + var derivedKey = WordArray.create(); + var blockIndex = WordArray.create([0x00000001]); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var blockIndexWords = blockIndex.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + var block = hmac.update(salt).finalize(blockIndex); + hmac.reset(); + + // Shortcuts + var blockWords = block.words; + var blockWordsLength = blockWords.length; + + // Iterations + var intermediate = block; + for (var i = 1; i < iterations; i++) { + intermediate = hmac.finalize(intermediate); + hmac.reset(); + + // Shortcut + var intermediateWords = intermediate.words; + + // XOR intermediate with block + for (var j = 0; j < blockWordsLength; j++) { + blockWords[j] ^= intermediateWords[j]; + } + } + + derivedKey.concat(block); + blockIndexWords[0]++; + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Computes the Password-Based Key Derivation Function 2. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.PBKDF2(password, salt); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 }); + * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.PBKDF2 = function(password, salt, cfg) { + return PBKDF2.create(cfg).compute(password, salt); + }; + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var C_algo = C.algo; + var MD5 = C_algo.MD5; + + /** + * This key derivation function is meant to conform with EVP_BytesToKey. + * www.openssl.org/docs/crypto/EVP_BytesToKey.html + */ + var EvpKDF = C_algo.EvpKDF = Base.extend({ + /** + * Configuration options. + * + * @property {number} keySize The key size in words to generate. Default: 4 (128 bits) + * @property {Hasher} hasher The hash algorithm to use. Default: MD5 + * @property {number} iterations The number of iterations to perform. Default: 1 + */ + cfg: Base.extend({ + keySize: 128 / 32, + hasher: MD5, + iterations: 1 + }), + + /** + * Initializes a newly created key derivation function. + * + * @param {Object} cfg (Optional) The configuration options to use for the derivation. + * + * @example + * + * var kdf = CryptoJS.algo.EvpKDF.create(); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 }); + * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 }); + */ + init: function(cfg) { + this.cfg = this.cfg.extend(cfg); + }, + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * + * @return {WordArray} The derived key. + * + * @example + * + * var key = kdf.compute(password, salt); + */ + compute: function(password, salt) { + var block; + + // Shortcut + var cfg = this.cfg; + + // Init hasher + var hasher = cfg.hasher.create(); + + // Initial values + var derivedKey = WordArray.create(); + + // Shortcuts + var derivedKeyWords = derivedKey.words; + var keySize = cfg.keySize; + var iterations = cfg.iterations; + + // Generate key + while (derivedKeyWords.length < keySize) { + if (block) { + hasher.update(block); + } + block = hasher.update(password).finalize(salt); + hasher.reset(); + + // Iterations + for (var i = 1; i < iterations; i++) { + block = hasher.finalize(block); + hasher.reset(); + } + + derivedKey.concat(block); + } + derivedKey.sigBytes = keySize * 4; + + return derivedKey; + } + }); + + /** + * Derives a key from a password. + * + * @param {WordArray|string} password The password. + * @param {WordArray|string} salt A salt. + * @param {Object} cfg (Optional) The configuration options to use for this computation. + * + * @return {WordArray} The derived key. + * + * @static + * + * @example + * + * var key = CryptoJS.EvpKDF(password, salt); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 }); + * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 }); + */ + C.EvpKDF = function(password, salt, cfg) { + return EvpKDF.create(cfg).compute(password, salt); + }; + }()); + + + /** + * Cipher core components. + */ + CryptoJS.lib.Cipher || (function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var Base = C_lib.Base; + var WordArray = C_lib.WordArray; + var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm; + var C_enc = C.enc; + var Utf8 = C_enc.Utf8; + var Base64 = C_enc.Base64; + var C_algo = C.algo; + var EvpKDF = C_algo.EvpKDF; + + /** + * Abstract base cipher template. + * + * @property {number} keySize This cipher's key size. Default: 4 (128 bits) + * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits) + * @property {number} _ENC_XFORM_MODE A constant representing encryption mode. + * @property {number} _DEC_XFORM_MODE A constant representing decryption mode. + */ + var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({ + /** + * Configuration options. + * + * @property {WordArray} iv The IV to use for this operation. + */ + cfg: Base.extend(), + + /** + * Creates this cipher in encryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray }); + */ + createEncryptor: function(key, cfg) { + return this.create(this._ENC_XFORM_MODE, key, cfg); + }, + + /** + * Creates this cipher in decryption mode. + * + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {Cipher} A cipher instance. + * + * @static + * + * @example + * + * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray }); + */ + createDecryptor: function(key, cfg) { + return this.create(this._DEC_XFORM_MODE, key, cfg); + }, + + /** + * Initializes a newly created cipher. + * + * @param {number} xformMode Either the encryption or decryption transormation mode constant. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @example + * + * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }); + */ + init: function(xformMode, key, cfg) { + // Apply config defaults + this.cfg = this.cfg.extend(cfg); + + // Store transform mode and key + this._xformMode = xformMode; + this._key = key; + + // Set initial values + this.reset(); + }, + + /** + * Resets this cipher to its initial state. + * + * @example + * + * cipher.reset(); + */ + reset: function() { + // Reset data buffer + BufferedBlockAlgorithm.reset.call(this); + + // Perform concrete-cipher logic + this._doReset(); + }, + + /** + * Adds data to be encrypted or decrypted. + * + * @param {WordArray|string} dataUpdate The data to encrypt or decrypt. + * + * @return {WordArray} The data after processing. + * + * @example + * + * var encrypted = cipher.process('data'); + * var encrypted = cipher.process(wordArray); + */ + process: function(dataUpdate) { + // Append + this._append(dataUpdate); + + // Process available blocks + return this._process(); + }, + + /** + * Finalizes the encryption or decryption process. + * Note that the finalize operation is effectively a destructive, read-once operation. + * + * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt. + * + * @return {WordArray} The data after final processing. + * + * @example + * + * var encrypted = cipher.finalize(); + * var encrypted = cipher.finalize('data'); + * var encrypted = cipher.finalize(wordArray); + */ + finalize: function(dataUpdate) { + // Final data update + if (dataUpdate) { + this._append(dataUpdate); + } + + // Perform concrete-cipher logic + var finalProcessedData = this._doFinalize(); + + return finalProcessedData; + }, + + keySize: 128 / 32, + + ivSize: 128 / 32, + + _ENC_XFORM_MODE: 1, + + _DEC_XFORM_MODE: 2, + + /** + * Creates shortcut functions to a cipher's object interface. + * + * @param {Cipher} cipher The cipher to create a helper for. + * + * @return {Object} An object with encrypt and decrypt shortcut functions. + * + * @static + * + * @example + * + * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES); + */ + _createHelper: (function() { + function selectCipherStrategy(key) { + if (typeof key == 'string') { + return PasswordBasedCipher; + } else { + return SerializableCipher; + } + } + + return function(cipher) { + return { + encrypt: function(message, key, cfg) { + return selectCipherStrategy(key).encrypt(cipher, message, key, cfg); + }, + + decrypt: function(ciphertext, key, cfg) { + return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg); + } + }; + }; + }()) + }); + + /** + * Abstract base stream cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits) + */ + var StreamCipher = C_lib.StreamCipher = Cipher.extend({ + _doFinalize: function() { + // Process partial blocks + var finalProcessedBlocks = this._process(!!'flush'); + + return finalProcessedBlocks; + }, + + blockSize: 1 + }); + + /** + * Mode namespace. + */ + var C_mode = C.mode = {}; + + /** + * Abstract base block cipher mode template. + */ + var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({ + /** + * Creates this mode for encryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words); + */ + createEncryptor: function(cipher, iv) { + return this.Encryptor.create(cipher, iv); + }, + + /** + * Creates this mode for decryption. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @static + * + * @example + * + * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words); + */ + createDecryptor: function(cipher, iv) { + return this.Decryptor.create(cipher, iv); + }, + + /** + * Initializes a newly created mode. + * + * @param {Cipher} cipher A block cipher instance. + * @param {Array} iv The IV words. + * + * @example + * + * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words); + */ + init: function(cipher, iv) { + this._cipher = cipher; + this._iv = iv; + } + }); + + /** + * Cipher Block Chaining mode. + */ + var CBC = C_mode.CBC = (function() { + /** + * Abstract base CBC mode. + */ + var CBC = BlockCipherMode.extend(); + + /** + * CBC encryptor. + */ + CBC.Encryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // XOR and encrypt + xorBlock.call(this, words, offset, blockSize); + cipher.encryptBlock(words, offset); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + /** + * CBC decryptor. + */ + CBC.Decryptor = CBC.extend({ + /** + * Processes the data block at offset. + * + * @param {Array} words The data words to operate on. + * @param {number} offset The offset where the block starts. + * + * @example + * + * mode.processBlock(data.words, offset); + */ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + // Decrypt and XOR + cipher.decryptBlock(words, offset); + xorBlock.call(this, words, offset, blockSize); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function xorBlock(words, offset, blockSize) { + var block; + + // Shortcut + var iv = this._iv; + + // Choose mixing block + if (iv) { + block = iv; + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + block = this._prevBlock; + } + + // XOR blocks + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= block[i]; + } + } + + return CBC; + }()); + + /** + * Padding namespace. + */ + var C_pad = C.pad = {}; + + /** + * PKCS #5/7 padding strategy. + */ + var Pkcs7 = C_pad.Pkcs7 = { + /** + * Pads data using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to pad. + * @param {number} blockSize The multiple that the data should be padded to. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.pad(wordArray, 4); + */ + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Create padding word + var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes; + + // Create padding + var paddingWords = []; + for (var i = 0; i < nPaddingBytes; i += 4) { + paddingWords.push(paddingWord); + } + var padding = WordArray.create(paddingWords, nPaddingBytes); + + // Add padding + data.concat(padding); + }, + + /** + * Unpads data that had been padded using the algorithm defined in PKCS #5/7. + * + * @param {WordArray} data The data to unpad. + * + * @static + * + * @example + * + * CryptoJS.pad.Pkcs7.unpad(wordArray); + */ + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + /** + * Abstract base block cipher template. + * + * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits) + */ + var BlockCipher = C_lib.BlockCipher = Cipher.extend({ + /** + * Configuration options. + * + * @property {Mode} mode The block mode to use. Default: CBC + * @property {Padding} padding The padding strategy to use. Default: Pkcs7 + */ + cfg: Cipher.cfg.extend({ + mode: CBC, + padding: Pkcs7 + }), + + reset: function() { + var modeCreator; + + // Reset cipher + Cipher.reset.call(this); + + // Shortcuts + var cfg = this.cfg; + var iv = cfg.iv; + var mode = cfg.mode; + + // Reset block mode + if (this._xformMode == this._ENC_XFORM_MODE) { + modeCreator = mode.createEncryptor; + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + modeCreator = mode.createDecryptor; + // Keep at least one block in the buffer for unpadding + this._minBufferSize = 1; + } + + if (this._mode && this._mode.__creator == modeCreator) { + this._mode.init(this, iv && iv.words); + } else { + this._mode = modeCreator.call(mode, this, iv && iv.words); + this._mode.__creator = modeCreator; + } + }, + + _doProcessBlock: function(words, offset) { + this._mode.processBlock(words, offset); + }, + + _doFinalize: function() { + var finalProcessedBlocks; + + // Shortcut + var padding = this.cfg.padding; + + // Finalize + if (this._xformMode == this._ENC_XFORM_MODE) { + // Pad data + padding.pad(this._data, this.blockSize); + + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ { + // Process final blocks + finalProcessedBlocks = this._process(!!'flush'); + + // Unpad data + padding.unpad(finalProcessedBlocks); + } + + return finalProcessedBlocks; + }, + + blockSize: 128 / 32 + }); + + /** + * A collection of cipher parameters. + * + * @property {WordArray} ciphertext The raw ciphertext. + * @property {WordArray} key The key to this ciphertext. + * @property {WordArray} iv The IV used in the ciphering operation. + * @property {WordArray} salt The salt used with a key derivation function. + * @property {Cipher} algorithm The cipher algorithm. + * @property {Mode} mode The block mode used in the ciphering operation. + * @property {Padding} padding The padding scheme used in the ciphering operation. + * @property {number} blockSize The block size of the cipher. + * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string. + */ + var CipherParams = C_lib.CipherParams = Base.extend({ + /** + * Initializes a newly created cipher params object. + * + * @param {Object} cipherParams An object with any of the possible cipher parameters. + * + * @example + * + * var cipherParams = CryptoJS.lib.CipherParams.create({ + * ciphertext: ciphertextWordArray, + * key: keyWordArray, + * iv: ivWordArray, + * salt: saltWordArray, + * algorithm: CryptoJS.algo.AES, + * mode: CryptoJS.mode.CBC, + * padding: CryptoJS.pad.PKCS7, + * blockSize: 4, + * formatter: CryptoJS.format.OpenSSL + * }); + */ + init: function(cipherParams) { + this.mixIn(cipherParams); + }, + + /** + * Converts this cipher params object to a string. + * + * @param {Format} formatter (Optional) The formatting strategy to use. + * + * @return {string} The stringified cipher params. + * + * @throws Error If neither the formatter nor the default formatter is set. + * + * @example + * + * var string = cipherParams + ''; + * var string = cipherParams.toString(); + * var string = cipherParams.toString(CryptoJS.format.OpenSSL); + */ + toString: function(formatter) { + return (formatter || this.formatter).stringify(this); + } + }); + + /** + * Format namespace. + */ + var C_format = C.format = {}; + + /** + * OpenSSL formatting strategy. + */ + var OpenSSLFormatter = C_format.OpenSSL = { + /** + * Converts a cipher params object to an OpenSSL-compatible string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The OpenSSL-compatible string. + * + * @static + * + * @example + * + * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams); + */ + stringify: function(cipherParams) { + var wordArray; + + // Shortcuts + var ciphertext = cipherParams.ciphertext; + var salt = cipherParams.salt; + + // Format + if (salt) { + wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext); + } else { + wordArray = ciphertext; + } + + return wordArray.toString(Base64); + }, + + /** + * Converts an OpenSSL-compatible string to a cipher params object. + * + * @param {string} openSSLStr The OpenSSL-compatible string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString); + */ + parse: function(openSSLStr) { + var salt; + + // Parse base64 + var ciphertext = Base64.parse(openSSLStr); + + // Shortcut + var ciphertextWords = ciphertext.words; + + // Test for salt + if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) { + // Extract salt + salt = WordArray.create(ciphertextWords.slice(2, 4)); + + // Remove salt from ciphertext + ciphertextWords.splice(0, 4); + ciphertext.sigBytes -= 16; + } + + return CipherParams.create({ + ciphertext: ciphertext, + salt: salt + }); + } + }; + + /** + * A cipher wrapper that returns ciphertext as a serializable cipher params object. + */ + var SerializableCipher = C_lib.SerializableCipher = Base.extend({ + /** + * Configuration options. + * + * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL + */ + cfg: Base.extend({ + format: OpenSSLFormatter + }), + + /** + * Encrypts a message. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv }); + * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + encrypt: function(cipher, message, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Encrypt + var encryptor = cipher.createEncryptor(key, cfg); + var ciphertext = encryptor.finalize(message); + + // Shortcut + var cipherCfg = encryptor.cfg; + + // Create and return serializable cipher params + return CipherParams.create({ + ciphertext: ciphertext, + key: key, + iv: cipherCfg.iv, + algorithm: cipher, + mode: cipherCfg.mode, + padding: cipherCfg.padding, + blockSize: cipher.blockSize, + formatter: cfg.format + }); + }, + + /** + * Decrypts serialized ciphertext. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {WordArray} key The key. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL }); + */ + decrypt: function(cipher, ciphertext, key, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Decrypt + var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext); + + return plaintext; + }, + + /** + * Converts serialized ciphertext to CipherParams, + * else assumed CipherParams already and returns ciphertext unchanged. + * + * @param {CipherParams|string} ciphertext The ciphertext. + * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext. + * + * @return {CipherParams} The unserialized ciphertext. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format); + */ + _parse: function(ciphertext, format) { + if (typeof ciphertext == 'string') { + return format.parse(ciphertext, this); + } else { + return ciphertext; + } + } + }); + + /** + * Key derivation function namespace. + */ + var C_kdf = C.kdf = {}; + + /** + * OpenSSL key derivation function. + */ + var OpenSSLKdf = C_kdf.OpenSSL = { + /** + * Derives a key and IV from a password. + * + * @param {string} password The password to derive from. + * @param {number} keySize The size in words of the key to generate. + * @param {number} ivSize The size in words of the IV to generate. + * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly. + * + * @return {CipherParams} A cipher params object with the key, IV, and salt. + * + * @static + * + * @example + * + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32); + * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt'); + */ + execute: function(password, keySize, ivSize, salt) { + // Generate random salt + if (!salt) { + salt = WordArray.random(64 / 8); + } + + // Derive key and IV + var key = EvpKDF.create({ + keySize: keySize + ivSize + }).compute(password, salt); + + // Separate key and IV + var iv = WordArray.create(key.words.slice(keySize), ivSize * 4); + key.sigBytes = keySize * 4; + + // Return params + return CipherParams.create({ + key: key, + iv: iv, + salt: salt + }); + } + }; + + /** + * A serializable cipher wrapper that derives the key from a password, + * and returns ciphertext as a serializable cipher params object. + */ + var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({ + /** + * Configuration options. + * + * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL + */ + cfg: SerializableCipher.cfg.extend({ + kdf: OpenSSLKdf + }), + + /** + * Encrypts a message using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {WordArray|string} message The message to encrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {CipherParams} A cipher params object. + * + * @static + * + * @example + * + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password'); + * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL }); + */ + encrypt: function(cipher, message, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Encrypt + var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg); + + // Mix in derived params + ciphertext.mixIn(derivedParams); + + return ciphertext; + }, + + /** + * Decrypts serialized ciphertext using a password. + * + * @param {Cipher} cipher The cipher algorithm to use. + * @param {CipherParams|string} ciphertext The ciphertext to decrypt. + * @param {string} password The password. + * @param {Object} cfg (Optional) The configuration options to use for this operation. + * + * @return {WordArray} The plaintext. + * + * @static + * + * @example + * + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL }); + * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL }); + */ + decrypt: function(cipher, ciphertext, password, cfg) { + // Apply config defaults + cfg = this.cfg.extend(cfg); + + // Convert string to CipherParams + ciphertext = this._parse(ciphertext, cfg.format); + + // Derive key and other params + var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt); + + // Add IV to config + cfg.iv = derivedParams.iv; + + // Decrypt + var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg); + + return plaintext; + } + }); + }()); + + + /** + * Cipher Feedback block mode. + */ + CryptoJS.mode.CFB = (function() { + var CFB = CryptoJS.lib.BlockCipherMode.extend(); + + CFB.Encryptor = CFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // Remember this block to use with next block + this._prevBlock = words.slice(offset, offset + blockSize); + } + }); + + CFB.Decryptor = CFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher; + var blockSize = cipher.blockSize; + + // Remember this block to use with next block + var thisBlock = words.slice(offset, offset + blockSize); + + generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher); + + // This block becomes the previous block + this._prevBlock = thisBlock; + } + }); + + function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) { + var keystream; + + // Shortcut + var iv = this._iv; + + // Generate keystream + if (iv) { + keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } else { + keystream = this._prevBlock; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + + return CFB; + }()); + + + /** + * Counter block mode. + */ + CryptoJS.mode.CTR = (function() { + var CTR = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = CTR.Encryptor = CTR.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Increment counter + counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0 + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTR.Decryptor = Encryptor; + + return CTR; + }()); + + + /** @preserve + * Counter block mode compatible with Dr Brian Gladman fileenc.c + * derived from CryptoJS.mode.CTR + * Jan Hruby jhruby.web@gmail.com + */ + CryptoJS.mode.CTRGladman = (function() { + var CTRGladman = CryptoJS.lib.BlockCipherMode.extend(); + + function incWord(word) { + if (((word >> 24) & 0xff) === 0xff) { //overflow + var b1 = (word >> 16) & 0xff; + var b2 = (word >> 8) & 0xff; + var b3 = word & 0xff; + + if (b1 === 0xff) // overflow b1 + { + b1 = 0; + if (b2 === 0xff) { + b2 = 0; + if (b3 === 0xff) { + b3 = 0; + } else { + ++b3; + } + } else { + ++b2; + } + } else { + ++b1; + } + + word = 0; + word += (b1 << 16); + word += (b2 << 8); + word += b3; + } else { + word += (0x01 << 24); + } + return word; + } + + function incCounter(counter) { + if ((counter[0] = incWord(counter[0])) === 0) { + // encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8 + counter[1] = incWord(counter[1]); + } + return counter; + } + + var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var counter = this._counter; + + // Generate keystream + if (iv) { + counter = this._counter = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + + incCounter(counter); + + var keystream = counter.slice(0); + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + CTRGladman.Decryptor = Encryptor; + + return CTRGladman; + }()); + + + + + /** + * Output Feedback block mode. + */ + CryptoJS.mode.OFB = (function() { + var OFB = CryptoJS.lib.BlockCipherMode.extend(); + + var Encryptor = OFB.Encryptor = OFB.extend({ + processBlock: function(words, offset) { + // Shortcuts + var cipher = this._cipher + var blockSize = cipher.blockSize; + var iv = this._iv; + var keystream = this._keystream; + + // Generate keystream + if (iv) { + keystream = this._keystream = iv.slice(0); + + // Remove IV for subsequent blocks + this._iv = undefined; + } + cipher.encryptBlock(keystream, 0); + + // Encrypt + for (var i = 0; i < blockSize; i++) { + words[offset + i] ^= keystream[i]; + } + } + }); + + OFB.Decryptor = Encryptor; + + return OFB; + }()); + + + /** + * Electronic Codebook block mode. + */ + CryptoJS.mode.ECB = (function() { + var ECB = CryptoJS.lib.BlockCipherMode.extend(); + + ECB.Encryptor = ECB.extend({ + processBlock: function(words, offset) { + this._cipher.encryptBlock(words, offset); + } + }); + + ECB.Decryptor = ECB.extend({ + processBlock: function(words, offset) { + this._cipher.decryptBlock(words, offset); + } + }); + + return ECB; + }()); + + + /** + * ANSI X.923 padding strategy. + */ + CryptoJS.pad.AnsiX923 = { + pad: function(data, blockSize) { + // Shortcuts + var dataSigBytes = data.sigBytes; + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes; + + // Compute last byte position + var lastBytePos = dataSigBytes + nPaddingBytes - 1; + + // Pad + data.clamp(); + data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8); + data.sigBytes += nPaddingBytes; + }, + + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + + /** + * ISO 10126 padding strategy. + */ + CryptoJS.pad.Iso10126 = { + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Count padding bytes + var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes; + + // Pad + data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)). + concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1)); + }, + + unpad: function(data) { + // Get number of padding bytes from last byte + var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff; + + // Remove padding + data.sigBytes -= nPaddingBytes; + } + }; + + + /** + * ISO/IEC 9797-1 Padding Method 2. + */ + CryptoJS.pad.Iso97971 = { + pad: function(data, blockSize) { + // Add 0x80 byte + data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1)); + + // Zero pad the rest + CryptoJS.pad.ZeroPadding.pad(data, blockSize); + }, + + unpad: function(data) { + // Remove zero padding + CryptoJS.pad.ZeroPadding.unpad(data); + + // Remove one more byte -- the 0x80 byte + data.sigBytes--; + } + }; + + + /** + * Zero padding strategy. + */ + CryptoJS.pad.ZeroPadding = { + pad: function(data, blockSize) { + // Shortcut + var blockSizeBytes = blockSize * 4; + + // Pad + data.clamp(); + data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes); + }, + + unpad: function(data) { + // Shortcut + var dataWords = data.words; + + // Unpad + var i = data.sigBytes - 1; + for (var i = data.sigBytes - 1; i >= 0; i--) { + if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) { + data.sigBytes = i + 1; + break; + } + } + } + }; + + + /** + * A noop padding strategy. + */ + CryptoJS.pad.NoPadding = { + pad: function() {}, + + unpad: function() {} + }; + + + (function(undefined) { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var CipherParams = C_lib.CipherParams; + var C_enc = C.enc; + var Hex = C_enc.Hex; + var C_format = C.format; + + var HexFormatter = C_format.Hex = { + /** + * Converts the ciphertext of a cipher params object to a hexadecimally encoded string. + * + * @param {CipherParams} cipherParams The cipher params object. + * + * @return {string} The hexadecimally encoded string. + * + * @static + * + * @example + * + * var hexString = CryptoJS.format.Hex.stringify(cipherParams); + */ + stringify: function(cipherParams) { + return cipherParams.ciphertext.toString(Hex); + }, + + /** + * Converts a hexadecimally encoded ciphertext string to a cipher params object. + * + * @param {string} input The hexadecimally encoded string. + * + * @return {CipherParams} The cipher params object. + * + * @static + * + * @example + * + * var cipherParams = CryptoJS.format.Hex.parse(hexString); + */ + parse: function(input) { + var ciphertext = Hex.parse(input); + return CipherParams.create({ + ciphertext: ciphertext + }); + } + }; + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Lookup tables + var SBOX = []; + var INV_SBOX = []; + var SUB_MIX_0 = []; + var SUB_MIX_1 = []; + var SUB_MIX_2 = []; + var SUB_MIX_3 = []; + var INV_SUB_MIX_0 = []; + var INV_SUB_MIX_1 = []; + var INV_SUB_MIX_2 = []; + var INV_SUB_MIX_3 = []; + + // Compute lookup tables + (function() { + // Compute double table + var d = []; + for (var i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = (i << 1) ^ 0x11b; + } + } + + // Walk GF(2^8) + var x = 0; + var xi = 0; + for (var i = 0; i < 256; i++) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4); + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63; + SBOX[x] = sx; + INV_SBOX[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100); + SUB_MIX_0[x] = (t << 24) | (t >>> 8); + SUB_MIX_1[x] = (t << 16) | (t >>> 16); + SUB_MIX_2[x] = (t << 8) | (t >>> 24); + SUB_MIX_3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100); + INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8); + INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16); + INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24); + INV_SUB_MIX_3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + }()); + + // Precomputed Rcon lookup + var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + + /** + * AES block cipher algorithm. + */ + var AES = C_algo.AES = BlockCipher.extend({ + _doReset: function() { + var t; + + // Skip reset of nRounds has been set before and key did not change + if (this._nRounds && this._keyPriorReset === this._key) { + return; + } + + // Shortcuts + var key = this._keyPriorReset = this._key; + var keyWords = key.words; + var keySize = key.sigBytes / 4; + + // Compute number of rounds + var nRounds = this._nRounds = keySize + 6; + + // Compute number of key schedule rows + var ksRows = (nRounds + 1) * 4; + + // Compute key schedule + var keySchedule = this._keySchedule = []; + for (var ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + keySchedule[ksRow] = keyWords[ksRow]; + } else { + t = keySchedule[ksRow - 1]; + + if (!(ksRow % keySize)) { + // Rot word + t = (t << 8) | (t >>> 24); + + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + + // Mix Rcon + t ^= RCON[(ksRow / keySize) | 0] << 24; + } else if (keySize > 6 && ksRow % keySize == 4) { + // Sub word + t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff]; + } + + keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t; + } + } + + // Compute inv key schedule + var invKeySchedule = this._invKeySchedule = []; + for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) { + var ksRow = ksRows - invKsRow; + + if (invKsRow % 4) { + var t = keySchedule[ksRow]; + } else { + var t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^ + INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]]; + } + } + }, + + encryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX); + }, + + decryptBlock: function(M, offset) { + // Swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + + this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX); + + // Inv swap 2nd and 4th rows + var t = M[offset + 1]; + M[offset + 1] = M[offset + 3]; + M[offset + 3] = t; + }, + + _doCryptBlock: function(M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) { + // Shortcut + var nRounds = this._nRounds; + + // Get input, add round key + var s0 = M[offset] ^ keySchedule[0]; + var s1 = M[offset + 1] ^ keySchedule[1]; + var s2 = M[offset + 2] ^ keySchedule[2]; + var s3 = M[offset + 3] ^ keySchedule[3]; + + // Key schedule row counter + var ksRow = 4; + + // Rounds + for (var round = 1; round < nRounds; round++) { + // Shift rows, sub bytes, mix columns, add round key + var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++]; + var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++]; + var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++]; + var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++]; + + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + } + + // Shift rows, sub bytes, add round key + var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; + var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; + var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; + var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; + + // Set output + M[offset] = t0; + M[offset + 1] = t1; + M[offset + 2] = t2; + M[offset + 3] = t3; + }, + + keySize: 256 / 32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); + */ + C.AES = BlockCipher._createHelper(AES); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var WordArray = C_lib.WordArray; + var BlockCipher = C_lib.BlockCipher; + var C_algo = C.algo; + + // Permuted Choice 1 constants + var PC1 = [ + 57, 49, 41, 33, 25, 17, 9, 1, + 58, 50, 42, 34, 26, 18, 10, 2, + 59, 51, 43, 35, 27, 19, 11, 3, + 60, 52, 44, 36, 63, 55, 47, 39, + 31, 23, 15, 7, 62, 54, 46, 38, + 30, 22, 14, 6, 61, 53, 45, 37, + 29, 21, 13, 5, 28, 20, 12, 4 + ]; + + // Permuted Choice 2 constants + var PC2 = [ + 14, 17, 11, 24, 1, 5, + 3, 28, 15, 6, 21, 10, + 23, 19, 12, 4, 26, 8, + 16, 7, 27, 20, 13, 2, + 41, 52, 31, 37, 47, 55, + 30, 40, 51, 45, 33, 48, + 44, 49, 39, 56, 34, 53, + 46, 42, 50, 36, 29, 32 + ]; + + // Cumulative bit shift constants + var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28]; + + // SBOXes and round permutation constants + var SBOX_P = [{ + 0x0: 0x808200, + 0x10000000: 0x8000, + 0x20000000: 0x808002, + 0x30000000: 0x2, + 0x40000000: 0x200, + 0x50000000: 0x808202, + 0x60000000: 0x800202, + 0x70000000: 0x800000, + 0x80000000: 0x202, + 0x90000000: 0x800200, + 0xa0000000: 0x8200, + 0xb0000000: 0x808000, + 0xc0000000: 0x8002, + 0xd0000000: 0x800002, + 0xe0000000: 0x0, + 0xf0000000: 0x8202, + 0x8000000: 0x0, + 0x18000000: 0x808202, + 0x28000000: 0x8202, + 0x38000000: 0x8000, + 0x48000000: 0x808200, + 0x58000000: 0x200, + 0x68000000: 0x808002, + 0x78000000: 0x2, + 0x88000000: 0x800200, + 0x98000000: 0x8200, + 0xa8000000: 0x808000, + 0xb8000000: 0x800202, + 0xc8000000: 0x800002, + 0xd8000000: 0x8002, + 0xe8000000: 0x202, + 0xf8000000: 0x800000, + 0x1: 0x8000, + 0x10000001: 0x2, + 0x20000001: 0x808200, + 0x30000001: 0x800000, + 0x40000001: 0x808002, + 0x50000001: 0x8200, + 0x60000001: 0x200, + 0x70000001: 0x800202, + 0x80000001: 0x808202, + 0x90000001: 0x808000, + 0xa0000001: 0x800002, + 0xb0000001: 0x8202, + 0xc0000001: 0x202, + 0xd0000001: 0x800200, + 0xe0000001: 0x8002, + 0xf0000001: 0x0, + 0x8000001: 0x808202, + 0x18000001: 0x808000, + 0x28000001: 0x800000, + 0x38000001: 0x200, + 0x48000001: 0x8000, + 0x58000001: 0x800002, + 0x68000001: 0x2, + 0x78000001: 0x8202, + 0x88000001: 0x8002, + 0x98000001: 0x800202, + 0xa8000001: 0x202, + 0xb8000001: 0x808200, + 0xc8000001: 0x800200, + 0xd8000001: 0x0, + 0xe8000001: 0x8200, + 0xf8000001: 0x808002 + }, + { + 0x0: 0x40084010, + 0x1000000: 0x4000, + 0x2000000: 0x80000, + 0x3000000: 0x40080010, + 0x4000000: 0x40000010, + 0x5000000: 0x40084000, + 0x6000000: 0x40004000, + 0x7000000: 0x10, + 0x8000000: 0x84000, + 0x9000000: 0x40004010, + 0xa000000: 0x40000000, + 0xb000000: 0x84010, + 0xc000000: 0x80010, + 0xd000000: 0x0, + 0xe000000: 0x4010, + 0xf000000: 0x40080000, + 0x800000: 0x40004000, + 0x1800000: 0x84010, + 0x2800000: 0x10, + 0x3800000: 0x40004010, + 0x4800000: 0x40084010, + 0x5800000: 0x40000000, + 0x6800000: 0x80000, + 0x7800000: 0x40080010, + 0x8800000: 0x80010, + 0x9800000: 0x0, + 0xa800000: 0x4000, + 0xb800000: 0x40080000, + 0xc800000: 0x40000010, + 0xd800000: 0x84000, + 0xe800000: 0x40084000, + 0xf800000: 0x4010, + 0x10000000: 0x0, + 0x11000000: 0x40080010, + 0x12000000: 0x40004010, + 0x13000000: 0x40084000, + 0x14000000: 0x40080000, + 0x15000000: 0x10, + 0x16000000: 0x84010, + 0x17000000: 0x4000, + 0x18000000: 0x4010, + 0x19000000: 0x80000, + 0x1a000000: 0x80010, + 0x1b000000: 0x40000010, + 0x1c000000: 0x84000, + 0x1d000000: 0x40004000, + 0x1e000000: 0x40000000, + 0x1f000000: 0x40084010, + 0x10800000: 0x84010, + 0x11800000: 0x80000, + 0x12800000: 0x40080000, + 0x13800000: 0x4000, + 0x14800000: 0x40004000, + 0x15800000: 0x40084010, + 0x16800000: 0x10, + 0x17800000: 0x40000000, + 0x18800000: 0x40084000, + 0x19800000: 0x40000010, + 0x1a800000: 0x40004010, + 0x1b800000: 0x80010, + 0x1c800000: 0x0, + 0x1d800000: 0x4010, + 0x1e800000: 0x40080010, + 0x1f800000: 0x84000 + }, + { + 0x0: 0x104, + 0x100000: 0x0, + 0x200000: 0x4000100, + 0x300000: 0x10104, + 0x400000: 0x10004, + 0x500000: 0x4000004, + 0x600000: 0x4010104, + 0x700000: 0x4010000, + 0x800000: 0x4000000, + 0x900000: 0x4010100, + 0xa00000: 0x10100, + 0xb00000: 0x4010004, + 0xc00000: 0x4000104, + 0xd00000: 0x10000, + 0xe00000: 0x4, + 0xf00000: 0x100, + 0x80000: 0x4010100, + 0x180000: 0x4010004, + 0x280000: 0x0, + 0x380000: 0x4000100, + 0x480000: 0x4000004, + 0x580000: 0x10000, + 0x680000: 0x10004, + 0x780000: 0x104, + 0x880000: 0x4, + 0x980000: 0x100, + 0xa80000: 0x4010000, + 0xb80000: 0x10104, + 0xc80000: 0x10100, + 0xd80000: 0x4000104, + 0xe80000: 0x4010104, + 0xf80000: 0x4000000, + 0x1000000: 0x4010100, + 0x1100000: 0x10004, + 0x1200000: 0x10000, + 0x1300000: 0x4000100, + 0x1400000: 0x100, + 0x1500000: 0x4010104, + 0x1600000: 0x4000004, + 0x1700000: 0x0, + 0x1800000: 0x4000104, + 0x1900000: 0x4000000, + 0x1a00000: 0x4, + 0x1b00000: 0x10100, + 0x1c00000: 0x4010000, + 0x1d00000: 0x104, + 0x1e00000: 0x10104, + 0x1f00000: 0x4010004, + 0x1080000: 0x4000000, + 0x1180000: 0x104, + 0x1280000: 0x4010100, + 0x1380000: 0x0, + 0x1480000: 0x10004, + 0x1580000: 0x4000100, + 0x1680000: 0x100, + 0x1780000: 0x4010004, + 0x1880000: 0x10000, + 0x1980000: 0x4010104, + 0x1a80000: 0x10104, + 0x1b80000: 0x4000004, + 0x1c80000: 0x4000104, + 0x1d80000: 0x4010000, + 0x1e80000: 0x4, + 0x1f80000: 0x10100 + }, + { + 0x0: 0x80401000, + 0x10000: 0x80001040, + 0x20000: 0x401040, + 0x30000: 0x80400000, + 0x40000: 0x0, + 0x50000: 0x401000, + 0x60000: 0x80000040, + 0x70000: 0x400040, + 0x80000: 0x80000000, + 0x90000: 0x400000, + 0xa0000: 0x40, + 0xb0000: 0x80001000, + 0xc0000: 0x80400040, + 0xd0000: 0x1040, + 0xe0000: 0x1000, + 0xf0000: 0x80401040, + 0x8000: 0x80001040, + 0x18000: 0x40, + 0x28000: 0x80400040, + 0x38000: 0x80001000, + 0x48000: 0x401000, + 0x58000: 0x80401040, + 0x68000: 0x0, + 0x78000: 0x80400000, + 0x88000: 0x1000, + 0x98000: 0x80401000, + 0xa8000: 0x400000, + 0xb8000: 0x1040, + 0xc8000: 0x80000000, + 0xd8000: 0x400040, + 0xe8000: 0x401040, + 0xf8000: 0x80000040, + 0x100000: 0x400040, + 0x110000: 0x401000, + 0x120000: 0x80000040, + 0x130000: 0x0, + 0x140000: 0x1040, + 0x150000: 0x80400040, + 0x160000: 0x80401000, + 0x170000: 0x80001040, + 0x180000: 0x80401040, + 0x190000: 0x80000000, + 0x1a0000: 0x80400000, + 0x1b0000: 0x401040, + 0x1c0000: 0x80001000, + 0x1d0000: 0x400000, + 0x1e0000: 0x40, + 0x1f0000: 0x1000, + 0x108000: 0x80400000, + 0x118000: 0x80401040, + 0x128000: 0x0, + 0x138000: 0x401000, + 0x148000: 0x400040, + 0x158000: 0x80000000, + 0x168000: 0x80001040, + 0x178000: 0x40, + 0x188000: 0x80000040, + 0x198000: 0x1000, + 0x1a8000: 0x80001000, + 0x1b8000: 0x80400040, + 0x1c8000: 0x1040, + 0x1d8000: 0x80401000, + 0x1e8000: 0x400000, + 0x1f8000: 0x401040 + }, + { + 0x0: 0x80, + 0x1000: 0x1040000, + 0x2000: 0x40000, + 0x3000: 0x20000000, + 0x4000: 0x20040080, + 0x5000: 0x1000080, + 0x6000: 0x21000080, + 0x7000: 0x40080, + 0x8000: 0x1000000, + 0x9000: 0x20040000, + 0xa000: 0x20000080, + 0xb000: 0x21040080, + 0xc000: 0x21040000, + 0xd000: 0x0, + 0xe000: 0x1040080, + 0xf000: 0x21000000, + 0x800: 0x1040080, + 0x1800: 0x21000080, + 0x2800: 0x80, + 0x3800: 0x1040000, + 0x4800: 0x40000, + 0x5800: 0x20040080, + 0x6800: 0x21040000, + 0x7800: 0x20000000, + 0x8800: 0x20040000, + 0x9800: 0x0, + 0xa800: 0x21040080, + 0xb800: 0x1000080, + 0xc800: 0x20000080, + 0xd800: 0x21000000, + 0xe800: 0x1000000, + 0xf800: 0x40080, + 0x10000: 0x40000, + 0x11000: 0x80, + 0x12000: 0x20000000, + 0x13000: 0x21000080, + 0x14000: 0x1000080, + 0x15000: 0x21040000, + 0x16000: 0x20040080, + 0x17000: 0x1000000, + 0x18000: 0x21040080, + 0x19000: 0x21000000, + 0x1a000: 0x1040000, + 0x1b000: 0x20040000, + 0x1c000: 0x40080, + 0x1d000: 0x20000080, + 0x1e000: 0x0, + 0x1f000: 0x1040080, + 0x10800: 0x21000080, + 0x11800: 0x1000000, + 0x12800: 0x1040000, + 0x13800: 0x20040080, + 0x14800: 0x20000000, + 0x15800: 0x1040080, + 0x16800: 0x80, + 0x17800: 0x21040000, + 0x18800: 0x40080, + 0x19800: 0x21040080, + 0x1a800: 0x0, + 0x1b800: 0x21000000, + 0x1c800: 0x1000080, + 0x1d800: 0x40000, + 0x1e800: 0x20040000, + 0x1f800: 0x20000080 + }, + { + 0x0: 0x10000008, + 0x100: 0x2000, + 0x200: 0x10200000, + 0x300: 0x10202008, + 0x400: 0x10002000, + 0x500: 0x200000, + 0x600: 0x200008, + 0x700: 0x10000000, + 0x800: 0x0, + 0x900: 0x10002008, + 0xa00: 0x202000, + 0xb00: 0x8, + 0xc00: 0x10200008, + 0xd00: 0x202008, + 0xe00: 0x2008, + 0xf00: 0x10202000, + 0x80: 0x10200000, + 0x180: 0x10202008, + 0x280: 0x8, + 0x380: 0x200000, + 0x480: 0x202008, + 0x580: 0x10000008, + 0x680: 0x10002000, + 0x780: 0x2008, + 0x880: 0x200008, + 0x980: 0x2000, + 0xa80: 0x10002008, + 0xb80: 0x10200008, + 0xc80: 0x0, + 0xd80: 0x10202000, + 0xe80: 0x202000, + 0xf80: 0x10000000, + 0x1000: 0x10002000, + 0x1100: 0x10200008, + 0x1200: 0x10202008, + 0x1300: 0x2008, + 0x1400: 0x200000, + 0x1500: 0x10000000, + 0x1600: 0x10000008, + 0x1700: 0x202000, + 0x1800: 0x202008, + 0x1900: 0x0, + 0x1a00: 0x8, + 0x1b00: 0x10200000, + 0x1c00: 0x2000, + 0x1d00: 0x10002008, + 0x1e00: 0x10202000, + 0x1f00: 0x200008, + 0x1080: 0x8, + 0x1180: 0x202000, + 0x1280: 0x200000, + 0x1380: 0x10000008, + 0x1480: 0x10002000, + 0x1580: 0x2008, + 0x1680: 0x10202008, + 0x1780: 0x10200000, + 0x1880: 0x10202000, + 0x1980: 0x10200008, + 0x1a80: 0x2000, + 0x1b80: 0x202008, + 0x1c80: 0x200008, + 0x1d80: 0x0, + 0x1e80: 0x10000000, + 0x1f80: 0x10002008 + }, + { + 0x0: 0x100000, + 0x10: 0x2000401, + 0x20: 0x400, + 0x30: 0x100401, + 0x40: 0x2100401, + 0x50: 0x0, + 0x60: 0x1, + 0x70: 0x2100001, + 0x80: 0x2000400, + 0x90: 0x100001, + 0xa0: 0x2000001, + 0xb0: 0x2100400, + 0xc0: 0x2100000, + 0xd0: 0x401, + 0xe0: 0x100400, + 0xf0: 0x2000000, + 0x8: 0x2100001, + 0x18: 0x0, + 0x28: 0x2000401, + 0x38: 0x2100400, + 0x48: 0x100000, + 0x58: 0x2000001, + 0x68: 0x2000000, + 0x78: 0x401, + 0x88: 0x100401, + 0x98: 0x2000400, + 0xa8: 0x2100000, + 0xb8: 0x100001, + 0xc8: 0x400, + 0xd8: 0x2100401, + 0xe8: 0x1, + 0xf8: 0x100400, + 0x100: 0x2000000, + 0x110: 0x100000, + 0x120: 0x2000401, + 0x130: 0x2100001, + 0x140: 0x100001, + 0x150: 0x2000400, + 0x160: 0x2100400, + 0x170: 0x100401, + 0x180: 0x401, + 0x190: 0x2100401, + 0x1a0: 0x100400, + 0x1b0: 0x1, + 0x1c0: 0x0, + 0x1d0: 0x2100000, + 0x1e0: 0x2000001, + 0x1f0: 0x400, + 0x108: 0x100400, + 0x118: 0x2000401, + 0x128: 0x2100001, + 0x138: 0x1, + 0x148: 0x2000000, + 0x158: 0x100000, + 0x168: 0x401, + 0x178: 0x2100400, + 0x188: 0x2000001, + 0x198: 0x2100000, + 0x1a8: 0x0, + 0x1b8: 0x2100401, + 0x1c8: 0x100401, + 0x1d8: 0x400, + 0x1e8: 0x2000400, + 0x1f8: 0x100001 + }, + { + 0x0: 0x8000820, + 0x1: 0x20000, + 0x2: 0x8000000, + 0x3: 0x20, + 0x4: 0x20020, + 0x5: 0x8020820, + 0x6: 0x8020800, + 0x7: 0x800, + 0x8: 0x8020000, + 0x9: 0x8000800, + 0xa: 0x20800, + 0xb: 0x8020020, + 0xc: 0x820, + 0xd: 0x0, + 0xe: 0x8000020, + 0xf: 0x20820, + 0x80000000: 0x800, + 0x80000001: 0x8020820, + 0x80000002: 0x8000820, + 0x80000003: 0x8000000, + 0x80000004: 0x8020000, + 0x80000005: 0x20800, + 0x80000006: 0x20820, + 0x80000007: 0x20, + 0x80000008: 0x8000020, + 0x80000009: 0x820, + 0x8000000a: 0x20020, + 0x8000000b: 0x8020800, + 0x8000000c: 0x0, + 0x8000000d: 0x8020020, + 0x8000000e: 0x8000800, + 0x8000000f: 0x20000, + 0x10: 0x20820, + 0x11: 0x8020800, + 0x12: 0x20, + 0x13: 0x800, + 0x14: 0x8000800, + 0x15: 0x8000020, + 0x16: 0x8020020, + 0x17: 0x20000, + 0x18: 0x0, + 0x19: 0x20020, + 0x1a: 0x8020000, + 0x1b: 0x8000820, + 0x1c: 0x8020820, + 0x1d: 0x20800, + 0x1e: 0x820, + 0x1f: 0x8000000, + 0x80000010: 0x20000, + 0x80000011: 0x800, + 0x80000012: 0x8020020, + 0x80000013: 0x20820, + 0x80000014: 0x20, + 0x80000015: 0x8020000, + 0x80000016: 0x8000000, + 0x80000017: 0x8000820, + 0x80000018: 0x8020820, + 0x80000019: 0x8000020, + 0x8000001a: 0x8000800, + 0x8000001b: 0x0, + 0x8000001c: 0x20800, + 0x8000001d: 0x820, + 0x8000001e: 0x20020, + 0x8000001f: 0x8020800 + } + ]; + + // Masks that select the SBOX input + var SBOX_MASK = [ + 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000, + 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f + ]; + + /** + * DES block cipher algorithm. + */ + var DES = C_algo.DES = BlockCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + + // Select 56 bits according to PC1 + var keyBits = []; + for (var i = 0; i < 56; i++) { + var keyBitPos = PC1[i] - 1; + keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1; + } + + // Assemble 16 subkeys + var subKeys = this._subKeys = []; + for (var nSubKey = 0; nSubKey < 16; nSubKey++) { + // Create subkey + var subKey = subKeys[nSubKey] = []; + + // Shortcut + var bitShift = BIT_SHIFTS[nSubKey]; + + // Select 48 bits according to PC2 + for (var i = 0; i < 24; i++) { + // Select from the left 28 key bits + subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6); + + // Select from the right 28 key bits + subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6); + } + + // Since each subkey is applied to an expanded 32-bit input, + // the subkey can be broken into 8 values scaled to 32-bits, + // which allows the key to be used without expansion + subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31); + for (var i = 1; i < 7; i++) { + subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3); + } + subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27); + } + + // Compute inverse subkeys + var invSubKeys = this._invSubKeys = []; + for (var i = 0; i < 16; i++) { + invSubKeys[i] = subKeys[15 - i]; + } + }, + + encryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._subKeys); + }, + + decryptBlock: function(M, offset) { + this._doCryptBlock(M, offset, this._invSubKeys); + }, + + _doCryptBlock: function(M, offset, subKeys) { + // Get input + this._lBlock = M[offset]; + this._rBlock = M[offset + 1]; + + // Initial permutation + exchangeLR.call(this, 4, 0x0f0f0f0f); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeRL.call(this, 2, 0x33333333); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeLR.call(this, 1, 0x55555555); + + // Rounds + for (var round = 0; round < 16; round++) { + // Shortcuts + var subKey = subKeys[round]; + var lBlock = this._lBlock; + var rBlock = this._rBlock; + + // Feistel function + var f = 0; + for (var i = 0; i < 8; i++) { + f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0]; + } + this._lBlock = rBlock; + this._rBlock = lBlock ^ f; + } + + // Undo swap from last round + var t = this._lBlock; + this._lBlock = this._rBlock; + this._rBlock = t; + + // Final permutation + exchangeLR.call(this, 1, 0x55555555); + exchangeRL.call(this, 8, 0x00ff00ff); + exchangeRL.call(this, 2, 0x33333333); + exchangeLR.call(this, 16, 0x0000ffff); + exchangeLR.call(this, 4, 0x0f0f0f0f); + + // Set output + M[offset] = this._lBlock; + M[offset + 1] = this._rBlock; + }, + + keySize: 64 / 32, + + ivSize: 64 / 32, + + blockSize: 64 / 32 + }); + + // Swap bits across the left and right words + function exchangeLR(offset, mask) { + var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask; + this._rBlock ^= t; + this._lBlock ^= t << offset; + } + + function exchangeRL(offset, mask) { + var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask; + this._lBlock ^= t; + this._rBlock ^= t << offset; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); + */ + C.DES = BlockCipher._createHelper(DES); + + /** + * Triple-DES block cipher algorithm. + */ + var TripleDES = C_algo.TripleDES = BlockCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + // Make sure the key length is valid (64, 128 or >= 192 bit) + if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) { + throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.'); + } + + // Extend the key according to the keying options defined in 3DES standard + var key1 = keyWords.slice(0, 2); + var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4); + var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6); + + // Create DES instances + this._des1 = DES.createEncryptor(WordArray.create(key1)); + this._des2 = DES.createEncryptor(WordArray.create(key2)); + this._des3 = DES.createEncryptor(WordArray.create(key3)); + }, + + encryptBlock: function(M, offset) { + this._des1.encryptBlock(M, offset); + this._des2.decryptBlock(M, offset); + this._des3.encryptBlock(M, offset); + }, + + decryptBlock: function(M, offset) { + this._des3.decryptBlock(M, offset); + this._des2.encryptBlock(M, offset); + this._des1.decryptBlock(M, offset); + }, + + keySize: 192 / 32, + + ivSize: 64 / 32, + + blockSize: 64 / 32 + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); + * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); + */ + C.TripleDES = BlockCipher._createHelper(TripleDES); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + /** + * RC4 stream cipher algorithm. + */ + var RC4 = C_algo.RC4 = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var key = this._key; + var keyWords = key.words; + var keySigBytes = key.sigBytes; + + // Init sbox + var S = this._S = []; + for (var i = 0; i < 256; i++) { + S[i] = i; + } + + // Key setup + for (var i = 0, j = 0; i < 256; i++) { + var keyByteIndex = i % keySigBytes; + var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff; + + j = (j + S[i] + keyByte) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + } + + // Counters + this._i = this._j = 0; + }, + + _doProcessBlock: function(M, offset) { + M[offset] ^= generateKeystreamWord.call(this); + }, + + keySize: 256 / 32, + + ivSize: 0 + }); + + function generateKeystreamWord() { + // Shortcuts + var S = this._S; + var i = this._i; + var j = this._j; + + // Generate keystream word + var keystreamWord = 0; + for (var n = 0; n < 4; n++) { + i = (i + 1) % 256; + j = (j + S[i]) % 256; + + // Swap + var t = S[i]; + S[i] = S[j]; + S[j] = t; + + keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8); + } + + // Update counters + this._i = i; + this._j = j; + + return keystreamWord; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); + */ + C.RC4 = StreamCipher._createHelper(RC4); + + /** + * Modified RC4 stream cipher algorithm. + */ + var RC4Drop = C_algo.RC4Drop = RC4.extend({ + /** + * Configuration options. + * + * @property {number} drop The number of keystream words to drop. Default 192 + */ + cfg: RC4.cfg.extend({ + drop: 192 + }), + + _doReset: function() { + RC4._doReset.call(this); + + // Drop + for (var i = this.cfg.drop; i > 0; i--) { + generateKeystreamWord.call(this); + } + } + }); + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg); + */ + C.RC4Drop = StreamCipher._createHelper(RC4Drop); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm + */ + var Rabbit = C_algo.Rabbit = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Swap endian + for (var i = 0; i < 4; i++) { + K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) | + (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00); + } + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128 / 32, + + ivSize: 64 / 32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg); + * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg); + */ + C.Rabbit = StreamCipher._createHelper(Rabbit); + }()); + + + (function() { + // Shortcuts + var C = CryptoJS; + var C_lib = C.lib; + var StreamCipher = C_lib.StreamCipher; + var C_algo = C.algo; + + // Reusable objects + var S = []; + var C_ = []; + var G = []; + + /** + * Rabbit stream cipher algorithm. + * + * This is a legacy version that neglected to convert the key to little-endian. + * This error doesn't affect the cipher's security, + * but it does affect its compatibility with other implementations. + */ + var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({ + _doReset: function() { + // Shortcuts + var K = this._key.words; + var iv = this.cfg.iv; + + // Generate initial state values + var X = this._X = [ + K[0], (K[3] << 16) | (K[2] >>> 16), + K[1], (K[0] << 16) | (K[3] >>> 16), + K[2], (K[1] << 16) | (K[0] >>> 16), + K[3], (K[2] << 16) | (K[1] >>> 16) + ]; + + // Generate initial counter values + var C = this._C = [ + (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff), + (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff), + (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff), + (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff) + ]; + + // Carry bit + this._b = 0; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + + // Modify the counters + for (var i = 0; i < 8; i++) { + C[i] ^= X[(i + 4) & 7]; + } + + // IV setup + if (iv) { + // Shortcuts + var IV = iv.words; + var IV_0 = IV[0]; + var IV_1 = IV[1]; + + // Generate four subvectors + var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00); + var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00); + var i1 = (i0 >>> 16) | (i2 & 0xffff0000); + var i3 = (i2 << 16) | (i0 & 0x0000ffff); + + // Modify counter values + C[0] ^= i0; + C[1] ^= i1; + C[2] ^= i2; + C[3] ^= i3; + C[4] ^= i0; + C[5] ^= i1; + C[6] ^= i2; + C[7] ^= i3; + + // Iterate the system four times + for (var i = 0; i < 4; i++) { + nextState.call(this); + } + } + }, + + _doProcessBlock: function(M, offset) { + // Shortcut + var X = this._X; + + // Iterate the system + nextState.call(this); + + // Generate four keystream words + S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16); + S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16); + S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16); + S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16); + + for (var i = 0; i < 4; i++) { + // Swap endian + S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) | + (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00); + + // Encrypt + M[offset + i] ^= S[i]; + } + }, + + blockSize: 128 / 32, + + ivSize: 64 / 32 + }); + + function nextState() { + // Shortcuts + var X = this._X; + var C = this._C; + + // Save old counter values + for (var i = 0; i < 8; i++) { + C_[i] = C[i]; + } + + // Calculate new counter values + C[0] = (C[0] + 0x4d34d34d + this._b) | 0; + C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0; + C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0; + C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0; + C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0; + C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0; + C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0; + C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0; + this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0; + + // Calculate the g-values + for (var i = 0; i < 8; i++) { + var gx = X[i] + C[i]; + + // Construct high and low argument for squaring + var ga = gx & 0xffff; + var gb = gx >>> 16; + + // Calculate high and low result of squaring + var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb; + var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0); + + // High XOR low + G[i] = gh ^ gl; + } + + // Calculate new state values + X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0; + X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0; + X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0; + X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0; + X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0; + X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0; + X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0; + X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0; + } + + /** + * Shortcut functions to the cipher's object interface. + * + * @example + * + * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg); + * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg); + */ + C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy); + }()); + + + return CryptoJS; + +})); \ No newline at end of file diff --git a/xiaosa/JS/drpy2.js b/xiaosa/JS/drpy2.js new file mode 100644 index 00000000..76a3be45 --- /dev/null +++ b/xiaosa/JS/drpy2.js @@ -0,0 +1,3862 @@ +import cheerio from 'assets://js/lib/cheerio.min.js'; +import 'assets://js/lib/crypto-js.js'; +import './jsencrypt.js'; +import './node-rsa.js'; +import './pako.min.js'; +// import JSEncrypt from './jsencrypt.js'; // 会导致壳子崩溃的 +import 模板 from './模板.js' +import { + gbkTool +} from './gbk.js' +import './json5.js' +// 下面是尝试对jinja2库进行更换 +import './jinja.js' + +const _jinja2 = cheerio.jinja2; +cheerio.jinja2 = function(template, obj) { + try { + return jinja.render(template, obj); + } catch (e) { + console.log('新的jinja2库渲染失败,换回原始cheerio:' + e.message); + return _jinja2(template, obj) + } +}; +// import cheerio from "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/cheerio.min.js"; +// import "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-js.js"; +// import 模板 from"https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js"; +// import {gbkTool} from 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/gbk.js' + +let vercode = typeof(pdfl) === 'function' ? 'drpy2.1' : 'drpy2'; +const VERSION = vercode + ' 3.9.51beta6 20241126'; +const UpdateInfo = [{ + date: '20241126', + title: 'drpy更新,优化去广告算法', + version: '3.9.51beta6 20241126', + msg: ` + 1. 更新龙头大佬提供的去广告算法 + ` + }, + { + date: '20241104', + title: 'drpy更新,增加新特性', + version: '3.9.51beta5 20241104', + msg: ` + 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码' + 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空 + ` + }, +]; + +function getUpdateInfo() { + return UpdateInfo.map((_o) => { + _o.msg = _o.msg.trim().split('\n').map(_it => _it.trim()).join('\n') + return _o + }) +} + +function init_test() { + // console.log(typeof(JSON5)); + // let a = `{'SHOW':'10','UK':'43a7dc59-e87b-449e-8b74-ba40db28e674','albumlist':[{'DC_TARGETID':'30965086','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17294','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'30965086','artist':'小白不做凤尾','artistid':'10442011','artistpic':'http://img4.kuwo.cn/star/starheads/120/92/53/247071944.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'小白不做凤尾','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','id':'30965086','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/51/40/547190780.jpg','info':'来听听','isstar':'1','lang':'','musiccnt':'37','name':'我的','new':'0','payvalue':'0','pic':'120/51/40/547190780.jpg','pub':'2022-08-28','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'28041980','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'0','aartist':'','ad_subtype':'','ad_type':'','albumid':'28041980','artist':'玄琛','artistid':'9688248','artistpic':'http://img4.kuwo.cn/star/starheads/120/96/39/3155308302.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'玄琛','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','id':'28041980','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/72/16/2510768590.jpg','info':'我来诉说我的故事,请你认真聆听,做最好的聆听者','isstar':'1','lang':'','musiccnt':'2','name':'我的','new':'0','payvalue':'0','pic':'120/72/16/2510768590.jpg','pub':'2020-08-18','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'','vip':'0'},{'DC_TARGETID':'17245200','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'5529096','aartist':'','ad_subtype':'','ad_type':'','albumid':'17245200','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','id':'17245200','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/85/51/1350940634.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。【歌曲篇】每期节目将推出一个主题城市,邀请一位青春正能量明星,演唱与家乡有关的原创或翻唱歌曲,曲传乡音。','isstar':'1','lang':'','musiccnt':'5','name':'我和我的家乡第二季「歌曲篇」','new':'0','payvalue':'0','pic':'120/85/51/1350940634.jpg','pub':'2020-12-25','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'解读中国人的乡土情结','vip':'0'},{'DC_TARGETID':'12854978','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'21482961','aartist':'','ad_subtype':'','ad_type':'','albumid':'12854978','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','id':'12854978','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/99/12/1066669641.jpg','info':'禅音静心:禅茶一味','isstar':'1','lang':'普通话','musiccnt':'407','name':'禅音静心:禅茶一味','new':'0','payvalue':'0','pic':'120/99/12/1066669641.jpg','pub':'2020-02-23','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'禅音静心:禅茶一味','vip':'0'},{'DC_TARGETID':'13884852','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'17396226','aartist':'','ad_subtype':'','ad_type':'','albumid':'13884852','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','id':'13884852','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/91/94/4253604466.jpg','info':'静心听佛乐','isstar':'1','lang':'普通话','musiccnt':'228','name':'静心听佛乐','new':'0','payvalue':'0','pic':'120/91/94/4253604466.jpg','pub':'2020-04-27','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'静心听佛乐','vip':'0'},{'DC_TARGETID':'17172751','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'553401','aartist':'','ad_subtype':'102,103,101,501','ad_type':'1,5','albumid':'17172751','artist':'我和我的家乡','artistid':'5037564','artistpic':'http://img4.kuwo.cn/star/starheads/0/10/27/3738071257.jpg','color':'[#FFD8F3F1,#FF719794]','company':'中青在线','content_type':'0','falbum':'','fartist':'我和我的家乡','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','id':'17172751','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/63/45/3978411674.jpg','info':'《我和我的家乡2》是融媒体音频节目《我和我的家乡》第二季。为解读中国人的乡土情结,汇聚同心追梦的力量。每期节目将推出一个主题城市,邀请一位青春正能量明星,用笔者独有的乡愁情感,配以讲述者也为此乡人的身份,着力刻画该城市的魅力形象,展现一座城的普通百姓生活和经济社会发展。','isstar':'1','lang':'','musiccnt':'11','name':'我和我的家乡第二季「有声篇」','new':'0','payvalue':'0','pic':'120/63/45/3978411674.jpg','pub':'2020-12-21','score':'0','showtime':'2020-12-20','spPrivilege':'0','startype':'娱乐','timing_online':'2020-12-20 23:40:00','title':'','vip':'0'},{'DC_TARGETID':'18769609','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'69987','aartist':'','ad_subtype':'101,102,103,501','ad_type':'1,5','albumid':'18769609','artist':'你是我的荣耀','artistid':'6998984','artistpic':'http://img4.kuwo.cn/star/starheads/120/41/44/262468637.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'你是我的荣耀','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','id':'18769609','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/44/72/4080853707.jpg','info':'《你是我的荣耀》是由王之执导,潘粤明、胡可、王彦霖、杨洋、迪丽热巴、郑合惠子主演的都市爱情剧。该剧改编自顾漫创作的同名小说,主要讲述了人气女星乔晶晶在游戏中与曾经的高中同学于途意外重逢后发生的故事。\\\\\\\\\\\\\\\\\\n;跟随《你是我的荣耀》之声,一起见证航天工程师于途与人气女星乔晶晶,携手砥砺前行成为彼此荣耀的爱情故事!\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;\\\\\\\\\\\\\\\\\\n;','isstar':'1','lang':'普通话','musiccnt':'1','name':'你是我的荣耀','new':'0','payvalue':'0','pic':'120/44/72/4080853707.jpg','pub':'2021-03-05','score':'0','showtime':'2021-03-09','spPrivilege':'0','startype':'有声小说','timing_online':'2021-03-09 00:00:00','title':'大明星恋上航天工程师 热巴杨洋甜蜜相守','vip':'0'},{'DC_TARGETID':'23641999','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'1292491','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'23641999','artist':'我的存在','artistid':'8102787','artistpic':'http://img4.kuwo.cn/star/starheads/120/31/87/632983033.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的存在','finished':'1','hts_img':'https://img2.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','id':'23641999','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/50/6/2193571523.jpg','info':'为给老驸马冲喜,长亭长公主庶孙迎娶陆家女,新娘子当天却吊死在洞房,现代女医生陆漫穿越而来。委屈的某人,我要功成名就,我的生活我作主。陆漫,还你自由,我也自由……','isstar':'1','lang':'','musiccnt':'726','name':'金玉良医(完结)','new':'0','payvalue':'0','pic':'120/50/6/2193571523.jpg','pub':'2021-10-11','score':'0','showtime':'','spPrivilege':'0','startype':'有声小说','timing_online':'0000-00-00 00:00:00','title':'现代女医生陆漫穿越到古代发生的事情','vip':'0'},{'DC_TARGETID':'28177105','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'10448','aartist':'','ad_subtype':'102,103,501,101,301','ad_type':'1,3,5','albumid':'28177105','artist':'我的青糖','artistid':'9650993','artistpic':'http://img4.kuwo.cn/star/starheads/120/40/93/1019968534.jpg','color':'[#FFE2F2C6,#FF85A476]','company':'独立发行','content_type':'0','falbum':'','fartist':'我的青糖','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','id':'28177105','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/62/97/3136446870.jpg','info':'【字数:16万字】<br>裴子墨和丁辰是一对夫妻,妻子丁辰深爱裴子墨,但裴子墨难以忘怀初恋总是对她若即若离。婚后两年,裴子墨前女友于筝突然回国,使得他和丁辰原本就不稳定的婚姻更加雪上加霜。于筝当初背叛裴子墨,受伤后才意识到裴子墨的好,于是不择手段夺回了裴子墨。丁辰和裴子墨离婚后,裴子墨才意识到两年相处,他早已习惯有丁辰的陪伴。裴子墨决心重新赢回丁辰的心,但此时丁辰身边已经有了一位极其出色的追求者,前景不容乐观……','isstar':'1','lang':'','musiccnt':'80','name':'如果你是我的传说','new':'0','payvalue':'0','pic':'120/62/97/3136446870.jpg','pub':'2022-04-21','score':'0','showtime':'1979-10-05','spPrivilege':'0','startype':'有声小说','timing_online':'2022-05-01 19:26:48','title':'','vip':'0'},{'DC_TARGETID':'12896662','DC_TARGETTYPE':'','PAY':'0','PLAYCNT':'2412258','aartist':'','ad_subtype':'','ad_type':'','albumid':'12896662','artist':'佛学听我的','artistid':'3651480','artistpic':'http://img4.kuwo.cn/star/starheads/120/21/42/3683883829.jpg','color':'[#FFD8F3F1,#FF719794]','company':'暂无','content_type':'0','falbum':'','fartist':'佛学听我的','finished':'0','hts_img':'https://img2.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','id':'12896662','img':'http://img2.sycdn.kuwo.cn/star/albumcover/240/93/41/3670973086.jpg','info':'佛书梵唱100篇','isstar':'1','lang':'普通话','musiccnt':'50','name':'佛书梵唱100篇','new':'0','payvalue':'0','pic':'120/93/41/3670973086.jpg','pub':'2020-02-24','score':'0','showtime':'','spPrivilege':'0','startype':'历史人文','timing_online':'0000-00-00 00:00:00','title':'佛书梵唱100篇','vip':'0'}],'pn':'0','rn':'10','total':'257'}`; + // log(JSON5.parse(a)); + // console.log(typeof(CryptoJS)); + console.log("init_test_start"); + // print(模板); + // print(typeof(模板.getMubans)); + console.log("当前版本号:" + VERSION); + console.log('本地代理地址:' + getProxyUrl()); + console.log(RKEY); + // ocr_demo_test(); + // rsa_demo_test(); + + // console.log('Uint8Array:'+typeof(Uint8Array)+' '+'Uint16Array:'+typeof(Uint16Array)); + // console.log('encodeURIComponent:'+typeof(encodeURIComponent)+' '+'decodeURIComponent:'+typeof(decodeURIComponent)); + // console.log('atob:'+typeof(atob)+' '+'btoa:'+typeof(btoa)); + // log('typeof (JSEncrypt):'+typeof (JSEncrypt)); + // log('typeof (pako):'+typeof (pako)); + // let b64_str = btoa('hello hipy'); + // let str = atob(b64_str); + // console.log(`btoa加密文本:${b64_str},atob解密文本:${str}`) + // let gzip_str = gzip('{"a":"电影","b":"电影","c":"电影","d":"电影","e":"电影","f":"电影"}'); + // let ungzip_str = ungzip(gzip_str); + // console.log(`gzip加密文本:${gzip_str},长度:${gzip_str.length},ungzip解密文本:${ungzip_str},长度:${ungzip_str.length}`); + // let a = {"1":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"NETFLIX"},{"n":"剧情","v":"剧情"},{"n":"喜剧","v":"喜剧"},{"n":"动作","v":"动作"},{"n":"爱情","v":"爱情"},{"n":"恐怖","v":"恐怖"},{"n":"惊悚","v":"惊悚"},{"n":"犯罪","v":"犯罪"},{"n":"科幻","v":"科幻"},{"n":"悬疑","v":"悬疑"},{"n":"奇幻","v":"奇幻"},{"n":"冒险","v":"冒险"},{"n":"战争","v":"战争"},{"n":"历史","v":"历史"},{"n":"古装","v":"古装"},{"n":"家庭","v":"家庭"},{"n":"传记","v":"传记"},{"n":"武侠","v":"武侠"},{"n":"歌舞","v":"歌舞"},{"n":"短片","v":"短片"},{"n":"动画","v":"动画"},{"n":"儿童","v":"儿童"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"2":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"剧情","v":"剧情"},{"n":"爱情","v":"爱情"},{"n":"喜剧","v":"喜剧"},{"n":"犯罪","v":"犯罪"},{"n":"悬疑","v":"悬疑"},{"n":"古装","v":"古装"},{"n":"动作","v":"动作"},{"n":"家庭","v":"家庭"},{"n":"惊悚","v":"惊悚"},{"n":"奇幻","v":"奇幻"},{"n":"美剧","v":"美剧"},{"n":"科幻","v":"科幻"},{"n":"历史","v":"历史"},{"n":"战争","v":"战争"},{"n":"韩剧","v":"韩剧"},{"n":"武侠","v":"武侠"},{"n":"言情","v":"言情"},{"n":"恐怖","v":"恐怖"},{"n":"冒险","v":"冒险"},{"n":"都市","v":"都市"},{"n":"职场","v":"职场"}]},{"key":"地区","name":"地区","value":[{"n":"地区","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"法国","v":"法国"},{"n":"英国","v":"英国"},{"n":"德国","v":"德国"},{"n":"台湾","v":"中国台湾"},{"n":"泰国","v":"泰国"},{"n":"印度","v":"印度"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"3":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"Netflix","v":"Netflix"},{"n":"动态漫画","v":"动态漫画"},{"n":"剧情","v":"剧情"},{"n":"动画","v":"动画"},{"n":"喜剧","v":"喜剧"},{"n":"冒险","v":"冒险"},{"n":"动作","v":"动作"},{"n":"奇幻","v":"奇幻"},{"n":"科幻","v":"科幻"},{"n":"儿童","v":"儿童"},{"n":"搞笑","v":"搞笑"},{"n":"爱情","v":"爱情"},{"n":"家庭","v":"家庭"},{"n":"短片","v":"短片"},{"n":"热血","v":"热血"},{"n":"益智","v":"益智"},{"n":"悬疑","v":"悬疑"},{"n":"经典","v":"经典"},{"n":"校园","v":"校园"},{"n":"Anime","v":"Anime"},{"n":"运动","v":"运动"},{"n":"亲子","v":"亲子"},{"n":"青春","v":"青春"},{"n":"恋爱","v":"恋爱"},{"n":"武侠","v":"武侠"},{"n":"惊悚","v":"惊悚"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"日本","v":"日本"},{"n":"大陆","v":"中国大陆"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"香港","v":"中国香港"},{"n":"韩国","v":"韩国"},{"n":"英国","v":"英国"},{"n":"法国","v":"法国"},{"n":"德国","v":"德国"},{"n":"印度","v":"印度"},{"n":"泰国","v":"泰国"},{"n":"丹麦","v":"丹麦"},{"n":"瑞典","v":"瑞典"},{"n":"巴西","v":"巴西"},{"n":"加拿大","v":"加拿大"},{"n":"俄罗斯","v":"俄罗斯"},{"n":"意大利","v":"意大利"},{"n":"比利时","v":"比利时"},{"n":"爱尔兰","v":"爱尔兰"},{"n":"西班牙","v":"西班牙"},{"n":"澳大利亚","v":"澳大利亚"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"4":[{"key":"类型","name":"类型","value":[{"n":"全部","v":""},{"n":"纪录","v":"纪录"},{"n":"真人秀","v":"真人秀"},{"n":"记录","v":"记录"},{"n":"脱口秀","v":"脱口秀"},{"n":"剧情","v":"剧情"},{"n":"历史","v":"历史"},{"n":"喜剧","v":"喜剧"},{"n":"传记","v":"传记"},{"n":"相声","v":"相声"},{"n":"节目","v":"节目"},{"n":"歌舞","v":"歌舞"},{"n":"冒险","v":"冒险"},{"n":"运动","v":"运动"},{"n":"Season","v":"Season"},{"n":"犯罪","v":"犯罪"},{"n":"短片","v":"短片"},{"n":"搞笑","v":"搞笑"},{"n":"晚会","v":"晚会"}]},{"key":"地区","name":"地区","value":[{"n":"全部","v":""},{"n":"大陆","v":"中国大陆"},{"n":"香港","v":"中国香港"},{"n":"台湾","v":"中国台湾"},{"n":"美国","v":"美国"},{"n":"日本","v":"日本"},{"n":"韩国","v":"韩国"},{"n":"其他","v":"其他"}]},{"key":"语言","name":"语言","value":[{"n":"全部","v":""},{"n":"国语","v":"国语"},{"n":"粤语","v":"粤语"},{"n":"英语","v":"英语"},{"n":"日语","v":"日语"},{"n":"韩语","v":"韩语"},{"n":"法语","v":"法语"},{"n":"其他","v":"其他"}]},{"key":"年份","name":"年份","value":[{"n":"全部","v":""},{"n":"2024","v":"2024"},{"n":"2023","v":"2023"},{"n":"2022","v":"2022"},{"n":"2021","v":"2021"},{"n":"2020","v":"2020"},{"n":"10年代","v":"2010_2019"},{"n":"00年代","v":"2000_2009"},{"n":"90年代","v":"1990_1999"},{"n":"80年代","v":"1980_1989"},{"n":"更早","v":"0_1979"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"},{"n":"评分","v":"4"}]}],"6":[{"key":"类型","name":"类型","value":[{"n":"类型","v":""},{"n":"逆袭","v":"逆袭"},{"n":"甜宠","v":"甜宠"},{"n":"虐恋","v":"虐恋"},{"n":"穿越","v":"穿越"},{"n":"重生","v":"重生"},{"n":"剧情","v":"剧情"},{"n":"科幻","v":"科幻"},{"n":"武侠","v":"武侠"},{"n":"爱情","v":"爱情"},{"n":"动作","v":"动作"},{"n":"战争","v":"战争"},{"n":"冒险","v":"冒险"},{"n":"其它","v":"其它"}]},{"key":"排序","name":"排序","value":[{"n":"综合","v":""},{"n":"最新","v":"2"},{"n":"最热","v":"3"}]}]}; + // log(gzip(JSON.stringify(a))); + + console.log(JSON.stringify(rule)); + console.log("init_test_end"); + + + // log('typeof (JSEncrypt):'+typeof (JSEncrypt)); + // let publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwEc7wBMtYKkxvrQNI3+ITBZwAkPkGvsv4TsAHFskKGZWz9eYl3scivhmlEfWHlEkdyb0m82CmB1qAgef+pD4cZu+Cdmm2e9lnExhLwm8cBgpkAen9QRNdjojZgxM0W+JcReH4W6pw+uFXiLRn4AIQkDftWGNLg6wlNS+39Z/RvP9zyATJLZ9AKDdHp62XMxEK1KZvWBuIg+Oa5UzgA9jy+2XyIqwhBtO8tPbUl21t2pvTzHoLUjSkPNm2LurcUk6+jQ2r6aiS2CN1NXIucPJU6mkuIQ821SjvkYPtIdRMntW4y2u4cyiqVEEQwlzWVMHh+/vfrWAQr9fgjDuYYtvPQIDAQAB'; + // let privateKey = 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDARzvAEy1gqTG+tA0jf4hMFnACQ+Qa+y/hOwAcWyQoZlbP15iXexyK+GaUR9YeUSR3JvSbzYKYHWoCB5/6kPhxm74J2abZ72WcTGEvCbxwGCmQB6f1BE12OiNmDEzRb4lxF4fhbqnD64VeItGfgAhCQN+1YY0uDrCU1L7f1n9G8/3PIBMktn0AoN0enrZczEQrUpm9YG4iD45rlTOAD2PL7ZfIirCEG07y09tSXbW3am9PMegtSNKQ82bYu6txSTr6NDavpqJLYI3U1ci5w8lTqaS4hDzbVKO+Rg+0h1Eye1bjLa7hzKKpUQRDCXNZUweH7+9+tYBCv1+CMO5hi289AgMBAAECggEBAIRbRJUWXmEwdq64kGbELlV6CIZ2p3mvOSlIjO34Cy7IK7AMz9xOgbpj/XDK9miOIJTouu7ZC7GcZdGZ4BUCYBMMS0fKjGFuurpZlXhkslNTPqEHtCUkXhIpOR7RDrwIlErGEOIsZC4aXQcM3tF1t7mroJLh4OY4dHMu82lv5NM4hhFMNvHzXVvrPXeTzw26gddHVG/ke0WUYOcB5j3cPp8xaVp7JV8bdxtGtkqIfBLY/dIczzJu/3F3cBpU2nNwt8uVUF/w/HKlr7j8FqqFHXWh182beU0n5AIdRyRJBrRUAEhdtsUnvJOVBDqzZa+9DJ5395F7V8KRlQptxETdhCECgYEA4x/2HM9fnVIhG6wTbEt1LhGTKYb/igMAHLqquEMfRsB44tobI8gVNwR3qJQY/nKXxcQemQV29PcdqpENCKyXUXGD8SI1UPg15rHFBI8CIqlCXfzJybdHjmzlhaA9I5lofIVh+5MW7WkvHZoRy7NeDMhHUuaiveuqC4OJ8n+dD2kCgYEA2LkmUVef3WkBBwUBRdkyoog3DMwR+/ubb0ncJVYy3ItYVJltQ4HqmrRiJc8xBAoFnG8rbiqDnmTnDR3WbuxU1G2hml09fqId+rQds2UfESswCXHU43A4f77m1XyA6PprBxpozVIcmK69N4rR9jOXflLWo3O+p2ipUbmNpId7+rUCgYBSpcbBJRT+AmzZzPwkZDD32p1ady114zGfQq3s7z/qVw+mPQezNZPCuXVxerK9pKVl6b/Ynwxyh5nb/3xms6c8k7oXfQM5u5ihof63cfKs+jqUSPCE3pTDVw0OWwjkc2Z6KW9GRHgLXEMw2mevYE3RCPArUpHV2nO+TNddzuIwQQKBgQDOZwdnUNygMfEYjlu3+jOPN8u2FGTMZ8SRKPbRWFb4VH27lKPLN2AIFuOivsEf56uQYRAry7GumMq0Y0ZmPg5Mglz2dvaqNBv5OLFQuW3tHAST+iWWtroYb+fISts7B8QG79AAO8OgZksvKrbslBYj6SEiaomZRsR7YQzVNXOOQQKBgQCovElZ50c8ZJ6m9D9fw3Nes7u9vshpyyac5tt4tZ7yfU4l5pWGrIUqCE703qZp4NAqEvlZUCJbj9kkysaj/2MfFb2b9jSvdNB+V/YW9Cwg+5TziYoOcQzN1z2u4p4goTAv0S+pTNSr3qWaTUI4TXUXQajif45Fexv+MrP5AAXQyw==' + // // let text = '你好'; + // let text = '[{"vod_name":"兔小贝原创儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg","vod_remarks":"共229首","vod_content":"","vod_id":"/subject/17@@兔小贝原创儿歌@@https://resource-cdn.tuxiaobei.com/video-album/FnQ8ieJHgsbgCKWXNBg4uoOmKgG5.jpg"},{"vod_name":"英文儿歌","vod_pic":"https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg","vod_remarks":"共10首","vod_content":"","vod_id":"/subject/23@@英文儿歌@@https://resource-cdn.tuxiaobei.com/video-album/Fqjpx2H_-QaYNAYn2MekRuDpeyUv.jpg"}]'; + // let str = RSA.encode(text, publicKey); + // console.log("加密数据:" + str); + // let str1 = 'Wa2c/868VOm0PgpGG2s2aMrDbGOlJRdZXlSGswjFgywd3nZNB7ND8kVMdNB/OsNFoQXJXSJMvPaE73BH7rs8fz54JGdYQK+qTgfQRqQZvomCjbzseSR4bm4NOrtIOOslL3WqxlzOuU0M1P1eERmkLEVU2WSyc3RGtJro3b3MOWYCNdKMoZdncfOHJndkl4wm9V3GGc3uH98hs6OxLvBWgXoW9jZQ3n0vR2FtS2KYrPGuSuKGkxlt9Kw5TD6nri142NOimz05WK55Xe04YUQ1VZd51t0wzJGXolWgfzIQaK2zzhk5Zjlm+IQJxXqEWiJ2+O6TJ+lIttvsDSaUflcDXQ=='; + // let str2 = 'R86mW9DzBw05pxBSh9ECh1stXxINmnudgZBbzU/cz1EcFgrEgdk0Zk4ruAiJZB2fP5c7d3gMmN8+Dv19IfARWSzw85xCEjUhpdcMJ0jn6ZE5H+muadND9LzjeVisojqwYxot3YVdKof7HMhPFN8QR0jfzqhjmnGFTlY1jMXzJK0MSOLNRLDar480CdKNb/cxALC8+xKIlhM9E4B31t8J4rNMUWSCAr49lbZ3jx3PxieBpTQUdDJz96AttR93Pc+c51wrxh0Ch/Mt4Rs09HGMXwIpNV+CxsGwSGRQUlyJo2k3d0WqsVzpz6S8A4VGEMTRLGI3IjEt+eWt7wM3nAXarg=='; + // let str3 = 'D4eOsRqua+jYA5+ZOR9PLI2PExKjKfArQfv9/wGeG50bQSjWypShJPY6RQfO+rghyf0juzHIUSxqH91OxinhCFkONaF2Vod2QVyphyn9eh73dAcEFKIFFKGXoPCjbMWrr3p4d+hgVrHzrFeGqkRq8JFOvG2L5XDxVfWbV8KmUA0DKuz6QwWg7P4kesy+C7BbLALy5W/wfZchD3gnsBvx/pjFoe11VfAify9isLxg9a15jj52xr6lzQ9kge9C2JcV8yq85bFKaUpJWgobzz+BSIv3lVMU6vgcldmOrhkyiETpFGFGGF00DphGCEoK6uAyyNDh7+Jn8P17zf/DW1wV3A=='; + // let uncrypted = RSA.decode(str, privateKey); + // log('解密数据:'+uncrypted); + // uncrypted = RSA.decode(str1, privateKey); + // log('解密数据1:'+uncrypted); + // uncrypted = RSA.decode(str2, privateKey); + // log('解密数据2:'+uncrypted); + // uncrypted = RSA.decode(str3, privateKey); + // log('解密数据3:'+uncrypted); + + // log('rsax:'+typeof(rsax)); + // log('rsaX:'+typeof(rsaX)); + // let data = base64Encode('你好'); + // let publicKey = 'dzyyds'; + // console.log(typeof (RSA.encode)); + // let encryptBase64Data = RSA.encode(data,publicKey); + // log('encryptBase64Data:'+encryptBase64Data); + // let str = RSA.decode(data,publicKey); + // log('str:'+str); +} + +/** + * 验证码ocr识别的测试案例 + */ +function ocr_demo_test() { + // 这张图片为4113的验证码 + let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`; + // 更换api-可以通过这个代码换掉默认的ocr接口 + OcrApi.api = OCR_API; + let code = OcrApi.classification(img_base64); + log('测试验证码图片的ocr识别结果为:' + code); +} + +/** + * rsa加解密的全方位测试案例 + */ +function rsa_demo_test() { + let t1 = new Date().getTime(); + let pkcs1_public = ` +-----BEGIN RSA PUBLIC KEY----- +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +-----END RSA PUBLIC KEY----- +`.trim(); + + let pkcs1_public_pem = ` +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +`.trim(); + + let pkcs8_public = ` +-----BEGIN PUBLIC KEY----- +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +-----END PUBLIC KEY-----`.trim(); + + let pkcs8_public_pem = ` +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +`.trim(); + + let pkcs1_private = ` +-----BEGIN RSA PRIVATE KEY----- +MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7 +ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt +0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ +AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA +hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+ +5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS +EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q== +-----END RSA PRIVATE KEY----- +`.trim() + + let pkcs8_private = ` +-----BEGIN PRIVATE KEY----- +MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf +dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v +YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8 +KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8 +s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl +AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3 +rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6 +lPxDjezd +-----END PRIVATE KEY----- +`.trim() + + let data = ` +NodeRsa +这是node-rsa 现在修改集成在drpy里使用`.trim(); + + let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, { + // PublicFormat: "pkcs1-public-pem", + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: 'pkcs1_oaep' + }, + }); + console.log("公钥加密"); + console.log(encryptedWithPublic); + + + let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, { + // PublicFormat: "pkcs1-private", + // outEncoding: "hex" + options: { + environment: "browser", + encryptionScheme: 'pkcs1_oaep' + }, + }); + console.log("私钥解密"); + console.log(decryptedWithPrivate); + + + // https://www.btool.cn/rsa-sign + let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: 'pkcs1', + signingScheme: "pkcs1-sha256" + }, + }); + console.log("pkcs1_sha256_sign"); + console.log(pkcs1_sha256_sign); + + let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, { + options: { + environment: "browser", + encryptionScheme: 'pkcs1', + signingScheme: "pkcs1-sha256" + }, + }); + console.log("pkcs1_sha256_sign_verify"); + console.log(pkcs1_sha256_sign_verify); + + let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du +SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm +kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8 +PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m +PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb +Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB +-----END RSA PUBLIC KEY----- +`, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: { + scheme: "pkcs1_oaep", + hash: "sha256", + }, + } + // options: { environment: "browser", encryptionScheme: 'pkcs1' }, + }); + console.log("pkcs1_oaep_sha256"); + console.log(pkcs1_oaep_sha256); + + decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is +T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S +xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy +3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+ +HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA +ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/ +zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31 +iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l +QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu +eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ +8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9 +l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC +WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J +NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0 +o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3 +ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ +I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i +tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P +vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p +yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC +8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87 +HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN +QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51 +MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw +m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA== +-----END RSA PRIVATE KEY-----`, { + // PublicFormat: "pkcs1-private", + // outEncoding: "hex" + options: { + environment: "browser", + encryptionScheme: 'pkcs1_oaep' + }, + }); + console.log('decryptedWithPrivate'); + console.log(decryptedWithPrivate); + + + (() => { + let key = new NODERSA.NodeRSA({ + b: 1024 + }); + key.setOptions({ + encryptionScheme: 'pkcs1' + }) + let text = `你好drpy node-ras`; + let encrypted = key.encrypt(text, 'base64'); + console.log('encrypted: ', encrypted); + const decrypted = key.decrypt(encrypted, 'utf8'); + console.log('decrypted: ', decrypted); + })(); + let t2 = new Date().getTime(); + console.log('rsa_demo_test 测试耗时:' + (t2 - t1) + '毫秒'); +} + + +/** + * 执行预处理代码 + */ +function pre() { + if (typeof(rule.预处理) === 'string' && rule.预处理 && rule.预处理.trim()) { + let code = rule.预处理.trim(); + console.log("执行预处理代码:" + code); + if (code.startsWith('js:')) { + code = code.replace('js:', ''); + } + try { + // code里可以进行get 或者 post请求cookie并改变rule.headers 里的cookie + // 直接操作 rule_fetch_params 这个变量 .headers.Cookie + eval(code); + } catch (e) { + console.log(`预处理执行失败:${e.message}`); + } + } +} + +let rule = {}; +/** 已知问题记录 + * 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了] + * Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下) + * 2.import es6py.js但是里面的函数没有被装载进来.比如drpy规则报错setResult2 is undefiend(合并文件了可以不管了) + * 3.无法重复导入cheerio(怎么解决drpy和parseTag里都需要导入cheerio的问题) 无法在副文件导入cheerio (现在是全部放在drpy一个文件里了,凑合解决?) + * 4.有个错误不知道哪儿来的 executeScript: com.quickjs.JSObject$Undefined cannot be cast to java.lang.String 在 点击选集播放打印init_test_end后面打印(貌似不影响使用) + * 5.需要实现 stringify 函数,比起JSON.strifngify函数,它会原封不动保留中文不会编码unicode + * 6.base64Encode,base64Decode,md5函数还没有实现 (抄影魔代码实现了) + * 7.eval(getCryptoJS());还没有实现 (可以空实现了,以后遇到能忽略) + * done: jsp:{pdfa,pdfh,pd},json:{pdfa,pdfh,pd},jq:{pdfa,pdfh,pd} + * 8.req函数不支持传递字符串的data参数 {'content-type':'text/plain'} 类型数据,因此无法直接调用alist的ocr接口 + * * 电脑看日志调试 + adb tcpip 5555 + adb connect 192.168.10.192 + adb devices -l + adb logcat -c + adb logcat | grep -i QuickJS + adb logcat -c -b events + adb logcat -c -b main -b events -b radio -b system + adb logcat > 2.log DRPY:E | grep -i QuickJS + * **/ + + +/*** 以下是内置变量和解析方法 **/ +const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36'; +const PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36'; +const UA = 'Mozilla/5.0'; +const UC_UA = 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36'; +const IOS_UA = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'; +const RULE_CK = 'cookie'; // 源cookie的key值 +// const KEY = typeof(key)!=='undefined'&&key?key:'drpy_' + (rule.title || rule.host); // 源的唯一标识 +const CATE_EXCLUDE = '首页|留言|APP|下载|资讯|新闻|动态'; +const TAB_EXCLUDE = '猜你|喜欢|下载|剧情|榜|评论'; +const OCR_RETRY = 3; //ocr验证重试次数 +// const OCR_API = 'http://drpy.nokia.press:8028/ocr/drpy/text';//ocr在线识别接口 +const OCR_API = 'https://api.nn.ci/ocr/b64/text'; //ocr在线识别接口 +if (typeof(MY_URL) === 'undefined') { + var MY_URL; // 全局注入变量,pd函数需要 +} +var HOST; +var RKEY; // 源的唯一标识 +var fetch; +var print; +var log; +var rule_fetch_params; +var fetch_params; // 每个位置单独的 +var oheaders; +// var play_url; // 二级详情页注入变量,为了适配js模式0 (不在这里定义了,直接二级里定义了个空字符串) +var _pdfh; +var _pdfa; +var _pd; +// const DOM_CHECK_ATTR = ['url', 'src', 'href', 'data-original', 'data-src']; +const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +// 过滤特殊链接,不走urlJoin +const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; +const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; // 不自动加eq下标索引 +const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; // 需要自动urljoin的属性 +const SELECT_REGEX = /:eq|:lt|:gt|#/g; +const SELECT_REGEX_A = /:eq|:lt|:gt/g; + +// 增加$js工具,支持$js.toString(()=>{}); +const $js = { + toString(func) { + let strfun = func.toString(); + return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, ''); + } +}; + +function window_b64() { + let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); + + function btoa(str) { + var out, i, len; + var c1, c2, c3; + len = str.length; + i = 0; + out = ""; + while (i < len) { + c1 = str.charCodeAt(i++) & 0xff; + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 0x3) << 4); + out += "=="; + break; + } + c2 = str.charCodeAt(i++); + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); + out += b64map.charAt((c2 & 0xF) << 2); + out += "="; + break; + } + c3 = str.charCodeAt(i++); + out += b64map.charAt(c1 >> 2); + out += b64map.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4)); + out += b64map.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6)); + out += b64map.charAt(c3 & 0x3F); + } + return out; + } + + function atob(str) { + var c1, c2, c3, c4; + var i, len, out; + len = str.length; + i = 0; + out = ""; + while (i < len) { + do { + c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c1 == -1); + if (c1 == -1) break; + do { + c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; + } while (i < len && c2 == -1); + if (c2 == -1) break; + out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); + do { + c3 = str.charCodeAt(i++) & 0xff; + if (c3 == 61) return out; + c3 = base64DecodeChars[c3]; + } while (i < len && c3 == -1); + if (c3 == -1) break; + out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); + do { + c4 = str.charCodeAt(i++) & 0xff; + if (c4 == 61) return out; + c4 = base64DecodeChars[c4]; + } while (i < len && c4 == -1); + if (c4 == -1) break; + out += String.fromCharCode(((c3 & 0x03) << 6) | c4); + } + return out; + } + + return { + atob, + btoa + } +} + +/** + es6py扩展 + */ +if (typeof atob !== 'function' || typeof btoa !== 'function') { + var { + atob, + btoa + } = window_b64(); +} + +if (typeof Object.assign !== 'function') { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; i < arguments.length; i++) { + let source = arguments[i]; + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; +} +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + if (typeof start !== 'number') { + start = 0; + } + + if (start + search.length > this.length) { + return false; + } else { + return this.indexOf(search, start) !== -1; + } + }; +} + +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, 'includes', { + value: function(searchElement, fromIndex) { + + if (this == null) { //this是空或者未定义,抛出错误 + throw new TypeError('"this" is null or not defined'); + } + + var o = Object(this); //将this转变成对象 + var len = o.length >>> 0; //无符号右移0位,获取对象length属性,如果未定义就会变成0 + + if (len === 0) { //length为0直接返回false未找到目标值 + return false; + } + + var n = fromIndex | 0; //查找起始索引 + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); //计算正确起始索引,因为有可能是负值 + + while (k < len) { //从起始索引处开始循环 + if (o[k] === searchElement) { //如果某一位置与寻找目标相等,返回true,找到了 + return true; + } + k++; + } + return false; //未找到,返回false + }, + enumerable: false + }); +} +if (typeof String.prototype.startsWith !== 'function') { + String.prototype.startsWith = function(prefix) { + return this.slice(0, prefix.length) === prefix; + }; +} +if (typeof String.prototype.endsWith !== 'function') { + String.prototype.endsWith = function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1; + }; +} +Object.defineProperty(Object.prototype, 'myValues', { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var res = [] + for (var k in obj) { + if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性 + res.push(obj[k]); + } + } + return res; + }, + enumerable: false +}); +if (typeof Object.prototype.values !== 'function') { + Object.defineProperty(Object.prototype, 'values', { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var res = [] + for (var k in obj) { + if (obj.hasOwnProperty(k)) { //需判断是否是本身的属性 + res.push(obj[k]); + } + } + return res; + }, + enumerable: false + }); +} +if (typeof Array.prototype.join !== 'function') { + Object.defineProperty(Array.prototype, 'join', { + value: function(emoji) { + // emoji = emoji||','; + emoji = emoji || ''; + let self = this; + let str = ""; + let i = 0; + if (!Array.isArray(self)) { + throw String(self) + 'is not Array' + } + if (self.length === 0) { + return '' + } + if (self.length === 1) { + return String(self[0]) + } + i = 1; + str = this[0]; + for (; i < self.length; i++) { + str += String(emoji) + String(self[i]); + } + return str; + }, + enumerable: false + }); +} +if (typeof Array.prototype.toReversed !== 'function') { + Object.defineProperty(Array.prototype, 'toReversed', { + value: function() { + const clonedList = this.slice(); + // 倒序新数组 + const reversedList = clonedList.reverse(); + return reversedList; + }, + enumerable: false + }); +} + +Object.defineProperty(Array.prototype, 'append', { + value: Array.prototype.push, + enumerable: false +}); +Object.defineProperty(String.prototype, 'strip', { + value: String.prototype.trim, + enumerable: false +}); +Object.defineProperty(String.prototype, 'rstrip', { + value: function(chars) { + let regex = new RegExp(chars + "$"); + return this.replace(regex, ""); + }, + enumerable: false +}); + +function 是否正版(vipUrl) { + let flag = new RegExp('qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com|sohu\.com|ixigua\.com|pptv\.com|miguvideo\.com|le\.com|1905\.com|fun\.tv'); + return flag.test(vipUrl); +} + +function urlDeal(vipUrl) { + if (!vipUrl) { + return '' + } + if (!是否正版(vipUrl)) { + return vipUrl + } + if (!/miguvideo/.test(vipUrl)) { + vipUrl = vipUrl.split('#')[0].split('?')[0]; + } + return vipUrl +} + +function setResult(d) { + if (!Array.isArray(d)) { + return [] + } + VODS = []; + // print(d); + d.forEach(function(it) { + let obj = { + vod_id: it.url || '', + vod_name: it.title || '', + vod_remarks: it.desc || '', + vod_content: it.content || '', + vod_pic: it.pic_url || it.img || '', + }; + let keys = Object.keys(it); + if (keys.includes('tname')) { + obj.type_name = it.tname || ''; + } + if (keys.includes('tid')) { + obj.type_id = it.tid || ''; + } + if (keys.includes('year')) { + obj.vod_year = it.year || ''; + } + if (keys.includes('actor')) { + obj.vod_actor = it.actor || ''; + } + if (keys.includes('director')) { + obj.vod_director = it.director || ''; + } + if (keys.includes('area')) { + obj.vod_area = it.area || ''; + } + VODS.push(obj); + }); + return VODS +} + +function setResult2(res) { + VODS = res.list || []; + return VODS +} + +function setHomeResult(res) { + if (!res || typeof(res) !== 'object') { + return [] + } + return setResult(res.list); +} + +// 猫了个咪 +function rc(js) { + if (js === 'maomi_aes.js') { + var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); + var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); + return { + De: function(word) { + word = CryptoJS.enc.Hex.parse(word) + return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + }, + En: function(word) { + // print(a); + // print(word); + var Encrypted = CryptoJS.AES.encrypt(word, a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return Encrypted.ciphertext.toString(); + } + }; + } + return {}; +} + +// 千万不要用for in 推荐 forEach (for in 会打乱顺序) +//猫函数 +function maoss(jxurl, ref, key) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + eval(getCryptoJS()); + try { + var getVideoInfo = function(text) { + return CryptoJS.AES.decrypt(text, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8); + }; + var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key; + if (ref) { + var html = request(jxurl, { + headers: { + 'Referer': ref + } + }); + } else { + var html = request(jxurl); + } + // print(html); + if (html.indexOf('&btwaf=') != -1) { + html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], { + headers: { + 'Referer': ref + } + }) + } + var token_iv = html.split('_token = "')[1].split('"')[0]; + var key = CryptoJS.enc.Utf8.parse(token_key); + var iv = CryptoJS.enc.Utf8.parse(token_iv); + // log("iv:"+iv); + // log(html); + // print(key); + // print(iv); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ''); + // config.url = config.url.replace(/,/g,''); + // print(config.url); + if (!config.url.startsWith('http')) { + //config.url = decodeURIComponent(AES(config.url, key, iv)); + config.url = CryptoJS.AES.decrypt(config.url, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + } + return config.url; + } catch (e) { + return ''; + } +} + +/** + * 将base64编码进行url编译 + * @param str + * @returns {string} + */ +function urlencode(str) { + str = (str + '').toString(); + return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+'); +} + +/** + * url编码,同 encodeURI + * @param str + * @returns {string} + */ +function encodeUrl(str) { + if (typeof(encodeURI) == 'function') { + return encodeURI(str) + } else { + str = (str + '').toString(); + return encodeURIComponent(str).replace(/%2F/g, '/').replace(/%3F/g, '?').replace(/%3A/g, ':').replace(/%40/g, '@').replace(/%3D/g, '=').replace(/%3A/g, ':').replace(/%2C/g, ',').replace(/%2B/g, '+').replace(/%24/g, '$'); + } +} + +function base64Encode(text) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)); + // return text +} + +function base64Decode(text) { + return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)); + // return text +} + +function md5(text) { + return CryptoJS.MD5(text).toString(); +} + +function uint8ArrayToBase64(uint8Array) { + let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array)); + return btoa(binaryString); +} + +function Utf8ArrayToStr(array) { + var out, i, len, c; + var char2, char3; + out = ""; + len = array.length; + i = 0; + while (i < len) { + c = array[i++]; + switch (c >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + out += String.fromCharCode(c); + break; + case 12: + case 13: + char2 = array[i++]; + out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f)); + break; + case 14: + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode( + ((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0) + ); + break; + } + } + return out; +} + +/** + * gzip压缩base64|压缩率80%+ + * @param str + * @returns {string} + */ +function gzip(str) { + let arr = pako.gzip(str, { + // to: 'string' + }); + return uint8ArrayToBase64(arr) +} + +/** + * gzip解压base64数据 + * @param b64Data + * @returns {string} + */ +function ungzip(b64Data) { + let strData = atob(b64Data); + const charData = strData.split('').map(function(x) { + return x.charCodeAt(0); + }); + const binData = new Uint8Array(charData); + const data = pako.inflate(binData); + return Utf8ArrayToStr(data); +} + +/** + * 字符串按指定编码 + * @param input + * @param encoding + * @returns {*} + */ +function encodeStr(input, encoding) { + encoding = encoding || 'gbk'; + if (encoding.startsWith('gb')) { + const strTool = gbkTool(); + input = strTool.encode(input); + } + return input +} + +/** + * 字符串指定解码 + * @param input + * @param encoding + * @returns {*} + */ +function decodeStr(input, encoding) { + encoding = encoding || 'gbk'; + if (encoding.startsWith('gb')) { + const strTool = gbkTool(); + input = strTool.decode(input); + } + return input +} + +function getCryptoJS() { + // return request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/libs/crypto-hiker.js'); + return 'console.log("CryptoJS已装载");' +} + +// 封装的RSA加解密类 +const RSA = { + decode: function(data, key, option) { + option = option || {}; + if (typeof(JSEncrypt) === 'function') { + let chunkSize = option.chunkSize || 117; // 默认分段长度为117 + let privateKey = this.getPrivateKey(key); // 获取私钥 + const decryptor = new JSEncrypt(); //创建解密对象实例 + decryptor.setPrivateKey(privateKey); //设置秘钥 + let uncrypted = ''; + // uncrypted = decryptor.decrypt(data); + uncrypted = decryptor.decryptUnicodeLong(data); + return uncrypted; + } else { + return false + } + }, + encode: function(data, key, option) { + option = option || {}; + if (typeof(JSEncrypt) === 'function') { + let chunkSize = option.chunkSize || 117; // 默认分段长度为117 + let publicKey = this.getPublicKey(key); // 获取公钥 + const encryptor = new JSEncrypt(); + encryptor.setPublicKey(publicKey); // 设置公钥 + let encrypted = ''; // 加密结果 + // const textLen = data.length; // 待加密文本长度 + // let offset = 0; // 分段偏移量 + // // 分段加密 + // while (offset < textLen) { + // let chunk = data.slice(offset, chunkSize); // 提取分段数据 + // let enc = encryptor.encrypt(chunk); // 加密分段数据 + // encrypted += enc; // 连接加密结果 + // offset += chunkSize; // 更新偏移量 + // } + encrypted = encryptor.encryptUnicodeLong(data); + return encrypted + } else { + return false + } + }, + fixKey(key, prefix, endfix) { + if (!key.includes(prefix)) { + key = prefix + key; + } + if (!key.includes(endfix)) { + key += endfix + } + return key + }, + getPrivateKey(key) { + let prefix = '-----BEGIN RSA PRIVATE KEY-----'; + let endfix = '-----END RSA PRIVATE KEY-----'; + return this.fixKey(key, prefix, endfix); + }, + getPublicKey(key) { + let prefix = '-----BEGIN PUBLIC KEY-----'; + let endfix = '-----END PUBLIC KEY-----'; + return this.fixKey(key, prefix, endfix); + } +}; + +/** + * 获取壳子返回的代理地址 + * @returns {string|*} + */ +function getProxyUrl() { + if (typeof(getProxy) === 'function') { //判断壳子里有getProxy函数就执行取返回结果。否则取默认的本地 + return getProxy(true) + } else { + return 'http://127.0.0.1:9978/proxy?do=js' + } +} + +/** + * 根据正则处理原始m3u8里的广告ts片段,自动修复相对链接 + * @param m3u8_text m3u8原始文本,里面是最末级的只含ts片段的。不支持嵌套m3u8链接 + * @param m3u8_url m3u8原始地址 + * @param ad_remove 正则表达式如: reg:/video/adjump(.*?)ts + * @returns {string|DocumentFragment|*|string} + */ +function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { + if ((!m3u8_text && !m3u8_url) || (!m3u8_text && m3u8_url && !m3u8_url.startsWith('http'))) { + return '' + } + if (!m3u8_text) { + log('m3u8_url:' + m3u8_url); + m3u8_text = request(m3u8_url); + } + log('len(m3u8_text):' + m3u8_text.length); + if (!ad_remove) { + return m3u8_text + } + if (ad_remove.startsWith('reg:')) { + ad_remove = ad_remove.slice(4) + } else if (ad_remove.startsWith('js:')) { + ad_remove = ad_remove.slice(3) + } + let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf('#EXTINF')).trim(); + let m3u8_body = m3u8_text.slice(m3u8_text.indexOf('#EXTINF'), m3u8_text.indexOf('#EXT-X-ENDLIST')).trim(); + let m3u8_end = m3u8_text.slice(m3u8_text.indexOf('#EXT-X-ENDLIST')).trim(); + let murls = []; + let m3_body_list = m3u8_body.split('\n'); + let m3_len = m3_body_list.length; + let i = 0; + while (i < m3_len) { + let mi = m3_body_list[i]; + let mi_1 = m3_body_list[i + 1]; + if (mi.startsWith('#EXTINF')) { + murls.push([mi, mi_1].join('&')); + i += 2 + } else if (mi.startsWith('#EXT-X-DISCONTINUITY')) { + let mi_2 = m3_body_list[i + 2]; + murls.push([mi, mi_1, mi_2].join('&')); + i += 3 + } else { + break; + } + } + let new_m3u8_body = []; + for (let murl of murls) { + if (ad_remove && new RegExp(ad_remove).test(murl)) { + + } else { + let murl_list = murl.split('&'); + if (!murl_list[murl_list.length - 1].startsWith('http') && m3u8_url.startsWith('http')) { + murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]); + } + murl_list.forEach((it) => { + new_m3u8_body.push(it); + }); + } + + } + new_m3u8_body = new_m3u8_body.join('\n').trim(); + m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join('\n').trim(); + return m3u8_text +} + +/** + * 智能对比去除广告。支持嵌套m3u8。只需要传入播放地址 + * @param m3u8_url m3u8播放地址 + * @param headers 自定义访问m3u8的请求头,可以不传 + * @returns {string} + */ +function fixAdM3u8Ai(m3u8_url, headers) { + let ts = (new Date).getTime(); + let option = headers ? { + headers: headers + } : {}; + + function b(s1, s2) { + let i = 0; + while (i < s1.length) { + if (s1[i] !== s2[i]) { + break + } + i++ + } + return i + } + + function reverseString(str) { + return str.split("").reverse().join("") + } + let m3u8 = request(m3u8_url, option); + m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n"); + m3u8 = m3u8.replace(/\n\n/gi, "\n"); + let last_url = m3u8.split("\n").slice(-1)[0]; + if (last_url.length < 5) { + last_url = m3u8.split("\n").slice(-2)[0] + } + if (last_url.includes(".m3u8") && last_url !== m3u8_url) { + m3u8_url = urljoin2(m3u8_url, last_url); + log("嵌套的m3u8_url:" + m3u8_url); + m3u8 = request(m3u8_url, option) + } + let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n"); + let ss = s.split("\n"); + if (m3u8_url.indexOf("ffzy") > 0) { + let j = 0, + k1 = 0, + m = 0, + n = 0, + t = 0; + let s2 = ""; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + let s1 = ""; + if (s.startsWith("#EXTINF")) { + s1 = s.slice(8); + n++; + if (n == 1) + k1 = i; + if (s2.indexOf(s1) == -1) { + s2 = s2 + s1; + m++; + } + t = t + parseFloat(s1); + i++; + s = ss[i]; + } + if (s.startsWith("#EXT-X-DISCONTINUITY")) { + if (n == 5) { + log("n:" + n); + log("m:" + m); + for (let j = k1; j < k1 + n * 2; j++) { + log(ss[j]); + } + log("广告位置:" + k1); + log("数据条数:" + n); + log("数据种类:" + m); + log("广告时间:" + t.toFixed(5)); + ss.splice(k1, 2 * n + 1); + i = i - 2 * n + 1; + } + t = 0; + m = 0; + n = 0; + s2 = ""; + } + } + } + let firststr = ""; + let maxl = 0; + let kk = 0; + let kkk1 = 1; + let kkk2 = 0; + let secondstr = ""; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (kk == 0) + firststr = s; + if (kk > 0) { + if (maxl > b(firststr, s) + 1) { + if (secondstr.length < 5) + secondstr = s; + kkk2++ + } else { + maxl = b(firststr, s); + kkk1++ + } + } + kk++; + if (kk >= 30) + break + } + } + if (kkk2 > kkk1) + firststr = secondstr; + let firststrlen = firststr.length; + let ml = Math.round(ss.length / 2).toString().length; + let maxc = 0; + let laststr = ss.toReversed().find(x => { + if (!x.startsWith("#")) { + let k = b(reverseString(firststr), reverseString(x)); + maxl = b(firststr, x); + maxc++; + if (firststrlen - maxl <= ml + k || maxc > 10) { + return true + } + } + return false + }); + log("最后一条切片:" + laststr); + let ad_urls = []; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (b(firststr, s) < maxl) { + ad_urls.push(s); + ss.splice(i - 1, 2); + i = i - 2 + } else { + ss[i] = urljoin(m3u8_url, s) + } + } else { + ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') + } + } + log("处理的m3u8地址:" + m3u8_url); + log("----广告地址----"); + log(ad_urls); + m3u8 = ss.join("\n"); + log("处理耗时:" + ((new Date).getTime() - ts).toString()); + log(m3u8); + return m3u8 +} + + +/** + * 强制正序算法 + * @param lists 待正序列表 + * @param key 正序键 + * @param option 单个元素处理函数 + * @returns {*} + */ +function forceOrder(lists, key, option) { + let start = Math.floor(lists.length / 2); + let end = Math.min(lists.length - 1, start + 1); + if (start >= end) { + return lists; + } + let first = lists[start]; + let second = lists[end]; + if (key) { + try { + first = first[key]; + second = second[key]; + } catch (e) {} + } + if (option && typeof(option) === 'function') { + try { + first = option(first); + second = option(second); + } catch (e) {} + } + first += ''; + second += ''; + // console.log(first,second); + if (first.match(/(\d+)/) && second.match(/(\d+)/)) { + let num1 = Number(first.match(/(\d+)/)[1]); + let num2 = Number(second.match(/(\d+)/)[1]); + if (num1 > num2) { + lists.reverse(); + } + } + return lists +} + +let VODS = []; // 一级或者搜索需要的数据列表 +let VOD = {}; // 二级的单个数据 +let TABS = []; // 二级的自定义线路列表 如: TABS=['道长在线','道长在线2'] +let LISTS = []; // 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']] + +/** + * 获取链接的query请求转为js的object字典对象 + * @param url + * @returns {{}} + */ +function getQuery(url) { + try { + if (url.indexOf('?') > -1) { + url = url.slice(url.indexOf('?') + 1); + } + let arr = url.split("#")[0].split("&"); + const resObj = {}; + arr.forEach(item => { + let arr1 = item.split("="); + let key = arr1[0]; + let value = arr1.slice(1).join('='); + resObj[key] = value; + }); + return resObj; + } catch (err) { + log(`getQuery发生错误:${e.message}`) + return {}; + } +} + +/** + * url拼接 + * @param fromPath 初始当前页面url + * @param nowPath 相对当前页面url + * @returns {*} + */ +function urljoin(fromPath, nowPath) { + fromPath = fromPath || ''; + nowPath = nowPath || ''; + return joinUrl(fromPath, nowPath); + // try { + // // import Uri from './uri.min.js'; + // // var Uri = require('./uri.min.js'); + // // eval(request('https://cdn.bootcdn.net/ajax/libs/URI.js/1.19.11/URI.min.js')); + // // let new_uri = URI(nowPath, fromPath); + + // let new_uri = Uri(nowPath, fromPath); + // new_uri = new_uri.toString(); + // // console.log(new_uri); + // // return fromPath + nowPath + // return new_uri + // } + // catch (e) { + // console.log('urljoin发生错误:'+e.message); + // if(nowPath.startsWith('http')){ + // return nowPath + // }if(nowPath.startsWith('/')){ + // return getHome(fromPath)+nowPath + // } + // return fromPath+nowPath + // } +} + +var urljoin2 = urljoin; + +// 内置 pdfh,pdfa,pd +const defaultParser = { + pdfh: pdfh, + pdfa: pdfa, + pd: pd, +}; + + +/** + * pdfh原版优化,能取style属性里的图片链接 + * @param html 源码 + * @param parse 解析表达式 + * @returns {string|*} + */ +function pdfh2(html, parse) { + let html2 = html; + try { + if (typeof(html) !== 'string') { + html2 = html.rr(html.ele).toString(); + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`); + } + let result = defaultParser.pdfh(html2, parse); + let option = parse.includes('&&') ? parse.split('&&').slice(-1)[0] : parse.split(' ').slice(-1)[0]; + if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { + try { + result = result.match(/url\((.*?)\)/)[1]; + // 2023/07/28新增 style取内部链接自动去除首尾单双引号 + result = result.replace(/^['|"](.*)['|"]$/, "$1"); + } catch (e) {} + } + return result +} + +/** + * pdfa原版优化,可以转换jq的html对象 + * @param html + * @param parse + * @returns {*} + */ +function pdfa2(html, parse) { + let html2 = html; + try { + if (typeof(html) !== 'string') { + html2 = html.rr(html.ele).toString(); + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`); + } + return defaultParser.pdfa(html2, parse); +} + +/** + * pd原版方法重写-增加自动urljoin + * @param html + * @param parse + * @param uri + * @returns {*} + */ +function pd2(html, parse, uri) { + let ret = pdfh2(html, parse); + if (typeof(uri) === 'undefined' || !uri) { + uri = ''; + } + if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { + if (/http/.test(ret)) { + ret = ret.slice(ret.indexOf('http')); + } else { + ret = urljoin(MY_URL, ret) + } + } + // MY_URL = getItem('MY_URL',MY_URL); + // console.log(`规则${RKEY}打印MY_URL:${MY_URL},uri:${uri}`); + return ret +} + +const parseTags = { + jsp: { + pdfh: pdfh2, + pdfa: pdfa2, + pd: pd2, + }, + json: { + pdfh(html, parse) { + if (!parse || !parse.trim()) { + return ''; + } + if (typeof(html) === 'string') { + // print('jsonpath:pdfh字符串转dict'); + html = JSON.parse(html); + } + parse = parse.trim(); + if (!parse.startsWith('$.')) { + parse = '$.' + parse; + } + parse = parse.split('||'); + for (let ps of parse) { + let ret = cheerio.jp(ps, html); + if (Array.isArray(ret)) { + ret = ret[0] || ''; + } else { + ret = ret || '' + } + if (ret && typeof(ret) !== 'string') { + ret = ret.toString(); + } + if (ret) { + return ret + } + } + return ''; + }, + pdfa(html, parse) { + if (!parse || !parse.trim()) { + return ''; + } + if (typeof(html) === 'string') { + // print('jsonpath:pdfa字符串转dict'); + html = JSON.parse(html); + } + parse = parse.trim() + if (!parse.startsWith('$.')) { + parse = '$.' + parse; + } + let ret = cheerio.jp(parse, html); + if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { + return ret[0] || [] + } + return ret || [] + }, + pd(html, parse) { + let ret = parseTags.json.pdfh(html, parse); + if (ret) { + return urljoin(MY_URL, ret); + } + return ret + }, + }, + jq: { + pdfh(html, parse) { + if (!html || !parse || !parse.trim()) { + return '' + } + parse = parse.trim(); + let result = defaultParser.pdfh(html, parse); + // print(`pdfh解析${parse}=>${result}`); + return result; + }, + pdfa(html, parse) { + if (!html || !parse || !parse.trim()) { + return []; + } + parse = parse.trim(); + let result = defaultParser.pdfa(html, parse); + // print(result); + print(`pdfa解析${parse}=>${result.length}`); + return result; + }, + pd(html, parse, base_url) { + if (!html || !parse || !parse.trim()) { + return '' + } + parse = parse.trim(); + base_url = base_url || MY_URL; + return defaultParser.pd(html, parse, base_url); + }, + }, + getParse(p0) { //非js开头的情况自动获取解析标签 + if (p0.startsWith('jsp:')) { + return this.jsp + } else if (p0.startsWith('json:')) { + return this.json + } else if (p0.startsWith('jq:')) { + return this.jq + } else { + return this.jq + } + } +}; + +const stringify = JSON.stringify; +const jsp = parseTags.jsp; +const jq = parseTags.jq; + +/*** 后台需要实现的java方法并注入到js中 ***/ + +/** + * 读取本地文件->应用程序目录 + * @param filePath + * @returns {string} + */ +function readFile(filePath) { + filePath = filePath || './uri.min.js'; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} + +/** + * 处理返回的json数据 + * @param html + * @returns {*} + */ +function dealJson(html) { + try { + // html = html.match(/[\w|\W|\s|\S]*?(\{[\w|\W|\s|\S]*\})/).group[1]; + html = html.trim(); + if (!((html.startsWith('{') && html.endsWith('}')) || (html.startsWith('[') && html.endsWith(']')))) { + html = '{' + html.match(/.*?\{(.*)\}/m)[1] + '}'; + } + } catch (e) {} + try { + html = JSON.parse(html); + } catch (e) {} + // console.log(typeof(html)); + return html; +} + +/** + * 验证码识别逻辑,需要java实现(js没有bytes类型,无法调用后端的传递图片二进制获取验证码文本的接口) + * @type {{api: string, classification: (function(*=): string)}} + */ +var OcrApi = { + api: OCR_API, + classification: function(img) { // img是byte类型,这里不方便搞啊 + let code = ''; + try { + // let html = request(this.api,{data:{img:img},headers:{'User-Agent':PC_UA},'method':'POST'},true); + // html = JSON.parse(html); + // code = html.url||''; + log('通过drpy_ocr验证码接口过验证...'); + let html = ''; + if (this.api.endsWith('drpy/text')) { + html = request(this.api, { + data: { + img: img + }, + headers: { + 'User-Agent': PC_UA + }, + 'method': 'POST' + }, true); + } else { + html = post(this.api, { + body: img + }); + } + code = html || ''; + } catch (e) { + log(`OCR识别验证码发生错误:${e.message}`) + } + return code + } +}; + +/** + * 验证码识别,暂未实现 + * @param url 验证码图片链接 + * @returns {string} 验证成功后的cookie + */ +function verifyCode(url) { + let cnt = 0; + let host = getHome(url); + let cookie = ''; + while (cnt < OCR_RETRY) { + try { + // let obj = {headers:headers,timeout:timeout}; + let yzm_url = `${host}/index.php/verify/index.html`; + console.log(`验证码链接:${yzm_url}`); + let hhtml = request(yzm_url, { + withHeaders: true, + toBase64: true + }, true); + let json = JSON.parse(hhtml); + if (!cookie) { + // print(json); + let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie'); + // cookie = json['set-cookie']?json['set-cookie'].split(';')[0]:''; + cookie = setCk ? json[setCk].split(';')[0] : ''; + } + // console.log(hhtml); + console.log('cookie:' + cookie); + let img = json.body; + // console.log(img); + let code = OcrApi.classification(img); + console.log(`第${cnt + 1}次验证码识别结果:${code}`); + let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; + console.log(submit_url); + let html = request(submit_url, { + headers: { + Cookie: cookie + }, + 'method': 'POST' + }); + // console.log(html); + html = JSON.parse(html); + if (html.msg === 'ok') { + console.log(`第${cnt + 1}次验证码提交成功`); + return cookie // 需要返回cookie + } else if (html.msg !== 'ok' && cnt + 1 >= OCR_RETRY) { + cookie = ''; // 需要清空返回cookie + } + } catch (e) { + console.log(`第${cnt + 1}次验证码提交失败:${e.message}`); + if (cnt + 1 >= OCR_RETRY) { + cookie = ''; + } + } + cnt += 1 + } + return cookie +} + +/** + * 存在数据库配置表里, key字段对应值value,没有就新增,有就更新,调用此方法会清除key对应的内存缓存 + * @param k 键 + * @param v 值 + */ +function setItem(k, v) { + local.set(RKEY, k, v); + console.log(`规则${RKEY}设置${k} => ${v}`) +} + +/** + * 获取数据库配置表对应的key字段的value,没有这个key就返回value默认传参.需要有缓存,第一次获取后会存在内存里 + * @param k 键 + * @param v 值 + * @returns {*} + */ +function getItem(k, v) { + return local.get(RKEY, k) || v; +} + +/** + * 删除数据库key对应的一条数据,并清除此key对应的内存缓存 + * @param k + */ +function clearItem(k) { + local.delete(RKEY, k); +} + +/*** js自封装的方法 ***/ + +/** + * 获取链接的host(带http协议的完整链接) + * @param url 任意一个正常完整的Url,自动提取根 + * @returns {string} + */ +function getHome(url) { + if (!url) { + return '' + } + let tmp = url.split('//'); + url = tmp[0] + '//' + tmp[1].split('/')[0]; + try { + url = decodeURIComponent(url); + } catch (e) {} + return url +} + +/** + * get参数编译链接,类似python params字典自动拼接 + * @param url 访问链接 + * @param obj 参数字典 + * @returns {*} + */ +function buildUrl(url, obj) { + obj = obj || {}; + if (url.indexOf('?') < 0) { + url += '?' + } + let param_list = []; + let keys = Object.keys(obj); + keys.forEach(it => { + param_list.push(it + '=' + obj[it]) + }); + let prs = param_list.join('&'); + if (keys.length > 0 && !url.endsWith('?')) { + url += '&' + } + url += prs; + return url +} + +/** + * 远程依赖执行函数 + * @param url 远程js地址 + */ +function $require(url) { + eval(request(url)); +} + +/** + * 将obj所有key变小写 + * @param obj + */ +function keysToLowerCase(obj) { + return Object.keys(obj).reduce((result, key) => { + const newKey = key.toLowerCase(); + result[newKey] = obj[key]; // 如果值也是对象,可以递归调用本函数 + return result; + }, {}); +} + +//字符串To对象 +function parseQueryString(query) { + const params = {}; + query.split('&').forEach(function(part) { + // 使用正则表达式匹配键和值,直到遇到第一个等号为止 + const regex = /^(.*?)=(.*)/; + const match = part.match(regex); + if (match) { + const key = decodeURIComponent(match[1]); + const value = decodeURIComponent(match[2]); + params[key] = value; + } + }); + return params; +} + +//URL需要转码字符串 +function encodeIfContainsSpecialChars(value) { + // 定义在URL中需要编码的特殊字符 + const specialChars = ":/?#[]@!$'()*+,;=%"; + // 检查值中是否包含特殊字符 + if (specialChars.split('').some(char => value.includes(char))) { + // 如果包含,则使用encodeURIComponent进行编码 + return encodeURIComponent(value); + } + // 如果不包含特殊字符,返回原值 + return value; +} + +//对象To字符串 +function objectToQueryString(obj) { + const encoded = []; + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + encoded.push(encodeURIComponent(key) + '=' + encodeIfContainsSpecialChars(obj[key])); + } + } + return encoded.join('&'); +} + +/** + * 海阔网页请求函数完整封装 + * @param url 请求链接 + * @param obj 请求对象 {headers:{},method:'',timeout:5000,body:'',withHeaders:false} + * @param ocr_flag 标识此flag是用于请求ocr识别的,自动过滤content-type指定编码 + * @returns {string|string|DocumentFragment|*} + */ +function request(url, obj, ocr_flag) { + ocr_flag = ocr_flag || false; + if (typeof(obj) === 'undefined' || !obj || obj === {}) { + if (!fetch_params || !fetch_params.headers) { + let headers = { + 'User-Agent': MOBILE_UA, + }; + if (rule.headers) { + Object.assign(headers, rule.headers); + } + if (!fetch_params) { + fetch_params = {}; + } + fetch_params.headers = headers; + } + if (!fetch_params.headers.Referer) { + fetch_params.headers.Referer = getHome(url) + } + obj = fetch_params; + } else { + let headers = obj.headers || {}; + let keys = Object.keys(headers).map(it => it.toLowerCase()); + if (!keys.includes('user-agent')) { + headers['User-Agent'] = MOBILE_UA; + // fetch_params 里存在ua则优先,否则才默认手机UA + if (typeof(fetch_params) === 'object' && fetch_params && fetch_params.headers) { + let fetch_headers = keysToLowerCase(fetch_params.headers); + if (fetch_headers['user-agent']) { + headers['User-Agent'] = fetch_headers['user-agent']; + } + } + } + if (!keys.includes('referer')) { + headers['Referer'] = getHome(url); + } + obj.headers = headers; + } + if (rule.encoding && rule.encoding !== 'utf-8' && !ocr_flag) { + if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管 + obj.headers["Content-Type"] = 'text/html; charset=' + rule.encoding; + } + } + if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'string') { + // let data = {}; + // obj.body.split('&').forEach(it=>{ + // data[it.split('=')[0]] = it.split('=')[1] + // }); + // obj.data = data; + // delete obj.body + + // 传body加 "Content-Type":"application/x-www-form-urlencoded;" 即可post form + if (!obj.headers.hasOwnProperty('Content-Type') && !obj.headers.hasOwnProperty('content-type')) { // 手动指定了就不管 + obj.headers["Content-Type"] = 'application/x-www-form-urlencoded; charset=' + rule.encoding; + } + } else if (typeof(obj.body) != 'undefined' && obj.body && typeof(obj.body) === 'object') { + obj.data = obj.body; + delete obj.body + } + if (!url) { + return obj.withHeaders ? '{}' : '' + } + if (obj.toBase64) { // 返回base64,用于请求图片 + obj.buffer = 2; + delete obj.toBase64 + } + if (obj.redirect === false) { + obj.redirect = 0; + } + if (obj.headers.hasOwnProperty('Content-Type') || obj.headers.hasOwnProperty('content-type')) { + let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || ""; + if (_contentType.includes("application/x-www-form-urlencoded")) { + log("custom body is application/x-www-form-urlencoded"); + //console.log(JSON.stringify(obj)); + if (typeof obj.body == "string") { + let temp_obj = parseQueryString(obj.body); + //obj.body = objectToQueryString(temp_obj); + console.log(JSON.stringify(temp_obj)); + } + } + } + + console.log(JSON.stringify(obj.headers)); + // console.log('request:'+url+' obj:'+JSON.stringify(obj)); + console.log('request:' + url + `|method:${obj.method || 'GET'}|body:${obj.body || ''}`); + let res = req(url, obj); + let html = res.content || ''; + // console.log(html); + if (obj.withHeaders) { + let htmlWithHeaders = res.headers; + htmlWithHeaders.body = html; + return JSON.stringify(htmlWithHeaders); + } else { + return html + } +} + +/** + * 快捷post请求 + * @param url 地址 + * @param obj 对象 + * @returns {string|DocumentFragment|*} + */ +function post(url, obj) { + obj = obj || {}; + obj.method = 'POST'; + return request(url, obj); +} + +/** + * 快捷获取特殊地址cookie|一般用作搜索过验证 + * 用法 let {cookie,html} = reqCookie(url); + * @param url 能返回cookie的地址 + * @param obj 常规请求参数 + * @param all_cookie 返回全部cookie.默认false只返回第一个,一般是PhpSessionId + * @returns {{cookie: string, html: (*|string|DocumentFragment)}} + */ +function reqCookie(url, obj, all_cookie) { + obj = obj || {}; + obj.withHeaders = true; + all_cookie = all_cookie || false; + let html = request(url, obj); + let json = JSON.parse(html); + let setCk = Object.keys(json).find(it => it.toLowerCase() === 'set-cookie'); + let cookie = setCk ? json[setCk] : ''; + if (Array.isArray(cookie)) { + cookie = cookie.join(';') + } + if (!all_cookie) { + cookie = cookie.split(';')[0]; + } + html = json.body; + return { + cookie, + html + } +} + +fetch = request; +print = function(data) { + data = data || ''; + if (typeof(data) == 'object' && Object.keys(data).length > 0) { + try { + data = JSON.stringify(data); + console.log(data); + } catch (e) { + // console.log('print:'+e.message); + console.log(typeof(data) + ':' + data.length); + return + } + } else if (typeof(data) == 'object' && Object.keys(data).length < 1) { + console.log('null object'); + } else { + console.log(data); + } +} +log = print; + +/** + * 检查宝塔验证并自动跳过获取正确源码 + * @param html 之前获取的html + * @param url 之前的来源url + * @param obj 来源obj + * @returns {string|DocumentFragment|*} + */ +function checkHtml(html, url, obj) { + if (/\?btwaf=/.test(html)) { + let btwaf = html.match(/btwaf(.*?)"/)[1]; + url = url.split('#')[0] + '?btwaf' + btwaf; + print('宝塔验证访问链接:' + url); + html = request(url, obj); + } + return html +} + +/** + * 带一次宝塔验证的源码获取 + * @param url 请求链接 + * @param obj 请求参数 + * @returns {string|DocumentFragment} + */ +function getCode(url, obj) { + let html = request(url, obj); + html = checkHtml(html, url, obj); + return html +} + +/** + * 源rule专用的请求方法,自动注入cookie + * @param url 请求链接 + * @returns {string|DocumentFragment} + */ +function getHtml(url) { + let obj = {}; + if (rule.headers) { + obj.headers = rule.headers; + } + let cookie = getItem(RULE_CK, ''); + if (cookie) { + // log('有cookie:'+cookie); + if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes('cookie')) { + log('历史无cookie,新增过验证后的cookie'); + obj.headers['Cookie'] = cookie; + } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { + obj.headers['Cookie'] = cookie; + log('历史有小写过期的cookie,更新过验证后的cookie'); + } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { + obj.headers['Cookie'] = cookie; + log('历史有大写过期的cookie,更新过验证后的cookie'); + } else if (!obj.headers) { + obj.headers = { + Cookie: cookie + }; + log('历史无headers,更新过验证后的含cookie的headers'); + } + } + let html = getCode(url, obj); + return html +} + +/** + * 首页分类解析,筛选暂未实现 + * @param homeObj 首页传参对象 + * @returns {string} + */ +function homeParse(homeObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + let names = homeObj.class_name.split('&'); + let urls = homeObj.class_url.split('&'); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + 'type_id': urls[i], + 'type_name': names[i] + }); + } + } + + if (homeObj.class_parse) { + if (homeObj.class_parse.startsWith('js:')) { + var input = homeObj.MY_URL; + try { + eval(homeObj.class_parse.replace('js:', '')); + if (Array.isArray(input)) { + classes = input; + } + } catch (e) { + log(`通过js动态获取分类发生了错误:${e.message}`); + } + } else { + let p = homeObj.class_parse.split(';'); + let p0 = p[0]; + let _ps = parseTags.getParse(p0); + let is_json = p0.startsWith('json:'); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + MY_URL = rule.url; + if (is_json) { + try { + let cms_cate_url = homeObj.MY_URL.replace('ac=detail', 'ac=list'); + let html = homeObj.home_html || getHtml(cms_cate_url); + if (html) { + if (cms_cate_url === homeObj.MY_URL) { + homeHtmlCache = html; + } + let list = _pdfa(html, p0.replace('json:', '')); + if (list && list.length > 0) { + classes = list; + } + } + } catch (e) { + console.log(e.message); + } + } else if (p.length >= 3 && !is_json) { // 可以不写正则 + try { + let html = homeObj.home_html || getHtml(homeObj.MY_URL); + if (html) { + homeHtmlCache = html; + let list = _pdfa(html, p0); + if (list && list.length > 0) { + list.forEach((it, idex) => { + try { + let name = _pdfh(it, p[1]); + if (homeObj.cate_exclude && (new RegExp(homeObj.cate_exclude).test(name))) { + return; + } + // let url = pdfh(it, p[2]); + let url = _pd(it, p[2]); + if (p.length > 3 && p[3] && !homeObj.home_html) { + let exp = new RegExp(p[3]); + url = url.match(exp)[1]; + } + + classes.push({ + 'type_id': url.trim(), + 'type_name': name.trim() + }); + } catch (e) { + console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`); + } + }); + } + } + } catch (e) { + console.log(e.message); + } + + } + } + } + // 排除分类 + classes = classes.filter(it => !homeObj.cate_exclude || !(new RegExp(homeObj.cate_exclude).test(it.type_name))); + let resp = { + 'class': classes + }; + if (homeObj.filter) { + resp.filters = homeObj.filter; + } + console.log(JSON.stringify(resp)); + return JSON.stringify(resp); + +} + +/** + * 推荐和搜索单字段继承一级 + * @param p 推荐或搜索的解析分割;列表 + * @param pn 自身列表序号 + * @param pp 一级解析分割;列表 + * @param ppn 继承一级序号 + * @returns {*} + */ +function getPP(p, pn, pp, ppn) { + try { + let ps = p[pn] === '*' && pp.length > ppn ? pp[ppn] : p[pn] + return ps + } catch (e) { + return '' + } +} + +/** + * 首页推荐列表解析 + * @param homeVodObj + * @returns {string} + */ +function homeVodParse(homeVodObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + MY_URL = homeVodObj.homeUrl; + // setItem('MY_URL',MY_URL); + console.log(MY_URL); + let t1 = (new Date()).getTime(); + let p = homeVodObj.推荐; + print('p:' + p); + if (p === '*' && rule.一级) { + p = rule.一级; + homeVodObj.double = false; + } + if (!p || typeof(p) !== 'string') { + return '{}' + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(';') : []; + if (p.startsWith('js:')) { + const TYPE = 'home'; + var input = MY_URL; + HOST = rule.host; + eval(p.replace('js:', '')); + d = VODS; + } else { + p = p.split(';'); + if (!homeVodObj.double && p.length < 5) { + return '{}' + } else if (homeVodObj.double && p.length < 6) { + return '{}' + } + let p0 = getPP(p, 0, pp, 0) + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith('json:'); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ''); + // print(p[0]); + let html = homeHtmlCache || getHtml(MY_URL); + homeHtmlCache = undefined; + if (is_json) { + // print('是json,开始处理'); + html = dealJson(html); + } + try { + console.log('double:' + homeVodObj.double); + if (homeVodObj.double) { + let items = _pdfa(html, p0); + // console.log(items.length); + let p1 = getPP(p, 1, pp, 0); + let p2 = getPP(p, 2, pp, 1); + let p3 = getPP(p, 3, pp, 2); + let p4 = getPP(p, 4, pp, 3); + let p5 = getPP(p, 5, pp, 4); + let p6 = getPP(p, 6, pp, 5); + for (let item of items) { + // console.log(p[1]); + let items2 = _pdfa(item, p1); + // console.log(items2.length); + for (let item2 of items2) { + try { + let title = _pdfh(item2, p2); + let img = ''; + try { + img = _pd(item2, p3); + } catch (e) {} + let desc = ''; + try { + desc = _pdfh(item2, p4); + } catch (e) {} + let links = []; + for (let _p5 of p5.split('+')) { + let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); + links.push(link); + } + let content; + if (p.length > 6 && p[6]) { + content = _pdfh(item2, p6); + } else { + content = ''; + } + let vid = links.join('$'); + if (rule.二级 === '*') { + vid = vid + '@@' + title + '@@' + img; + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + // print(vod); + d.push(vod); + } catch (e) { + console.log(`首页列表双层定位处理发生错误:${e.message}`); + } + + } + + + } + + + } else { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + + for (let item of items) { + try { + let title = _pdfh(item, p1); + let img = ''; + try { + img = _pd(item, p2, MY_URL); + } catch (e) {} + let desc = ''; + try { + desc = _pdfh(item, p3); + } catch (e) {} + let links = []; + for (let _p5 of p4.split('+')) { + let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); + links.push(link); + } + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(item, p5); + } else { + content = '' + } + let vid = links.join('$'); + if (rule.二级 === '*') { + vid = vid + '@@' + title + '@@' + img; + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod); + + } catch (e) { + console.log(`首页列表单层定位处理发生错误:${e.message}`); + } + + } + + } + + } catch (e) { + + } + } + let t2 = (new Date()).getTime(); + console.log('加载首页推荐耗时:' + (t2 - t1) + '毫秒'); + // console.log(JSON.stringify(d)); + if (rule.图片替换) { + if (rule.图片替换.startsWith('js:')) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace('js:', '')); + it.vod_pic = input; + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`); + } + }); + } else if (rule.图片替换.includes('=>')) { + let replace_from = rule.图片替换.split('=>')[0]; + let replace_to = rule.图片替换.split('=>')[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to); + } + }); + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic + rule.图片来源; + } + }); + } + if (d.length > 0) { + print(d.slice(0, 2)); + } + return JSON.stringify({ + list: d + }) +} + +/** + * 一级分类页数据解析 + * @param cateObj + * @returns {string} + */ +function categoryParse(cateObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let p = cateObj.一级; + if (!p || typeof(p) !== 'string') { + return '{}' + } + let d = []; + // let url = cateObj.url.replaceAll('fyclass', cateObj.tid).replaceAll('fypage', cateObj.pg); + let url = cateObj.url.replaceAll('fyclass', cateObj.tid); + if (cateObj.pg === 1 && url.includes('[') && url.includes(']')) { + url = url.split('[')[1].split(']')[0]; + } else if (cateObj.pg > 1 && url.includes('[') && url.includes(']')) { + url = url.split('[')[0]; + } + if (rule.filter_url) { + if (!/fyfilter/.test(url)) { + if (!url.endsWith('&') && !rule.filter_url.startsWith('&')) { + url += '&' + } + url += rule.filter_url; + } else { + url = url.replace('fyfilter', rule.filter_url); + } + // filter_url支持fyclass + url = url.replaceAll('fyclass', cateObj.tid); + // console.log('filter:'+cateObj.filter); + let fl = cateObj.filter ? cateObj.extend : {}; + // 自动合并 不同分类对应的默认筛选 + if (rule.filter_def && typeof(rule.filter_def) === 'object') { + try { + if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { + let self_fl_def = rule.filter_def[cateObj.tid]; + if (self_fl_def && typeof(self_fl_def) === 'object') { + // 引用传递转值传递,避免污染self变量 + let fl_def = JSON.parse(JSON.stringify(self_fl_def)); + fl = Object.assign(fl_def, fl); + } + } + } catch (e) { + print(`合并不同分类对应的默认筛选出错:${e.message}`); + } + } + let new_url; + new_url = cheerio.jinja2(url, { + fl: fl, + fyclass: cateObj.tid + }); + // console.log('jinjia2执行后的new_url类型为:'+typeof(new_url)); + url = new_url; + } + if (/fypage/.test(url)) { + if (url.includes('(') && url.includes(')')) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + // console.log(url_rep); + let cnt_page = url_rep.replaceAll('fypage', cateObj.pg); + // console.log(cnt_page); + let cnt_pg = eval(cnt_page); + // console.log(cnt_pg); + url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', ''); + } else { + url = url.replaceAll('fypage', cateObj.pg); + } + } + + MY_URL = url; + // setItem('MY_URL',MY_URL); + console.log(MY_URL); + p = p.trim(); + const MY_CATE = cateObj.tid; + if (p.startsWith('js:')) { + var MY_FL = cateObj.extend; + const TYPE = 'cate'; + var input = MY_URL; + const MY_PAGE = cateObj.pg; + var desc = ''; + eval(p.trim().replace('js:', '')); + d = VODS; + } else { + p = p.split(';'); + if (p.length < 5) { + return '{}' + } + let _ps = parseTags.getParse(p[0]); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p[0].startsWith('json:'); + p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ''); + try { + let html = getHtml(MY_URL); + if (html) { + if (is_json) { + html = dealJson(html); + } + let list = _pdfa(html, p[0]); + list.forEach(it => { + let links = p[4].split('+').map(p4 => { + return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4); + }); + let link = links.join('$'); + let vod_id = rule.detailUrl ? MY_CATE + '$' + link : link; + + let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, '').trim(); + let vod_pic = _pd(it, p[2], MY_URL); + + if (rule.二级 === '*') { + vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic; + } + d.push({ + 'vod_id': vod_id, + 'vod_name': vod_name, + 'vod_pic': vod_pic, + 'vod_remarks': _pdfh(it, p[3]).replace(/\n|\t/g, '').trim(), + }); + }); + } + } catch (e) { + console.log(e.message); + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith('js:')) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace('js:', '')); + it.vod_pic = input; + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`); + } + }); + } else if (rule.图片替换.includes('=>')) { + let replace_from = rule.图片替换.split('=>')[0]; + let replace_to = rule.图片替换.split('=>')[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to); + } + }); + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic + rule.图片来源; + } + }); + } + // print(d); + if (d.length > 0) { + print(d.slice(0, 2)); + } + let pagecount = 0; + if (rule.pagecount && typeof(rule.pagecount) === 'object' && rule.pagecount.hasOwnProperty(MY_CATE)) { + print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); + pagecount = parseInt(rule.pagecount[MY_CATE]); + } + let nodata = { + list: [{ + vod_name: '无数据,防无限请求', + vod_id: 'no_data', + vod_remarks: '不要点,会崩的', + vod_pic: 'https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg' + }], + total: 1, + pagecount: 1, + page: 1, + limit: 1 + }; + let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ + 'page': parseInt(cateObj.pg), + 'pagecount': pagecount || 999, + 'limit': 20, + 'total': 999, + 'list': d, + }); + // print(vod); + return vod +} + +/** + * 搜索列表数据解析 + * @param searchObj + * @returns {string} + */ +function searchParse(searchObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + if (!searchObj.searchUrl) { + return '{}' + } + if (rule.searchNoPage && Number(searchObj.pg) > 1) { + // 关闭搜索分页 + return '{}' + } + let p = searchObj.搜索 === '*' && rule.一级 ? rule.一级 : searchObj.搜索; + if (!p || typeof(p) !== 'string') { + return '{}' + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(';') : []; + let url = searchObj.searchUrl.replaceAll('**', searchObj.wd); + if (searchObj.pg === 1 && url.includes('[') && url.includes(']') && !url.includes('#')) { + url = url.split('[')[1].split(']')[0]; + } else if (searchObj.pg > 1 && url.includes('[') && url.includes(']') && !url.includes('#')) { + url = url.split('[')[0]; + } + + if (/fypage/.test(url)) { + if (url.includes('(') && url.includes(')')) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + // console.log(url_rep); + let cnt_page = url_rep.replaceAll('fypage', searchObj.pg); + // console.log(cnt_page); + let cnt_pg = eval(cnt_page); + // console.log(cnt_pg); + url = url.replaceAll(url_rep, cnt_pg).replaceAll('(', '').replaceAll(')', ''); + } else { + url = url.replaceAll('fypage', searchObj.pg); + } + } + + MY_URL = url; + console.log(MY_URL); + // log(searchObj.搜索); + // setItem('MY_URL',MY_URL); + if (p.startsWith('js:')) { + const TYPE = 'search'; + const MY_PAGE = searchObj.pg; + const KEY = searchObj.wd; + var input = MY_URL; + var detailUrl = rule.detailUrl || ''; + eval(p.trim().replace('js:', '')); + d = VODS; + } else { + p = p.split(';'); + if (p.length < 5) { + return '{}' + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith('json:'); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ''); + // print('1381 p0:'+p0); + try { + let req_method = MY_URL.split(';').length > 1 ? MY_URL.split(';')[1].toLowerCase() : 'get'; + let html; + if (req_method === 'post') { + let rurls = MY_URL.split(';')[0].split('#') + let rurl = rurls[0] + let params = rurls.length > 1 ? rurls[1] : ''; + print(`post=》rurl:${rurl},params:${params}`); + // let new_dict = {}; + // let new_tmp = params.split('&'); + // new_tmp.forEach(i=>{ + // new_dict[i.split('=')[0]] = i.split('=')[1]; + // }); + // html = post(rurl,{body:new_dict}); + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params); + } else if (req_method === 'postjson') { + let rurls = MY_URL.split(';')[0].split('#') + let rurl = rurls[0] + let params = rurls.length > 1 ? rurls[1] : ''; + print(`postjson-》rurl:${rurl},params:${params}`); + try { + params = JSON.parse(params); + } catch (e) { + params = '{}' + } + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params); + } else { + html = getHtml(MY_URL); + } + if (html) { + // 解决搜索源码奇葩触发自动过验证逻辑 + let search_tag = rule.搜索验证标识 || '系统安全验证|输入验证码'; + if (new RegExp(search_tag).test(html)) { + let cookie = verifyCode(MY_URL); + if (cookie) { + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK, cookie); + } else { + console.log(`本次自动过搜索验证失败,cookie:${cookie}`); + } + // obj.headers['Cookie'] = cookie; + html = getHtml(MY_URL); + } + if (!html.includes(searchObj.wd)) { + console.log('搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码'); + console.log(html); + } + if (is_json) { + // console.log(html); + html = dealJson(html); + // console.log(JSON.stringify(html)); + } + // console.log(html); + let list = _pdfa(html, p0); + // print(list.length); + // print(list); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + list.forEach(it => { + let links = p4.split('+').map(_p4 => { + return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) + }); + let link = links.join('$'); + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(it, p5); + } else { + content = ''; + } + let vod_id = link; + let vod_name = _pdfh(it, p1).replace(/\n|\t/g, '').trim(); + let vod_pic = _pd(it, p2, MY_URL); + if (rule.二级 === '*') { + vod_id = vod_id + '@@' + vod_name + '@@' + vod_pic; + } + let ob = { + 'vod_id': vod_id, + 'vod_name': vod_name, + 'vod_pic': vod_pic, + 'vod_remarks': _pdfh(it, p3).replace(/\n|\t/g, '').trim(), + 'vod_content': content.replace(/\n|\t/g, '').trim(), + }; + d.push(ob); + }); + + } + } catch (e) { + print(`搜索发生错误:${e.message}`); + return '{}' + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith('js:')) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace('js:', '')); + it.vod_pic = input; + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`); + } + }); + } else if (rule.图片替换.includes('=>')) { + let replace_from = rule.图片替换.split('=>')[0]; + let replace_to = rule.图片替换.split('=>')[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to); + } + }); + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith('http')) { + it.vod_pic = it.vod_pic + rule.图片来源; + } + }); + } + // print(d); + return JSON.stringify({ + 'page': parseInt(searchObj.pg), + 'pagecount': 10, + 'limit': 20, + 'total': 100, + 'list': d, + }); +} + +/** + * 二级详情页数据解析 + * @param detailObj + * @returns {string} + */ +function detailParse(detailObj) { + let t1 = (new Date()).getTime(); + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let orId = detailObj.orId; + let vod_name = '片名'; + let vod_pic = ''; + let vod_id = orId; + if (rule.二级 === '*') { + // vod_id = orId.split('@@')[0]; // 千万不能分割 + let extra = orId.split('@@'); + vod_name = extra.length > 1 ? extra[1] : vod_name; + vod_pic = extra.length > 2 ? extra[2] : vod_pic; + } + // print(vod_pic); + let vod = { + vod_id: vod_id, //"id", + vod_name: vod_name, + vod_pic: vod_pic, + type_name: "类型", + vod_year: "年份", + vod_area: "地区", + vod_remarks: "更新信息", + vod_actor: "主演", + vod_director: "导演", + vod_content: "简介" + }; + let p = detailObj.二级; + let url = detailObj.url; + let detailUrl = detailObj.detailUrl; + let fyclass = detailObj.fyclass; + let tab_exclude = detailObj.tab_exclude; + let html = detailObj.html || ''; + MY_URL = url; + if (detailObj.二级访问前) { + try { + print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); + eval(detailObj.二级访问前.trim().replace('js:', '')); + } catch (e) { + print(`二级访问前执行代码出现错误:${e.message}`) + } + } + // console.log(MY_URL); + // setItem('MY_URL',MY_URL); + if (p === '*') { + vod.vod_play_from = '道长在线'; + vod.vod_remarks = detailUrl; + vod.vod_actor = '没有二级,只有一级链接直接嗅探播放'; + vod.vod_content = MY_URL; + vod.vod_play_url = '嗅探播放$' + MY_URL.split('@@')[0]; + } else if (typeof(p) === 'string' && p.trim().startsWith('js:')) { + const TYPE = 'detail'; + var input = MY_URL; + var play_url = ''; + eval(p.trim().replace('js:', '')); + vod = VOD; + console.log(JSON.stringify(vod)); + } else if (p && typeof(p) === 'object') { + let tt1 = (new Date()).getTime(); + if (!html) { + html = getHtml(MY_URL); + } + print(`二级${MY_URL}仅获取源码耗时:${(new Date()).getTime() - tt1}毫秒`); + let _ps; + if (p.is_json) { + print('二级是json'); + _ps = parseTags.json; + html = dealJson(html); + } else if (p.is_jsp) { + print('二级是jsp'); + _ps = parseTags.jsp; + } else if (p.is_jq) { + print('二级是jq'); + _ps = parseTags.jq; + } else { + print('二级默认jq'); + _ps = parseTags.jq; + // print('二级默认jsp'); + // _ps = parseTags.jsp; + } + let tt2 = (new Date()).getTime(); + print(`二级${MY_URL}获取并装载源码耗时:${tt2 - tt1}毫秒`); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + if (p.title) { + let p1 = p.title.split(';'); + vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); + let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').replace(/ /g, '').trim() : ''; + vod.type_name = type_name || vod.type_name; + } + if (p.desc) { + try { + let p1 = p.desc.split(';'); + vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); + vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, '').trim() : ''; + vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, '').trim() : ''; + // vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replaceAll('\n', ' ').trim():''; + vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, '').trim() : ''; + vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, '').trim() : ''; + } catch (e) { + + } + } + if (p.content) { + try { + let p1 = p.content.split(';'); + vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, '').trim(); + } catch (e) {} + } + if (p.img) { + try { + let p1 = p.img.split(';'); + vod.vod_pic = _pd(html, p1[0], MY_URL); + } catch (e) {} + } + + let vod_play_from = '$$$'; + let playFrom = []; + if (p.重定向 && p.重定向.startsWith('js:')) { + print('开始执行重定向代码:' + p.重定向); + html = eval(p.重定向.replace('js:', '')); + } + + // console.log(2); + if (p.tabs) { + if (p.tabs.startsWith('js:')) { + print('开始执行tabs代码:' + p.tabs); + var input = MY_URL; + eval(p.tabs.replace('js:', '')); + playFrom = TABS; + } else { + let p_tab = p.tabs.split(';')[0]; + // console.log(p_tab); + let vHeader = _pdfa(html, p_tab); + console.log(vHeader.length); + let tab_text = p.tab_text || 'body&&Text'; + // print('tab_text:'+tab_text); + let new_map = {}; + for (let v of vHeader) { + let v_title = _pdfh(v, tab_text).trim(); + if (!v_title) { + v_title = '线路空' + } + console.log(v_title); + if (tab_exclude && (new RegExp(tab_exclude)).test(v_title)) { + continue; + } + if (!new_map.hasOwnProperty(v_title)) { + new_map[v_title] = 1; + } else { + new_map[v_title] += 1; + } + if (new_map[v_title] > 1) { + v_title += Number(new_map[v_title] - 1); + } + playFrom.push(v_title); + } + } + console.log(JSON.stringify(playFrom)); + } else { + playFrom = ['道长在线'] + } + vod.vod_play_from = playFrom.join(vod_play_from); + + // console.log(3); + let vod_play_url = '$$$'; + let vod_tab_list = []; + if (p.lists) { + if (p.lists.startsWith('js:')) { + print('开始执行lists代码:' + p.lists); + try { + var input = MY_URL; + var play_url = ''; + eval(p.lists.replace('js:', '')); + for (let i in LISTS) { + if (LISTS.hasOwnProperty(i)) { + // print(i); + try { + LISTS[i] = LISTS[i].map(it => it.split('$').slice(0, 2).join('$')); + } catch (e) { + print(`格式化LISTS发生错误:${e.message}`); + } + } + } + vod_play_url = LISTS.map(it => it.join('#')).join(vod_play_url); + } catch (e) { + print(`js执行lists: 发生错误:${e.message}`); + } + + } else { + let list_text = p.list_text || 'body&&Text'; + let list_url = p.list_url || 'a&&href'; + let list_url_prefix = p.list_url_prefix || ''; + // print('list_text:'+list_text); + // print('list_url:'+list_url); + // print('list_parse:'+p.lists); + let is_tab_js = p.tabs.trim().startsWith('js:'); + for (let i = 0; i < playFrom.length; i++) { + let tab_name = playFrom[i]; + let tab_ext = p.tabs.split(';').length > 1 && !is_tab_js ? p.tabs.split(';')[1] : ''; + let p1 = p.lists.replaceAll('#idv', tab_name).replaceAll('#id', i); + tab_ext = tab_ext.replaceAll('#idv', tab_name).replaceAll('#id', i); + let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; + console.log(tabName); + // print('tab_ext:'+tab_ext); + let new_vod_list = []; + let tt1 = (new Date()).getTime(); + // print('pdfl:'+typeof (pdfl)); + if (typeof(pdfl) === 'function') { + new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL); + if (list_url_prefix) { + new_vod_list = new_vod_list.map(it => it.split('$')[0] + '$' + list_url_prefix + it.split('$').slice(1).join('$')); + } + } else { + let vodList = []; + try { + vodList = _pdfa(html, p1); + console.log('len(vodList):' + vodList.length); + } catch (e) { + // console.log(e.message); + } + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + new_vod_list.push(_pdfh(it, list_text).trim() + '$' + list_url_prefix + _pd(it, list_url, MY_URL)); + } + } + if (new_vod_list.length > 0) { + new_vod_list = forceOrder(new_vod_list, '', x => x.split('$')[0]); + console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date()).getTime() - tt1}毫秒`); + } + // print(new_vod_list); + let vlist = new_vod_list.join('#'); + vod_tab_list.push(vlist); + } + vod_play_url = vod_tab_list.join(vod_play_url); + } + } + vod.vod_play_url = vod_play_url; + } + if (rule.图片替换 && rule.图片替换.includes('=>')) { + let replace_from = rule.图片替换.split('=>')[0]; + let replace_to = rule.图片替换.split('=>')[1]; + vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to); + } + if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith('http')) { + vod.vod_pic = vod.vod_pic + rule.图片来源; + } + if (!vod.vod_id || (vod_id.includes('$') && vod.vod_id !== vod_id)) { + vod.vod_id = vod_id; + } + let t2 = (new Date()).getTime(); + console.log(`加载二级界面${MY_URL}耗时:${t2 - t1}毫秒`); + // print(vod); + try { + vod = vodDeal(vod); + } catch (e) { + console.log(`vodDeal发生错误:${e.message}`); + } + // print(vod); + return JSON.stringify({ + list: [vod] + }) +} + +/** + * 获取二级待返回的播放线路没处理时的索引关系 + * @param vod + * @returns {{}} + */ +function get_tab_index(vod) { + let obj = {}; + vod.vod_play_from.split('$$$').forEach((it, index) => { + obj[it] = index; + }); + return obj +} + +/** + * 处理待返回的vod数据|线路去除,排序,重命名 + * @param vod + * @returns {*} + */ +function vodDeal(vod) { + let vod_play_from = vod.vod_play_from.split('$$$'); + let vod_play_url = vod.vod_play_url.split('$$$'); + + // 移除指定线路后的列表 + let tab_removed_list = vod_play_from; + // 排序后的线路列表 + let tab_ordered_list = vod_play_from; + // 线路重命名后的列表 + let tab_renamed_list = vod_play_from; + // 定义实际要返回线路 + let tab_list = vod_play_from; + // 选集列表根据线路排序 + let play_ordered_list = vod_play_url; + + // 判断有移除线路或者线路排序 + if ((rule.tab_remove && rule.tab_remove.length > 0) || (rule.tab_order && rule.tab_order.length > 0)) { + // 获取原来线路的索引下标 + let tab_index_dict = get_tab_index(vod); + + if (rule.tab_remove && rule.tab_remove.length > 0) { + tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); + tab_list = tab_removed_list; + } + + if (rule.tab_order && rule.tab_order.length > 0) { + let tab_order = rule.tab_order; + tab_ordered_list = tab_removed_list.sort((a, b) => { + return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) + }); + tab_list = tab_ordered_list; + } + play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]); + } + + if (rule.tab_rename && typeof(rule.tab_rename) === 'object' & Object.keys(rule.tab_rename).length > 0) { + tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); + tab_list = tab_renamed_list; + } + vod.vod_play_from = tab_list.join('$$$'); + vod.vod_play_url = play_ordered_list.join('$$$'); + return vod +} + +/** + * 判断是否需要解析 + * @param url + * @returns {number|number} + */ +function tellIsJx(url) { + try { + let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split('?')[0]) && 是否正版(url); + return is_vip ? 1 : 0 + } catch (e) { + return 1 + } +} + +/** + * 选集播放点击事件解析 + * @param playObj + * @returns {string} + */ +function playParse(playObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + MY_URL = playObj.url; + var MY_FLAG = playObj.flag; + if (!/http/.test(MY_URL)) { + try { + MY_URL = base64Decode(MY_URL); + } catch (e) {} + } + MY_URL = decodeURIComponent(MY_URL); + var input = MY_URL; //注入给免嗅js + var flag = MY_FLAG; //注入播放线路名称给免嗅js + let common_play = { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + url: input, + flag: flag, + // url:urlencode(input), + jx: tellIsJx(input) + }; + let lazy_play; + if (!rule.play_parse || !rule.lazy) { + lazy_play = common_play; + } else if (rule.play_parse && rule.lazy && typeof(rule.lazy) === 'string') { + try { + let lazy_code = rule.lazy.trim(); + if (lazy_code.startsWith('js:')) { + lazy_code = lazy_code.replace('js:', '').trim(); + } + print('开始执行js免嗅=>' + lazy_code); + eval(lazy_code); + lazy_play = typeof(input) === 'object' ? input : { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + jx: tellIsJx(input), + url: input + }; + } catch (e) { + print(`js免嗅错误:${e.message}`); + lazy_play = common_play; + } + } else { + lazy_play = common_play; + } + // print('play_json:'+typeof(rule.play_json)); + // console.log(Array.isArray(rule.play_json)); + if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { // 数组情况判断长度大于0 + let web_url = lazy_play.url; + for (let pjson of rule.play_json) { + if (pjson.re && (pjson.re === '*' || web_url.match(new RegExp(pjson.re)))) { + if (pjson.json && typeof(pjson.json) === 'object') { + let base_json = pjson.json; + // print('开始合并:'); + // print(base_json); + lazy_play = Object.assign(lazy_play, base_json); + break; + } + } + } + } else if (rule.play_json && !Array.isArray(rule.play_json)) { // 其他情况 非[] 判断true/false + let base_json = { + jx: 1, + parse: 1, + }; + lazy_play = Object.assign(lazy_play, base_json); + } else if (!rule.play_json) { // 不解析传0 + let base_json = { + jx: 0, + parse: 1, + }; + lazy_play = Object.assign(lazy_play, base_json); + } + console.log(JSON.stringify(lazy_play)); + return JSON.stringify(lazy_play); +} + +/** + * 本地代理解析规则 + * @param params + */ +function proxyParse(proxyObj) { + var input = proxyObj.params; + if (proxyObj.proxy_rule) { + log('准备执行本地代理规则:\n' + proxyObj.proxy_rule); + try { + eval(proxyObj.proxy_rule); + if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) { + return input + } else { + return [404, 'text/plain', 'Not Found'] + } + } catch (e) { + return [500, 'text/plain', '代理规则错误:' + e.message] + } + + } else { + return [404, 'text/plain', 'Not Found'] + } +} + +/** + * 辅助嗅探解析规则 + * @param isVideoObj + * @returns {boolean} + */ +function isVideoParse(isVideoObj) { + var input = isVideoObj.url; + if (!isVideoObj.t) { // t为假代表默认传的正则字符串 + let re_matcher = new RegExp(isVideoObj.isVideo, 'i'); // /g匹配多个,/i不区分大小写,/m匹配多行 + return re_matcher.test(input); + } else { + // 执行js + try { + eval(isVideoObj.isVideo); + if (typeof(input) === 'boolean') { + return input + } else { + return false + } + } catch (e) { + log(`执行嗅探规则发生错误:${e.message}`); + return false + } + } +} + +/** + * 获取加密前的原始的js源文本 + * @param js_code + */ +function getOriginalJs(js_code) { + let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/; + if (current_match.test(js_code)) { + return js_code + } + let rsa_private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs='; + let decode_content = ''; + + function aes_decrypt(data) { + let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A"); + let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A"); + let encrypted = CryptoJS.AES.decrypt({ + ciphertext: CryptoJS.enc.Base64.parse(data) + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8); + return encrypted; + } + + let error_log = false; + + function logger(text) { + if (error_log) { + log(text); + } + } + + let decode_funcs = [ + (text) => { + try { + return ungzip(text) + } catch (e) { + logger('非gzip加密'); + return '' + } + }, + (text) => { + try { + return base64Decode(text) + } catch (e) { + logger('非b64加密'); + return '' + } + }, + (text) => { + try { + return aes_decrypt(text) + } catch (e) { + logger('非aes加密'); + return '' + } + }, + (text) => { + try { + return RSA.decode(text, rsa_private_key, null) + } catch (e) { + logger('非rsa加密'); + return '' + } + }, + // (text)=>{try {return NODERSA.decryptRSAWithPrivateKey(text, RSA.getPrivateKey(rsa_private_key).replace(/RSA /g,''), {options: {environment: "browser", encryptionScheme: 'pkcs1',b:'1024'}});} catch (e) {log(e.message);return ''}}, + ] + let func_index = 0 + while (!current_match.test(decode_content)) { + decode_content = decode_funcs[func_index](js_code); + func_index++; + if (func_index >= decode_funcs.length) { + break; + } + } + return decode_content +} + +/** + * 执行main函数 + * 示例 function main(text){return gzip(text)} + * @param main_func_code + * @param arg + */ +function runMain(main_func_code, arg) { + let mainFunc = function() { + return '' + }; + try { + eval(main_func_code + '\nmainFunc=main;'); + return mainFunc(arg); + } catch (e) { + log(`执行main_funct发生了错误:${e.message}`); + return '' + } +} + +/** + * js源预处理特定返回对象中的函数 + * @param ext + */ +function init(ext) { + console.log('init'); + // init前重置rule和fetch_params + rule = {}; + rule_fetch_params = {}; + fetch_params = null; + try { + // make shared jsContext happy muban不能import,不然会造成换源继承后变量被篡改 + // if (typeof (globalThis.mubanJs) === 'undefined') { + // let mubanJs = request('https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/js/模板.js', { 'User-Agent': MOBILE_UA }); + // mubanJs = mubanJs.replace('export default', '(function() {return muban;}()) // export default'); + // // console.log(mubanJs); + // globalThis.mubanJs = mubanJs; + // } + // let muban = eval(globalThis.mubanJs); + + let muban = 模板.getMubans(); + // print(typeof (muban)); + // print(muban); + if (typeof ext == 'object') { + rule = ext; + } else if (typeof ext == 'string') { + let is_file = ext.startsWith('file://'); + if (ext.startsWith('http') || is_file) { + let query = getQuery(ext); // 获取链接传参 + if (is_file) { + ext = ext.split('?')[0]; + } + let js = request(ext, { + 'method': 'GET' + }); + if (js) { + js = getOriginalJs(js); + // eval(js.replace('var rule', 'rule')); + // eval("(function(){'use strict';"+js.replace('var rule', 'rule')+"})()"); + eval("(function(){" + js.replace('var rule', 'rule') + "})()"); + } + if (query.type === 'url' && query.params) { // 指定type是链接并且传了params支持简写如 ./xx.json + if (is_file && /^http/.test(query.params)) { + rule.params = query.params; + } else { + rule.params = urljoin(ext, query.params); + } + } else if (query.params) { // 没指定type直接视为字符串 + rule.params = query.params; + } + } else { + ext = getOriginalJs(ext); + // eval(ext.replace('var rule', 'rule')); + // eval("(function(){'use strict';"+ext.replace('var rule', 'rule')+"})()"); + eval("(function(){" + ext.replace('var rule', 'rule') + "})()"); + } + } else { + console.log(`规则加载失败,不支持的规则类型:${typeof ext}`); + return + } + rule.host = (rule.host || '').rstrip('/'); + HOST = rule.host; + if (rule.hostJs) { + console.log(`检测到hostJs,准备执行...`); + try { + eval(rule.hostJs); + rule.host = HOST.rstrip('/'); + } catch (e) { + console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`); + } + } + if (rule['模板'] === '自动') { + try { + let host_headers = rule['headers'] || {}; + let host_html = getCode(HOST, { + headers: host_headers + }); + let match_muban = ''; + let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it)); + for (let muban_key of muban_keys) { + try { + let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse)); + if (host_data.class && host_data.class.length > 0) { + match_muban = muban_key; + console.log(`自动匹配模板:【${muban_key}】`); + break; + } + } catch (e) { + // @ts-ignore + console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`); + } + } + if (match_muban) { + muban['自动'] = muban[match_muban]; + if (rule['模板修改'] && rule['模板修改'].startsWith('js:')) { + // 模板修改:$js.toString(()=>{ muban.自动.class_parse = ''}); + eval(rule['模板修改'].replace('js:', '').trim()); + } + } else { + delete rule['模板'] + } + } catch (e) { + delete rule['模板'] + } + } + if (rule.模板 && muban.hasOwnProperty(rule.模板)) { + print('继承模板:' + rule.模板); + rule = Object.assign(muban[rule.模板], rule); + } + /** 处理一下 rule规则关键字段没传递的情况 **/ + let rule_cate_excludes = (rule.cate_exclude || '').split('|').filter(it => it.trim()); + let rule_tab_excludes = (rule.tab_exclude || '').split('|').filter(it => it.trim()); + rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split('|').filter(it => it.trim())); + rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split('|').filter(it => it.trim())); + + rule.cate_exclude = rule_cate_excludes.join('|'); + rule.tab_exclude = rule_tab_excludes.join('|'); + + rule.类型 = rule.类型 || '影视'; // 影视|听书|漫画|小说 + rule.url = rule.url || ''; + rule.double = rule.double || false; + rule.homeUrl = rule.homeUrl || ''; + rule.detailUrl = rule.detailUrl || ''; + rule.searchUrl = rule.searchUrl || ''; + rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : (rule.homeUrl || rule.host); + rule.homeUrl = cheerio.jinja2(rule.homeUrl, { + rule: rule + }); + rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; + rule.二级访问前 = rule.二级访问前 || ''; + if (rule.url.includes('[') && rule.url.includes(']')) { + let u1 = rule.url.split('[')[0] + let u2 = rule.url.split('[')[1].split(']')[0] + rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.url; + } else { + rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url; + } + if (rule.searchUrl.includes('[') && rule.searchUrl.includes(']') && !rule.searchUrl.includes('#')) { + let u1 = rule.searchUrl.split('[')[0] + let u2 = rule.searchUrl.split('[')[1].split(']')[0] + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + '[' + urljoin(rule.host, u2) + ']' : rule.searchUrl; + } else { + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl; + } + + rule.timeout = rule.timeout || 5000; + rule.encoding = rule.编码 || rule.encoding || 'utf-8'; + rule.search_encoding = rule.搜索编码 || rule.search_encoding || ''; + rule.图片来源 = rule.图片来源 || ''; + rule.图片替换 = rule.图片替换 || ''; + rule.play_json = rule.hasOwnProperty('play_json') ? rule.play_json : []; + rule.pagecount = rule.hasOwnProperty('pagecount') ? rule.pagecount : {}; + rule.proxy_rule = rule.hasOwnProperty('proxy_rule') ? rule.proxy_rule : ''; + if (!rule.hasOwnProperty('sniffer')) { // 默认关闭辅助嗅探 + rule.sniffer = false; + } + rule.sniffer = rule.hasOwnProperty('sniffer') ? rule.sniffer : ''; + rule.sniffer = !!(rule.sniffer && rule.sniffer !== '0' && rule.sniffer !== 'false'); + + rule.isVideo = rule.hasOwnProperty('isVideo') ? rule.isVideo : ''; + if (rule.sniffer && !rule.isVideo) { // 默认辅助嗅探自动增强嗅探规则 + rule.isVideo = 'http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*'; + } + + rule.tab_remove = rule.hasOwnProperty('tab_remove') ? rule.tab_remove : []; + rule.tab_order = rule.hasOwnProperty('tab_order') ? rule.tab_order : []; + rule.tab_rename = rule.hasOwnProperty('tab_rename') ? rule.tab_rename : {}; + + if (rule.headers && typeof(rule.headers) === 'object') { + try { + let header_keys = Object.keys(rule.headers); + for (let k of header_keys) { + if (k.toLowerCase() === 'user-agent') { + let v = rule.headers[k]; + console.log(v); + if (['MOBILE_UA', 'PC_UA', 'UC_UA', 'IOS_UA', 'UA'].includes(v)) { + rule.headers[k] = eval(v); + } + } else if (k.toLowerCase() === 'cookie') { + let v = rule.headers[k]; + if (v && v.startsWith('http')) { + console.log(v); + try { + v = fetch(v); + console.log(v); + rule.headers[k] = v; + } catch (e) { + console.log(`从${v}获取cookie发生错误:${e.message}`); + } + } + } + } + } catch (e) { + console.log(`处理headers发生错误:${e.message}`); + } + } else { + rule.headers = {} + } + oheaders = deepCopy(rule.headers); + rule_fetch_params = { + 'headers': rule.headers, + 'timeout': rule.timeout, + 'encoding': rule.encoding + }; + RKEY = typeof(key) !== 'undefined' && key ? key : 'drpy_' + (rule.title || rule.host); + pre(); // 预处理 + init_test(); + } catch (e) { + console.log(`init_test发生错误:${e.message}`); + } +} + +let homeHtmlCache = undefined; + +/** + * js源获取首页分类和筛选特定返回对象中的函数 + * @param filter 筛选条件字典对象 + * @param home_html 指定了源码。无需内部再请求 + * @param class_parse 自动匹配传入的模板的动态分类 + * @returns {string} + */ +function home(filter, home_html, class_parse) { + console.log("home"); + home_html = home_html || ''; + class_parse = class_parse || ''; + if (typeof(rule.filter) === 'string' && rule.filter.trim().length > 0) { + try { + let filter_json = ungzip(rule.filter.trim()); + rule.filter = JSON.parse(filter_json); + } catch (e) { + rule.filter = {}; + } + } + let homeObj = { + filter: rule.filter || false, + MY_URL: rule.homeUrl, + class_name: rule.class_name || '', + class_url: rule.class_url || '', + class_parse: class_parse || rule.class_parse || '', + cate_exclude: rule.cate_exclude, + home_html: home_html, + }; + return homeParse(homeObj); +} + +/** + * js源获取首页推荐数据列表特定返回对象中的函数 + * @param params + * @returns {string} + */ +function homeVod(params) { + console.log("homeVod"); + let homeVodObj = { + 推荐: rule.推荐, + double: rule.double, + homeUrl: rule.homeUrl, + detailUrl: rule.detailUrl + }; + return homeVodParse(homeVodObj) + // return "{}"; +} + +/** + * js源获取分类页一级数据列表特定返回对象中的函数 + * @param tid 分类id + * @param pg 页数 + * @param filter 当前选中的筛选条件 + * @param extend 扩展 + * @returns {string} + */ +function category(tid, pg, filter, extend) { + let cateObj = { + url: rule.url, + 一级: rule.一级, + tid: tid, + pg: parseInt(pg), + filter: filter, + extend: extend + }; + // console.log(JSON.stringify(extend)); + return categoryParse(cateObj) +} + +/** + * js源获取二级详情页数据特定返回对象中的函数 + * @param vod_url 一级列表中的vod_id或者是带分类的自拼接 vod_id 如 fyclass$vod_id + * @returns {string} + */ +function detail(vod_url) { + let orId = vod_url; + let fyclass = ''; + log('orId:' + orId); + if (vod_url.indexOf('$') > -1) { + let tmp = vod_url.split('$'); + fyclass = tmp[0]; + vod_url = tmp[1]; + } + let detailUrl = vod_url.split('@@')[0]; + let url; + if (!detailUrl.startsWith('http') && !detailUrl.includes('/')) { + url = rule.detailUrl.replaceAll('fyid', detailUrl).replaceAll('fyclass', fyclass); + } else if (detailUrl.includes('/')) { + url = urljoin(rule.homeUrl, detailUrl); + } else { + url = detailUrl + } + let detailObj = { + orId: orId, + url: url, + 二级: rule.二级, + 二级访问前: rule.二级访问前, + detailUrl: detailUrl, + fyclass: fyclass, + tab_exclude: rule.tab_exclude, + } + return detailParse(detailObj) +} + +/** + * js源选集按钮播放点击事件特定返回对象中的函数 + * @param flag 线路名 + * @param id 播放按钮的链接 + * @param flags 全局配置的flags是否需要解析的标识列表 + * @returns {string} + */ +function play(flag, id, flags) { + let playObj = { + url: id, + flag: flag, + flags: flags + } + return playParse(playObj); +} + +/** + * js源搜索返回的数据列表特定返回对象中的函数 + * @param wd 搜索关键字 + * @param quick 是否来自快速搜索 + * @returns {string} + */ +function search(wd, quick, pg) { + if (rule.search_encoding) { + if (rule.search_encoding.toLowerCase() !== 'utf-8') { + // 按搜索编码进行编码 + wd = encodeStr(wd, rule.search_encoding); + } + } else if (rule.encoding && rule.encoding.toLowerCase() !== 'utf-8') { + // 按全局编码进行编码 + wd = encodeStr(wd, rule.encoding); + } + let searchObj = { + searchUrl: rule.searchUrl, + 搜索: rule.搜索, + wd: wd, + //pg: pg, + pg: pg || 1, + quick: quick, + }; + // console.log(JSON.stringify(searchObj)); + return searchParse(searchObj) +} + +/** + * js源本地代理返回的数据列表特定返回对象中的函数 + * @param params 代理链接参数比如 /proxy?do=js&url=https://wwww.baidu.com => params就是 {do:'js','url':'https://wwww.baidu.com'} + * @returns {*} + */ +function proxy(params) { + if (rule.proxy_rule && rule.proxy_rule.trim()) { + rule.proxy_rule = rule.proxy_rule.trim(); + } + if (rule.proxy_rule.startsWith('js:')) { + rule.proxy_rule = rule.proxy_rule.replace('js:', ''); + } + let proxyObj = { + params: params, + proxy_rule: rule.proxy_rule + }; + return proxyParse(proxyObj) +} + + +/** + * 是否启用辅助嗅探功能,启用后可以根据isVideo函数进行手动识别为视频的链接地址。默认为false + * @returns {*|boolean|boolean} + */ +function sniffer() { + let enable_sniffer = rule.sniffer || false; + if (enable_sniffer) { + // log('准备执行辅助嗅探代理规则:\n'+rule.isVideo); + log('开始执行辅助嗅探代理规则...'); + } + return enable_sniffer +} + +/** + * 启用辅助嗅探功能后根据次函数返回的值识别地址是否为视频,返回true/false + * @param url + */ +function isVideo(url) { + let t = 0; + let is_video; + if (rule.isVideo && rule.isVideo.trim()) { + is_video = rule.isVideo.trim(); + } + if (is_video.startsWith('js:')) { + is_video = is_video.replace('js:', ''); + t = 1; + } + let isVideoObj = { + url: url, + isVideo: is_video, + t: t, + }; + let result = isVideoParse(isVideoObj); + if (result) { + log('成功执行辅助嗅探规则并检测到视频地址:\n' + rule.isVideo); + } + return result +} + +/** + * 获取规则 + * @returns {{}} + */ +function getRule(key) { + return key ? rule[key] || '' : rule +} + +/** + * 深拷贝一个对象 + * @param _obj + * @returns {any} + */ +function deepCopy(_obj) { + return JSON.parse(JSON.stringify(_obj)) +} + +//正则matchAll +function matchesAll(str, pattern, flatten) { + if (!pattern.global) { + pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : "")); + } + var matches = []; + var match; + while ((match = pattern.exec(str)) !== null) { + matches.push(match); + } + return flatten ? matches.flat() : matches; +} + +//文本扩展 +function stringUtils() { + Object.defineProperties(String.prototype, { + replaceX: { + value: function(regex, replacement) { + let matches = matchesAll(this, regex, true); + if (matches && matches.length > 1) { + const hasCaptureGroup = /\$\d/.test(replacement); + if (hasCaptureGroup) { + return this.replace(regex, (m) => m.replace(regex, replacement)); + } else { + return this.replace(regex, (m, p1) => m.replace(p1, replacement)); + } + } + return this.replace(regex, replacement); + }, + configurable: true, + enumerable: false, + writable: true + }, + parseX: { + get: function() { + try { + //console.log(typeof this); + return JSON.parse(this); + } catch (e) { + console.log(e.message); + return this.startsWith("[") ? [] : {}; + } + }, + configurable: true, + enumerable: false, + } + }); +} + +//正则裁切 +function cut(text, start, end, method, All) { + let result = ""; + let c = (t, s, e) => { + let result = ""; + let rs = []; + let results = []; + try { + let lr = new RegExp(String.raw`${s}`.toString()); + let rr = new RegExp(String.raw`${e}`.toString()); + const segments = t.split(lr); + if (segments.length < 2) return ''; + let cutSegments = segments.slice(1).map(segment => { + let splitSegment = segment.split(rr); + //log(splitSegment) + return splitSegment.length < 2 ? undefined : splitSegment[0] + e; + }).filter(f => f); + //log(cutSegments.at(-1)) + if (All) { + return `[${cutSegments.join(',')}]`; + } else { + return cutSegments[0]; + } + } catch (e) { + console.log(`Error cutting text:${e.message}`); + } + return result; + } + result = c(text, start, end); + stringUtils(); + if (method && typeof method === "function") { + result = method(result); + } + //console.log(result); + return result +} + +function DRPY() { //导出函数 + return { + runMain: runMain, + getRule: getRule, + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + fixAdM3u8Ai: fixAdM3u8Ai, + } +} + +/** + * 导出函数无法简写成下面的形式: + + export default { + ...DRPY, + DRPY + } + + */ + +// 导出函数对象 +export default { + runMain, + getRule, + init, + home, + homeVod, + category, + detail, + play, + search, + proxy, + sniffer, + isVideo, + fixAdM3u8Ai, + DRPY, +} \ No newline at end of file diff --git a/xiaosa/JS/drpy2.min.js b/xiaosa/JS/drpy2.min.js new file mode 100644 index 00000000..464f33cd --- /dev/null +++ b/xiaosa/JS/drpy2.min.js @@ -0,0 +1,3108 @@ +import cheerio from "assets://js/lib/cheerio.min.js"; +import "assets://js/lib/crypto-js.js"; +import "./jsencrypt.js"; +import "./node-rsa.js"; +import "./pako.min.js"; +import 模板 from "./模板.js"; +import { + gbkTool +} from "./gbk.js"; +import "./json5.js"; +import "./jinja.js"; +const _jinja2 = cheerio.jinja2; +cheerio.jinja2 = function(template, obj) { + try { + return jinja.render(template, obj) + } catch (e) { + console.log("新的jinja2库渲染失败,换回原始cheerio:" + e.message); + return _jinja2(template, obj) + } +}; +let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2"; +const VERSION = vercode + " 3.9.51beta6 20241126"; +const UpdateInfo = [{ + date: "20241126", + title: "drpy更新,优化去广告算法", + version: "3.9.51beta6 20241126", + msg: ` + 1. 更新龙头大佬提供的去广告算法 + ` +}, { + date: "20241104", + title: "drpy更新,增加新特性", + version: "3.9.51beta5 20241104", + msg: ` + 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码' + 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空 + ` +}]; + +function getUpdateInfo() { + return UpdateInfo.map(_o => { + _o.msg = _o.msg.trim().split("\n").map(_it => _it.trim()).join("\n"); + return _o + }) +} + +function init_test() { + console.log("init_test_start"); + console.log("当前版本号:" + VERSION); + console.log("本地代理地址:" + getProxyUrl()); + console.log(RKEY); + console.log(JSON.stringify(rule)); + console.log("init_test_end") +} + +function ocr_demo_test() { + let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`; + OcrApi.api = OCR_API; + let code = OcrApi.classification(img_base64); + log("测试验证码图片的ocr识别结果为:" + code) +} + +function rsa_demo_test() { + let t1 = (new Date).getTime(); + let pkcs1_public = ` +-----BEGIN RSA PUBLIC KEY----- +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +-----END RSA PUBLIC KEY----- +`.trim(); + let pkcs1_public_pem = ` +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +`.trim(); + let pkcs8_public = ` +-----BEGIN PUBLIC KEY----- +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +-----END PUBLIC KEY-----`.trim(); + let pkcs8_public_pem = ` +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +`.trim(); + let pkcs1_private = ` +-----BEGIN RSA PRIVATE KEY----- +MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7 +ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt +0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ +AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA +hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+ +5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS +EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q== +-----END RSA PRIVATE KEY----- +`.trim(); + let pkcs8_private = ` +-----BEGIN PRIVATE KEY----- +MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf +dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v +YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8 +KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8 +s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl +AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3 +rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6 +lPxDjezd +-----END PRIVATE KEY----- +`.trim(); + let data = ` +NodeRsa +这是node-rsa 现在修改集成在drpy里使用`.trim(); + let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("公钥加密"); + console.log(encryptedWithPublic); + let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, { + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("私钥解密"); + console.log(decryptedWithPrivate); + let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: "pkcs1", + signingScheme: "pkcs1-sha256" + } + }); + console.log("pkcs1_sha256_sign"); + console.log(pkcs1_sha256_sign); + let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, { + options: { + environment: "browser", + encryptionScheme: "pkcs1", + signingScheme: "pkcs1-sha256" + } + }); + console.log("pkcs1_sha256_sign_verify"); + console.log(pkcs1_sha256_sign_verify); + let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du +SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm +kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8 +PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m +PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb +Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB +-----END RSA PUBLIC KEY----- +`, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: { + scheme: "pkcs1_oaep", + hash: "sha256" + } + } + }); + console.log("pkcs1_oaep_sha256"); + console.log(pkcs1_oaep_sha256); + decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is +T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S +xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy +3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+ +HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA +ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/ +zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31 +iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l +QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu +eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ +8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9 +l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC +WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J +NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0 +o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3 +ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ +I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i +tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P +vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p +yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC +8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87 +HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN +QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51 +MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw +m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA== +-----END RSA PRIVATE KEY-----`, { + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("decryptedWithPrivate"); + console.log(decryptedWithPrivate); + (() => { + let key = new NODERSA.NodeRSA({ + b: 1024 + }); + key.setOptions({ + encryptionScheme: "pkcs1" + }); + let text = `你好drpy node-ras`; + let encrypted = key.encrypt(text, "base64"); + console.log("encrypted: ", encrypted); + const decrypted = key.decrypt(encrypted, "utf8"); + console.log("decrypted: ", decrypted) + })(); + let t2 = (new Date).getTime(); + console.log("rsa_demo_test 测试耗时:" + (t2 - t1) + "毫秒") +} + +function pre() { + if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) { + let code = rule.预处理.trim(); + console.log("执行预处理代码:" + code); + if (code.startsWith("js:")) { + code = code.replace("js:", "") + } + try { + eval(code) + } catch (e) { + console.log(`预处理执行失败:${e.message}`) + } + } +} +let rule = {}; +const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36"; +const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"; +const UA = "Mozilla/5.0"; +const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"; +const IOS_UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"; +const RULE_CK = "cookie"; +const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态"; +const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|榜|评论"; +const OCR_RETRY = 3; +const OCR_API = "https://api.nn.ci/ocr/b64/text"; +if (typeof MY_URL === "undefined") { + var MY_URL +} +var HOST; +var RKEY; +var fetch; +var print; +var log; +var rule_fetch_params; +var fetch_params; +var oheaders; +var _pdfh; +var _pdfa; +var _pd; +const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; +const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; +const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; +const SELECT_REGEX = /:eq|:lt|:gt|#/g; +const SELECT_REGEX_A = /:eq|:lt|:gt/g; +const $js = { + toString(func) { + let strfun = func.toString(); + return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, "") + } +}; + +function window_b64() { + let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); + + function btoa(str) { + var out, i, len; + var c1, c2, c3; + len = str.length; + i = 0; + out = ""; + while (i < len) { + c1 = str.charCodeAt(i++) & 255; + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4); + out += "=="; + break + } + c2 = str.charCodeAt(i++); + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4); + out += b64map.charAt((c2 & 15) << 2); + out += "="; + break + } + c3 = str.charCodeAt(i++); + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4); + out += b64map.charAt((c2 & 15) << 2 | (c3 & 192) >> 6); + out += b64map.charAt(c3 & 63) + } + return out + } + + function atob(str) { + var c1, c2, c3, c4; + var i, len, out; + len = str.length; + i = 0; + out = ""; + while (i < len) { + do { + c1 = base64DecodeChars[str.charCodeAt(i++) & 255] + } while (i < len && c1 == -1); + if (c1 == -1) break; + do { + c2 = base64DecodeChars[str.charCodeAt(i++) & 255] + } while (i < len && c2 == -1); + if (c2 == -1) break; + out += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4); + do { + c3 = str.charCodeAt(i++) & 255; + if (c3 == 61) return out; + c3 = base64DecodeChars[c3] + } while (i < len && c3 == -1); + if (c3 == -1) break; + out += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2); + do { + c4 = str.charCodeAt(i++) & 255; + if (c4 == 61) return out; + c4 = base64DecodeChars[c4] + } while (i < len && c4 == -1); + if (c4 == -1) break; + out += String.fromCharCode((c3 & 3) << 6 | c4) + } + return out + } + return { + atob: atob, + btoa: btoa + } +} +if (typeof atob !== "function" || typeof btoa !== "function") { + var { + atob, + btoa + } = window_b64() +} +if (typeof Object.assign !== "function") { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; i < arguments.length; i++) { + let source = arguments[i]; + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + return target + } +} +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + if (typeof start !== "number") { + start = 0 + } + if (start + search.length > this.length) { + return false + } else { + return this.indexOf(search, start) !== -1 + } + } +} +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, "includes", { + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined') + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true + } + k++ + } + return false + }, + enumerable: false + }) +} +if (typeof String.prototype.startsWith !== "function") { + String.prototype.startsWith = function(prefix) { + return this.slice(0, prefix.length) === prefix + } +} +if (typeof String.prototype.endsWith !== "function") { + String.prototype.endsWith = function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1 + } +} +Object.defineProperty(Object.prototype, "myValues", { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + }, + enumerable: false +}); +if (typeof Object.prototype.values !== "function") { + Object.defineProperty(Object.prototype, "values", { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + }, + enumerable: false + }) +} +if (typeof Array.prototype.join !== "function") { + Object.defineProperty(Array.prototype, "join", { + value: function(emoji) { + emoji = emoji || ""; + let self = this; + let str = ""; + let i = 0; + if (!Array.isArray(self)) { + throw String(self) + "is not Array" + } + if (self.length === 0) { + return "" + } + if (self.length === 1) { + return String(self[0]) + } + i = 1; + str = this[0]; + for (; i < self.length; i++) { + str += String(emoji) + String(self[i]) + } + return str + }, + enumerable: false + }) +} +if (typeof Array.prototype.toReversed !== "function") { + Object.defineProperty(Array.prototype, "toReversed", { + value: function() { + const clonedList = this.slice(); + const reversedList = clonedList.reverse(); + return reversedList + }, + enumerable: false + }) +} +Object.defineProperty(Array.prototype, "append", { + value: Array.prototype.push, + enumerable: false +}); +Object.defineProperty(String.prototype, "strip", { + value: String.prototype.trim, + enumerable: false +}); +Object.defineProperty(String.prototype, "rstrip", { + value: function(chars) { + let regex = new RegExp(chars + "$"); + return this.replace(regex, "") + }, + enumerable: false +}); + +function 是否正版(vipUrl) { + let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv"); + return flag.test(vipUrl) +} + +function urlDeal(vipUrl) { + if (!vipUrl) { + return "" + } + if (!是否正版(vipUrl)) { + return vipUrl + } + if (!/miguvideo/.test(vipUrl)) { + vipUrl = vipUrl.split("#")[0].split("?")[0] + } + return vipUrl +} + +function setResult(d) { + if (!Array.isArray(d)) { + return [] + } + VODS = []; + d.forEach(function(it) { + let obj = { + vod_id: it.url || "", + vod_name: it.title || "", + vod_remarks: it.desc || "", + vod_content: it.content || "", + vod_pic: it.pic_url || it.img || "" + }; + let keys = Object.keys(it); + if (keys.includes("tname")) { + obj.type_name = it.tname || "" + } + if (keys.includes("tid")) { + obj.type_id = it.tid || "" + } + if (keys.includes("year")) { + obj.vod_year = it.year || "" + } + if (keys.includes("actor")) { + obj.vod_actor = it.actor || "" + } + if (keys.includes("director")) { + obj.vod_director = it.director || "" + } + if (keys.includes("area")) { + obj.vod_area = it.area || "" + } + VODS.push(obj) + }); + return VODS +} + +function setResult2(res) { + VODS = res.list || []; + return VODS +} + +function setHomeResult(res) { + if (!res || typeof res !== "object") { + return [] + } + return setResult(res.list) +} + +function rc(js) { + if (js === "maomi_aes.js") { + var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); + var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); + return { + De: function(word) { + word = CryptoJS.enc.Hex.parse(word); + return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + }, + En: function(word) { + var Encrypted = CryptoJS.AES.encrypt(word, a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return Encrypted.ciphertext.toString() + } + } + } + return {} +} + +function maoss(jxurl, ref, key) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + eval(getCryptoJS()); + try { + var getVideoInfo = function(text) { + return CryptoJS.AES.decrypt(text, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + }; + var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key; + if (ref) { + var html = request(jxurl, { + headers: { + Referer: ref + } + }) + } else { + var html = request(jxurl) + } + if (html.indexOf("&btwaf=") != -1) { + html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], { + headers: { + Referer: ref + } + }) + } + var token_iv = html.split('_token = "')[1].split('"')[0]; + var key = CryptoJS.enc.Utf8.parse(token_key); + var iv = CryptoJS.enc.Utf8.parse(token_iv); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ""); + if (!config.url.startsWith("http")) { + config.url = CryptoJS.AES.decrypt(config.url, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + } + return config.url + } catch (e) { + return "" + } +} + +function urlencode(str) { + str = (str + "").toString(); + return encodeURIComponent(str).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A").replace(/%20/g, "+") +} + +function encodeUrl(str) { + if (typeof encodeURI == "function") { + return encodeURI(str) + } else { + str = (str + "").toString(); + return encodeURIComponent(str).replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3A/g, ":").replace(/%40/g, "@").replace(/%3D/g, "=").replace(/%3A/g, ":").replace(/%2C/g, ",").replace(/%2B/g, "+").replace(/%24/g, "$") + } +} + +function base64Encode(text) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) +} + +function base64Decode(text) { + return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)) +} + +function md5(text) { + return CryptoJS.MD5(text).toString() +} + +function uint8ArrayToBase64(uint8Array) { + let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array)); + return btoa(binaryString) +} + +function Utf8ArrayToStr(array) { + var out, i, len, c; + var char2, char3; + out = ""; + len = array.length; + i = 0; + while (i < len) { + c = array[i++]; + switch (c >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + out += String.fromCharCode(c); + break; + case 12: + case 13: + char2 = array[i++]; + out += String.fromCharCode((c & 31) << 6 | char2 & 63); + break; + case 14: + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode((c & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0); + break + } + } + return out +} + +function gzip(str) { + let arr = pako.gzip(str, {}); + return uint8ArrayToBase64(arr) +} + +function ungzip(b64Data) { + let strData = atob(b64Data); + const charData = strData.split("").map(function(x) { + return x.charCodeAt(0) + }); + const binData = new Uint8Array(charData); + const data = pako.inflate(binData); + return Utf8ArrayToStr(data) +} + +function encodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.encode(input) + } + return input +} + +function decodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.decode(input) + } + return input +} + +function getCryptoJS() { + return 'console.log("CryptoJS已装载");' +} +const RSA = { + decode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let privateKey = this.getPrivateKey(key); + const decryptor = new JSEncrypt; + decryptor.setPrivateKey(privateKey); + let uncrypted = ""; + uncrypted = decryptor.decryptUnicodeLong(data); + return uncrypted + } else { + return false + } + }, + encode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let publicKey = this.getPublicKey(key); + const encryptor = new JSEncrypt; + encryptor.setPublicKey(publicKey); + let encrypted = ""; + encrypted = encryptor.encryptUnicodeLong(data); + return encrypted + } else { + return false + } + }, + fixKey(key, prefix, endfix) { + if (!key.includes(prefix)) { + key = prefix + key + } + if (!key.includes(endfix)) { + key += endfix + } + return key + }, + getPrivateKey(key) { + let prefix = "-----BEGIN RSA PRIVATE KEY-----"; + let endfix = "-----END RSA PRIVATE KEY-----"; + return this.fixKey(key, prefix, endfix) + }, + getPublicKey(key) { + let prefix = "-----BEGIN PUBLIC KEY-----"; + let endfix = "-----END PUBLIC KEY-----"; + return this.fixKey(key, prefix, endfix) + } +}; + +function getProxyUrl() { + if (typeof getProxy === "function") { + return getProxy(true) + } else { + return "http://127.0.0.1:9978/proxy?do=js" + } +} + +function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { + if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) { + return "" + } + if (!m3u8_text) { + log("m3u8_url:" + m3u8_url); + m3u8_text = request(m3u8_url) + } + log("len(m3u8_text):" + m3u8_text.length); + if (!ad_remove) { + return m3u8_text + } + if (ad_remove.startsWith("reg:")) { + ad_remove = ad_remove.slice(4) + } else if (ad_remove.startsWith("js:")) { + ad_remove = ad_remove.slice(3) + } + let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")).trim(); + let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")).trim(); + let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim(); + let murls = []; + let m3_body_list = m3u8_body.split("\n"); + let m3_len = m3_body_list.length; + let i = 0; + while (i < m3_len) { + let mi = m3_body_list[i]; + let mi_1 = m3_body_list[i + 1]; + if (mi.startsWith("#EXTINF")) { + murls.push([mi, mi_1].join("&")); + i += 2 + } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) { + let mi_2 = m3_body_list[i + 2]; + murls.push([mi, mi_1, mi_2].join("&")); + i += 3 + } else { + break + } + } + let new_m3u8_body = []; + for (let murl of murls) { + if (ad_remove && new RegExp(ad_remove).test(murl)) {} else { + let murl_list = murl.split("&"); + if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) { + murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]) + } + murl_list.forEach(it => { + new_m3u8_body.push(it) + }) + } + } + new_m3u8_body = new_m3u8_body.join("\n").trim(); + m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n").trim(); + return m3u8_text +} + +function fixAdM3u8Ai(m3u8_url, headers) { + let ts = (new Date).getTime(); + let option = headers ? { + headers: headers + } : {}; + + function b(s1, s2) { + let i = 0; + while (i < s1.length) { + if (s1[i] !== s2[i]) { + break + } + i++ + } + return i + } + + function reverseString(str) { + return str.split("").reverse().join("") + } + let m3u8 = request(m3u8_url, option); + m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n"); + m3u8 = m3u8.replace(/\n\n/gi, "\n"); + let last_url = m3u8.split("\n").slice(-1)[0]; + if (last_url.length < 5) { + last_url = m3u8.split("\n").slice(-2)[0] + } + if (last_url.includes(".m3u8") && last_url !== m3u8_url) { + m3u8_url = urljoin2(m3u8_url, last_url); + log("嵌套的m3u8_url:" + m3u8_url); + m3u8 = request(m3u8_url, option) + } + let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n"); + let ss = s.split("\n"); + if (m3u8_url.indexOf("ffzy") > 0) { + let j = 0, + k1 = 0, + m = 0, + n = 0, + t = 0; + let s2 = ""; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + let s1 = ""; + if (s.startsWith("#EXTINF")) { + s1 = s.slice(8); + n++; + if (n == 1) k1 = i; + if (s2.indexOf(s1) == -1) { + s2 = s2 + s1; + m++ + } + t = t + parseFloat(s1); + i++; + s = ss[i] + } + if (s.startsWith("#EXT-X-DISCONTINUITY")) { + if (n == 5) { + log("n:" + n); + log("m:" + m); + for (let j = k1; j < k1 + n * 2; j++) { + log(ss[j]) + } + log("广告位置:" + k1); + log("数据条数:" + n); + log("数据种类:" + m); + log("广告时间:" + t.toFixed(5)); + ss.splice(k1, 2 * n + 1); + i = i - 2 * n + 1 + } + t = 0; + m = 0; + n = 0; + s2 = "" + } + } + } + let firststr = ""; + let maxl = 0; + let kk = 0; + let kkk1 = 1; + let kkk2 = 0; + let secondstr = ""; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (kk == 0) firststr = s; + if (kk > 0) { + if (maxl > b(firststr, s) + 1) { + if (secondstr.length < 5) secondstr = s; + kkk2++ + } else { + maxl = b(firststr, s); + kkk1++ + } + } + kk++; + if (kk >= 30) break + } + } + if (kkk2 > kkk1) firststr = secondstr; + let firststrlen = firststr.length; + let ml = Math.round(ss.length / 2).toString().length; + let maxc = 0; + let laststr = ss.toReversed().find(x => { + if (!x.startsWith("#")) { + let k = b(reverseString(firststr), reverseString(x)); + maxl = b(firststr, x); + maxc++; + if (firststrlen - maxl <= ml + k || maxc > 10) { + return true + } + } + return false + }); + log("最后一条切片:" + laststr); + let ad_urls = []; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (b(firststr, s) < maxl) { + ad_urls.push(s); + ss.splice(i - 1, 2); + i = i - 2 + } else { + ss[i] = urljoin(m3u8_url, s) + } + } else { + ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') + } + } + log("处理的m3u8地址:" + m3u8_url); + log("----广告地址----"); + log(ad_urls); + m3u8 = ss.join("\n"); + log("处理耗时:" + ((new Date).getTime() - ts).toString()); + log(m3u8); + return m3u8 +} + +function forceOrder(lists, key, option) { + let start = Math.floor(lists.length / 2); + let end = Math.min(lists.length - 1, start + 1); + if (start >= end) { + return lists + } + let first = lists[start]; + let second = lists[end]; + if (key) { + try { + first = first[key]; + second = second[key] + } catch (e) {} + } + if (option && typeof option === "function") { + try { + first = option(first); + second = option(second) + } catch (e) {} + } + first += ""; + second += ""; + if (first.match(/(\d+)/) && second.match(/(\d+)/)) { + let num1 = Number(first.match(/(\d+)/)[1]); + let num2 = Number(second.match(/(\d+)/)[1]); + if (num1 > num2) { + lists.reverse() + } + } + return lists +} +let VODS = []; +let VOD = {}; +let TABS = []; +let LISTS = []; + +function getQuery(url) { + try { + if (url.indexOf("?") > -1) { + url = url.slice(url.indexOf("?") + 1) + } + let arr = url.split("#")[0].split("&"); + const resObj = {}; + arr.forEach(item => { + let arr1 = item.split("="); + let key = arr1[0]; + let value = arr1.slice(1).join("="); + resObj[key] = value + }); + return resObj + } catch (err) { + log(`getQuery发生错误:${e.message}`); + return {} + } +} + +function urljoin(fromPath, nowPath) { + fromPath = fromPath || ""; + nowPath = nowPath || ""; + return joinUrl(fromPath, nowPath) +} +var urljoin2 = urljoin; +const defaultParser = { + pdfh: pdfh, + pdfa: pdfa, + pd: pd +}; + +function pdfh2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele).toString() + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`) + } + let result = defaultParser.pdfh(html2, parse); + let option = parse.includes("&&") ? parse.split("&&").slice(-1)[0] : parse.split(" ").slice(-1)[0]; + if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { + try { + result = result.match(/url\((.*?)\)/)[1]; + result = result.replace(/^['|"](.*)['|"]$/, "$1") + } catch (e) {} + } + return result +} + +function pdfa2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele).toString() + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`) + } + return defaultParser.pdfa(html2, parse) +} + +function pd2(html, parse, uri) { + let ret = pdfh2(html, parse); + if (typeof uri === "undefined" || !uri) { + uri = "" + } + if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { + if (/http/.test(ret)) { + ret = ret.slice(ret.indexOf("http")) + } else { + ret = urljoin(MY_URL, ret) + } + } + return ret +} +const parseTags = { + jsp: { + pdfh: pdfh2, + pdfa: pdfa2, + pd: pd2 + }, + json: { + pdfh(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + parse = parse.split("||"); + for (let ps of parse) { + let ret = cheerio.jp(ps, html); + if (Array.isArray(ret)) { + ret = ret[0] || "" + } else { + ret = ret || "" + } + if (ret && typeof ret !== "string") { + ret = ret.toString() + } + if (ret) { + return ret + } + } + return "" + }, + pdfa(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + let ret = cheerio.jp(parse, html); + if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { + return ret[0] || [] + } + return ret || [] + }, + pd(html, parse) { + let ret = parseTags.json.pdfh(html, parse); + if (ret) { + return urljoin(MY_URL, ret) + } + return ret + } + }, + jq: { + pdfh(html, parse) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + let result = defaultParser.pdfh(html, parse); + return result + }, + pdfa(html, parse) { + if (!html || !parse || !parse.trim()) { + return [] + } + parse = parse.trim(); + let result = defaultParser.pdfa(html, parse); + print(`pdfa解析${parse}=>${result.length}`); + return result + }, + pd(html, parse, base_url) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + base_url = base_url || MY_URL; + return defaultParser.pd(html, parse, base_url) + } + }, + getParse(p0) { + if (p0.startsWith("jsp:")) { + return this.jsp + } else if (p0.startsWith("json:")) { + return this.json + } else if (p0.startsWith("jq:")) { + return this.jq + } else { + return this.jq + } + } +}; +const stringify = JSON.stringify; +const jsp = parseTags.jsp; +const jq = parseTags.jq; + +function readFile(filePath) { + filePath = filePath || "./uri.min.js"; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} + +function dealJson(html) { + try { + html = html.trim(); + if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) { + html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}" + } + } catch (e) {} + try { + html = JSON.parse(html) + } catch (e) {} + return html +} +var OcrApi = { + api: OCR_API, + classification: function(img) { + let code = ""; + try { + log("通过drpy_ocr验证码接口过验证..."); + let html = ""; + if (this.api.endsWith("drpy/text")) { + html = request(this.api, { + data: { + img: img + }, + headers: { + "User-Agent": PC_UA + }, + method: "POST" + }, true) + } else { + html = post(this.api, { + body: img + }) + } + code = html || "" + } catch (e) { + log(`OCR识别验证码发生错误:${e.message}`) + } + return code + } +}; + +function verifyCode(url) { + let cnt = 0; + let host = getHome(url); + let cookie = ""; + while (cnt < OCR_RETRY) { + try { + let yzm_url = `${host}/index.php/verify/index.html`; + console.log(`验证码链接:${yzm_url}`); + let hhtml = request(yzm_url, { + withHeaders: true, + toBase64: true + }, true); + let json = JSON.parse(hhtml); + if (!cookie) { + let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie"); + cookie = setCk ? json[setCk].split(";")[0] : "" + } + console.log("cookie:" + cookie); + let img = json.body; + let code = OcrApi.classification(img); + console.log(`第${cnt+1}次验证码识别结果:${code}`); + let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; + console.log(submit_url); + let html = request(submit_url, { + headers: { + Cookie: cookie + }, + method: "POST" + }); + html = JSON.parse(html); + if (html.msg === "ok") { + console.log(`第${cnt+1}次验证码提交成功`); + return cookie + } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } catch (e) { + console.log(`第${cnt+1}次验证码提交失败:${e.message}`); + if (cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } + cnt += 1 + } + return cookie +} + +function setItem(k, v) { + local.set(RKEY, k, v); + console.log(`规则${RKEY}设置${k} => ${v}`) +} + +function getItem(k, v) { + return local.get(RKEY, k) || v +} + +function clearItem(k) { + local.delete(RKEY, k) +} + +function getHome(url) { + if (!url) { + return "" + } + let tmp = url.split("//"); + url = tmp[0] + "//" + tmp[1].split("/")[0]; + try { + url = decodeURIComponent(url) + } catch (e) {} + return url +} + +function buildUrl(url, obj) { + obj = obj || {}; + if (url.indexOf("?") < 0) { + url += "?" + } + let param_list = []; + let keys = Object.keys(obj); + keys.forEach(it => { + param_list.push(it + "=" + obj[it]) + }); + let prs = param_list.join("&"); + if (keys.length > 0 && !url.endsWith("?")) { + url += "&" + } + url += prs; + return url +} + +function $require(url) { + eval(request(url)) +} + +function keysToLowerCase(obj) { + return Object.keys(obj).reduce((result, key) => { + const newKey = key.toLowerCase(); + result[newKey] = obj[key]; + return result + }, {}) +} + +function parseQueryString(query) { + const params = {}; + query.split("&").forEach(function(part) { + const regex = /^(.*?)=(.*)/; + const match = part.match(regex); + if (match) { + const key = decodeURIComponent(match[1]); + const value = decodeURIComponent(match[2]); + params[key] = value + } + }); + return params +} + +function encodeIfContainsSpecialChars(value) { + const specialChars = ":/?#[]@!$'()*+,;=%"; + if (specialChars.split("").some(char => value.includes(char))) { + return encodeURIComponent(value) + } + return value +} + +function objectToQueryString(obj) { + const encoded = []; + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + encoded.push(encodeURIComponent(key) + "=" + encodeIfContainsSpecialChars(obj[key])) + } + } + return encoded.join("&") +} + +function request(url, obj, ocr_flag) { + ocr_flag = ocr_flag || false; + if (typeof obj === "undefined" || !obj || obj === {}) { + if (!fetch_params || !fetch_params.headers) { + let headers = { + "User-Agent": MOBILE_UA + }; + if (rule.headers) { + Object.assign(headers, rule.headers) + } + if (!fetch_params) { + fetch_params = {} + } + fetch_params.headers = headers + } + if (!fetch_params.headers.Referer) { + fetch_params.headers.Referer = getHome(url) + } + obj = fetch_params + } else { + let headers = obj.headers || {}; + let keys = Object.keys(headers).map(it => it.toLowerCase()); + if (!keys.includes("user-agent")) { + headers["User-Agent"] = MOBILE_UA; + if (typeof fetch_params === "object" && fetch_params && fetch_params.headers) { + let fetch_headers = keysToLowerCase(fetch_params.headers); + if (fetch_headers["user-agent"]) { + headers["User-Agent"] = fetch_headers["user-agent"] + } + } + } + if (!keys.includes("referer")) { + headers["Referer"] = getHome(url) + } + obj.headers = headers + } + if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding + } + } + if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding + } + } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") { + obj.data = obj.body; + delete obj.body + } + if (!url) { + return obj.withHeaders ? "{}" : "" + } + if (obj.toBase64) { + obj.buffer = 2; + delete obj.toBase64 + } + if (obj.redirect === false) { + obj.redirect = 0 + } + if (obj.headers.hasOwnProperty("Content-Type") || obj.headers.hasOwnProperty("content-type")) { + let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || ""; + if (_contentType.includes("application/x-www-form-urlencoded")) { + log("custom body is application/x-www-form-urlencoded"); + if (typeof obj.body == "string") { + let temp_obj = parseQueryString(obj.body); + console.log(JSON.stringify(temp_obj)) + } + } + } + console.log(JSON.stringify(obj.headers)); + console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`); + let res = req(url, obj); + let html = res.content || ""; + if (obj.withHeaders) { + let htmlWithHeaders = res.headers; + htmlWithHeaders.body = html; + return JSON.stringify(htmlWithHeaders) + } else { + return html + } +} + +function post(url, obj) { + obj = obj || {}; + obj.method = "POST"; + return request(url, obj) +} + +function reqCookie(url, obj, all_cookie) { + obj = obj || {}; + obj.withHeaders = true; + all_cookie = all_cookie || false; + let html = request(url, obj); + let json = JSON.parse(html); + let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie"); + let cookie = setCk ? json[setCk] : ""; + if (Array.isArray(cookie)) { + cookie = cookie.join(";") + } + if (!all_cookie) { + cookie = cookie.split(";")[0] + } + html = json.body; + return { + cookie: cookie, + html: html + } +} +fetch = request; +print = function(data) { + data = data || ""; + if (typeof data == "object" && Object.keys(data).length > 0) { + try { + data = JSON.stringify(data); + console.log(data) + } catch (e) { + console.log(typeof data + ":" + data.length); + return + } + } else if (typeof data == "object" && Object.keys(data).length < 1) { + console.log("null object") + } else { + console.log(data) + } +}; +log = print; + +function checkHtml(html, url, obj) { + if (/\?btwaf=/.test(html)) { + let btwaf = html.match(/btwaf(.*?)"/)[1]; + url = url.split("#")[0] + "?btwaf" + btwaf; + print("宝塔验证访问链接:" + url); + html = request(url, obj) + } + return html +} + +function getCode(url, obj) { + let html = request(url, obj); + html = checkHtml(html, url, obj); + return html +} + +function getHtml(url) { + let obj = {}; + if (rule.headers) { + obj.headers = rule.headers + } + let cookie = getItem(RULE_CK, ""); + if (cookie) { + if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes("cookie")) { + log("历史无cookie,新增过验证后的cookie"); + obj.headers["Cookie"] = cookie + } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有小写过期的cookie,更新过验证后的cookie") + } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有大写过期的cookie,更新过验证后的cookie") + } else if (!obj.headers) { + obj.headers = { + Cookie: cookie + }; + log("历史无headers,更新过验证后的含cookie的headers") + } + } + let html = getCode(url, obj); + return html +} + +function homeParse(homeObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + let names = homeObj.class_name.split("&"); + let urls = homeObj.class_url.split("&"); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + type_id: urls[i], + type_name: names[i] + }) + } + } + if (homeObj.class_parse) { + if (homeObj.class_parse.startsWith("js:")) { + var input = homeObj.MY_URL; + try { + eval(homeObj.class_parse.replace("js:", "")); + if (Array.isArray(input)) { + classes = input + } + } catch (e) { + log(`通过js动态获取分类发生了错误:${e.message}`) + } + } else { + let p = homeObj.class_parse.split(";"); + let p0 = p[0]; + let _ps = parseTags.getParse(p0); + let is_json = p0.startsWith("json:"); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + MY_URL = rule.url; + if (is_json) { + try { + let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list"); + let html = homeObj.home_html || getHtml(cms_cate_url); + if (html) { + if (cms_cate_url === homeObj.MY_URL) { + homeHtmlCache = html + } + let list = _pdfa(html, p0.replace("json:", "")); + if (list && list.length > 0) { + classes = list + } + } + } catch (e) { + console.log(e.message) + } + } else if (p.length >= 3 && !is_json) { + try { + let html = homeObj.home_html || getHtml(homeObj.MY_URL); + if (html) { + homeHtmlCache = html; + let list = _pdfa(html, p0); + if (list && list.length > 0) { + list.forEach((it, idex) => { + try { + let name = _pdfh(it, p[1]); + if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude).test(name)) { + return + } + let url = _pd(it, p[2]); + if (p.length > 3 && p[3] && !homeObj.home_html) { + let exp = new RegExp(p[3]); + url = url.match(exp)[1] + } + classes.push({ + type_id: url.trim(), + type_name: name.trim() + }) + } catch (e) { + console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`) + } + }) + } + } + } catch (e) { + console.log(e.message) + } + } + } + } + classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude).test(it.type_name)); + let resp = { + class: classes + }; + if (homeObj.filter) { + resp.filters = homeObj.filter + } + console.log(JSON.stringify(resp)); + return JSON.stringify(resp) +} + +function getPP(p, pn, pp, ppn) { + try { + let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn]; + return ps + } catch (e) { + return "" + } +} + +function homeVodParse(homeVodObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + MY_URL = homeVodObj.homeUrl; + console.log(MY_URL); + let t1 = (new Date).getTime(); + let p = homeVodObj.推荐; + print("p:" + p); + if (p === "*" && rule.一级) { + p = rule.一级; + homeVodObj.double = false + } + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(";") : []; + if (p.startsWith("js:")) { + const TYPE = "home"; + var input = MY_URL; + HOST = rule.host; + eval(p.replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (!homeVodObj.double && p.length < 5) { + return "{}" + } else if (homeVodObj.double && p.length < 6) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + let html = homeHtmlCache || getHtml(MY_URL); + homeHtmlCache = undefined; + if (is_json) { + html = dealJson(html) + } + try { + console.log("double:" + homeVodObj.double); + if (homeVodObj.double) { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 0); + let p2 = getPP(p, 2, pp, 1); + let p3 = getPP(p, 3, pp, 2); + let p4 = getPP(p, 4, pp, 3); + let p5 = getPP(p, 5, pp, 4); + let p6 = getPP(p, 6, pp, 5); + for (let item of items) { + let items2 = _pdfa(item, p1); + for (let item2 of items2) { + try { + let title = _pdfh(item2, p2); + let img = ""; + try { + img = _pd(item2, p3) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item2, p4) + } catch (e) {} + let links = []; + for (let _p5 of p5.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); + links.push(link) + } + let content; + if (p.length > 6 && p[6]) { + content = _pdfh(item2, p6) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log(`首页列表双层定位处理发生错误:${e.message}`) + } + } + } + } else { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + for (let item of items) { + try { + let title = _pdfh(item, p1); + let img = ""; + try { + img = _pd(item, p2, MY_URL) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item, p3) + } catch (e) {} + let links = []; + for (let _p5 of p4.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); + links.push(link) + } + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(item, p5) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log(`首页列表单层定位处理发生错误:${e.message}`) + } + } + } + } catch (e) {} + } + let t2 = (new Date).getTime(); + console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒"); + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + return JSON.stringify({ + list: d + }) +} + +function categoryParse(cateObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let p = cateObj.一级; + if (!p || typeof p !== "string") { + return "{}" + } + let d = []; + let url = cateObj.url.replaceAll("fyclass", cateObj.tid); + if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[1].split("]")[0] + } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[0] + } + if (rule.filter_url) { + if (!/fyfilter/.test(url)) { + if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) { + url += "&" + } + url += rule.filter_url + } else { + url = url.replace("fyfilter", rule.filter_url) + } + url = url.replaceAll("fyclass", cateObj.tid); + let fl = cateObj.filter ? cateObj.extend : {}; + if (rule.filter_def && typeof rule.filter_def === "object") { + try { + if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { + let self_fl_def = rule.filter_def[cateObj.tid]; + if (self_fl_def && typeof self_fl_def === "object") { + let fl_def = JSON.parse(JSON.stringify(self_fl_def)); + fl = Object.assign(fl_def, fl) + } + } + } catch (e) { + print(`合并不同分类对应的默认筛选出错:${e.message}`) + } + } + let new_url; + new_url = cheerio.jinja2(url, { + fl: fl, + fyclass: cateObj.tid + }); + url = new_url + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", cateObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "") + } else { + url = url.replaceAll("fypage", cateObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + p = p.trim(); + const MY_CATE = cateObj.tid; + if (p.startsWith("js:")) { + var MY_FL = cateObj.extend; + const TYPE = "cate"; + var input = MY_URL; + const MY_PAGE = cateObj.pg; + var desc = ""; + eval(p.trim().replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let _ps = parseTags.getParse(p[0]); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p[0].startsWith("json:"); + p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ""); + try { + let html = getHtml(MY_URL); + if (html) { + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p[0]); + list.forEach(it => { + let links = p[4].split("+").map(p4 => { + return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4) + }); + let link = links.join("$"); + let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link; + let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, "").trim(); + let vod_pic = _pd(it, p[2], MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + d.push({ + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p[3]).replace(/\n|\t/g, "").trim() + }) + }) + } + } catch (e) { + console.log(e.message) + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + let pagecount = 0; + if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) { + print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); + pagecount = parseInt(rule.pagecount[MY_CATE]) + } + let nodata = { + list: [{ + vod_name: "无数据,防无限请求", + vod_id: "no_data", + vod_remarks: "不要点,会崩的", + vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg" + }], + total: 1, + pagecount: 1, + page: 1, + limit: 1 + }; + let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ + page: parseInt(cateObj.pg), + pagecount: pagecount || 999, + limit: 20, + total: 999, + list: d + }); + return vod +} + +function searchParse(searchObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + if (!searchObj.searchUrl) { + return "{}" + } + if (rule.searchNoPage && Number(searchObj.pg) > 1) { + return "{}" + } + let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索; + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(";") : []; + let url = searchObj.searchUrl.replaceAll("**", searchObj.wd); + if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[1].split("]")[0] + } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[0] + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", searchObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "") + } else { + url = url.replaceAll("fypage", searchObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + if (p.startsWith("js:")) { + const TYPE = "search"; + const MY_PAGE = searchObj.pg; + const KEY = searchObj.wd; + var input = MY_URL; + var detailUrl = rule.detailUrl || ""; + eval(p.trim().replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + try { + let req_method = MY_URL.split(";").length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get"; + let html; + if (req_method === "post") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`post=》rurl:${rurl},params:${params}`); + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else if (req_method === "postjson") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`postjson-》rurl:${rurl},params:${params}`); + try { + params = JSON.parse(params) + } catch (e) { + params = "{}" + } + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else { + html = getHtml(MY_URL) + } + if (html) { + let search_tag = rule.搜索验证标识 || "系统安全验证|输入验证码"; + if (new RegExp(search_tag).test(html)) { + let cookie = verifyCode(MY_URL); + if (cookie) { + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK, cookie) + } else { + console.log(`本次自动过搜索验证失败,cookie:${cookie}`) + } + html = getHtml(MY_URL) + } + if (!html.includes(searchObj.wd)) { + console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码"); + console.log(html) + } + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + list.forEach(it => { + let links = p4.split("+").map(_p4 => { + return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) + }); + let link = links.join("$"); + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(it, p5) + } else { + content = "" + } + let vod_id = link; + let vod_name = _pdfh(it, p1).replace(/\n|\t/g, "").trim(); + let vod_pic = _pd(it, p2, MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + let ob = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p3).replace(/\n|\t/g, "").trim(), + vod_content: content.replace(/\n|\t/g, "").trim() + }; + d.push(ob) + }) + } + } catch (e) { + print(`搜索发生错误:${e.message}`); + return "{}" + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + return JSON.stringify({ + page: parseInt(searchObj.pg), + pagecount: 10, + limit: 20, + total: 100, + list: d + }) +} + +function detailParse(detailObj) { + let t1 = (new Date).getTime(); + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let orId = detailObj.orId; + let vod_name = "片名"; + let vod_pic = ""; + let vod_id = orId; + if (rule.二级 === "*") { + let extra = orId.split("@@"); + vod_name = extra.length > 1 ? extra[1] : vod_name; + vod_pic = extra.length > 2 ? extra[2] : vod_pic + } + let vod = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + type_name: "类型", + vod_year: "年份", + vod_area: "地区", + vod_remarks: "更新信息", + vod_actor: "主演", + vod_director: "导演", + vod_content: "简介" + }; + let p = detailObj.二级; + let url = detailObj.url; + let detailUrl = detailObj.detailUrl; + let fyclass = detailObj.fyclass; + let tab_exclude = detailObj.tab_exclude; + let html = detailObj.html || ""; + MY_URL = url; + if (detailObj.二级访问前) { + try { + print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); + eval(detailObj.二级访问前.trim().replace("js:", "")) + } catch (e) { + print(`二级访问前执行代码出现错误:${e.message}`) + } + } + if (p === "*") { + vod.vod_play_from = "在线播放"; + vod.vod_remarks = detailUrl; + vod.vod_actor = "没有二级,只有一级链接直接嗅探播放"; + vod.vod_content = MY_URL; + vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0] + } else if (typeof p === "string" && p.trim().startsWith("js:")) { + const TYPE = "detail"; + var input = MY_URL; + var play_url = ""; + eval(p.trim().replace("js:", "")); + vod = VOD; + console.log(JSON.stringify(vod)) + } else if (p && typeof p === "object") { + let tt1 = (new Date).getTime(); + if (!html) { + html = getHtml(MY_URL) + } + print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`); + let _ps; + if (p.is_json) { + print("二级是json"); + _ps = parseTags.json; + html = dealJson(html) + } else if (p.is_jsp) { + print("二级是jsp"); + _ps = parseTags.jsp + } else if (p.is_jq) { + print("二级是jq"); + _ps = parseTags.jq + } else { + print("二级默认jq"); + _ps = parseTags.jq + } + let tt2 = (new Date).getTime(); + print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + if (p.title) { + let p1 = p.title.split(";"); + vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim(); + let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").replace(/ /g, "").trim() : ""; + vod.type_name = type_name || vod.type_name + } + if (p.desc) { + try { + let p1 = p.desc.split(";"); + vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim(); + vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, "").trim() : "" + } catch (e) {} + } + if (p.content) { + try { + let p1 = p.content.split(";"); + vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim() + } catch (e) {} + } + if (p.img) { + try { + let p1 = p.img.split(";"); + vod.vod_pic = _pd(html, p1[0], MY_URL) + } catch (e) {} + } + let vod_play_from = "$$$"; + let playFrom = []; + if (p.重定向 && p.重定向.startsWith("js:")) { + print("开始执行重定向代码:" + p.重定向); + html = eval(p.重定向.replace("js:", "")) + } + if (p.tabs) { + if (p.tabs.startsWith("js:")) { + print("开始执行tabs代码:" + p.tabs); + var input = MY_URL; + eval(p.tabs.replace("js:", "")); + playFrom = TABS + } else { + let p_tab = p.tabs.split(";")[0]; + let vHeader = _pdfa(html, p_tab); + console.log(vHeader.length); + let tab_text = p.tab_text || "body&&Text"; + let new_map = {}; + for (let v of vHeader) { + let v_title = _pdfh(v, tab_text).trim(); + if (!v_title) { + v_title = "线路空" + } + console.log(v_title); + if (tab_exclude && new RegExp(tab_exclude).test(v_title)) { + continue + } + if (!new_map.hasOwnProperty(v_title)) { + new_map[v_title] = 1 + } else { + new_map[v_title] += 1 + } + if (new_map[v_title] > 1) { + v_title += Number(new_map[v_title] - 1) + } + playFrom.push(v_title) + } + } + console.log(JSON.stringify(playFrom)) + } else { + playFrom = ["在线播放"] + } + vod.vod_play_from = playFrom.join(vod_play_from); + let vod_play_url = "$$$"; + let vod_tab_list = []; + if (p.lists) { + if (p.lists.startsWith("js:")) { + print("开始执行lists代码:" + p.lists); + try { + var input = MY_URL; + var play_url = ""; + eval(p.lists.replace("js:", "")); + for (let i in LISTS) { + if (LISTS.hasOwnProperty(i)) { + try { + LISTS[i] = LISTS[i].map(it => it.split("$").slice(0, 2).join("$")) + } catch (e) { + print(`格式化LISTS发生错误:${e.message}`) + } + } + } + vod_play_url = LISTS.map(it => it.join("#")).join(vod_play_url) + } catch (e) { + print(`js执行lists: 发生错误:${e.message}`) + } + } else { + let list_text = p.list_text || "body&&Text"; + let list_url = p.list_url || "a&&href"; + let list_url_prefix = p.list_url_prefix || ""; + let is_tab_js = p.tabs.trim().startsWith("js:"); + for (let i = 0; i < playFrom.length; i++) { + let tab_name = playFrom[i]; + let tab_ext = p.tabs.split(";").length > 1 && !is_tab_js ? p.tabs.split(";")[1] : ""; + let p1 = p.lists.replaceAll("#idv", tab_name).replaceAll("#id", i); + tab_ext = tab_ext.replaceAll("#idv", tab_name).replaceAll("#id", i); + let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; + console.log(tabName); + let new_vod_list = []; + let tt1 = (new Date).getTime(); + if (typeof pdfl === "function") { + new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL); + if (list_url_prefix) { + new_vod_list = new_vod_list.map(it => it.split("$")[0] + "$" + list_url_prefix + it.split("$").slice(1).join("$")) + } + } else { + let vodList = []; + try { + vodList = _pdfa(html, p1); + console.log("len(vodList):" + vodList.length) + } catch (e) {} + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + new_vod_list.push(_pdfh(it, list_text).trim() + "$" + list_url_prefix + _pd(it, list_url, MY_URL)) + } + } + if (new_vod_list.length > 0) { + new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]); + console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`) + } + let vlist = new_vod_list.join("#"); + vod_tab_list.push(vlist) + } + vod_play_url = vod_tab_list.join(vod_play_url) + } + } + vod.vod_play_url = vod_play_url + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to) + } + if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) { + vod.vod_pic = vod.vod_pic + rule.图片来源 + } + if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) { + vod.vod_id = vod_id + } + let t2 = (new Date).getTime(); + console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); + try { + vod = vodDeal(vod) + } catch (e) { + console.log(`vodDeal发生错误:${e.message}`) + } + return JSON.stringify({ + list: [vod] + }) +} + +function get_tab_index(vod) { + let obj = {}; + vod.vod_play_from.split("$$$").forEach((it, index) => { + obj[it] = index + }); + return obj +} + +function vodDeal(vod) { + let vod_play_from = vod.vod_play_from.split("$$$"); + let vod_play_url = vod.vod_play_url.split("$$$"); + let tab_removed_list = vod_play_from; + let tab_ordered_list = vod_play_from; + let tab_renamed_list = vod_play_from; + let tab_list = vod_play_from; + let play_ordered_list = vod_play_url; + if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) { + let tab_index_dict = get_tab_index(vod); + if (rule.tab_remove && rule.tab_remove.length > 0) { + tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); + tab_list = tab_removed_list + } + if (rule.tab_order && rule.tab_order.length > 0) { + let tab_order = rule.tab_order; + tab_ordered_list = tab_removed_list.sort((a, b) => { + return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) + }); + tab_list = tab_ordered_list + } + play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]) + } + if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename).length > 0) { + tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); + tab_list = tab_renamed_list + } + vod.vod_play_from = tab_list.join("$$$"); + vod.vod_play_url = play_ordered_list.join("$$$"); + return vod +} + +function tellIsJx(url) { + try { + let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url); + return is_vip ? 1 : 0 + } catch (e) { + return 1 + } +} + +function playParse(playObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + MY_URL = playObj.url; + var MY_FLAG = playObj.flag; + if (!/http/.test(MY_URL)) { + try { + MY_URL = base64Decode(MY_URL) + } catch (e) {} + } + MY_URL = decodeURIComponent(MY_URL); + var input = MY_URL; + var flag = MY_FLAG; + let common_play = { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + url: input, + flag: flag, + jx: tellIsJx(input) + }; + let lazy_play; + if (!rule.play_parse || !rule.lazy) { + lazy_play = common_play + } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") { + try { + let lazy_code = rule.lazy.trim(); + if (lazy_code.startsWith("js:")) { + lazy_code = lazy_code.replace("js:", "").trim() + } + print("开始执行js免嗅=>" + lazy_code); + eval(lazy_code); + lazy_play = typeof input === "object" ? input : { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + jx: tellIsJx(input), + url: input + } + } catch (e) { + print(`js免嗅错误:${e.message}`); + lazy_play = common_play + } + } else { + lazy_play = common_play + } + if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { + let web_url = lazy_play.url; + for (let pjson of rule.play_json) { + if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) { + if (pjson.json && typeof pjson.json === "object") { + let base_json = pjson.json; + lazy_play = Object.assign(lazy_play, base_json); + break + } + } + } + } else if (rule.play_json && !Array.isArray(rule.play_json)) { + let base_json = { + jx: 1, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } else if (!rule.play_json) { + let base_json = { + jx: 0, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } + console.log(JSON.stringify(lazy_play)); + return JSON.stringify(lazy_play) +} + +function proxyParse(proxyObj) { + var input = proxyObj.params; + if (proxyObj.proxy_rule) { + log("准备执行本地代理规则:\n" + proxyObj.proxy_rule); + try { + eval(proxyObj.proxy_rule); + if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) { + return input + } else { + return [404, "text/plain", "Not Found"] + } + } catch (e) { + return [500, "text/plain", "代理规则错误:" + e.message] + } + } else { + return [404, "text/plain", "Not Found"] + } +} + +function isVideoParse(isVideoObj) { + var input = isVideoObj.url; + if (!isVideoObj.t) { + let re_matcher = new RegExp(isVideoObj.isVideo, "i"); + return re_matcher.test(input) + } else { + try { + eval(isVideoObj.isVideo); + if (typeof input === "boolean") { + return input + } else { + return false + } + } catch (e) { + log(`执行嗅探规则发生错误:${e.message}`); + return false + } + } +} + +function getOriginalJs(js_code) { + let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/; + if (current_match.test(js_code)) { + return js_code + } + let rsa_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs="; + let decode_content = ""; + + function aes_decrypt(data) { + let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A"); + let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A"); + let encrypted = CryptoJS.AES.decrypt({ + ciphertext: CryptoJS.enc.Base64.parse(data) + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8); + return encrypted + } + let error_log = false; + + function logger(text) { + if (error_log) { + log(text) + } + } + let decode_funcs = [text => { + try { + return ungzip(text) + } catch (e) { + logger("非gzip加密"); + return "" + } + }, text => { + try { + return base64Decode(text) + } catch (e) { + logger("非b64加密"); + return "" + } + }, text => { + try { + return aes_decrypt(text) + } catch (e) { + logger("非aes加密"); + return "" + } + }, text => { + try { + return RSA.decode(text, rsa_private_key, null) + } catch (e) { + logger("非rsa加密"); + return "" + } + }]; + let func_index = 0; + while (!current_match.test(decode_content)) { + decode_content = decode_funcs[func_index](js_code); + func_index++; + if (func_index >= decode_funcs.length) { + break + } + } + return decode_content +} + +function runMain(main_func_code, arg) { + let mainFunc = function() { + return "" + }; + try { + eval(main_func_code + "\nmainFunc=main;"); + return mainFunc(arg) + } catch (e) { + log(`执行main_funct发生了错误:${e.message}`); + return "" + } +} + +function init(ext) { + console.log("init"); + rule = {}; + rule_fetch_params = {}; + fetch_params = null; + try { + let muban = 模板.getMubans(); + if (typeof ext == "object") { + rule = ext + } else if (typeof ext == "string") { + let is_file = ext.startsWith("file://"); + if (ext.startsWith("http") || is_file) { + let query = getQuery(ext); + if (is_file) { + ext = ext.split("?")[0] + } + let js = request(ext, { + method: "GET" + }); + if (js) { + js = getOriginalJs(js); + eval("(function(){" + js.replace("var rule", "rule") + "})()") + } + if (query.type === "url" && query.params) { + if (is_file && /^http/.test(query.params)) { + rule.params = query.params + } else { + rule.params = urljoin(ext, query.params) + } + } else if (query.params) { + rule.params = query.params + } + } else { + ext = getOriginalJs(ext); + eval("(function(){" + ext.replace("var rule", "rule") + "})()") + } + } else { + console.log(`规则加载失败,不支持的规则类型:${typeof ext}`); + return + } + rule.host = (rule.host || "").rstrip("/"); + HOST = rule.host; + if (rule.hostJs) { + console.log(`检测到hostJs,准备执行...`); + try { + eval(rule.hostJs); + rule.host = HOST.rstrip("/") + } catch (e) { + console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`) + } + } + if (rule["模板"] === "自动") { + try { + let host_headers = rule["headers"] || {}; + let host_html = getCode(HOST, { + headers: host_headers + }); + let match_muban = ""; + let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it)); + for (let muban_key of muban_keys) { + try { + let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse)); + if (host_data.class && host_data.class.length > 0) { + match_muban = muban_key; + console.log(`自动匹配模板:【${muban_key}】`); + break + } + } catch (e) { + console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`) + } + } + if (match_muban) { + muban["自动"] = muban[match_muban]; + if (rule["模板修改"] && rule["模板修改"].startsWith("js:")) { + eval(rule["模板修改"].replace("js:", "").trim()) + } + } else { + delete rule["模板"] + } + } catch (e) { + delete rule["模板"] + } + } + if (rule.模板 && muban.hasOwnProperty(rule.模板)) { + print("继承模板:" + rule.模板); + rule = Object.assign(muban[rule.模板], rule) + } + let rule_cate_excludes = (rule.cate_exclude || "").split("|").filter(it => it.trim()); + let rule_tab_excludes = (rule.tab_exclude || "").split("|").filter(it => it.trim()); + rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it => it.trim())); + rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it => it.trim())); + rule.cate_exclude = rule_cate_excludes.join("|"); + rule.tab_exclude = rule_tab_excludes.join("|"); + rule.类型 = rule.类型 || "影视"; + rule.url = rule.url || ""; + rule.double = rule.double || false; + rule.homeUrl = rule.homeUrl || ""; + rule.detailUrl = rule.detailUrl || ""; + rule.searchUrl = rule.searchUrl || ""; + rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host; + rule.homeUrl = cheerio.jinja2(rule.homeUrl, { + rule: rule + }); + rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; + rule.二级访问前 = rule.二级访问前 || ""; + if (rule.url.includes("[") && rule.url.includes("]")) { + let u1 = rule.url.split("[")[0]; + let u2 = rule.url.split("[")[1].split("]")[0]; + rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url + } else { + rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url + } + if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) { + let u1 = rule.searchUrl.split("[")[0]; + let u2 = rule.searchUrl.split("[")[1].split("]")[0]; + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl + } else { + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl + } + rule.timeout = rule.timeout || 5e3; + rule.encoding = rule.编码 || rule.encoding || "utf-8"; + rule.search_encoding = rule.搜索编码 || rule.search_encoding || ""; + rule.图片来源 = rule.图片来源 || ""; + rule.图片替换 = rule.图片替换 || ""; + rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : []; + rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {}; + rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : ""; + if (!rule.hasOwnProperty("sniffer")) { + rule.sniffer = false + } + rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : ""; + rule.sniffer = !!(rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false"); + rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : ""; + if (rule.sniffer && !rule.isVideo) { + rule.isVideo = "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*" + } + rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : []; + rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : []; + rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {}; + if (rule.headers && typeof rule.headers === "object") { + try { + let header_keys = Object.keys(rule.headers); + for (let k of header_keys) { + if (k.toLowerCase() === "user-agent") { + let v = rule.headers[k]; + console.log(v); + if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) { + rule.headers[k] = eval(v) + } + } else if (k.toLowerCase() === "cookie") { + let v = rule.headers[k]; + if (v && v.startsWith("http")) { + console.log(v); + try { + v = fetch(v); + console.log(v); + rule.headers[k] = v + } catch (e) { + console.log(`从${v}获取cookie发生错误:${e.message}`) + } + } + } + } + } catch (e) { + console.log(`处理headers发生错误:${e.message}`) + } + } else { + rule.headers = {} + } + oheaders = deepCopy(rule.headers); + rule_fetch_params = { + headers: rule.headers, + timeout: rule.timeout, + encoding: rule.encoding + }; + RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host); + pre(); + init_test() + } catch (e) { + console.log(`init_test发生错误:${e.message}`) + } +} +let homeHtmlCache = undefined; + +function home(filter, home_html, class_parse) { + console.log("home"); + home_html = home_html || ""; + class_parse = class_parse || ""; + if (typeof rule.filter === "string" && rule.filter.trim().length > 0) { + try { + let filter_json = ungzip(rule.filter.trim()); + rule.filter = JSON.parse(filter_json) + } catch (e) { + rule.filter = {} + } + } + let homeObj = { + filter: rule.filter || false, + MY_URL: rule.homeUrl, + class_name: rule.class_name || "", + class_url: rule.class_url || "", + class_parse: class_parse || rule.class_parse || "", + cate_exclude: rule.cate_exclude, + home_html: home_html + }; + return homeParse(homeObj) +} + +function homeVod(params) { + console.log("homeVod"); + let homeVodObj = { + "推荐": rule.推荐, + double: rule.double, + homeUrl: rule.homeUrl, + detailUrl: rule.detailUrl + }; + return homeVodParse(homeVodObj) +} + +function category(tid, pg, filter, extend) { + let cateObj = { + url: rule.url, + "一级": rule.一级, + tid: tid, + pg: parseInt(pg), + filter: filter, + extend: extend + }; + return categoryParse(cateObj) +} + +function detail(vod_url) { + let orId = vod_url; + let fyclass = ""; + log("orId:" + orId); + if (vod_url.indexOf("$") > -1) { + let tmp = vod_url.split("$"); + fyclass = tmp[0]; + vod_url = tmp[1] + } + let detailUrl = vod_url.split("@@")[0]; + let url; + if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) { + url = rule.detailUrl.replaceAll("fyid", detailUrl).replaceAll("fyclass", fyclass) + } else if (detailUrl.includes("/")) { + url = urljoin(rule.homeUrl, detailUrl) + } else { + url = detailUrl + } + let detailObj = { + orId: orId, + url: url, + "二级": rule.二级, + "二级访问前": rule.二级访问前, + detailUrl: detailUrl, + fyclass: fyclass, + tab_exclude: rule.tab_exclude + }; + return detailParse(detailObj) +} + +function play(flag, id, flags) { + let playObj = { + url: id, + flag: flag, + flags: flags + }; + return playParse(playObj) +} + +function search(wd, quick, pg) { + if (rule.search_encoding) { + if (rule.search_encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.search_encoding) + } + } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.encoding) + } + let searchObj = { + searchUrl: rule.searchUrl, + "搜索": rule.搜索, + wd: wd, + pg: pg || 1, + quick: quick + }; + return searchParse(searchObj) +} + +function proxy(params) { + if (rule.proxy_rule && rule.proxy_rule.trim()) { + rule.proxy_rule = rule.proxy_rule.trim() + } + if (rule.proxy_rule.startsWith("js:")) { + rule.proxy_rule = rule.proxy_rule.replace("js:", "") + } + let proxyObj = { + params: params, + proxy_rule: rule.proxy_rule + }; + return proxyParse(proxyObj) +} + +function sniffer() { + let enable_sniffer = rule.sniffer || false; + if (enable_sniffer) { + log("开始执行辅助嗅探代理规则...") + } + return enable_sniffer +} + +function isVideo(url) { + let t = 0; + let is_video; + if (rule.isVideo && rule.isVideo.trim()) { + is_video = rule.isVideo.trim() + } + if (is_video.startsWith("js:")) { + is_video = is_video.replace("js:", ""); + t = 1 + } + let isVideoObj = { + url: url, + isVideo: is_video, + t: t + }; + let result = isVideoParse(isVideoObj); + if (result) { + log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo) + } + return result +} + +function getRule(key) { + return key ? rule[key] || "" : rule +} + +function deepCopy(_obj) { + return JSON.parse(JSON.stringify(_obj)) +} + +function matchesAll(str, pattern, flatten) { + if (!pattern.global) { + pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : "")) + } + var matches = []; + var match; + while ((match = pattern.exec(str)) !== null) { + matches.push(match) + } + return flatten ? matches.flat() : matches +} + +function stringUtils() { + Object.defineProperties(String.prototype, { + replaceX: { + value: function(regex, replacement) { + let matches = matchesAll(this, regex, true); + if (matches && matches.length > 1) { + const hasCaptureGroup = /\$\d/.test(replacement); + if (hasCaptureGroup) { + return this.replace(regex, m => m.replace(regex, replacement)) + } else { + return this.replace(regex, (m, p1) => m.replace(p1, replacement)) + } + } + return this.replace(regex, replacement) + }, + configurable: true, + enumerable: false, + writable: true + }, + parseX: { + get: function() { + try { + return JSON.parse(this) + } catch (e) { + console.log(e.message); + return this.startsWith("[") ? [] : {} + } + }, + configurable: true, + enumerable: false + } + }) +} + +function cut(text, start, end, method, All) { + let result = ""; + let c = (t, s, e) => { + let result = ""; + let rs = []; + let results = []; + try { + let lr = new RegExp(String.raw`${s}`.toString()); + let rr = new RegExp(String.raw`${e}`.toString()); + const segments = t.split(lr); + if (segments.length < 2) return ""; + let cutSegments = segments.slice(1).map(segment => { + let splitSegment = segment.split(rr); + return splitSegment.length < 2 ? undefined : splitSegment[0] + e + }).filter(f => f); + if (All) { + return `[${cutSegments.join(",")}]` + } else { + return cutSegments[0] + } + } catch (e) { + console.log(`Error cutting text:${e.message}`) + } + return result + }; + result = c(text, start, end); + stringUtils(); + if (method && typeof method === "function") { + result = method(result) + } + return result +} + +function DRPY() { + return { + runMain: runMain, + getRule: getRule, + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + fixAdM3u8Ai: fixAdM3u8Ai + } +} +export default { + runMain: runMain, + getRule: getRule, + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + fixAdM3u8Ai: fixAdM3u8Ai, + DRPY: DRPY +}; \ No newline at end of file diff --git a/xiaosa/JS/gbk.js b/xiaosa/JS/gbk.js new file mode 100644 index 00000000..c49b20f0 --- /dev/null +++ b/xiaosa/JS/gbk.js @@ -0,0 +1,69 @@ +/*** + * gbk编码解码函数 + * strTool = gbkTool() strTool.encode(key) + * @returns {{encode: (function(*): *), decode: (function(*): *)}} + */ +export function gbkTool() { + var data = function(zipData) { + var re = zipData + .replace(/#(\d+)\$/g, function(a, b) { + return Array(+b + 3).join('#'); + }) + .replace(/#/g, '####') + .replace(/(\w\w):([\w#]+)(?:,|$)/g, function(a, hd, dt) { + return dt.replace(/../g, function(a) { + if (a != '##') { + return hd + a; + } else { + return a; + } + }); + }); + return re; + }('4e:020405060f12171f20212326292e2f313335373c40414244464a5155575a5b6263646567686a6b6c6d6e6f727475767778797a7b7c7d7f808182838485878a#909697999c9d9ea3aaafb0b1b4b6b7b8b9bcbdbec8cccfd0d2dadbdce0e2e6e7e9edeeeff1f4f8f9fafcfe,4f:00020304050607080b0c12131415161c1d212328292c2d2e31333537393b3e3f40414244454748494a4b4c525456616266686a6b6d6e7172757778797a7d8081828586878a8c8e909293959698999a9c9e9fa1a2a4abadb0b1b2b3b4b6b7b8b9babbbcbdbec0c1c2c6c7c8c9cbcccdd2d3d4d5d6d9dbe0e2e4e5e7ebecf0f2f4f5f6f7f9fbfcfdff,50:000102030405060708090a#0b0e1011131516171b1d1e20222324272b2f303132333435363738393b3d3f404142444546494a4b4d5051525354565758595b5d5e5f6061626364666768696a6b6d6e6f70717273747578797a7c7d818283848687898a8b8c8e8f909192939495969798999a9b9c9d9e9fa0a1a2a4a6aaabadaeafb0b1b3b4b5b6b7b8b9bcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdced0d1d2d3d4d5d7d8d9dbdcdddedfe0e1e2e3e4e5e8e9eaebeff0f1f2f4f6f7f8f9fafcfdfeff,51:00010203040508#090a0c0d0e0f1011131415161718191a1b1c1d1e1f2022232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e42474a4c4e4f5052535758595b5d5e5f606163646667696a6f727a7e7f838486878a8b8e8f90919394989a9d9e9fa1a3a6a7a8a9aaadaeb4b8b9babebfc1c2c3c5c8cacdced0d2d3d4d5d6d7d8d9dadcdedfe2e3e5e6e7e8e9eaeceef1f2f4f7fe,52:0405090b0c0f101314151c1e1f2122232526272a2c2f313234353c3e4445464748494b4e4f5253555758#595a5b5d5f6062636466686b6c6d6e7071737475767778797a7b7c7e808384858687898a8b8c8d8e8f91929495969798999a9ca4a5a6a7aeafb0b4b5b6b7b8b9babbbcbdc0c1c2c4c5c6c8cacccdcecfd1d3d4d5d7d9dadbdcdddee0e1e2e3e5e6e7e8e9eaebecedeeeff1f2f3f4f5f6f7f8fbfcfd,53:0102030407090a0b0c0e11121314181b1c1e1f2224252728292b2c2d2f3031323334353637383c3d404244464b4c4d505458595b5d65686a6c6d7276797b7c7d7e80818387888a8e8f#90919293949697999b9c9ea0a1a4a7aaabacadafb0b1b2b3b4b5b7b8b9babcbdbec0c3c4c5c6c7cecfd0d2d3d5dadcdddee1e2e7f4fafeff,54:000205070b1418191a1c2224252a303336373a3d3f4142444547494c4d4e4f515a5d5e5f6061636567696a6b6c6d6e6f7074797a7e7f8183858788898a8d919397989c9e9fa0a1a2a5aeb0b2b5b6b7b9babcbec3c5cacbd6d8dbe0e1e2e3e4ebeceff0f1f4f5f6f7f8f9fbfe,55:0002030405080a0b0c0d0e121315161718191a1c1d1e1f212526#28292b2d3234353638393a3b3d40424547484b4c4d4e4f515253545758595a5b5d5e5f60626368696b6f7071727374797a7d7f85868c8d8e9092939596979a9b9ea0a1a2a3a4a5a6a8a9aaabacadaeafb0b2b4b6b8babcbfc0c1c2c3c6c7c8cacbcecfd0d5d7d8d9dadbdee0e2e7e9edeef0f1f4f6f8f9fafbfcff,56:0203040506070a0b0d1011121314151617191a1c1d202122252628292a2b2e2f30333537383a3c3d3e404142434445464748494a4b4f5051525355565a5b5d5e5f6061#636566676d6e6f70727374757778797a7d7e7f80818283848788898a8b8c8d9091929495969798999a9b9c9d9e9fa0a1a2a4a5a6a7a8a9aaabacadaeb0b1b2b3b4b5b6b8b9babbbdbebfc0c1c2c3c4c5c6c7c8c9cbcccdcecfd0d1d2d3d5d6d8d9dce3e5e6e7e8e9eaeceeeff2f3f6f7f8fbfc,57:00010205070b0c0d0e0f101112131415161718191a1b1d1e202122242526272b313234353637383c3d3f414344454648494b52535455565859626365676c6e707172747578797a7d7e7f80#818788898a8d8e8f90919495969798999a9c9d9e9fa5a8aaacafb0b1b3b5b6b7b9babbbcbdbebfc0c1c4c5c6c7c8c9cacccdd0d1d3d6d7dbdcdee1e2e3e5e6e7e8e9eaebeceef0f1f2f3f5f6f7fbfcfeff,58:0103040508090a0c0e0f101213141617181a1b1c1d1f222325262728292b2c2d2e2f31323334363738393a3b3c3d3e3f4041424345464748494a4b4e4f505253555657595a5b5c5d5f6061626364666768696a6d6e6f707172737475767778797a7b7c7d7f82848687888a8b8c#8d8e8f909194959697989b9c9da0a1a2a3a4a5a6a7aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbdbebfc0c2c3c4c6c7c8c9cacbcccdcecfd0d2d3d4d6d7d8d9dadbdcdddedfe0e1e2e3e5e6e7e8e9eaedeff1f2f4f5f7f8fafbfcfdfeff,59:000103050608090a0b0c0e1011121317181b1d1e2021222326282c30323335363b3d3e3f404345464a4c4d505253595b5c5d5e5f616364666768696a6b6c6d6e6f70717275777a7b7c7e7f8085898b8c8e8f90919495989a9b9c9d9fa0a1a2a6#a7acadb0b1b3b4b5b6b7b8babcbdbfc0c1c2c3c4c5c7c8c9cccdcecfd5d6d9dbdedfe0e1e2e4e6e7e9eaebedeeeff0f1f2f3f4f5f6f7f8fafcfdfe,5a:00020a0b0d0e0f101214151617191a1b1d1e2122242627282a2b2c2d2e2f3033353738393a3b3d3e3f414243444547484b4c4d4e4f5051525354565758595b5c5d5e5f60616364656668696b6c6d6e6f7071727378797b7c7d7e808182838485868788898a8b8c8d8e8f9091939495969798999c9d9e9fa0a1a2a3a4a5a6a7a8a9abac#adaeafb0b1b4b6b7b9babbbcbdbfc0c3c4c5c6c7c8cacbcdcecfd0d1d3d5d7d9dadbdddedfe2e4e5e7e8eaecedeeeff0f2f3f4f5f6f7f8f9fafbfcfdfeff,5b:0001020304050607080a0b0c0d0e0f10111213141518191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303133353638393a3b3c3d3e3f4142434445464748494a4b4c4d4e4f52565e606167686b6d6e6f7274767778797b7c7e7f82868a8d8e90919294969fa7a8a9acadaeafb1b2b7babbbcc0c1c3c8c9cacbcdcecf#d1d4d5d6d7d8d9dadbdce0e2e3e6e7e9eaebecedeff1f2f3f4f5f6f7fdfe,5c:0002030507080b0c0d0e10121317191b1e1f2021232628292a2b2d2e2f303233353637434446474c4d5253545657585a5b5c5d5f62646768696a6b6c6d70727374757677787b7c7d7e808384858687898a8b8e8f9293959d9e9fa0a1a4a5a6a7a8aaaeafb0b2b4b6b9babbbcbec0c2c3c5c6c7c8c9cacccdcecfd0d1d3d4d5d6d7d8dadbdcdddedfe0e2e3e7e9ebeceeeff1f2f3f4f5f6f7f8f9fafcfdfeff,5d:00#01040508090a0b0c0d0f10111213151718191a1c1d1f2021222325282a2b2c2f3031323335363738393a3b3c3f4041424344454648494d4e4f5051525354555657595a5c5e5f6061626364656667686a6d6e7071727375767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f9091929394959697989a9b9c9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b8b9babbbcbdbebfc0c1c2c3c4c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d7d8d9dadcdfe0e3e4eaeced#f0f5f6f8f9fafbfcff,5e:000407090a0b0d0e1213171e1f20212223242528292a2b2c2f303233343536393a3e3f404143464748494a4b4d4e4f50515253565758595a5c5d5f60636465666768696a6b6c6d6e6f70717577797e8182838588898c8d8e92989b9da1a2a3a4a8a9aaabacaeafb0b1b2b4babbbcbdbfc0c1c2c3c4c5c6c7c8cbcccdcecfd0d4d5d7d8d9dadcdddedfe0e1e2e3e4e5e6e7e9ebecedeeeff0f1f2f3f5f8f9fbfcfd,5f:050607090c0d0e10121416191a1c1d1e21222324#282b2c2e30323334353637383b3d3e3f4142434445464748494a4b4c4d4e4f5154595a5b5c5e5f60636567686b6e6f72747576787a7d7e7f83868d8e8f919394969a9b9d9e9fa0a2a3a4a5a6a7a9abacafb0b1b2b3b4b6b8b9babbbebfc0c1c2c7c8cacbced3d4d5dadbdcdedfe2e3e5e6e8e9eceff0f2f3f4f6f7f9fafc,60:0708090b0c10111317181a1e1f2223242c2d2e3031323334363738393a3d3e404445464748494a4c4e4f5153545657585b5c5e5f606165666e71727475777e80#8182858687888a8b8e8f909193959798999c9ea1a2a4a5a7a9aaaeb0b3b5b6b7b9babdbebfc0c1c2c3c4c7c8c9cccdcecfd0d2d3d4d6d7d9dbdee1e2e3e4e5eaf1f2f5f7f8fbfcfdfeff,61:02030405070a0b0c1011121314161718191b1c1d1e21222528292a2c2d2e2f303132333435363738393a3b3c3d3e4041424344454647494b4d4f50525354565758595a5b5c5e5f606163646566696a6b6c6d6e6f717273747678797a7b7c7d7e7f808182838485868788898a8c8d8f9091929395#969798999a9b9c9e9fa0a1a2a3a4a5a6aaabadaeafb0b1b2b3b4b5b6b8b9babbbcbdbfc0c1c3c4c5c6c7c9cccdcecfd0d3d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e7e8e9eaebecedeeeff0f1f2f3f4f6f7f8f9fafbfcfdfe,62:00010203040507091314191c1d1e2023262728292b2d2f303132353638393a3b3c424445464a4f50555657595a5c5d5e5f6061626465687172747577787a7b7d818283858687888b8c8d8e8f9094999c9d9ea3a6a7a9aaadaeafb0b2b3b4b6b7b8babec0c1#c3cbcfd1d5dddee0e1e4eaebf0f2f5f8f9fafb,63:00030405060a0b0c0d0f10121314151718191c2627292c2d2e30313334353637383b3c3e3f40414447484a51525354565758595a5b5c5d60646566686a6b6c6f707273747578797c7d7e7f81838485868b8d9193949597999a9b9c9d9e9fa1a4a6abafb1b2b5b6b9bbbdbfc0c1c2c3c5c7c8cacbccd1d3d4d5d7d8d9dadbdcdddfe2e4e5e6e7e8ebeceeeff0f1f3f5f7f9fafbfcfe,64:0304060708090a0d0e111215161718191a1d1f222324#252728292b2e2f3031323335363738393b3c3e404243494b4c4d4e4f505153555657595a5b5c5d5f60616263646566686a6b6c6e6f70717273747576777b7c7d7e7f8081838688898a8b8c8d8e8f90939497989a9b9c9d9fa0a1a2a3a5a6a7a8aaabafb1b2b3b4b6b9bbbdbebfc1c3c4c6c7c8c9cacbcccfd1d3d4d5d6d9dadbdcdddfe0e1e3e5e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,65:01020304050607080a0b0c0d0e0f10111314151617191a1b1c1d1e1f2021#222324262728292a2c2d30313233373a3c3d404142434446474a4b4d4e5052535457585a5c5f606164656768696a6d6e6f7173757678797a7b7c7d7e7f8081828384858688898a8d8e8f92949596989a9d9ea0a2a3a6a8aaacaeb1b2b3b4b5b6b7b8babbbebfc0c2c7c8c9cacdd0d1d3d4d5d8d9dadbdcdddedfe1e3e4eaebf2f3f4f5f8f9fbfcfdfeff,66:0104050708090b0d1011121617181a1b1c1e2122232426292a2b2c2e3032333738393a3b3d3f40424445464748494a4d4e505158#595b5c5d5e6062636567696a6b6c6d7172737578797b7c7d7f808183858688898a8b8d8e8f909293949598999a9b9c9e9fa0a1a2a3a4a5a6a9aaabacadafb0b1b2b3b5b6b7b8babbbcbdbfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8dadedfe0e1e2e3e4e5e7e8eaebecedeeeff1f5f6f8fafbfd,67:010203040506070c0e0f1112131618191a1c1e20212223242527292e303233363738393b3c3e3f414445474a4b4d5254555758595a5b5d62636466676b6c6e717476#78797a7b7d8082838586888a8c8d8e8f9192939496999b9fa0a1a4a6a9acaeb1b2b4b9babbbcbdbebfc0c2c5c6c7c8c9cacbcccdced5d6d7dbdfe1e3e4e6e7e8eaebedeef2f5f6f7f8f9fafbfcfe,68:01020304060d1012141518191a1b1c1e1f20222324252627282b2c2d2e2f30313435363a3b3f474b4d4f52565758595a5b5c5d5e5f6a6c6d6e6f707172737578797a7b7c7d7e7f8082848788898a8b8c8d8e90919294959698999a9b9c9d9e9fa0a1a3a4a5a9aaabacaeb1b2b4b6b7b8#b9babbbcbdbebfc1c3c4c5c6c7c8cacccecfd0d1d3d4d6d7d9dbdcdddedfe1e2e4e5e6e7e8e9eaebecedeff2f3f4f6f7f8fbfdfeff,69:00020304060708090a0c0f11131415161718191a1b1c1d1e21222325262728292a2b2c2e2f313233353637383a3b3c3e4041434445464748494a4b4c4d4e4f50515253555658595b5c5f616264656768696a6c6d6f7072737475767a7b7d7e7f8183858a8b8c8e8f909192939697999a9d9e9fa0a1a2a3a4a5a6a9aaacaeafb0b2b3b5b6b8b9babcbd#bebfc0c2c3c4c5c6c7c8c9cbcdcfd1d2d3d5d6d7d8d9dadcdddee1e2e3e4e5e6e7e8e9eaebeceeeff0f1f3f4f5f6f7f8f9fafbfcfe,6a:000102030405060708090b0c0d0e0f10111213141516191a1b1c1d1e20222324252627292b2c2d2e30323334363738393a3b3c3f40414243454648494a4b4c4d4e4f515253545556575a5c5d5e5f60626364666768696a6b6c6d6e6f70727374757677787a7b7d7e7f81828385868788898a8b8c8d8f929394959698999a9b9c9d9e9fa1a2a3a4a5a6#a7a8aaadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,6b:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f252628292a2b2c2d2e2f303133343536383b3c3d3f4041424445484a4b4d4e4f5051525354555657585a5b5c5d5e5f606168696b6c6d6e6f7071727374757677787a7d7e7f808588#8c8e8f909194959798999c9d9e9fa0a2a3a4a5a6a7a8a9abacadaeafb0b1b2b6b8b9babbbcbdbec0c3c4c6c7c8c9caccced0d1d8dadcdddedfe0e2e3e4e5e6e7e8e9ecedeef0f1f2f4f6f7f8fafbfcfeff,6c:000102030408090a0b0c0e12171c1d1e2023252b2c2d31333637393a3b3c3e3f434445484b4c4d4e4f5152535658595a62636566676b6c6d6e6f71737577787a7b7c7f8084878a8b8d8e9192959697989a9c9d9ea0a2a8acafb0b4b5b6b7bac0c1c2c3c6c7c8cbcdcecfd1d2d8#d9dadcdddfe4e6e7e9ecedf2f4f9ff,6d:000203050608090a0d0f101113141516181c1d1f20212223242628292c2d2f30343637383a3f404244494c50555657585b5d5f6162646567686b6c6d707172737576797a7b7d7e7f8081838486878a8b8d8f9092969798999a9ca2a5acadb0b1b3b4b6b7b9babbbcbdbec1c2c3c8c9cacdcecfd0d2d3d4d5d7dadbdcdfe2e3e5e7e8e9eaedeff0f2f4f5f6f8fafdfeff,6e:0001020304060708090b0f12131518191b1c1e1f222627282a2c2e30313335#3637393b3c3d3e3f40414245464748494a4b4c4f5051525557595a5c5d5e606162636465666768696a6c6d6f707172737475767778797a7b7c7d8081828487888a8b8c8d8e91929394959697999a9b9d9ea0a1a3a4a6a8a9abacadaeb0b3b5b8b9bcbebfc0c3c4c5c6c8c9cacccdced0d2d6d8d9dbdcdde3e7eaebecedeeeff0f1f2f3f5f6f7f8fafbfcfdfeff,6f:000103040507080a0b0c0d0e101112161718191a1b1c1d1e1f212223252627282c2e303234353738393a3b3c3d3f404142#43444548494a4c4e4f5051525354555657595a5b5d5f60616364656768696a6b6c6f707173757677797b7d7e7f808182838586878a8b8f909192939495969798999a9b9d9e9fa0a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b7b8babbbcbdbebfc1c3c4c5c6c7c8cacbcccdcecfd0d3d4d5d6d7d8d9dadbdcdddfe2e3e4e5e6e7e8e9eaebecedf0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,70:000102030405060708090a0b0c0d0e0f1012131415161718191c1d1e1f2021222425262728292a#2b2c2d2e2f30313233343637383a3b3c3d3e3f404142434445464748494a4b4d4e505152535455565758595a5b5c5d5f606162636465666768696a6e7172737477797a7b7d818283848687888b8c8d8f90919397989a9b9e9fa0a1a2a3a4a5a6a7a8a9aab0b2b4b5b6babebfc4c5c6c7c9cbcccdcecfd0d1d2d3d4d5d6d7dadcdddee0e1e2e3e5eaeef0f1f2f3f4f5f6f8fafbfcfeff,71:0001020304050607080b0c0d0e0f111214171b1c1d1e1f2021222324252728292a2b2c2d2e323334#353738393a3b3c3d3e3f4041424344464748494b4d4f505152535455565758595a5b5d5f6061626365696a6b6c6d6f707174757677797b7c7e7f8081828385868788898b8c8d8e909192939596979a9b9c9d9ea1a2a3a4a5a6a7a9aaabadaeafb0b1b2b4b6b7b8babbbcbdbebfc0c1c2c4c5c6c7c8c9cacbcccdcfd0d1d2d3d6d7d8d9dadbdcdddedfe1e2e3e4e6e8e9eaebecedeff0f1f2f3f4f5f6f7f8fafbfcfdfeff,72:0001020304050708090a0b0c0d0e0f101112131415161718191a#1b1c1e1f2021222324252627292b2d2e2f3233343a3c3e40414243444546494a4b4e4f505153545557585a5c5e60636465686a6b6c6d707173747677787b7c7d828385868788898c8e9091939495969798999a9b9c9d9ea0a1a2a3a4a5a6a7a8a9aaabaeb1b2b3b5babbbcbdbebfc0c5c6c7c9cacbcccfd1d3d4d5d6d8dadb#95$,30:000102,00b702:c9c7,00a830:0305,2014ff5e20:162618191c1d,30:141508090a0b0c0d0e0f16171011,00:b1d7f7,22:362728110f2a2908371aa52520,231222:992b2e614c483d1d606e6f64651e3534,26:4240,00b020:3233,2103ff0400a4ff:e0e1,203000a7211626:0605,25:cbcfcec7c6a1a0b3b2,203b21:92909193,30:13#95$,21:70717273747576777879#4$,24:88898a8b8c8d8e8f909192939495969798999a9b7475767778797a7b7c7d7e7f808182838485868760616263646566676869##,32:20212223242526272829##,21:606162636465666768696a6b#97$,ff:010203e505060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5de3#95$,30:4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293#106$a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6#103$,03:9192939495969798999a9b9c9d9e9fa0a1a3a4a5a6a7a8a9#6$b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c3c4c5c6c7c8c9#5$,fe:3536393a3f403d3e41424344##3b3c373831#3334#104$,04:10111213141501161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f#13$30313233343551363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f#11$,02:cacbd9,20:13152535,21:050996979899,22:151f23526667bf,25:505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727381828384858687#88898a8b8c8d8e8f939495bcbde2e3e4e5,2609229530:121d1e#9$,010100e101ce00e0011300e9011b00e8012b00ed01d000ec014d00f301d200f2016b00fa01d400f901:d6d8dadc,00:fcea,0251e7c701:4448,e7c802:61#2$,31:05060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829#19$,30:212223242526272829,32a333:8e8f9c9d9ea1c4ced1d2d5,fe30ff:e2e4#,212132:31#,20:10#1$,30:fc9b9cfdfe069d9e,fe:494a4b4c4d4e4f50515254555657595a5b5c5d5e5f6061#626364656668696a6b,e7:e7e8e9eaebecedeeeff0f1f2f3,30:07#11$,25:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b#13$,72:dcdddfe2e3e4e5e6e7eaebf5f6f9fdfeff,73:00020405060708090b0c0d0f1011121418191a1f2023242627282d2f30323335363a3b3c3d404142434445464748#494a4b4c4e4f515354555658595a5b5c5d5e5f6162636465666768696a6b6e7071#92$72737475767778797a7b7c7d7f808182838586888a8c8d8f90929394959798999a9c9d9ea0a1a3a4a5a6a7a8aaacadb1b4b5b6b8b9bcbdbebfc1c3c4c5c6c7#cbccced2d3d4d5d6d7d8dadbdcdddfe1e2e3e4e6e8eaebeceeeff0f1f3f4f5f6f7#92$f8f9fafbfcfdfeff,74:0001020407080b0c0d0e1112131415161718191c1d1e1f2021232427292b2d2f31323738393a3b3d3e3f4042434445464748494a4b4c4d#4e4f505152535456585d606162636465666768696a6b6c6e6f717273747578797a#92$7b7c7d7f8284858688898a8c8d8f9192939495969798999a9b9d9fa0a1a2a3a4a5a6aaabacadaeafb0b1b2b3b4b5b6b7b8b9bbbcbdbebfc0c1c2c3c4c5c6c7#c8c9cacbcccdcecfd0d1d3d4d5d6d7d8d9dadbdddfe1e5e7e8e9eaebecedf0f1f2#92$f3f5f8f9fafbfcfdfe,75:0001020305060708090a0b0c0e1012141516171b1d1e202122232426272a2e3436393c3d3f414243444647494a4d5051525355565758#5d5e5f60616263646768696b6c6d6e6f7071737576777a7b7c7d7e808182848587#92$88898a8c8d8e909395989b9c9ea2a6a7a8a9aaadb6b7babbbfc0c1c6cbcccecfd0d1d3d7d9dadcdddfe0e1e5e9ecedeeeff2f3f5f6f7f8fafbfdfe,76:02040607#08090b0d0e0f11121314161a1c1d1e212327282c2e2f31323637393a3b3d414244#92$45464748494a4b4e4f50515253555758595a5b5d5f6061626465666768696a6c6d6e7071727374757677797a7c7f80818385898a8c8d8f9092949597989a9b#9c9d9e9fa0a1a2a3a5a6a7a8a9aaabacadafb0b3b5b6b7b8b9babbbcbdbec0c1c3,554a963f57c3632854ce550954c076:914c,853c77ee827e788d72319698978d6c285b894ffa630966975cb880fa684880ae660276ce51f9655671ac7ff1888450b2596561ca6fb382ad634c625253ed54277b06516b75a45df462d48dcb9776628a8019575d97387f627238767d67cf767e64464f708d2562dc7a17659173ed642c6273822c9881677f724862:6ecc,4f3474e3534a529e7eca90a65e2e6886699c81807ed168d278c5868c9551508d8c2482de80de53058912526576:c4c7c9cbccd3d5d9dadcdddee0e1e2e3e4e6e7e8e9eaebecedf0f3f5f6f7fafbfdff,77:00020305060a0c0e0f1011121314151617181b1c1d1e21232425272a2b#2c2e3031323334393b3d3e3f4244454648494a4b4c4d4e4f52535455565758595c,858496f94fdd582199715b9d62:b1a5,66b48c799c8d7206676f789160b253:5117,8f8880cc8d1d94a1500d72c8590760eb711988ab595482ef672c7b285d297ef7752d6cf58e668ff8903c9f3b6bd491197b145f7c78a784d6853d6b:d5d9d6,5e:0187,75f995ed655d5f:0ac5,8f9f58c181c2907f965b97ad8fb97f168d2c62414fbf53:d85e,8f:a8a9ab,904d68075f6a819888689cd6618b522b762a5f6c658c6fd26ee85bbe644851:75b0,67c44e1979c9997c70b377:5d5e5f606467696a6d6e6f7071727374757677787a7b7c818283868788898a8b8f90939495969798999a9b9c9d9ea1a3a4a6a8abadaeafb1b2b4b6b7b8b9ba#bcbec0c1c2c3c4c5c6c7c8c9cacbcccecfd0d1d2d3d4d5d6d8d9dadddedfe0e1e4,75c55e7673bb83e064ad62e894b56ce2535a52c3640f94c27b944f2f5e1b823681:168a,6e246cca9a736355535c54fa886557e04e0d5e036b657c3f90e8601664e6731c88c16750624d8d22776c8e2991c75f6983dc8521991053c286956b8b60:ede8,707f82:cd31,4ed36ca785cf64cd7cd969fd66f9834953957b564fa7518c6d4b5c428e6d63d253c983:2c36,67e578b4643d5bdf5c945dee8be762c667f48c7a640063ba8749998b8c177f2094f24ea7961098a4660c731677:e6e8eaeff0f1f2f4f5f7f9fafbfc,78:0304050607080a0b0e0f101315191b1e20212224282a2b2e2f31323335363d3f414243444648494a4b4d4f51535458595a#5b5c5e5f606162636465666768696f7071727374757678797a7b7d7e7f80818283,573a5c1d5e38957f507f80a05382655e7545553150218d856284949e671d56326f6e5de2543570928f66626f64a463a35f7b6f8890f481e38fb05c1866685ff16c8996488d81886c649179f057ce6a59621054484e587a0b60e96f848bda627f901e9a8b79e4540375f4630153196c608fdf5f1b9a70803b9f7f4f885c3a8d647fc565a570bd51:45b2,866b5d075ba062bd916c75748e0c7a2061017b794ec77ef877854e1181ed521d51fa6a7153a88e87950496cf6ec19664695a78:848586888a8b8f9092949596999d9ea0a2a4a6a8a9aaabacadaeafb5b6b7b8babbbcbdbfc0c2c3c4c6c7c8cccdcecfd1d2d3d6d7d8dadbdcdddedfe0e1e2e3#e4e5e6e7e9eaebedeeeff0f1f3f5f6f8f9fbfcfdfeff,79:00020304060708090a0b0c,784050a877d7641089e6590463e35ddd7a7f693d4f20823955984e3275ae7a975e:628a,95ef521b5439708a6376952457826625693f918755076df37eaf882262337ef075b5832878c196cc8f9e614874f78bcd6b64523a8d506b21806a847156f153064e:ce1b,51d17c97918b7c074fc38e7f7be17a9c64675d1450ac810676017cb96dec7fe067515b:58f8,78cb64:ae13,63:aa2b,9519642d8fbe7b5476296253592754466b7950a362345e266b864ee38d37888b5f85902e79:0d0e0f1011121415161718191a1b1c1d1f2021222325262728292a2b2c2d2e2f3031323335363738393d3f42434445474a4b4c4d4e4f505152545558596163#6466696a6b6c6e70717273747576797b7c7d7e7f8283868788898b8c8d8e909192,6020803d62c54e39535590f863b880c665e66c2e4f4660ee6de18bde5f3986cb5f536321515a83616863520063638e4850125c9b79775bfc52307a3b60bc905376d75f:b797,76848e6c706f767b7b4977aa51f3909358244f4e6ef48fea654c7b1b72c46da47fdf5ae162b55e95573084827b2c5e1d5f1f90127f1498a063826ec7789870b95178975b57ab75354f4375385e9760e659606dc06bbf788953fc96d551cb52016389540a94938c038dcc7239789f87768fed8c0d53e079:939495969798999b9c9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb0b1b2b4b5b6b7b8bcbfc2c4c5c7c8cacccecfd0d3d4d6d7d9dadbdcdddee0e1e2e5e8ea#eceef1f2f3f4f5f6f7f9fafcfeff,7a:0104050708090a0c0f10111213151618191b1c,4e0176ef53ee948998769f0e952d5b9a8ba24e:221c,51ac846361c252a8680b4f97606b51bb6d1e515c6296659796618c46901775d890fd77636bd272:8aec,8bfb583577798d4c675c9540809a5ea66e2159927aef77ed953b6bb565ad7f0e58065151961f5bf958a954288e726566987f56e4949d76fe9041638754c659:1a3a,579b8eb267358dfa8235524160f0581586fe5ce89e454fc4989d8bb95a2560765384627c904f9102997f6069800c513f80335c1499756d314e8c7a:1d1f21222425262728292a2b2c2d2e2f303132343536383a3e4041424344454748494a4b4c4d4e4f50525354555658595a5b5c5d5e5f606162636465666768#696a6b6c6d6e6f717273757b7c7d7e828587898a8b8c8e8f909394999a9b9ea1a2,8d3053d17f5a7b4f4f104e4f96006cd573d085e95e06756a7ffb6a0a77fe94927e4151e170e653cd8fd483038d2972af996d6cdb574a82b365b980aa623f963259a84eff8bbf7eba653e83f2975e556198de80a5532a8bfd542080ba5e9f6cb88d3982ac915a54296c1b52067eb7575f711a6c7e7c89594b4efd5fff61247caa4e305c0167ab87025cf0950b98ce75af70fd902251af7f1d8bbd594951e44f5b5426592b657780a45b7562:76c2,8f905e456c1f7b264f:0fd8,670d7a:a3a4a7a9aaabaeafb0b1b2b4b5b6b7b8b9babbbcbdbec0c1c2c3c4c5c6c7c8c9cacccdcecfd0d1d2d3d4d5d7d8dadbdcdde1e2e4e7e8e9eaebeceef0f1f2f3#f4f5f6f7f8fbfcfe,7b:0001020507090c0d0e1012131617181a1c1d1f21222327292d,6d:6eaa,798f88b15f17752b629a8f854fef91dc65a781:2f51,5e9c81508d74526f89868d4b590d50854ed8961c723681798d1f5bcc8ba3964459877f1a549056:760e,8be565396982949976d66e895e72751867:46d1,7aff809d8d76611f79c665628d635188521a94a27f38809b7eb25c976e2f67607bd9768b9ad8818f7f947cd5641e95507a3f54:4ae5,6b4c640162089e3d80f3759952729769845b683c86e496:0194,94ec4e2a54047ed968398ddf801566f45e9a7fb97b:2f303234353637393b3d3f404142434446484a4d4e535557595c5e5f61636465666768696a6b6c6d6f70737476787a7c7d7f81828384868788898a8b8c8e8f#9192939698999a9b9e9fa0a3a4a5aeafb0b2b3b5b6b7b9babbbcbdbebfc0c2c3c4,57c2803f68975de5653b529f606d9f9a4f9b8eac516c5bab5f135de96c5e62f18d21517194a952fe6c9f82df72d757a267848d2d591f8f9c83c754957b8d4f306cbd5b6459d19f1353e486ca9aa88c3780a16545987e56fa96c7522e74dc52505be1630289024e5662d0602a68fa51735b9851a089c27ba199867f5060ef704c8d2f51495e7f901b747089c4572d78455f529f9f95fa8f689b3c8be17678684267dc8d:ea35,523d8f8a6eda68cd950590ed56fd679c88f98fc754c87b:c5c8c9cacbcdcecfd0d2d4d5d6d7d8dbdcdedfe0e2e3e4e7e8e9ebecedeff0f2f3f4f5f6f8f9fafbfdff,7c:0001020304050608090a0d0e101112131415171819#1a1b1c1d1e20212223242528292b2c2d2e2f3031323334353637393a3b3c3d3e42,9ab85b696d776c264ea55bb39a87916361a890af97e9542b6db55bd251fd558a7f:55f0,64bc634d65f161be608d710a6c:5749,592f676d822a58d5568e8c6a6beb90dd597d801753f76d695475559d83:77cf,683879be548c4f55540876d28c8996026cb36db88d6b89109e648d3a563f9ed175d55f8872e0606854fc4ea86a2a886160528f7054c470d886799e3f6d2a5b8f5f187ea255894faf7334543c539a501954:0e7c,4e4e5ffd745a58f6846b80e1877472d07cca6e567c:434445464748494a4b4c4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717275767778797a7e7f8081828384858687#888a8b8c8d8e8f90939496999a9ba0a1a3a6a7a8a9abacadafb0b4b5b6b7b8babb,5f27864e552c62a44e926caa623782b154d7534e733e6ed1753b521253168bdd69d05f8a60006dee574f6b2273af68538fd87f13636260a3552475ea8c6271156da35ba65e7b8352614c9ec478fa87577c27768751f060f6714c66435e4c604d8c0e707063258f895fbd606286d456de6bc160946167534960e066668d3f79fd4f1a70e96c478b:b3f2,7ed88364660f5a5a9b426d:51f7,8c416d3b4f19706b83b7621660d1970d8d27797851fb57:3efa,673a75787a3d79ef7b957c:bfc0c2c3c4c6c9cbcecfd0d1d2d3d4d8dadbdddee1e2e3e4e5e6e7e9eaebecedeef0f1f2f3f4f5f6f7f9fafcfdfeff,7d:000102030405060708090b0c0d0e0f10#1112131415161718191a1b1c1d1e1f212324252628292a2c2d2e30313233343536,808c99658ff96fc08ba59e2159ec7ee97f095409678168d88f917c4d96c653ca602575be6c7253735ac97ea7632451e0810a5df184df628051805b634f0e796d524260b86d4e5b:c4c2,8b:a1b0,65e25fcc964559937e:e7aa,560967b759394f735bb652a0835a988a8d3e753294be50477a3c4ef767b69a7e5ac16b7c76d1575a5c167b3a95f4714e517c80a9827059787f04832768c067ec78:b177,62e363617b804fed526a51cf835069db92748d:f531,89c1952e7bad4ef67d:3738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6f70717273747576#78797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798,506582305251996f6e:1085,6da75efa50f559dc5c066d466c5f7586848b686859568bb253209171964d854969127901712680f64ea490ca6d479a845a0756bc640594f077eb4fa5811a72e189d2997a7f347ede527f655991758f:7f83,53eb7a9663:eda5,768679f888579636622a52ab8282685467706377776b7aed6d017ed389e359d0621285c982a5754c501f4ecb75a58beb5c4a5dfe7b4b65a491d14eca6d25895f7d2795264ec58c288fdb9773664b79818fd170ec6d787d:999a9b9c9d9e9fa0a1a2a3a4a5a7a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9#dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa,5c3d52b283465162830e775b66769cb84eac60ca7c:beb3,7ecf4e958b66666f988897595883656c955c5f8475c997567a:dfde,51c070af7a9863ea7a767ea0739697ed4e4570784e5d915253a965:51e7,81fc8205548e5c31759a97a062d872d975bd5c459a7983ca5c40548077e94e3e6cae805a62d2636e5de851778ddd8e1e952f4ff153e560e770ac526763509e435a1f5026773753777ee26485652b628963985014723589c951b38bc07edd574783cc94a7519b541b5cfb7d:fbfcfdfeff,7e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839#3a3c3d3e3f40424344454648494a4b4c4d4e4f505152535455565758595a5b5c5d,4fca7ae36d5a90e19a8f55805496536154af5f0063e9697751ef6168520a582a52d8574e780d770b5eb761777ce062:5b97,4ea27095800362f770e49760577782db67ef68f578d5989779d158f354b353ef6e34514b523b5ba28bfe80af554357a660735751542d7a7a60505b5463a762a053e362635bc767af54ed7a9f82e691775e9388e4593857ae630e8de880ef57577b774fa95feb5bbd6b3e53217b5072c2684677:ff36,65f751b54e8f76d45cbf7aa58475594e9b4150807e:5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081838485868788898a8b8c8d8e8f909192939495969798999a9c9d9e#aeb4bbbcd6e4ecf9,7f:0a101e37393b3c3d3e3f404143464748494a4b4c4d4e4f5253,998861276e8357646606634656f062:ec69,5ed39614578362c955878721814a8fa3556683b167658d5684dd5a6a680f62e67bee961151706f9c8c3063fd89c861d27f0670c26ee57405699472fc5eca90ce67176d6a635e52b3726280014f6c59e5916a70d96d9d52d24e5096f7956d857e78ca7d2f5121579264c2808b7c7b6cea68f1695e51b7539868a872819ece7bf172f879bb6f137406674e91cc9ca4793c83:8954,540f68174e3d538952b1783e5386522950884f:8bd0,7f:56595b5c5d5e6063646566676b6c6d6f7073757677787a7b7c7d7f8082838485868788898b8d8f9091929395969798999b9ca0a2a3a5a6a8a9aaabacadaeb1#b3b4b5b6b7babbbec0c2c3c4c6c7c8c9cbcdcfd0d1d2d3d6d7d9dadbdcdddee2e3,75e27acb7c926ca596b6529b748354e94fe9805483b28fde95705ec9601c6d9f5e18655b813894fe604b70bc7ec37cae51c968817cb1826f4e248f8691cf667e4eae8c0564a9804a50da759771ce5be58fbd6f664e86648295635ed66599521788c270c852a3730e7433679778f797164e3490bb9cde6dcb51db8d41541d62ce73b283f196f69f8494c34f367f9a51cc707596755cad988653e64ee46e9c740969b4786b998f7559521876246d4167f3516d9f99804b54997b3c7abf7f:e4e7e8eaebecedeff2f4f5f6f7f8f9fafdfeff,80:020708090a0e0f11131a1b1d1e1f2123242b2c2d2e2f303234393a3c3e404144454748494e4f505153555657#595b5c5d5e5f6061626364656667686b6c6d6e6f7072737475767778797a7b7c7d,9686578462e29647697c5a0464027bd36f0f964b82a6536298855e90708963b35364864f9c819e93788c97328d:ef42,9e7f6f5e79845f559646622e9a74541594dd4fa365c55c:6561,7f1586516c2f5f8b73876ee47eff5ce6631b5b6a6ee653754e7163a0756562a18f6e4f264ed16ca67eb68bba841d87ba7f57903b95237ba99aa188f8843d6d1b9a867edc59889ebb739b780186829a:6c82,561b541757cb4e709ea653568fc881097792999286ee6ee1851366fc61626f2b80:7e818285888a8d8e8f909192949597999ea3a6a7a8acb0b3b5b6b8b9bbc5c7c8c9cacbcfd0d1d2d3d4d5d8dfe0e2e3e6eef5f7f9fbfeff,81:000103040507080b#0c1517191b1c1d1f202122232425262728292a2b2d2e3033343537393a3b3c3d3f,8c298292832b76f26c135fd983bd732b8305951a6bdb77db94c6536f830251925e3d8c8c8d384e4873ab679a68859176970971646ca177095a9295416bcf7f8e66275bd059b95a9a95:e8f7,4eec84:0c99,6aac76df9530731b68a65b5f772f919a97617cdc8ff78c1c5f257c7379d889c56ccc871c5bc65e4268c977207ef551:954d,52c95a297f05976282d763cf778485d079d26e3a5e9959998511706d6c1162bf76bf654f60af95fd660e879f9e2394ed54:0d7d,8c2c647881:40414243444547494d4e4f525657585b5c5d5e5f6162636466686a6b6c6f727375767778818384858687898b8c8d8e90929394959697999a9e9fa0a1a2a4a5#a7a9abacadaeafb0b1b2b4b5b6b7b8b9bcbdbebfc4c5c7c8c9cbcdcecfd0d1d2d3,647986116a21819c78e864699b5462b9672b83ab58a89ed86cab6f205bde964c8c0b725f67d062c772614ea959c66bcd589366ae5e5552df6155672876ee776672677a4662ff54:ea50,94a090a35a1c7eb36c164e435976801059485357753796be56ca63208111607c95f96dd65462998151855ae980fd59ae9713502a6ce55c3c62df4f60533f817b90066eba852b62c85e7478be64b5637b5ff55a18917f9e1f5c3f634f80425b7d556e95:4a4d,6d8560a867e072de51dd5b8181:d4d5d6d7d8d9dadbdcdddedfe0e1e2e4e5e6e8e9ebeeeff0f1f2f5f6f7f8f9fafdff,82:030708090a0b0e0f111315161718191a1d2024252627292e323a3c3d3f#404142434546484a4c4d4e5051525354555657595b5c5d5e606162636465666769,62e76cde725b626d94ae7ebd81136d53519c5f04597452aa6012597366968650759f632a61e67cef8bfa54e66b279e256bb485d5545550766ca4556a8db4722c5e156015743662cd6392724c5f986e436d3e65006f5876d878d076fc7554522453db4e535e9e65c180:2ad6,629b5486522870ae888d8dd16ce1547880da57f988f48d54966a914d4f696c9b55b776c6783062a870f96f8e5f6d84ec68da787c7bf781a8670b9e4f636778b0576f7812973962:79ab,528874356bd782:6a6b6c6d71757677787b7c808183858687898c90939495969a9b9ea0a2a3a7b2b5b6babbbcbfc0c2c3c5c6c9d0d6d9dadde2e7e8e9eaecedeef0f2f3f5f6f8#fafcfdfeff,83:000a0b0d1012131618191d1e1f20212223242526292a2e3032373b3d,5564813e75b276ae533975de50fb5c418b6c7bc7504f72479a9798d86f0274e27968648777a562fc98918d2b54c180584e52576a82f9840d5e7351ed74f68bc45c4f57616cfc98875a4678349b448feb7c955256625194fa4ec68386846183e984b257d467345703666e6d668c3166dd7011671f6b3a6816621a59bb4e0351c46f0667d26c8f517668cb59476b6775665d0e81109f5065d779:4841,9a918d775c824e5e4f01542f5951780c56686c148fc45f036c:7de3,8bab639083:3e3f41424445484a4b4c4d4e5355565758595d6270717273747576797a7e7f808182838487888a8b8c8d8f909194959697999a9d9fa1a2a3a4a5a6a7acadae#afb5bbbebfc2c3c4c6c8c9cbcdced0d1d2d3d5d7d9dadbdee2e3e4e6e7e8ebeced,60706d3d7275626694:8ec5,53438fc17b7e4edf8c264e7e9ed494:b1b3,524d6f5c90636d458c3458115d4c6b:2049,67aa545b81547f8c589985375f3a62a26a47953965726084686577a74e544fa85de7979864ac7fd85ced4fcf7a8d520783044e14602f7a8394a64fb54eb279e6743452e482b964d279bd5bdd6c8197528f7b6c22503e537f6e0564ce66746c3060c598778bf75e86743c7a7779cb4e1890b174036c4256da914b6cc58d8b533a86c666f28eaf5c489a716e2083:eeeff3f4f5f6f7fafbfcfeff,84:0002050708090a10121314151617191a1b1e1f20212223292a2b2c2d2e2f30323334353637393a3b3e3f404142434445474849#4a4b4c4d4e4f505253545556585d5e5f606264656667686a6e6f70727477797b7c,53d65a369f8b8da353bb570898a76743919b6cc9516875ca62f372ac52:389d,7f3a7094763853749e4a69b7786e96c088d97fa471:36c3,518967d374e458e4651856b78ba9997662707ed560f970ed58ec4e:c1ba,5fcd97e74efb8ba45203598a7eab62544ecd65e5620e833884c98363878d71946eb65bb97ed2519763c967d480898339881551125b7a59828fb14e736c5d516589258f6f962e854a745e95:10f0,6da682e55f3164926d128428816e9cc3585e8d5b4e0953c184:7d7e7f8081838485868a8d8f90919293949596989a9b9d9e9fa0a2a3a4a5a6a7a8a9aaabacadaeb0b1b3b5b6b7bbbcbec0c2c3c5c6c7c8cbcccecfd2d4d5d7#d8d9dadbdcdee1e2e4e7e8e9eaebedeeeff1f2f3f4f5f6f7f8f9fafbfdfe,85:000102,4f1e6563685155d34e2764149a9a626b5ac2745f82726da968ee50e7838e7802674052396c997eb150bb5565715e7b5b665273ca82eb67495c715220717d886b95ea965564c58d6181b355846c5562477f2e58924f2455468d4f664c4e0a5c1a88f368a2634e7a0d70e7828d52fa97f65c1154e890b57ecd59628d4a86c782:0c0d,8d6664445c0461516d89793e8bbe78377533547b4f388eab6df15a207ec5795e6c885ba15a76751a80be614e6e1758f075:1f25,727253477ef385:030405060708090a0b0d0e0f101214151618191b1c1d1e2022232425262728292a2d2e2f303132333435363e3f404142444546474b4c4d4e4f505152535455#57585a5b5c5d5f60616263656667696a6b6c6d6e6f707173757677787c7d7f8081,770176db526980dc57235e08593172ee65bd6e7f8bd75c388671534177f362fe65f64ec098df86805b9e8bc653f277e24f7f5c4e9a7659cb5f0f793a58eb4e1667ff4e8b62ed8a93901d52bf662f55dc566c90024ed54f8d91ca99706c0f5e0260435ba489c68bd56536624b99965b:88ff,6388552e53d77626517d852c67a268b36b8a62928f9353d482126dd1758f4e668d4e5b70719f85af66:91d9,7f7287009ecd9f205c5e672f8ff06811675f620d7ad658855eb665706f3185:82838688898a8b8c8d8e909192939495969798999a9d9e9fa0a1a2a3a5a6a7a9abacadb1b2b3b4b5b6b8babbbcbdbebfc0c2c3c4c5c6c7c8cacbcccdced1d2#d4d6d7d8d9dadbdddedfe0e1e2e3e5e6e7e8eaebecedeeeff0f1f2f3f4f5f6f7f8,60555237800d6454887075295e05681362f4971c53cc723d8c016c3477617a0e542e77ac987a821c8bf47855671470c165af64955636601d79c153f84e1d6b7b80865bfa55e356db4f:3a3c,99725df3677e80386002988290015b8b8b:bcf5,641c825864de55fd82cf91654fd77d20901f7c9f50f358516eaf5bbf8bc980839178849c7b97867d96:8b8f,7ee59ad3788e5c817a57904296a7795f5b59635f7b0b84d168ad55067f2974107d2295016240584c4ed65b835979585485:f9fafcfdfe,86:0001020304060708090a0b0c0d0e0f10121314151718191a1b1c1d1e1f20212223242526282a2b2c2d2e2f3031323334353637393a3b3d3e3f40#4142434445464748494a4b4c525355565758595b5c5d5f6061636465666768696a,736d631e8e:4b0f,80ce82d462ac53f06cf0915e592a60016c70574d644a8d2a762b6ee9575b6a8075f06f6d8c:2d08,57666bef889278b363a253f970ad6c645858642a580268e0819b55107cd650188eba6dcc8d9f70eb638f6d9b6ed47ee68404684390036dd896768ba85957727985e4817e75bc8a8a68af52548e22951163d098988e44557c4f5366ff568f60d56d9552435c4959296dfb586b75:301c,606c82148146631167618fe2773a8d:f334,94c15e165385542c70c386:6d6f7072737475767778838485868788898e8f90919294969798999a9b9e9fa0a1a2a5a6abadaeb2b3b7b8b9bbbcbdbebfc1c2c3c5c8cccdd2d3d5d6d7dadc#dde0e1e2e3e5e6e7e8eaebeceff5f6f7fafbfcfdff,87:010405060b0c0e0f10111416,6c405ef7505c4ead5ead633a8247901a6850916e77b3540c94dc5f647ae5687663457b527edf75db507762955934900f51f879c37a8156fe5f9290146d825c60571f541051546e4d56e263a89893817f8715892a9000541e5c6f81c062:d658,81319e3596409a:6e7c,692d59a562d3553e631654c786d96d3c5a0374e6889c6b6a59168c4c5f2f6e7e73a9987d4e3870f75b8c7897633d665a769660cb5b9b5a494e0781556c6a738b4ea167897f515f8065fa671b5fd859845a0187:191b1d1f20242627282a2b2c2d2f303233353638393a3c3d404142434445464a4b4d4f505152545556585a5b5c5d5e5f6162666768696a6b6c6d6f71727375#7778797a7f8081848687898a8c8e8f90919294959698999a9b9c9d9ea0a1a2a3a4,5dcd5fae537197e68fdd684556f4552f60df4e3a6f4d7ef482c7840e59d44f:1f2a,5c3e7eac672a851a5473754f80c355829b4f4f4d6e2d8c135c096170536b761f6e29868a658795fb7eb9543b7a337d0a95ee55e17fc174ee631d87176da17a9d621165a1536763e16c835deb545c94a84e4c6c618bec5c4b65e0829c68a754:3e34,6b:cb66,4e9463425348821e4f:0dae,575e620a96fe6664726952:ffa1,609f8bef661471996790897f785277fd6670563b54389521727a87:a5a6a7a9aaaeb0b1b2b4b6b7b8b9bbbcbebfc1c2c3c4c5c7c8c9cccdcecfd0d4d5d6d7d8d9dadcdddedfe1e2e3e4e6e7e8e9ebecedeff0f1f2f3f4f5f6f7f8#fafbfcfdff,88:0001020405060708090b0c0d0e0f101112141718191a1c1d1e1f2023,7a00606f5e0c6089819d591560dc718470ef6eaa6c5072806a8488ad5e2d4e605ab3559c94e36d177cfb9699620f7ec6778e867e5323971e8f9666875ce14fa072ed4e0b53a6590f54136380952851484ed99c9c7ea454b88d248854823795f26d8e5f265acc663e966973:b02e,53bf817a99857fa15baa96:7750,7ebf76f853a2957699997bb189446e584e617fd479658be660f354cd4eab98795df76a6150cf54118c618427785d9704524a54ee56a395006d885bb56dc6665388:2425262728292a2b2c2d2e2f30313334353637383a3b3d3e3f414243464748494a4b4e4f505152535556585a5b5c5d5e5f6066676a6d6f717374757678797a#7b7c80838687898a8c8e8f90919394959798999a9b9d9e9fa0a1a3a5a6a7a8a9aa,5c0f5b5d6821809655787b11654869544e9b6b47874e978b534f631f643a90aa659c80c18c10519968b0537887f961c86c:c4fb,8c225c5185aa82af950c6b238f9b65b05f:fbc3,4fe18845661f8165732960fa51745211578b5f6290a2884c91925e78674f602759d351:44f6,80f853086c7996c4718a4f:11ee,7f9e673d55c5950879c088967ee3589f620c9700865a5618987b5f908bb884c4915753d965ed5e8f755c60647d6e5a7f7e:eaed,8f6955a75ba360ac65cb738488:acaeafb0b2b3b4b5b6b8b9babbbdbebfc0c3c4c7c8cacbcccdcfd0d1d3d6d7dadbdcdddee0e1e6e7e9eaebecedeeeff2f5f6f7fafbfdff,89:0001030405060708#090b0c0d0e0f1114151617181c1d1e1f20222324262728292c2d2e2f3132333537,9009766377297eda9774859b5b667a7496ea884052cb718f5faa65ec8be25bfb9a6f5de16b896c5b8b:adaf,900a8fc5538b62bc9e:262d,54404e2b82bd7259869c5d1688596daf96c554d14e9a8bb6710954bd960970df6df976d04e25781487125ca95ef68a00989c960e708e6cbf594463a9773c884d6f148273583071d5538c781a96c155015f6671305bb48c1a9a8c6b83592e9e2f79e76768626c4f6f75a17f8a6d0b96336c274ef075d2517b68376f3e908081705996747689:38393a3b3c3d3e3f40424345464748494a4b4c4d4e4f505152535455565758595a5b5c5d6061626364656768696a6b6c6d6e6f707172737475767778797a7c#7d7e808284858788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1,64475c2790657a918c2359da54ac8200836f898180006930564e8036723791ce51b64e5f987563964e1a53f666f3814b591c6db24e0058f9533b63d694f14f:9d0a,886398905937905779fb4eea80f075916c825b9c59e85f5d69058681501a5df24e5977e34ee5827a6291661390915c794ebf5f7981c69038808475ab4ea688d4610f6bc55fc64e4976ca6ea28b:e3ae,8c0a8bd15f027f:fccc,7ece83:356b,56e06bb797f3963459fb541f94f66deb5bc5996e5c395f15969089:a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c3cdd3d4d5d7d8d9dbdddfe0e1e2e4e7e8e9eaecedeef0f1f2f4f5f6f7f8f9fa#fbfcfdfeff,8a:01020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d,537082f16a315a749e705e947f2883b984:2425,836787478fce8d6276c85f719896786c662054df62e54f6381c375c85eb896cd8e0a86f9548f6cf36d8c6c38607f52c775285e7d4f1860a05fe75c24753190ae94c072b96cb96e389149670953:cbf3,4f5191c98bf153c85e7c8fc26de44e8e76c26986865e611a82064f:59de,903e9c7c61096e:1d14,96854e885a3196e84e0e5c7f79b95b878bed7fbd738957df828b90c15401904755bb5cea5fa161086b3272f180b28a:891e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f4041424344454647494a4b4c4d4e4f505152535455565758595a5b5c5d5e#5f606162636465666768696a6b6c6d6e6f7071727374757677787a7b7c7d7e7f80,6d745bd388d598848c6b9a6d9e336e0a51:a443,57a38881539f63f48f9556ed54585706733f6e907f188fdc82d1613f6028966266f07ea68d:8ac3,94a55cb37ca4670860a6960580184e9190e75300966851418fd08574915d665597f55b55531d78386742683d54c9707e5bb08f7d518d572854b1651266828d:5e43,810f846c906d7cdf51ff85fb67a365e96fa186a48e81566a90207682707671e58d2362e952196cfd8d3c600e589e618e66fe8d60624e55b36e23672d8f678a:81828384858687888b8c8d8e8f9091929495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3,94e195f87728680569a8548b4e4d70b88bc86458658b5b857a84503a5be877bb6be18a797c986cbe76cf65a98f975d2d5c5586386808536062187ad96e5b7efd6a1f7ae05f706f335f20638c6da867564e085e108d264ed780c07634969c62db662d627e6cbc8d7571677f695146808753ec906e629854f286f08f998005951785178fd96d5973cd659f771f7504782781fb8d1e94884fa6679575b98bca9707632f9547963584b8632377415f8172f04e896014657462ef6b63653f8a:e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8b:0001020304050608090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#24252728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,5e2775c790d18bc1829d679d652f5431871877e580a281026c414e4b7ec7804c76f4690d6b966267503c4f84574063076b628dbe53ea65e87eb85fd763:1ab7,81:f3f4,7f6e5e1c5cd95236667a79e97a1a8d28709975d46ede6cbb7a924e2d76c55fe0949f88777ec879cd80bf91cd4ef24f17821f54685dde6d328bcc7ca58f7480985e1a549276b15b99663c9aa473e0682a86db6731732a8b:f8db,90107af970db716e62c477a956314e3b845767f152a986c08d2e94f87b518b:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656768696a6b6d6e6f707172737475767778797a7b7c7d7e7f80818283848586#8788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9facb1bbc7d0ea,8c:091e,4f4f6ce8795d9a7b6293722a62fd4e1378168f6c64b08d5a7bc668695e8488c55986649e58ee72b6690e95258ffd8d5857607f008c0651c6634962d95353684c74228301914c55447740707c6d4a517954a88d4459ff6ecb6dc45b5c7d2b4ed47c7d6ed35b5081ea6e0d5b579b0368d58e2a5b977efc603b7eb590b98d70594f63cd79df8db3535265cf79568bc5963b7ec494bb7e825634918967007f6a5c0a907566285de64f5067de505a4f5c57505e:a7#3$,8c:38393a3b3c3d3e3f4042434445484a4b4d4e4f5051525354565758595b5c5d5e5f60636465666768696c6d6e6f707172747576777b7c7d7e7f808183848687#888b8d8e8f90919293959697999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad,4e:8d0c,51404e105eff53454e:15981e,9b325b6c56694e2879ba4e3f53154e47592d723b536e6c1056df80e499976bd3777e9f174e:369f,9f104e:5c6993,82885b5b556c560f4ec453:8d9da3a5ae,97658d5d53:1af5262e3e,8d5c53:6663,52:02080e2d333f404c5e615c,84af52:7d82819093,51827f544e:bbc3c9c2e8e1ebde,4f1b4ef34f:2264,4ef54f:2527092b5e67,65384f:5a5d,8c:aeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec#edeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8d:000102030405060708090a0b0c0d,4f:5f57323d76749189838f7e7baa7cac94e6e8eac5dae3dcd1dff8,50:294c,4ff350:2c0f2e2d,4ffe50:1c0c25287e4355484e6c7ba5a7a9bad6,510650:edece6ee,51:070b,4edd6c3d4f:5865ce,9fa06c467c74516e5dfd9ec999985181591452f9530d8a07531051eb591951554ea051564eb388:6ea4,4eb5811488d279805b3488037fb851:abb1bdbc,8d:0e0f101112131415161718191a1b1c205152575f6568696a6c6e6f717278797a7b7c7d7e7f808283868788898c8d8e8f90929395969798999a9b9c9d9ea0a1#a2a4a5a6a7a8a9aaabacadaeafb0b2b6b7b9bbbdc0c1c2c5c7c8c9cacdd0d2d3d4,51:c796a2a5,8b:a0a6a7aab4b5b7c2c3cbcfced2d3d4d6d8d9dcdfe0e4e8e9eef0f3f6f9fcff,8c:000204070c0f1112141516191b181d1f202125272a2b2e2f32333536,53:697a,96:1d2221312a3d3c4249545f676c7274888d97b0,90:979b9d99aca1b4b3b6ba,8d:d5d8d9dce0e1e2e5e6e7e9edeef0f1f2f4f6fcfeff,8e:00010203040607080b0d0e1011121315161718191a1b1c202124252627282b2d303233343637383b3c3e#3f4345464c4d4e4f505354555657585a5b5c5d5e5f60616263646567686a6b6e71,90:b8b0cfc5bed0c4c7d3e6e2dcd7dbebeffe,91:04221e23312f394346,520d594252:a2acadbe,54ff52:d0d6f0,53df71ee77cd5ef451:f5fc,9b2f53b65f01755a5def57:4ca9a1,58:7ebcc5d1,57:292c2a33392e2f5c3b4269856b867c7b686d7673ada48cb2cfa7b493a0d5d8dad9d2b8f4eff8e4dd,8e:73757778797a7b7d7e808283848688898a8b8c8d8e91929395969798999a9b9d9fa0a1a2a3a4a5a6a7a8a9aaadaeb0b1b3b4b5b6b7b8b9bbbcbdbebfc0c1c2#c3c4c5c6c7c8c9cacbcccdcfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4,58:0b0d,57:fded,58:001e194420656c81899a80,99a89f1961ff82:797d7f8f8aa8848e919799abb8beb0c8cae398b7aecbccc1a9b4a1aa9fc4cea4e1,830982:f7e4,83:0f07,82:dcf4d2d8,830c82:fbd3,83:111a061415,82:e0d5,83:1c515b5c08923c34319b5e2f4f47435f4017602d3a336665,8e:e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,8f:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223#2425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344,83:681b696c6a6d6eb078b3b4a0aa939c857cb6a97db87b989ea8babcc1,840183:e5d8,580784:180b,83:ddfdd6,84:1c381106,83:d4df,84:0f03,83:f8f9eac5c0,842683:f0e1,84:5c515a597387887a89783c4669768c8e316dc1cdd0e6bdd3cabfbae0a1b9b497e5e3,850c750d853884f085:391f3a,8f:45464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656a808c929da0a1a2a4a5a6a7aaacadaeafb2b3b4b5b7b8babbbcbfc0c3c6#c9cacbcccdcfd2d6d7dae0e1e3e7eceff1f2f4f5f6fafbfcfeff,90:07080c0e131518,85:563b,84:fffc,85:594868645e7a,77a285:43727ba4a8878f79ae9c85b9b7b0d3c1dcff,86:270529163c,5efe5f0859:3c41,803759:555a58,530f5c:22252c34,62:4c6a9fbbcadad7ee,632262f663:394b43adf6717a8eb46dac8a69aebcf2f8e0ffc4dece,645263:c6be,64:45410b1b200c26215e846d96,90:191c2324252728292a2b2c303132333437393a3d3f4043454648494a4b4c4e545556595a5c5d5e5f6061646667696a6b6c6f70717273767778797a7b7c7e81#84858687898a8c8d8e8f90929496989a9c9e9fa0a4a5a7a8a9abadb2b7bcbdbfc0,64:7ab7b899bac0d0d7e4e2,65:09252e,5f:0bd2,75195f1153:5ff1fde9e8fb,54:1216064b5253545643215759233282947771649a9b8476669dd0adc2b4d2a7a6d3d472a3d5bbbfccd9dadca9aaa4ddcfde,551b54e7552054fd551454f355:22230f11272a678fb5496d41553f503c,90:c2c3c6c8c9cbcccdd2d4d5d6d8d9dadedfe0e3e4e5e9eaeceef0f1f2f3f5f6f7f9fafbfcff,91:00010305060708090a0b0c0d0e0f1011121314151617181a1b1c#1d1f20212425262728292a2b2c2d2e30323334353637383a3b3c3d3e3f40414244,55:375675767733305c8bd283b1b988819f7ed6917bdfbdbe9499eaf7c9,561f55:d1ebecd4e6ddc4efe5f2f3cccde8f5e4,8f9456:1e080c012423,55fe56:00272d5839572c4d62595c4c548664716b7b7c8593afd4d7dde1f5ebf9ff,57:040a091c,5e:0f191411313b3c,91:454748515354555658595b5c5f606667686b6d737a7b7c808182838486888a8e8f939495969798999c9d9e9fa0a1a4a5a6a7a8a9abacb0b1b2b3b6b7b8b9bb#bcbdbebfc0c1c2c3c4c5c6c8cbd0d2d3d4d5d6d7d8d9dadbdddedfe0e1e2e3e4e5,5e:3744545b5e61,5c:8c7a8d9096889899919a9cb5a2bdacabb1a3c1b7c4d2e4cbe5,5d:020327262e241e061b583e343d6c5b6f5d6b4b4a697482999d,8c735d:b7c5,5f:73778287898c95999ca8adb5bc,88625f6172:adb0b4b7b8c3c1cecdd2e8efe9f2f4f7,730172f3730372fa91:e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,92:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324#25262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445,72fb73:1713210a1e1d152239252c3831504d57606c6f7e,821b592598e759:2402,99:636768696a6b6c74777d8084878a8d9091939495,5e:80918b96a5a0b9b5beb3,8d535e:d2d1dbe8ea,81ba5f:c4c9d6cf,60035fee60045f:e1e4fe,60:0506,5f:eaedf8,60:1935261b0f0d292b0a3f2178797b7a42,92:464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727375767778797a7b7c7d7e7f808182838485#868788898a8b8c8d8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7,60:6a7d969aad9d83928c9becbbb1ddd8c6dab4,61:20261523,60f461:000e2b4a75ac94a7b7d4f5,5fdd96b395:e9ebf1f3f5f6fcfe,96:030406080a0b0c0d0f12151617191a,4e2c723f62156c:35545c4aa38590948c6869747686a9d0d4adf7f8f1d7b2e0d6faebeeb1d3effe,92:a8a9aaabacadafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8#e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,93:00010203040506070809,6d:39270c43480704190e2b4d2e351a4f525433916f9ea05e93945c607c63,6e1a6d:c7c5de,6e0e6d:bfe0,6e116d:e6ddd9,6e166dab6e0c6dae6e:2b6e4e6bb25f865354322544dfb198e0,6f2d6e:e2a5a7bdbbb7d7b4cf8fc29f,6f:6246472415,6ef96f:2f364b742a0929898d8c78727c7ad1,93:0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3f40414243444546474849#4a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696b,6f:c9a7b9b6c2e1eedee0ef,70:1a231b39354f5e,5b:80849593a5b8,752f9a9e64345b:e4ee,89305bf08e478b078f:b6d3d5e5eee4e9e6f3e8,90:05040b26110d162135362d2f445152506858625b,66b990:747d8288838b,5f:50575658,5c3b54ab5c:5059,5b715c:6366,7fbc5f:2a292d,82745f3c9b3b5c6e59:81838da9aaa3,93:6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab#acadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cbcccd,59:97caab9ea4d2b2afd7be,5a:0506,59dd5a0859:e3d8f9,5a:0c09323411231340674a553c6275,80ec5a:aa9b777abeebb2d2d4b8e0e3f1d6e6d8dc,5b:091716323740,5c:151c,5b:5a6573515362,9a:7577787a7f7d808185888a90929396989b9c9d9fa0a2a3a5a7,7e:9fa1a3a5a8a9,93:cecfd0d1d2d3d4d5d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,94:000102030405060708090a0b0c0d#0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e,7e:adb0bec0c1c2c9cbccd0d4d7dbe0e1e8ebeeeff1f2,7f0d7e:f6fafbfe,7f:01020307080b0c0f111217191c1b1f212223242526272a2b2c2d2f3031323335,5e7a757f5ddb753e909573:8e91aea29fcfc2d1b7b3c0c9c8e5d9,987c740a73:e9e7debaf2,74:0f2a5b262528302e2c,94:2f303132333435363738393a3b3c3d3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6c6d6e6f#707172737475767778797a7b7c7d7e7f8081828384919698c7cfd3d4dae6fb,95:1c20,74:1b1a415c575559776d7e9c8e8081878b9ea8a990a7d2ba,97:eaebec,67:4c535e4869a5876a7398a775a89ead8b777cf0,680967d8680a67:e9b0,680c67:d9b5dab3dd,680067:c3b8e2,680e67:c1fd,68:323360614e624464831d55664167403e4a4929b58f7477936bc2,696e68fc69:1f20,68f995:27333d43484b555a606e74757778797a7b7c7d7e808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa#abacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb,692468f069:0b0157,68e369:10713960425d846b80987834cc8788ce896663799ba7bbabadd4b1c1cadf95e08dff,6a2f69ed6a:171865,69f26a:443ea0505b358e793d28587c9190a997ab,73:3752,6b:8182878492938d9a9ba1aa,8f:6b6d71727375767877797a7c7e818284878b,95:cccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7ecff,96:0713181b1e20232425262728292b2c2d2f303738393a3e41434a4e4f5152535657#58595a5c5d5e606365666b6d6e6f70717378797a7b7c7d7e7f808182838487898a,8f:8d8e8f989a,8ece62:0b171b1f222125242c,81e774:eff4ff,75:0f1113,65:34eeeff0,66:0a19,677266:031500,708566:f71d34313635,800666:5f54414f56615777848ca79dbedbdce6e9,8d:3233363b3d4045464849474d5559,89:c7cacbcccecfd0d1,72:6e9f5d666f7e7f848b8d8f92,63:0832b0,96:8c8e91929395969a9b9d9e9fa0a1a2a3a4a5a6a8a9aaabacadaeafb1b2b4b5b7b8babbbfc2c3c8cacbd0d1d3d4d6d7d8d9dadbdcdddedfe1e2e3e4e5e6e7eb#ecedeef0f1f2f4f5f8fafbfcfdff,97:0203050a0b0c10111214151718191a1b1d1f20,64:3fd8,80046b:eaf3fdf5f9,6c:0507060d1518191a2129242a32,65:35556b,72:4d525630,8662521680:9f9c93bc,670a80:bdb1abadb4b7e7e8e9eadbc2c4d9cdd7,671080:ddebf1f4ed,81:0d0e,80:f2fc,671581128c5a81:361e2c1832484c5374595a7160697c7d6d67,584d5ab581:888291,6ed581:a3aacc,672681:cabb,97:2122232425262728292b2c2e2f3133343536373a3b3c3d3f404142434445464748494a4b4c4d4e4f5051545557585a5c5d5f63646667686a6b6c6d6e6f7071#72757778797a7b7d7e7f8081828384868788898a8c8e8f9093959697999a9b9c9d,81:c1a6,6b:243739434659,98:d1d2d3d5d9da,6bb35f406bc289f365909f5165:93bcc6c4c3ccced2d6,70:809c969dbbc0b7abb1e8ca,71:1013162f31735c6845724a787a98b3b5a8a0e0d4e7f9,72:1d28,706c71:1866b9,62:3e3d434849,79:3b4046495b5c535a6257606f677a858a9aa7b3,5f:d1d0,97:9e9fa1a2a4a5a6a7a8a9aaacaeb0b1b3b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3#e4e5e8eeeff0f1f2f4f7f8f9fafbfcfdfeff,98:000102030405060708090a0b0c0d0e,60:3c5d5a67415963ab,61:060d5da99dcbd1,620680:807f,6c:93f6,6dfc77:f6f8,78:0009171811,65ab78:2d1c1d393a3b1f3c252c23294e6d56572650474c6a9b939a879ca1a3b2b9a5d4d9c9ecf2,790578f479:13241e34,9f9b9e:f9fbfc,76f177:040d,76f977:07081a22192d263538505147435a68,98:0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d#4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e,77:62657f8d7d808c919fa0b0b5bd,75:3a404e4b485b727983,7f:58615f,8a487f:68747179817e,76:cde5,883294:8586878b8a8c8d8f909497959a9b9ca3a4abaaadacafb0b2b4b6b7b8b9babcbdbfc4c8c9cacbcccdced0d1d2d5d6d7d9d8dbdedfe0e2e4e5e7e8ea,98:6f70717273748b8e929599a3a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcfd0d4d6d7dbdcdde0e1e2e3e4#e5e6e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,99:0001020304050607,94:e9ebeeeff3f4f5f7f9fcfdff,95:03020607090a0d0e0f1213141516181b1d1e1f222a2b292c3132343637383c3e3f4235444546494c4e4f525354565758595b5e5f5d61626465666768696a6b6c6f7172733a,77:e7ec,96c979:d5ede3eb,7a065d477a:03021e14,99:08090a0b0c0e0f1112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2f303132333435363738393a3b3c3d3e3f40414243444546474849#4a4b4c4d4e4f50515253565758595a5b5c5d5e5f60616264667378797b7e828389,7a:393751,9ecf99a57a7076:888e9399a4,74:dee0,752c9e:202228292a2b2c3231363837393a3e414244464748494b4c4e5155575a5b5c5e63666768696a6b6c716d73,75:929496a09daca3b3b4b8c4b1b0c3c2d6cde3e8e6e4ebe7,760375:f1fcff,76:1000050c170a25181519,99:8c8e9a9b9c9d9e9fa0a1a2a3a4a6a7a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8#d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9,76:1b3c2220402d303f35433e334d5e545c566b6f,7fca7a:e6787980868895a6a0aca8adb3,88:6469727d7f82a2c6b7bcc9e2cee3e5f1,891a88:fce8fef0,89:2119131b0a342b3641667b,758b80e576:b2b4,77dc80:1214161c20222526272928310b3543464d526971,898398:788083,99:fafbfcfdfeff,9a:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738#393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859,98:898c8d8f949a9b9e9fa1a2a5a6,86:4d546c6e7f7a7c7ba88d8bac9da7a3aa93a9b6c4b5ceb0bab1afc9cfb4e9f1f2edf3d0,871386:def4dfd8d1,87:0307,86f887:080a0d09233b1e252e1a3e48343129373f82227d7e7b60704c6e8b53637c64596593afa8d2,9a:5a5b5c5d5e5f606162636465666768696a6b7283898d8e949599a6a9aaabacadaeafb2b3b4b5b9bbbdbebfc3c4c6c7c8c9cacdcecfd0d2d4d5d6d7d9dadbdc#dddee0e2e3e4e5e7e8e9eaeceef0f1f2f3f4f5f6f7f8fafcfdfeff,9b:000102040506,87:c68885ad9783abe5acb5b3cbd3bdd1c0cadbeae0ee,88:1613,87fe88:0a1b21393c,7f:36424445,82107a:fafd,7b:080304150a2b0f47382a192e31202524333e1e585a45754c5d606e7b62727190a6a7b8ac9da885aa9ca2abb4d1c1ccdddae5e6ea,7c0c7b:fefc,7c:0f160b,9b:07090a0b0c0d0e1011121415161718191a1b1c1d1e2021222425262728292a2b2c2d2e3031333435363738393a3d3e3f40464a4b4c4e50525355565758595a#5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b,7c:1f2a26384140,81fe82:010204,81ec884482:2122232d2f282b383b33343e44494b4f5a5f68,88:7e8588d8df,895e7f:9d9fa7afb0b2,7c7c65497c:919d9c9ea2b2bcbdc1c7cccdc8c5d7e8,826e66a87f:bfced5e5e1e6e9eef3,7cf87d:77a6ae,7e:479b,9e:b8b4,8d:73849491b1676d,8c:4749,91:4a504e4f64,9b:7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba#bbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb,91:626170696f7d7e7274798c85908d91a2a3aaadaeafb5b4ba,8c559e7e8d:b8eb,8e:055969,8d:b5bfbcbac4d6d7dadececfdbc6ecf7f8e3f9fbe4,8e098dfd8e:141d1f2c2e232f3a4039353d3149414251524a70767c6f74858f94909c9e,8c:78828a859894,659b89:d6dedadc,9b:dcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9c:000102030405060708090a0b0c0d0e0f101112131415161718191a#1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b,89:e5ebef,8a3e8b26975396:e9f3ef,97:0601080f0e2a2d303e,9f:808385868788898a8c,9efe9f:0b0d,96:b9bcbdced2,77bf96e092:8eaec8,93:3e6aca8f,94:3e6b,9c:7f8285868788,7a239c:8b8e90919294959a9b9e9fa0a1a2a3a5a6a7a8a9abadaeb0b1b2b3b4b5b6b7babbbcbdc4c5c6c7cacb3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a#7b7d7e808384898a8c8f93969798999daaacafb9bebfc0c1c2c8c9d1d2dadbe0e1cccdcecfd0d3d4d5d7d8d9dcdddfe2,97:7c85919294afaba3b2b4,9a:b1b0b7,9e589a:b6babcc1c0c5c2cbccd1,9b:45434749484d51,98e899:0d2e5554,9a:dfe1e6efebfbedf9,9b:080f131f23,9e:bdbe,7e3b9e:8287888b92,93d69e:9d9fdbdcdde0dfe2e9e7e5eaef,9f:222c2f39373d3e44,9c:e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9d:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021#22232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142#92$434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081#82838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2#92$a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1#e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff,9e:000102#92$030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e24272e30343b3c404d5052535456595d5f606162656e6f727475767778797a7b7c7d80#8183848586898a8c8d8e8f90919495969798999a9b9c9ea0a1a2a3a4a5a7a8a9aa#92$abacadaeafb0b1b2b3b5b6b7b9babcbfc0c1c2c3c5c6c7c8cacbccd0d2d3d5d6d7d9dadee1e3e4e6e8ebecedeef0f1f2f3f4f5f6f7f8fafdff,9f:000102030405#060708090a0c0f1112141516181a1b1c1d1e1f21232425262728292a2b2d2e3031#92$3233343536383a3c3f4041424345464748494a4b4c4d4e4f52535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778#797a7b7c7d7e81828d8e8f9091929394959697989c9d9ea1a2a3a4a5,f9:2c7995e7f1#92$,fa:0c0d0e0f111314181f20212324272829,e8:15161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243#4445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364'), + U2Ghash = {}, + G2Uhash = {}; + ! function(data) { + var k = 0; + data = data.match(/..../g); + for (var i = 0x81; i <= 0xfe; i++) { + for (var j = 0x40; j <= 0xFE; j++) { + U2Ghash[data[k++]] = ('%' + i.toString(16) + '%' + j.toString(16)) + .toUpperCase(); + } + } + for (var key in U2Ghash) { + G2Uhash[U2Ghash[key]] = key; + } + }(data); + + function isAscii(unicode) { + return ((unicode == 0x20AC) || (unicode <= 0x007F && unicode >= 0x0000)); + } + return { + encode: function(str) { + return str.replace(/./g, function(a) { + var code = a.charCodeAt(0); + if (isAscii(code)) { + return encodeURIComponent(a); + } else { + var key = code.toString(16); + if (key.length != 4) key = ('000' + key).match(/....$/)[0]; + return U2Ghash[key] || a; + } + }); + }, + decode: function(str) { + return str.replace(/%[0-9A-F]{2}%[0-9A-F]{2}/g, function(a) { + if (a in G2Uhash) { + return String.fromCharCode('0x' + G2Uhash[a]); + } else { + return a; + } + }).replace(/%[\w]{2}/g, function(a) { + return decodeURIComponent(a); + + }); + } + }; +} \ No newline at end of file diff --git a/xiaosa/JS/jinja.js b/xiaosa/JS/jinja.js new file mode 100644 index 00000000..9a03ee5e --- /dev/null +++ b/xiaosa/JS/jinja.js @@ -0,0 +1,607 @@ +/*! + * Jinja Templating for JavaScript v0.1.8 + * https://github.com/sstur/jinja-js + * + * This is a slimmed-down Jinja2 implementation [http://jinja.pocoo.org/] + * + * In the interest of simplicity, it deviates from Jinja2 as follows: + * - Line statements, cycle, super, macro tags and block nesting are not implemented + * - auto escapes html by default (the filter is "html" not "e") + * - Only "html" and "safe" filters are built in + * - Filters are not valid in expressions; `foo|length > 1` is not valid + * - Expression Tests (`if num is odd`) not implemented (`is` translates to `==` and `isnot` to `!=`) + * + * Notes: + * - if property is not found, but method '_get' exists, it will be called with the property name (and cached) + * - `{% for n in obj %}` iterates the object's keys; get the value with `{% for n in obj %}{{ obj[n] }}{% endfor %}` + * - subscript notation `a[0]` takes literals or simple variables but not `a[item.key]` + * - `.2` is not a valid number literal; use `0.2` + * + */ +/*global require, exports, module, define */ + +(function(global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jinja = {})); +})(this, (function(jinja) { + "use strict"; + var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g; + var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g; + var NUMBER = /^[+-]?\d+(\.\d+)?$/; + //non-primitive literals (array and object literals) + var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g; + //bare identifiers such as variables and in object literals: {foo: 'value'} + var IDENTIFIERS = /[$_a-z][$\w]*/ig; + var VARIABLES = /i(\.i|\[[@#i]\])*/g; + var ACCESSOR = /(\.i|\[[@#i]\])/g; + var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g; + //extended (english) operators + var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g; + var LEADING_SPACE = /^\s+/; + var TRAILING_SPACE = /\s+$/; + + var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/; + var TAGS = { + '{{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/, + '{{': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/, + '{%': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/, + '{#': /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/ + }; + + var delimeters = { + '{%': 'directive', + '{{': 'output', + '{#': 'comment' + }; + + var operators = { + and: '&&', + or: '||', + not: '!', + is: '==', + isnot: '!=' + }; + + var constants = { + 'true': true, + 'false': false, + 'null': null + }; + + function Parser() { + this.nest = []; + this.compiled = []; + this.childBlocks = 0; + this.parentBlocks = 0; + this.isSilent = false; + } + + Parser.prototype.push = function(line) { + if (!this.isSilent) { + this.compiled.push(line); + } + }; + + Parser.prototype.parse = function(src) { + this.tokenize(src); + return this.compiled; + }; + + Parser.prototype.tokenize = function(src) { + var lastEnd = 0, + parser = this, + trimLeading = false; + matchAll(src, START_TOKEN, function(open, index, src) { + //here we match the rest of the src against a regex for this tag + var match = src.slice(index + open.length).match(TAGS[open]); + match = (match ? match[0] : ''); + //here we sub out strings so we don't get false matches + var simplified = match.replace(STRINGS, '@'); + //if we don't have a close tag or there is a nested open tag + if (!match || ~simplified.indexOf(open)) { + return index + 1; + } + var inner = match.slice(0, 0 - open.length); + //check for white-space collapse syntax + if (inner.charAt(0) === '-') var wsCollapseLeft = true; + if (inner.slice(-1) === '-') var wsCollapseRight = true; + inner = inner.replace(/^-|-$/g, '').trim(); + //if we're in raw mode and we are not looking at an "endraw" tag, move along + if (parser.rawMode && (open + inner) !== '{%endraw') { + return index + 1; + } + var text = src.slice(lastEnd, index); + lastEnd = index + open.length + match.length; + if (trimLeading) text = trimLeft(text); + if (wsCollapseLeft) text = trimRight(text); + if (wsCollapseRight) trimLeading = true; + if (open === '{{{') { + //liquid-style: make {{{x}}} => {{x|safe}} + open = '{{'; + inner += '|safe'; + } + parser.textHandler(text); + parser.tokenHandler(open, inner); + }); + var text = src.slice(lastEnd); + if (trimLeading) text = trimLeft(text); + this.textHandler(text); + }; + + Parser.prototype.textHandler = function(text) { + this.push('write(' + JSON.stringify(text) + ');'); + }; + + Parser.prototype.tokenHandler = function(open, inner) { + var type = delimeters[open]; + if (type === 'directive') { + this.compileTag(inner); + } else if (type === 'output') { + var extracted = this.extractEnt(inner, STRINGS, '@'); + //replace || operators with ~ + extracted.src = extracted.src.replace(/\|\|/g, '~').split('|'); + //put back || operators + extracted.src = extracted.src.map(function(part) { + return part.split('~').join('||'); + }); + var parts = this.injectEnt(extracted, '@'); + if (parts.length > 1) { + var filters = parts.slice(1).map(this.parseFilter.bind(this)); + this.push('filter(' + this.parseExpr(parts[0]) + ',' + filters.join(',') + ');'); + } else { + this.push('filter(' + this.parseExpr(parts[0]) + ');'); + } + } + }; + + Parser.prototype.compileTag = function(str) { + var directive = str.split(' ')[0]; + var handler = tagHandlers[directive]; + if (!handler) { + throw new Error('Invalid tag: ' + str); + } + handler.call(this, str.slice(directive.length).trim()); + }; + + Parser.prototype.parseFilter = function(src) { + src = src.trim(); + var match = src.match(/[:(]/); + var i = match ? match.index : -1; + if (i < 0) return JSON.stringify([src]); + var name = src.slice(0, i); + var args = src.charAt(i) === ':' ? src.slice(i + 1) : src.slice(i + 1, -1); + args = this.parseExpr(args, { + terms: true + }); + return '[' + JSON.stringify(name) + ',' + args + ']'; + }; + + Parser.prototype.extractEnt = function(src, regex, placeholder) { + var subs = [], + isFunc = typeof placeholder == 'function'; + src = src.replace(regex, function(str) { + var replacement = isFunc ? placeholder(str) : placeholder; + if (replacement) { + subs.push(str); + return replacement; + } + return str; + }); + return { + src: src, + subs: subs + }; + }; + + Parser.prototype.injectEnt = function(extracted, placeholder) { + var src = extracted.src, + subs = extracted.subs, + isArr = Array.isArray(src); + var arr = (isArr) ? src : [src]; + var re = new RegExp('[' + placeholder + ']', 'g'), + i = 0; + arr.forEach(function(src, index) { + arr[index] = src.replace(re, function() { + return subs[i++]; + }); + }); + return isArr ? arr : arr[0]; + }; + + //replace complex literals without mistaking subscript notation with array literals + Parser.prototype.replaceComplex = function(s) { + var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, 'v'); + parsed.src = parsed.src.replace(NON_PRIMITIVES, '~'); + return this.injectEnt(parsed, 'v'); + }; + + //parse expression containing literals (including objects/arrays) and variables (including dot and subscript notation) + //valid expressions: `a + 1 > b.c or c == null`, `a and b[1] != c`, `(a < b) or (c < d and e)`, 'a || [1]` + Parser.prototype.parseExpr = function(src, opts) { + opts = opts || {}; + //extract string literals -> @ + var parsed1 = this.extractEnt(src, STRINGS, '@'); + //note: this will catch {not: 1} and a.is; could we replace temporarily and then check adjacent chars? + parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) { + return (op in operators) ? before + operators[op] + after : s; + }); + //sub out non-string literals (numbers/true/false/null) -> # + // the distinction is necessary because @ can be object identifiers, # cannot + var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) { + return (s in constants || NUMBER.test(s)) ? '#' : null; + }); + //sub out object/variable identifiers -> i + var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, 'i'); + //remove white-space + parsed3.src = parsed3.src.replace(/\s+/g, ''); + + //the rest of this is simply to boil the expression down and check validity + var simplified = parsed3.src; + //sub out complex literals (objects/arrays) -> ~ + // the distinction is necessary because @ and # can be subscripts but ~ cannot + while (simplified !== (simplified = this.replaceComplex(simplified))); + //now @ represents strings, # represents other primitives and ~ represents non-primitives + //replace complex variables (those with dot/subscript accessors) -> v + while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, 'v'))); + //empty subscript or complex variables in subscript, are not permitted + simplified = simplified.replace(/[iv]\[v?\]/g, 'x'); + //sub in "i" for @ and # and ~ and v (now "i" represents all literals, variables and identifiers) + simplified = simplified.replace(/[@#~v]/g, 'i'); + //sub out operators + simplified = simplified.replace(OPERATORS, '%'); + //allow 'not' unary operator + simplified = simplified.replace(/!+[i]/g, 'i'); + var terms = opts.terms ? simplified.split(',') : [simplified]; + terms.forEach(function(term) { + //simplify logical grouping + while (term !== (term = term.replace(/\(i(%i)*\)/g, 'i'))); + if (!term.match(/^i(%i)*/)) { + throw new Error('Invalid expression: ' + src + " " + term); + } + }); + parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this)); + parsed2.src = this.injectEnt(parsed3, 'i'); + parsed1.src = this.injectEnt(parsed2, '#'); + return this.injectEnt(parsed1, '@'); + }; + + Parser.prototype.parseVar = function(src) { + var args = Array.prototype.slice.call(arguments); + var str = args.pop(), + index = args.pop(); + //quote bare object identifiers (might be a reserved word like {while: 1}) + if (src === 'i' && str.charAt(index + 1) === ':') { + return '"i"'; + } + var parts = ['"i"']; + src.replace(ACCESSOR, function(part) { + if (part === '.i') { + parts.push('"i"'); + } else if (part === '[i]') { + parts.push('get("i")'); + } else { + parts.push(part.slice(1, -1)); + } + }); + return 'get(' + parts.join(',') + ')'; + }; + + //escapes a name to be used as a javascript identifier + Parser.prototype.escName = function(str) { + return str.replace(/\W/g, function(s) { + return '$' + s.charCodeAt(0).toString(16); + }); + }; + + Parser.prototype.parseQuoted = function(str) { + if (str.charAt(0) === "'") { + str = str.slice(1, -1).replace(/\\.|"/, function(s) { + if (s === "\\'") return "'"; + return s.charAt(0) === '\\' ? s : ('\\' + s); + }); + str = '"' + str + '"'; + } + //todo: try/catch or deal with invalid characters (linebreaks, control characters) + return JSON.parse(str); + }; + + + //the context 'this' inside tagHandlers is the parser instance + var tagHandlers = { + 'if': function(expr) { + this.push('if (' + this.parseExpr(expr) + ') {'); + this.nest.unshift('if'); + }, + 'else': function() { + if (this.nest[0] === 'for') { + this.push('}, function() {'); + } else { + this.push('} else {'); + } + }, + 'elseif': function(expr) { + this.push('} else if (' + this.parseExpr(expr) + ') {'); + }, + 'endif': function() { + this.nest.shift(); + this.push('}'); + }, + 'for': function(str) { + var i = str.indexOf(' in '); + var name = str.slice(0, i).trim(); + var expr = str.slice(i + 4).trim(); + this.push('each(' + this.parseExpr(expr) + ',' + JSON.stringify(name) + ',function() {'); + this.nest.unshift('for'); + }, + 'endfor': function() { + this.nest.shift(); + this.push('});'); + }, + 'raw': function() { + this.rawMode = true; + }, + 'endraw': function() { + this.rawMode = false; + }, + 'set': function(stmt) { + var i = stmt.indexOf('='); + var name = stmt.slice(0, i).trim(); + var expr = stmt.slice(i + 1).trim(); + this.push('set(' + JSON.stringify(name) + ',' + this.parseExpr(expr) + ');'); + }, + 'block': function(name) { + if (this.isParent) { + ++this.parentBlocks; + var blockName = 'block_' + (this.escName(name) || this.parentBlocks); + this.push('block(typeof ' + blockName + ' == "function" ? ' + blockName + ' : function() {'); + } else if (this.hasParent) { + this.isSilent = false; + ++this.childBlocks; + blockName = 'block_' + (this.escName(name) || this.childBlocks); + this.push('function ' + blockName + '() {'); + } + this.nest.unshift('block'); + }, + 'endblock': function() { + this.nest.shift(); + if (this.isParent) { + this.push('});'); + } else if (this.hasParent) { + this.push('}'); + this.isSilent = true; + } + }, + 'extends': function(name) { + name = this.parseQuoted(name); + var parentSrc = this.readTemplateFile(name); + this.isParent = true; + this.tokenize(parentSrc); + this.isParent = false; + this.hasParent = true; + //silence output until we enter a child block + this.isSilent = true; + }, + 'include': function(name) { + name = this.parseQuoted(name); + var incSrc = this.readTemplateFile(name); + this.isInclude = true; + this.tokenize(incSrc); + this.isInclude = false; + } + }; + + //liquid style + tagHandlers.assign = tagHandlers.set; + //python/django style + tagHandlers.elif = tagHandlers.elseif; + + var getRuntime = function runtime(data, opts) { + var defaults = { + autoEscape: 'toJson' + }; + var _toString = Object.prototype.toString; + var _hasOwnProperty = Object.prototype.hasOwnProperty; + var getKeys = Object.keys || function(obj) { + var keys = []; + for (var n in obj) + if (_hasOwnProperty.call(obj, n)) keys.push(n); + return keys; + }; + var isArray = Array.isArray || function(obj) { + return _toString.call(obj) === '[object Array]'; + }; + var create = Object.create || function(obj) { + function F() {} + + F.prototype = obj; + return new F(); + }; + var toString = function(val) { + if (val == null) return ''; + return (typeof val.toString == 'function') ? val.toString() : _toString.call(val); + }; + var extend = function(dest, src) { + var keys = getKeys(src); + for (var i = 0, len = keys.length; i < len; i++) { + var key = keys[i]; + dest[key] = src[key]; + } + return dest; + }; + //get a value, lexically, starting in current context; a.b -> get("a","b") + var get = function() { + var val, n = arguments[0], + c = stack.length; + while (c--) { + val = stack[c][n]; + if (typeof val != 'undefined') break; + } + for (var i = 1, len = arguments.length; i < len; i++) { + if (val == null) continue; + n = arguments[i]; + val = (_hasOwnProperty.call(val, n)) ? val[n] : (typeof val._get == 'function' ? (val[n] = val._get(n)) : null); + } + return (val == null) ? '' : val; + }; + var set = function(n, val) { + stack[stack.length - 1][n] = val; + }; + var push = function(ctx) { + stack.push(ctx || {}); + }; + var pop = function() { + stack.pop(); + }; + var write = function(str) { + output.push(str); + }; + var filter = function(val) { + for (var i = 1, len = arguments.length; i < len; i++) { + var arr = arguments[i], + name = arr[0], + filter = filters[name]; + if (filter) { + arr[0] = val; + //now arr looks like [val, arg1, arg2] + val = filter.apply(data, arr); + } else { + throw new Error('Invalid filter: ' + name); + } + } + if (opts.autoEscape && name !== opts.autoEscape && name !== 'safe') { + //auto escape if not explicitly safe or already escaped + val = filters[opts.autoEscape].call(data, val); + } + output.push(val); + }; + var each = function(obj, loopvar, fn1, fn2) { + if (obj == null) return; + var arr = isArray(obj) ? obj : getKeys(obj), + len = arr.length; + var ctx = { + loop: { + length: len, + first: arr[0], + last: arr[len - 1] + } + }; + push(ctx); + for (var i = 0; i < len; i++) { + extend(ctx.loop, { + index: i + 1, + index0: i + }); + fn1(ctx[loopvar] = arr[i]); + } + if (len === 0 && fn2) fn2(); + pop(); + }; + var block = function(fn) { + push(); + fn(); + pop(); + }; + var render = function() { + return output.join(''); + }; + data = data || {}; + opts = extend(defaults, opts || {}); + var filters = extend({ + html: function(val) { + return toString(val) + .split('&').join('&') + .split('<').join('<') + .split('>').join('>') + .split('"').join('"'); + }, + safe: function(val) { + return val; + }, + toJson: function(val) { + if (typeof val === 'object') { + return JSON.stringify(val); + } + return toString(val); + } + }, opts.filters || {}); + var stack = [create(data || {})], + output = []; + return { + get: get, + set: set, + push: push, + pop: pop, + write: write, + filter: filter, + each: each, + block: block, + render: render + }; + }; + + var runtime; + + jinja.compile = function(markup, opts) { + opts = opts || {}; + var parser = new Parser(); + parser.readTemplateFile = this.readTemplateFile; + var code = []; + code.push('function render($) {'); + code.push('var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;'); + code.push.apply(code, parser.parse(markup)); + code.push('return $.render();'); + code.push('}'); + code = code.join('\n'); + if (opts.runtime === false) { + var fn = new Function('data', 'options', 'return (' + code + ')(runtime(data, options))'); + } else { + runtime = runtime || (runtime = getRuntime.toString()); + fn = new Function('data', 'options', 'return (' + code + ')((' + runtime + ')(data, options))'); + } + return { + render: fn + }; + }; + + jinja.render = function(markup, data, opts) { + var tmpl = jinja.compile(markup); + return tmpl.render(data, opts); + }; + + jinja.templateFiles = []; + + jinja.readTemplateFile = function(name) { + var templateFiles = this.templateFiles || []; + var templateFile = templateFiles[name]; + if (templateFile == null) { + throw new Error('Template file not found: ' + name); + } + return templateFile; + }; + + + /*! + * Helpers + */ + + function trimLeft(str) { + return str.replace(LEADING_SPACE, ''); + } + + function trimRight(str) { + return str.replace(TRAILING_SPACE, ''); + } + + function matchAll(str, reg, fn) { + //copy as global + reg = new RegExp(reg.source, 'g' + (reg.ignoreCase ? 'i' : '') + (reg.multiline ? 'm' : '')); + var match; + while ((match = reg.exec(str))) { + var result = fn(match[0], match.index, str); + if (typeof result == 'number') { + reg.lastIndex = result; + } + } + } +})); \ No newline at end of file diff --git a/xiaosa/JS/jinja.min.js b/xiaosa/JS/jinja.min.js new file mode 100644 index 00000000..f702f296 --- /dev/null +++ b/xiaosa/JS/jinja.min.js @@ -0,0 +1,504 @@ +(function(global, factory) { + typeof exports === "object" && typeof module !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define(["exports"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.jinja = {})) +})(this, function(jinja) { + "use strict"; + var STRINGS = /'(\\.|[^'])*'|"(\\.|[^"'"])*"/g; + var IDENTS_AND_NUMS = /([$_a-z][$\w]*)|([+-]?\d+(\.\d+)?)/g; + var NUMBER = /^[+-]?\d+(\.\d+)?$/; + var NON_PRIMITIVES = /\[[@#~](,[@#~])*\]|\[\]|\{([@i]:[@#~])(,[@i]:[@#~])*\}|\{\}/g; + var IDENTIFIERS = /[$_a-z][$\w]*/gi; + var VARIABLES = /i(\.i|\[[@#i]\])*/g; + var ACCESSOR = /(\.i|\[[@#i]\])/g; + var OPERATORS = /(===?|!==?|>=?|<=?|&&|\|\||[+\-\*\/%])/g; + var EOPS = /(^|[^$\w])(and|or|not|is|isnot)([^$\w]|$)/g; + var LEADING_SPACE = /^\s+/; + var TRAILING_SPACE = /\s+$/; + var START_TOKEN = /\{\{\{|\{\{|\{%|\{#/; + var TAGS = { + "{{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}\}/, + "{{": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?\}\}/, + "{%": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?%\}/, + "{#": /^('(\\.|[^'])*'|"(\\.|[^"'"])*"|.)+?#\}/ + }; + var delimeters = { + "{%": "directive", + "{{": "output", + "{#": "comment" + }; + var operators = { + and: "&&", + or: "||", + not: "!", + is: "==", + isnot: "!=" + }; + var constants = { + true: true, + false: false, + null: null + }; + + function Parser() { + this.nest = []; + this.compiled = []; + this.childBlocks = 0; + this.parentBlocks = 0; + this.isSilent = false + } + Parser.prototype.push = function(line) { + if (!this.isSilent) { + this.compiled.push(line) + } + }; + Parser.prototype.parse = function(src) { + this.tokenize(src); + return this.compiled + }; + Parser.prototype.tokenize = function(src) { + var lastEnd = 0, + parser = this, + trimLeading = false; + matchAll(src, START_TOKEN, function(open, index, src) { + var match = src.slice(index + open.length).match(TAGS[open]); + match = match ? match[0] : ""; + var simplified = match.replace(STRINGS, "@"); + if (!match || ~simplified.indexOf(open)) { + return index + 1 + } + var inner = match.slice(0, 0 - open.length); + if (inner.charAt(0) === "-") var wsCollapseLeft = true; + if (inner.slice(-1) === "-") var wsCollapseRight = true; + inner = inner.replace(/^-|-$/g, "").trim(); + if (parser.rawMode && open + inner !== "{%endraw") { + return index + 1 + } + var text = src.slice(lastEnd, index); + lastEnd = index + open.length + match.length; + if (trimLeading) text = trimLeft(text); + if (wsCollapseLeft) text = trimRight(text); + if (wsCollapseRight) trimLeading = true; + if (open === "{{{") { + open = "{{"; + inner += "|safe" + } + parser.textHandler(text); + parser.tokenHandler(open, inner) + }); + var text = src.slice(lastEnd); + if (trimLeading) text = trimLeft(text); + this.textHandler(text) + }; + Parser.prototype.textHandler = function(text) { + this.push("write(" + JSON.stringify(text) + ");") + }; + Parser.prototype.tokenHandler = function(open, inner) { + var type = delimeters[open]; + if (type === "directive") { + this.compileTag(inner) + } else if (type === "output") { + var extracted = this.extractEnt(inner, STRINGS, "@"); + extracted.src = extracted.src.replace(/\|\|/g, "~").split("|"); + extracted.src = extracted.src.map(function(part) { + return part.split("~").join("||") + }); + var parts = this.injectEnt(extracted, "@"); + if (parts.length > 1) { + var filters = parts.slice(1).map(this.parseFilter.bind(this)); + this.push("filter(" + this.parseExpr(parts[0]) + "," + filters.join(",") + ");") + } else { + this.push("filter(" + this.parseExpr(parts[0]) + ");") + } + } + }; + Parser.prototype.compileTag = function(str) { + var directive = str.split(" ")[0]; + var handler = tagHandlers[directive]; + if (!handler) { + throw new Error("Invalid tag: " + str) + } + handler.call(this, str.slice(directive.length).trim()) + }; + Parser.prototype.parseFilter = function(src) { + src = src.trim(); + var match = src.match(/[:(]/); + var i = match ? match.index : -1; + if (i < 0) return JSON.stringify([src]); + var name = src.slice(0, i); + var args = src.charAt(i) === ":" ? src.slice(i + 1) : src.slice(i + 1, -1); + args = this.parseExpr(args, { + terms: true + }); + return "[" + JSON.stringify(name) + "," + args + "]" + }; + Parser.prototype.extractEnt = function(src, regex, placeholder) { + var subs = [], + isFunc = typeof placeholder == "function"; + src = src.replace(regex, function(str) { + var replacement = isFunc ? placeholder(str) : placeholder; + if (replacement) { + subs.push(str); + return replacement + } + return str + }); + return { + src: src, + subs: subs + } + }; + Parser.prototype.injectEnt = function(extracted, placeholder) { + var src = extracted.src, + subs = extracted.subs, + isArr = Array.isArray(src); + var arr = isArr ? src : [src]; + var re = new RegExp("[" + placeholder + "]", "g"), + i = 0; + arr.forEach(function(src, index) { + arr[index] = src.replace(re, function() { + return subs[i++] + }) + }); + return isArr ? arr : arr[0] + }; + Parser.prototype.replaceComplex = function(s) { + var parsed = this.extractEnt(s, /i(\.i|\[[@#i]\])+/g, "v"); + parsed.src = parsed.src.replace(NON_PRIMITIVES, "~"); + return this.injectEnt(parsed, "v") + }; + Parser.prototype.parseExpr = function(src, opts) { + opts = opts || {}; + var parsed1 = this.extractEnt(src, STRINGS, "@"); + parsed1.src = parsed1.src.replace(EOPS, function(s, before, op, after) { + return op in operators ? before + operators[op] + after : s + }); + var parsed2 = this.extractEnt(parsed1.src, IDENTS_AND_NUMS, function(s) { + return s in constants || NUMBER.test(s) ? "#" : null + }); + var parsed3 = this.extractEnt(parsed2.src, IDENTIFIERS, "i"); + parsed3.src = parsed3.src.replace(/\s+/g, ""); + var simplified = parsed3.src; + while (simplified !== (simplified = this.replaceComplex(simplified))); + while (simplified !== (simplified = simplified.replace(/i(\.i|\[[@#i]\])+/, "v"))); + simplified = simplified.replace(/[iv]\[v?\]/g, "x"); + simplified = simplified.replace(/[@#~v]/g, "i"); + simplified = simplified.replace(OPERATORS, "%"); + simplified = simplified.replace(/!+[i]/g, "i"); + var terms = opts.terms ? simplified.split(",") : [simplified]; + terms.forEach(function(term) { + while (term !== (term = term.replace(/\(i(%i)*\)/g, "i"))); + if (!term.match(/^i(%i)*/)) { + throw new Error("Invalid expression: " + src + " " + term) + } + }); + parsed3.src = parsed3.src.replace(VARIABLES, this.parseVar.bind(this)); + parsed2.src = this.injectEnt(parsed3, "i"); + parsed1.src = this.injectEnt(parsed2, "#"); + return this.injectEnt(parsed1, "@") + }; + Parser.prototype.parseVar = function(src) { + var args = Array.prototype.slice.call(arguments); + var str = args.pop(), + index = args.pop(); + if (src === "i" && str.charAt(index + 1) === ":") { + return '"i"' + } + var parts = ['"i"']; + src.replace(ACCESSOR, function(part) { + if (part === ".i") { + parts.push('"i"') + } else if (part === "[i]") { + parts.push('get("i")') + } else { + parts.push(part.slice(1, -1)) + } + }); + return "get(" + parts.join(",") + ")" + }; + Parser.prototype.escName = function(str) { + return str.replace(/\W/g, function(s) { + return "$" + s.charCodeAt(0).toString(16) + }) + }; + Parser.prototype.parseQuoted = function(str) { + if (str.charAt(0) === "'") { + str = str.slice(1, -1).replace(/\\.|"/, function(s) { + if (s === "\\'") return "'"; + return s.charAt(0) === "\\" ? s : "\\" + s + }); + str = '"' + str + '"' + } + return JSON.parse(str) + }; + var tagHandlers = { + if: function(expr) { + this.push("if (" + this.parseExpr(expr) + ") {"); + this.nest.unshift("if") + }, + else: function() { + if (this.nest[0] === "for") { + this.push("}, function() {") + } else { + this.push("} else {") + } + }, + elseif: function(expr) { + this.push("} else if (" + this.parseExpr(expr) + ") {") + }, + endif: function() { + this.nest.shift(); + this.push("}") + }, + for: function(str) { + var i = str.indexOf(" in "); + var name = str.slice(0, i).trim(); + var expr = str.slice(i + 4).trim(); + this.push("each(" + this.parseExpr(expr) + "," + JSON.stringify(name) + ",function() {"); + this.nest.unshift("for") + }, + endfor: function() { + this.nest.shift(); + this.push("});") + }, + raw: function() { + this.rawMode = true + }, + endraw: function() { + this.rawMode = false + }, + set: function(stmt) { + var i = stmt.indexOf("="); + var name = stmt.slice(0, i).trim(); + var expr = stmt.slice(i + 1).trim(); + this.push("set(" + JSON.stringify(name) + "," + this.parseExpr(expr) + ");") + }, + block: function(name) { + if (this.isParent) { + ++this.parentBlocks; + var blockName = "block_" + (this.escName(name) || this.parentBlocks); + this.push("block(typeof " + blockName + ' == "function" ? ' + blockName + " : function() {") + } else if (this.hasParent) { + this.isSilent = false; + ++this.childBlocks; + blockName = "block_" + (this.escName(name) || this.childBlocks); + this.push("function " + blockName + "() {") + } + this.nest.unshift("block") + }, + endblock: function() { + this.nest.shift(); + if (this.isParent) { + this.push("});") + } else if (this.hasParent) { + this.push("}"); + this.isSilent = true + } + }, + extends: function(name) { + name = this.parseQuoted(name); + var parentSrc = this.readTemplateFile(name); + this.isParent = true; + this.tokenize(parentSrc); + this.isParent = false; + this.hasParent = true; + this.isSilent = true + }, + include: function(name) { + name = this.parseQuoted(name); + var incSrc = this.readTemplateFile(name); + this.isInclude = true; + this.tokenize(incSrc); + this.isInclude = false + } + }; + tagHandlers.assign = tagHandlers.set; + tagHandlers.elif = tagHandlers.elseif; + var getRuntime = function runtime(data, opts) { + var defaults = { + autoEscape: "toJson" + }; + var _toString = Object.prototype.toString; + var _hasOwnProperty = Object.prototype.hasOwnProperty; + var getKeys = Object.keys || function(obj) { + var keys = []; + for (var n in obj) + if (_hasOwnProperty.call(obj, n)) keys.push(n); + return keys + }; + var isArray = Array.isArray || function(obj) { + return _toString.call(obj) === "[object Array]" + }; + var create = Object.create || function(obj) { + function F() {} + F.prototype = obj; + return new F + }; + var toString = function(val) { + if (val == null) return ""; + return typeof val.toString == "function" ? val.toString() : _toString.call(val) + }; + var extend = function(dest, src) { + var keys = getKeys(src); + for (var i = 0, len = keys.length; i < len; i++) { + var key = keys[i]; + dest[key] = src[key] + } + return dest + }; + var get = function() { + var val, n = arguments[0], + c = stack.length; + while (c--) { + val = stack[c][n]; + if (typeof val != "undefined") break + } + for (var i = 1, len = arguments.length; i < len; i++) { + if (val == null) continue; + n = arguments[i]; + val = _hasOwnProperty.call(val, n) ? val[n] : typeof val._get == "function" ? val[n] = val._get(n) : null + } + return val == null ? "" : val + }; + var set = function(n, val) { + stack[stack.length - 1][n] = val + }; + var push = function(ctx) { + stack.push(ctx || {}) + }; + var pop = function() { + stack.pop() + }; + var write = function(str) { + output.push(str) + }; + var filter = function(val) { + for (var i = 1, len = arguments.length; i < len; i++) { + var arr = arguments[i], + name = arr[0], + filter = filters[name]; + if (filter) { + arr[0] = val; + val = filter.apply(data, arr) + } else { + throw new Error("Invalid filter: " + name) + } + } + if (opts.autoEscape && name !== opts.autoEscape && name !== "safe") { + val = filters[opts.autoEscape].call(data, val) + } + output.push(val) + }; + var each = function(obj, loopvar, fn1, fn2) { + if (obj == null) return; + var arr = isArray(obj) ? obj : getKeys(obj), + len = arr.length; + var ctx = { + loop: { + length: len, + first: arr[0], + last: arr[len - 1] + } + }; + push(ctx); + for (var i = 0; i < len; i++) { + extend(ctx.loop, { + index: i + 1, + index0: i + }); + fn1(ctx[loopvar] = arr[i]) + } + if (len === 0 && fn2) fn2(); + pop() + }; + var block = function(fn) { + push(); + fn(); + pop() + }; + var render = function() { + return output.join("") + }; + data = data || {}; + opts = extend(defaults, opts || {}); + var filters = extend({ + html: function(val) { + return toString(val).split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""") + }, + safe: function(val) { + return val + }, + toJson: function(val) { + if (typeof val === "object") { + return JSON.stringify(val) + } + return toString(val) + } + }, opts.filters || {}); + var stack = [create(data || {})], + output = []; + return { + get: get, + set: set, + push: push, + pop: pop, + write: write, + filter: filter, + each: each, + block: block, + render: render + } + }; + var runtime; + jinja.compile = function(markup, opts) { + opts = opts || {}; + var parser = new Parser; + parser.readTemplateFile = this.readTemplateFile; + var code = []; + code.push("function render($) {"); + code.push("var get = $.get, set = $.set, push = $.push, pop = $.pop, write = $.write, filter = $.filter, each = $.each, block = $.block;"); + code.push.apply(code, parser.parse(markup)); + code.push("return $.render();"); + code.push("}"); + code = code.join("\n"); + if (opts.runtime === false) { + var fn = new Function("data", "options", "return (" + code + ")(runtime(data, options))") + } else { + runtime = runtime || (runtime = getRuntime.toString()); + fn = new Function("data", "options", "return (" + code + ")((" + runtime + ")(data, options))") + } + return { + render: fn + } + }; + jinja.render = function(markup, data, opts) { + var tmpl = jinja.compile(markup); + return tmpl.render(data, opts) + }; + jinja.templateFiles = []; + jinja.readTemplateFile = function(name) { + var templateFiles = this.templateFiles || []; + var templateFile = templateFiles[name]; + if (templateFile == null) { + throw new Error("Template file not found: " + name) + } + return templateFile + }; + + function trimLeft(str) { + return str.replace(LEADING_SPACE, "") + } + + function trimRight(str) { + return str.replace(TRAILING_SPACE, "") + } + + function matchAll(str, reg, fn) { + reg = new RegExp(reg.source, "g" + (reg.ignoreCase ? "i" : "") + (reg.multiline ? "m" : "")); + var match; + while (match = reg.exec(str)) { + var result = fn(match[0], match.index, str); + if (typeof result == "number") { + reg.lastIndex = result + } + } + } +}); \ No newline at end of file diff --git a/xiaosa/JS/jsencrypt.js b/xiaosa/JS/jsencrypt.js new file mode 100644 index 00000000..a7ea4e93 --- /dev/null +++ b/xiaosa/JS/jsencrypt.js @@ -0,0 +1,360 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === 'object' && typeof module === 'object') { + // CommonJS + module.exports = exports = factory(); + } else if (typeof define === 'function' && define.amd) { + // AMD + define([], factory); + } else { + // Global (browser) + globalThis.JSEncrypt = factory(); + } +})(this, () => { + return /******/ (() => { // webpackBootstrap + /******/ + var __webpack_modules__ = ({ + + /***/ + "./lib/JSEncrypt.js": + /*!**************************!*\ + !*** ./lib/JSEncrypt.js ***! + \**************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* binding */ JSEncrypt)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./JSEncryptRSAKey */ \"./lib/JSEncryptRSAKey.js\");\n/* provided dependency */ var process = __webpack_require__(/*! process/browser */ \"./node_modules/process/browser.js\");\nvar _a;\n\n\nvar version = typeof process !== 'undefined'\n ? (_a = process.env) === null || _a === void 0 ? void 0 : \"3.3.2\"\n : undefined;\n/**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\nvar JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n if (options === void 0) { options = {}; }\n options = options || {};\n this.default_key_size = options.default_key_size\n ? parseInt(options.default_key_size, 10)\n : 1024;\n this.default_public_exponent = options.default_public_exponent || \"010001\"; // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false;\n // The private and public key.\n this.key = null;\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\");\n }\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey(key);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey);\n };\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey);\n };\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt((0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().encrypt(str));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getKey().sign(str, digestMethod, digestName));\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.b64tohex)(signature), digestMethod);\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new _JSEncryptRSAKey__WEBPACK_IMPORTED_MODULE_1__.JSEncryptRSAKey();\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb);\n return;\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent);\n }\n return this.key;\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey();\n };\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey();\n };\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64();\n };\nvar b64map=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";var b64pad=\"=\";var base64DecodeChars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function btoa(str){var out,i,len;var c1,c2,c3;len=str.length;i=0;out=\"\";while(i>2);out+=b64map.charAt((c1&3)<<4);out+=\"==\";break}c2=str.charCodeAt(i++);if(i==len){out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2);out+=\"=\";break}c3=str.charCodeAt(i++);out+=b64map.charAt(c1>>2);out+=b64map.charAt((c1&3)<<4|(c2&240)>>4);out+=b64map.charAt((c2&15)<<2|(c3&192)>>6);out+=b64map.charAt(c3&63)}return out}function atob(str){var c1,c2,c3,c4;var i,len,out;len=str.length;i=0;out=\"\";while(i>4);do{c3=str.charCodeAt(i++)&255;if(c3==61)return out;c3=base64DecodeChars[c3]}while(i>2);do{c4=str.charCodeAt(i++)&255;if(c4==61)return out;c4=base64DecodeChars[c4]}while(i>6)+b64map.charAt(c&63)}if(i+1==h.length){c=parseInt(h.substring(i,i+1),16);ret+=b64map.charAt(c<<2)}else if(i+2==h.length){c=parseInt(h.substring(i,i+2),16);ret+=b64map.charAt(c>>2)+b64map.charAt((c&3)<<4)}while((ret.length&3)>0)ret+=b64pad;return ret}function hexToBytes(hex){for(var bytes=[],c=0;c>>4).toString(16));hex.push((bytes[i]&15).toString(16))}return hex.join(\"\")}function b64tohex(str){for(var i=0,bin=atob(str.replace(/[ \\r\\n]+$/,\"\")),hex=[];i>3};JSEncrypt.prototype.decryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)*2;try{var hexString=b64tohex(string);var decryptedString=\"\";var rexStr=\".{1,\"+maxLength+\"}\";var rex=new RegExp(rexStr,\"g\");var subStrArray=hexString.match(rex);if(subStrArray){subStrArray.forEach(function(entry){decryptedString+=k.decrypt(entry)});return decryptedString}}catch(ex){console.log(\"加密错误:\"+ex.message);return false}};JSEncrypt.prototype.encryptUnicodeLong=function(string){var k=this.getKey();var maxLength=(k.n.bitLength()+7>>3)-11;try{var subStr=\"\",encryptedString=\"\";var subStart=0,subEnd=0;var bitLen=0,tmpPoint=0;for(var i=0,len=string.length;imaxLength){subStr=string.substring(subStart,subEnd);encryptedString+=k.encrypt(subStr);subStart=subEnd;bitLen=bitLen-tmpPoint}else{subEnd=i;tmpPoint=bitLen}}subStr=string.substring(subStart,len);encryptedString+=k.encrypt(subStr);return hex2b64(encryptedString)}catch(ex){console.log(\"解密错误:\"+ex.message);return false}}; JSEncrypt.version = version;\n return JSEncrypt;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncrypt.js?"); + + /***/ + }), + + /***/ + "./lib/JSEncryptRSAKey.js": + /*!********************************!*\ + !*** ./lib/JSEncryptRSAKey.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncryptRSAKey\": () => (/* binding */ JSEncryptRSAKey)\n/* harmony export */ });\n/* harmony import */ var _lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/jsbn/base64 */ \"./lib/lib/jsbn/base64.js\");\n/* harmony import */ var _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/asn1js/hex */ \"./lib/lib/asn1js/hex.js\");\n/* harmony import */ var _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/asn1js/base64 */ \"./lib/lib/asn1js/base64.js\");\n/* harmony import */ var _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/asn1js/asn1 */ \"./lib/lib/asn1js/asn1.js\");\n/* harmony import */ var _lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/jsbn/rsa */ \"./lib/lib/jsbn/rsa.js\");\n/* harmony import */ var _lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./lib/jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./lib/jsrsasign/asn1-1.0 */ \"./lib/lib/jsrsasign/asn1-1.0.js\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n\n\n\n\n\n/**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\nvar JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super);\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this;\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key);\n }\n else if (JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key);\n }\n }\n return _this;\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0;\n var public_exponent = 0;\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/;\n var der = reHex.test(pem) ? _lib_asn1js_hex__WEBPACK_IMPORTED_MODULE_1__.Hex.decode(pem) : _lib_asn1js_base64__WEBPACK_IMPORTED_MODULE_2__.Base64.unarmor(pem);\n var asn1 = _lib_asn1js_asn1__WEBPACK_IMPORTED_MODULE_3__.ASN1.decode(der);\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0];\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue(); // bigint\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[2].getHexStringValue(); // int\n this.e = parseInt(public_exponent, 16);\n var private_exponent = asn1.sub[3].getHexStringValue(); // bigint\n this.d = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(private_exponent, 16);\n var prime1 = asn1.sub[4].getHexStringValue(); // bigint\n this.p = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime1, 16);\n var prime2 = asn1.sub[5].getHexStringValue(); // bigint\n this.q = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(prime2, 16);\n var exponent1 = asn1.sub[6].getHexStringValue(); // bigint\n this.dmp1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent1, 16);\n var exponent2 = asn1.sub[7].getHexStringValue(); // bigint\n this.dmq1 = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(exponent2, 16);\n var coefficient = asn1.sub[8].getHexStringValue(); // bigint\n this.coeff = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(coefficient, 16);\n }\n else if (asn1.sub.length === 2) {\n if (asn1.sub[0].sub) {\n // Parse ASN.1 SubjectPublicKeyInfo type as defined by X.509\n var bit_string = asn1.sub[1];\n var sequence = bit_string.sub[0];\n modulus = sequence.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = sequence.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n else {\n // Parse ASN.1 RSAPublicKey type as defined by PKCS #1\n modulus = asn1.sub[0].getHexStringValue();\n this.n = (0,_lib_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_5__.parseBigInt)(modulus, 16);\n public_exponent = asn1.sub[1].getHexStringValue();\n this.e = parseInt(public_exponent, 16);\n }\n }\n else {\n return false;\n }\n return true;\n }\n catch (ex) {\n return false;\n }\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: 0 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.d }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.p }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.q }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n };\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence(options);\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPrivateBaseKey());\n };\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERNull(),\n ],\n });\n var second_sequence = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ bigint: this.n }),\n new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERInteger({ int: this.e }),\n ],\n });\n var bit_string = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n });\n var seq = new _lib_jsrsasign_asn1_1_0__WEBPACK_IMPORTED_MODULE_6__.KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n });\n return seq.getEncodedHex();\n };\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return (0,_lib_jsbn_base64__WEBPACK_IMPORTED_MODULE_0__.hex2b64)(this.getPublicBaseKey());\n };\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64;\n if (!str) {\n return str;\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\";\n return str.match(RegExp(regex, \"g\")).join(\"\\n\");\n };\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\";\n key += \"-----END RSA PRIVATE KEY-----\";\n return key;\n };\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\";\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\";\n key += \"-----END PUBLIC KEY-----\";\n return key;\n };\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {};\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\");\n };\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {};\n return (obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\"));\n };\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n;\n this.e = obj.e;\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d;\n this.p = obj.p;\n this.q = obj.q;\n this.dmp1 = obj.dmp1;\n this.dmq1 = obj.dmq1;\n this.coeff = obj.coeff;\n }\n };\n return JSEncryptRSAKey;\n}(_lib_jsbn_rsa__WEBPACK_IMPORTED_MODULE_4__.RSAKey));\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/JSEncryptRSAKey.js?"); + + /***/ + }), + + /***/ + "./lib/index.js": + /*!**********************!*\ + !*** ./lib/index.js ***! + \**********************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"JSEncrypt\": () => (/* reexport safe */ _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _JSEncrypt__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./JSEncrypt */ \"./lib/JSEncrypt.js\");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_JSEncrypt__WEBPACK_IMPORTED_MODULE_0__.JSEncrypt);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/index.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/asn1.js": + /*!********************************!*\ + !*** ./lib/lib/asn1js/asn1.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ASN1\": () => (/* binding */ ASN1),\n/* harmony export */ \"ASN1Tag\": () => (/* binding */ ASN1Tag),\n/* harmony export */ \"Stream\": () => (/* binding */ Stream)\n/* harmony export */ });\n/* harmony import */ var _int10__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./int10 */ \"./lib/lib/asn1js/int10.js\");\n// ASN.1 JavaScript decoder\n// Copyright (c) 2008-2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n/*global oids */\n\nvar ellipsis = \"\\u2026\";\nvar reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nvar reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/;\nfunction stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis;\n }\n return str;\n}\nvar Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\";\n if (enc instanceof Stream) {\n this.enc = enc.enc;\n this.pos = enc.pos;\n }\n else {\n // enc should be an array or a binary string\n this.enc = enc;\n this.pos = pos;\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++;\n }\n if (pos >= this.enc.length) {\n throw new Error(\"Requesting byte offset \".concat(pos, \" on a stream of length \").concat(this.enc.length));\n }\n return (\"string\" === typeof this.enc) ? this.enc.charCodeAt(pos) : this.enc[pos];\n };\n Stream.prototype.hexByte = function (b) {\n return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);\n };\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n if (raw !== true) {\n switch (i & 0xF) {\n case 0x7:\n s += \" \";\n break;\n case 0xF:\n s += \"\\n\";\n break;\n default:\n s += \" \";\n }\n }\n }\n return s;\n };\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i);\n if (c < 32 || c > 176) {\n return false;\n }\n }\n return true;\n };\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\";\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i));\n }\n return s;\n };\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\";\n for (var i = start; i < end;) {\n var c = this.get(i++);\n if (c < 128) {\n s += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));\n }\n else {\n s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));\n }\n }\n return s;\n };\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\";\n var hi;\n var lo;\n for (var i = start; i < end;) {\n hi = this.get(i++);\n lo = this.get(i++);\n str += String.fromCharCode((hi << 8) | lo);\n }\n return str;\n };\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end);\n var m = (shortYear ? reTimeS : reTimeL).exec(s);\n if (!m) {\n return \"Unrecognized time: \" + s;\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1];\n m[1] += (+m[1] < 70) ? 2000 : 1900;\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4];\n if (m[5]) {\n s += \":\" + m[5];\n if (m[6]) {\n s += \":\" + m[6];\n if (m[7]) {\n s += \".\" + m[7];\n }\n }\n }\n if (m[8]) {\n s += \" UTC\";\n if (m[8] != \"Z\") {\n s += m[8];\n if (m[9]) {\n s += \":\" + m[9];\n }\n }\n }\n return s;\n };\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start);\n var neg = (v > 127);\n var pad = neg ? 255 : 0;\n var len;\n var s = \"\";\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start);\n }\n len = end - start;\n if (len === 0) {\n return neg ? -1 : 0;\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v;\n len <<= 3;\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1;\n --len;\n }\n s = \"(\" + len + \" bit)\\n\";\n }\n // decode the integer\n if (neg) {\n v = v - 256;\n }\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10(v);\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i));\n }\n return s + n.toString();\n };\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start);\n var lenBit = ((end - start - 1) << 3) - unusedBit;\n var intro = \"(\" + lenBit + \" bit)\\n\";\n var s = \"\";\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i);\n var skip = (i == end - 1) ? unusedBit : 0;\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\";\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength);\n }\n }\n return intro + s;\n };\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength);\n }\n var len = end - start;\n var s = \"(\" + len + \" byte)\\n\";\n maxLength /= 2; // we work in bytes\n if (len > maxLength) {\n end = start + maxLength;\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i));\n }\n if (len > maxLength) {\n s += ellipsis;\n }\n return s;\n };\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\";\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n var bits = 0;\n for (var i = start; i < end; ++i) {\n var v = this.get(i);\n n.mulAdd(128, v & 0x7F);\n bits += 7;\n if (!(v & 0x80)) { // finished\n if (s === \"\") {\n n = n.simplify();\n if (n instanceof _int10__WEBPACK_IMPORTED_MODULE_0__.Int10) {\n n.sub(80);\n s = \"2.\" + n.toString();\n }\n else {\n var m = n < 80 ? n < 40 ? 0 : 1 : 2;\n s = m + \".\" + (n - m * 40);\n }\n }\n else {\n s += \".\" + n.toString();\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength);\n }\n n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n bits = 0;\n }\n }\n if (bits > 0) {\n s += \".incomplete\";\n }\n return s;\n };\n return Stream;\n}());\n\nvar ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\");\n }\n this.stream = stream;\n this.header = header;\n this.length = length;\n this.tag = tag;\n this.sub = sub;\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\";\n case 0x01:\n return \"BOOLEAN\";\n case 0x02:\n return \"INTEGER\";\n case 0x03:\n return \"BIT_STRING\";\n case 0x04:\n return \"OCTET_STRING\";\n case 0x05:\n return \"NULL\";\n case 0x06:\n return \"OBJECT_IDENTIFIER\";\n case 0x07:\n return \"ObjectDescriptor\";\n case 0x08:\n return \"EXTERNAL\";\n case 0x09:\n return \"REAL\";\n case 0x0A:\n return \"ENUMERATED\";\n case 0x0B:\n return \"EMBEDDED_PDV\";\n case 0x0C:\n return \"UTF8String\";\n case 0x10:\n return \"SEQUENCE\";\n case 0x11:\n return \"SET\";\n case 0x12:\n return \"NumericString\";\n case 0x13:\n return \"PrintableString\"; // ASCII subset\n case 0x14:\n return \"TeletexString\"; // aka T61String\n case 0x15:\n return \"VideotexString\";\n case 0x16:\n return \"IA5String\"; // ASCII\n case 0x17:\n return \"UTCTime\";\n case 0x18:\n return \"GeneralizedTime\";\n case 0x19:\n return \"GraphicString\";\n case 0x1A:\n return \"VisibleString\"; // ASCII subset\n case 0x1B:\n return \"GeneralString\";\n case 0x1C:\n return \"UniversalString\";\n case 0x1E:\n return \"BMPString\";\n }\n return \"Universal_\" + this.tag.tagNumber.toString();\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString();\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\"; // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString();\n }\n };\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null;\n }\n if (maxLength === undefined) {\n maxLength = Infinity;\n }\n var content = this.posContent();\n var len = Math.abs(this.length);\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n return this.stream.parseOctetString(content, content + len, maxLength);\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return (this.stream.get(content) === 0) ? \"false\" : \"true\";\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len);\n case 0x03: // BIT_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseBitString(content, content + len, maxLength);\n case 0x04: // OCTET_STRING\n return this.sub ? \"(\" + this.sub.length + \" elem)\" :\n this.stream.parseOctetString(content, content + len, maxLength);\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength);\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\";\n }\n else {\n return \"(no elem)\";\n }\n case 0x0C: // UTF8String\n return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1A: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(this.stream.parseStringISO(content, content + len), maxLength);\n case 0x1E: // BMPString\n return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));\n }\n return null;\n };\n ASN1.prototype.toString = function () {\n return this.typeName() + \"@\" + this.stream.pos + \"[header:\" + this.header + \",length:\" + this.length + \",sub:\" + ((this.sub === null) ? \"null\" : this.sub.length) + \"]\";\n };\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\";\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos;\n if (this.length >= 0) {\n s += \"+\";\n }\n s += this.length;\n if (this.tag.tagConstructed) {\n s += \" (constructed)\";\n }\n else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null)) {\n s += \" (encapsulates)\";\n }\n s += \"\\n\";\n if (this.sub !== null) {\n indent += \" \";\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent);\n }\n }\n return s;\n };\n ASN1.prototype.posStart = function () {\n return this.stream.pos;\n };\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header;\n };\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length);\n };\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true);\n };\n ASN1.decodeLength = function (stream) {\n var buf = stream.get();\n var len = buf & 0x7F;\n if (len == buf) {\n return len;\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\"Length over 48 bits not supported at position \" + (stream.pos - 1));\n }\n if (len === 0) {\n return null;\n } // undefined\n buf = 0;\n for (var i = 0; i < len; ++i) {\n buf = (buf * 256) + stream.get();\n }\n return buf;\n };\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString();\n var offset = this.header * 2;\n var length = this.length * 2;\n return hexString.substr(offset, length);\n };\n ASN1.decode = function (str) {\n var stream;\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0);\n }\n else {\n stream = str;\n }\n var streamStart = new Stream(stream);\n var tag = new ASN1Tag(stream);\n var len = ASN1.decodeLength(stream);\n var start = stream.pos;\n var header = start - streamStart.pos;\n var sub = null;\n var getSub = function () {\n var ret = [];\n if (len !== null) {\n // definite length\n var end = start + len;\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream);\n }\n if (stream.pos != end) {\n throw new Error(\"Content size is not correct for container starting at offset \" + start);\n }\n }\n else {\n // undefined length\n try {\n for (;;) {\n var s = ASN1.decode(stream);\n if (s.tag.isEOC()) {\n break;\n }\n ret[ret.length] = s;\n }\n len = start - stream.pos; // undefined lengths are represented as negative values\n }\n catch (e) {\n throw new Error(\"Exception while decoding undefined length content: \" + e);\n }\n }\n return ret;\n };\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub();\n }\n else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\"BIT STRINGs with unused bits cannot encapsulate.\");\n }\n }\n sub = getSub();\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\");\n }\n }\n }\n catch (e) {\n // but silently ignore when they don't\n sub = null;\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\"We can't skip over an invalid tag with undefined length at offset \" + start);\n }\n stream.pos = start + Math.abs(len);\n }\n return new ASN1(streamStart, header, len, tag, sub);\n };\n return ASN1;\n}());\n\nvar ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get();\n this.tagClass = buf >> 6;\n this.tagConstructed = ((buf & 0x20) !== 0);\n this.tagNumber = buf & 0x1F;\n if (this.tagNumber == 0x1F) { // long tag\n var n = new _int10__WEBPACK_IMPORTED_MODULE_0__.Int10();\n do {\n buf = stream.get();\n n.mulAdd(128, buf & 0x7F);\n } while (buf & 0x80);\n this.tagNumber = n.simplify();\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00;\n };\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00;\n };\n return ASN1Tag;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/asn1.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/base64.js": + /*!**********************************!*\ + !*** ./lib/lib/asn1js/base64.js ***! + \**********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Base64\": () => (/* binding */ Base64)\n/* harmony export */ });\n// Base64 JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Base64 = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = Object.create(null);\n for (i = 0; i < 64; ++i) {\n decoder[b64.charAt(i)] = i;\n }\n decoder['-'] = 62; //+\n decoder['_'] = 63; //-\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 4) {\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n out[out.length] = bits & 0xFF;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 6;\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\");\n case 2:\n out[out.length] = (bits >> 10);\n break;\n case 3:\n out[out.length] = (bits >> 16);\n out[out.length] = (bits >> 8) & 0xFF;\n break;\n }\n return out;\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a);\n if (m) {\n if (m[1]) {\n a = m[1];\n }\n else if (m[2]) {\n a = m[2];\n }\n else {\n throw new Error(\"RegExp out of sync\");\n }\n }\n return Base64.decode(a);\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/base64.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/hex.js": + /*!*******************************!*\ + !*** ./lib/lib/asn1js/hex.js ***! + \*******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Hex\": () => (/* binding */ Hex)\n/* harmony export */ });\n// Hex JavaScript decoder\n// Copyright (c) 2008-2013 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar decoder;\nvar Hex = {\n decode: function (a) {\n var i;\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\";\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\";\n decoder = {};\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n hex = hex.toLowerCase();\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i;\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1;\n }\n }\n var out = [];\n var bits = 0;\n var char_count = 0;\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i);\n if (c == \"=\") {\n break;\n }\n c = decoder[c];\n if (c == -1) {\n continue;\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i);\n }\n bits |= c;\n if (++char_count >= 2) {\n out[out.length] = bits;\n bits = 0;\n char_count = 0;\n }\n else {\n bits <<= 4;\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\");\n }\n return out;\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/hex.js?"); + + /***/ + }), + + /***/ + "./lib/lib/asn1js/int10.js": + /*!*********************************!*\ + !*** ./lib/lib/asn1js/int10.js ***! + \*********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Int10\": () => (/* binding */ Int10)\n/* harmony export */ });\n// Big integer base-10 printing library\n// Copyright (c) 2014 Lapo Luchini \n// Permission to use, copy, modify, and/or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n/*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\nvar max = 10000000000000; // biggest integer that can still fit 2^53 when multiplied by 256\nvar Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0];\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c;\n if (t < max) {\n c = 0;\n }\n else {\n c = 0 | (t / max);\n t -= c * max;\n }\n b[i] = t;\n }\n if (c > 0) {\n b[i] = c;\n }\n };\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf;\n var l = b.length;\n var i;\n var t;\n for (i = 0; i < l; ++i) {\n t = b[i] - c;\n if (t < 0) {\n t += max;\n c = 1;\n }\n else {\n c = 0;\n }\n b[i] = t;\n }\n while (b[b.length - 1] === 0) {\n b.pop();\n }\n };\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\");\n }\n var b = this.buf;\n var s = b[b.length - 1].toString();\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1);\n }\n return s;\n };\n Int10.prototype.valueOf = function () {\n var b = this.buf;\n var v = 0;\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i];\n }\n return v;\n };\n Int10.prototype.simplify = function () {\n var b = this.buf;\n return (b.length == 1) ? b[0] : this;\n };\n return Int10;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/asn1js/int10.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/base64.js": + /*!********************************!*\ + !*** ./lib/lib/jsbn/base64.js ***! + \********************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"b64toBA\": () => (/* binding */ b64toBA),\n/* harmony export */ \"b64tohex\": () => (/* binding */ b64tohex),\n/* harmony export */ \"hex2b64\": () => (/* binding */ hex2b64)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction hex2b64(h) {\n var i;\n var c;\n var ret = \"\";\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16);\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16);\n ret += b64map.charAt(c << 2);\n }\n else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16);\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad;\n }\n return ret;\n}\n// convert a base64 string to hex\nfunction b64tohex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop);\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)((slop << 2) | (v >> 4));\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(slop << 2);\n }\n return ret;\n}\n// convert a base64 string to a byte/number array\nfunction b64toBA(s) {\n // piggyback on b64tohex for now, optimize later\n var h = b64tohex(s);\n var i;\n var a = [];\n for (i = 0; 2 * i < h.length; ++i) {\n a[i] = parseInt(h.substring(2 * i, 2 * i + 2), 16);\n }\n return a;\n}\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/base64.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/jsbn.js": + /*!******************************!*\ + !*** ./lib/lib/jsbn/jsbn.js ***! + \******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"BigInteger\": () => (/* binding */ BigInteger),\n/* harmony export */ \"intAt\": () => (/* binding */ intAt),\n/* harmony export */ \"nbi\": () => (/* binding */ nbi),\n/* harmony export */ \"nbits\": () => (/* binding */ nbits),\n/* harmony export */ \"nbv\": () => (/* binding */ nbv),\n/* harmony export */ \"parseBigInt\": () => (/* binding */ parseBigInt)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util */ \"./lib/lib/jsbn/util.js\");\n// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\n//#region\nvar lowprimes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997];\nvar lplim = (1 << 26) / lowprimes[lowprimes.length - 1];\n//#endregion\n// (public) Constructor\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c);\n }\n else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256);\n }\n else {\n this.fromString(a, b);\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b);\n }\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n return this.toRadix(b);\n }\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.int2char)(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0;\n }\n return this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM));\n };\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi();\n this.copyTo(r);\n return r;\n };\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV;\n }\n else if (this.t == 0) {\n return -1;\n }\n }\n else if (this.t == 1) {\n return this[0];\n }\n else if (this.t == 0) {\n return 0;\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0];\n };\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 24) >> 24;\n };\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return (this.t == 0) ? this.s : (this[0] << 16) >> 16;\n };\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1;\n }\n else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0;\n }\n else {\n return 1;\n }\n };\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t;\n var r = [];\n r[0] = this.s;\n var p = this.DB - (i * this.DB) % 8;\n var d;\n var k = 0;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p));\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p);\n d |= this[--i] >> (p += this.DB - 8);\n }\n else {\n d = (this[i] >> (p -= 8)) & 0xff;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256;\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k;\n }\n if (k > 0 || d != this.s) {\n r[k++] = d;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return (this.compareTo(a) == 0);\n };\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return (this.compareTo(a) < 0) ? this : a;\n };\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return (this.compareTo(a) > 0) ? this : a;\n };\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_and, r);\n return r;\n };\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_or, r);\n return r;\n };\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_xor, r);\n return r;\n };\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi();\n this.bitwiseTo(a, _util__WEBPACK_IMPORTED_MODULE_0__.op_andnot, r);\n return r;\n };\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi();\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i];\n }\n r.t = this.t;\n r.s = ~this.s;\n return r;\n };\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi();\n if (n < 0) {\n this.rShiftTo(-n, r);\n }\n else {\n this.lShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi();\n if (n < 0) {\n this.lShiftTo(-n, r);\n }\n else {\n this.rShiftTo(n, r);\n }\n return r;\n };\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + (0,_util__WEBPACK_IMPORTED_MODULE_0__.lbit)(this[i]);\n }\n }\n if (this.s < 0) {\n return this.t * this.DB;\n }\n return -1;\n };\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0;\n var x = this.s & this.DM;\n for (var i = 0; i < this.t; ++i) {\n r += (0,_util__WEBPACK_IMPORTED_MODULE_0__.cbit)(this[i] ^ x);\n }\n return r;\n };\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB);\n if (j >= this.t) {\n return (this.s != 0);\n }\n return ((this[j] & (1 << (n % this.DB))) != 0);\n };\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1], g2);\n while (n <= km) {\n g[n] = nbi();\n z.mulTo(g2, g[n - 2], g[n]);\n n += 2;\n }\n }\n var j = e.t - 1;\n var w;\n var is1 = true;\n var r2 = nbi();\n var t;\n i = nbits(e[j]) - 1;\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km;\n }\n else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i);\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1);\n }\n }\n n = k;\n while ((w & 1) == 0) {\n w >>= 1;\n --n;\n }\n if ((i -= n) < 0) {\n i += this.DB;\n --j;\n }\n if (is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while (n > 1) {\n z.sqrTo(r, r2);\n z.sqrTo(r2, r);\n n -= 2;\n }\n if (n > 0) {\n z.sqrTo(r, r2);\n }\n else {\n t = r;\n r = r2;\n r2 = t;\n }\n z.mulTo(r2, g[w], r);\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2);\n t = r;\n r = r2;\n r2 = t;\n if (--i < 0) {\n i = this.DB - 1;\n --j;\n }\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven();\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO;\n }\n var u = m.clone();\n var v = this.clone();\n var a = nbv(1);\n var b = nbv(0);\n var c = nbv(0);\n var d = nbv(1);\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u);\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a);\n b.subTo(m, b);\n }\n a.rShiftTo(1, a);\n }\n else if (!b.isEven()) {\n b.subTo(m, b);\n }\n b.rShiftTo(1, b);\n }\n while (v.isEven()) {\n v.rShiftTo(1, v);\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c);\n d.subTo(m, d);\n }\n c.rShiftTo(1, c);\n }\n else if (!d.isEven()) {\n d.subTo(m, d);\n }\n d.rShiftTo(1, d);\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u);\n if (ac) {\n a.subTo(c, a);\n }\n b.subTo(d, b);\n }\n else {\n v.subTo(u, v);\n if (ac) {\n c.subTo(a, c);\n }\n d.subTo(b, d);\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO;\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m);\n }\n if (d.signum() < 0) {\n d.addTo(m, d);\n }\n else {\n return d;\n }\n if (d.signum() < 0) {\n return d.add(m);\n }\n else {\n return d;\n }\n };\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp());\n };\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n return x;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n return y;\n };\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i;\n var x = this.abs();\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true;\n }\n }\n return false;\n }\n if (x.isEven()) {\n return false;\n }\n i = 1;\n while (i < lowprimes.length) {\n var m = lowprimes[i];\n var j = i + 1;\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++];\n }\n m = x.modInt(m);\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false;\n }\n }\n }\n return x.millerRabin(t);\n };\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1;\n this.s = (x < 0) ? -1 : 0;\n if (x > 0) {\n this[0] = x;\n }\n else if (x < -1) {\n this[0] = x + this.DV;\n }\n else {\n this.t = 0;\n }\n };\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k;\n if (b == 16) {\n k = 4;\n }\n else if (b == 8) {\n k = 3;\n }\n else if (b == 256) {\n k = 8;\n /* byte array */\n }\n else if (b == 2) {\n k = 1;\n }\n else if (b == 32) {\n k = 5;\n }\n else if (b == 4) {\n k = 2;\n }\n else {\n this.fromRadix(s, b);\n return;\n }\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0);\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor(Math.LN2 * this.DB / Math.log(r));\n };\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10;\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\";\n }\n var cs = this.chunkSize(b);\n var a = Math.pow(b, cs);\n var d = nbv(a);\n var y = nbi();\n var z = nbi();\n var r = \"\";\n this.divRemTo(d, y, z);\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d, y, z);\n }\n return z.intValue().toString(b) + r;\n };\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0);\n if (b == null) {\n b = 10;\n }\n var cs = this.chunkSize(b);\n var d = Math.pow(b, cs);\n var mi = false;\n var j = 0;\n var w = 0;\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true;\n }\n continue;\n }\n w = b * w + x;\n if (++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w, 0);\n j = 0;\n w = 0;\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j));\n this.dAddOffset(w, 0);\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0);\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this);\n }\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i;\n var f;\n var m = Math.min(a.t, this.t);\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i]);\n }\n if (a.t < this.t) {\n f = a.s & this.DM;\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f);\n }\n r.t = this.t;\n }\n else {\n f = this.s & this.DM;\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i]);\n }\n r.t = a.t;\n }\n r.s = op(this.s, a.s);\n r.clamp();\n };\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB;\n }\n if (a.t < this.t) {\n c += a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c += a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c > 0) {\n r[i++] = c;\n }\n else if (c < -1) {\n r[i++] = this.DV + c;\n }\n r.t = i;\n r.clamp();\n };\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t);\n ++this.t;\n this.clamp();\n };\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return;\n }\n while (this.t <= w) {\n this[this.t++] = 0;\n }\n this[w] += n;\n while (this[w] >= this.DV) {\n this[w] -= this.DV;\n if (++w >= this.t) {\n this[this.t++] = 0;\n }\n ++this[w];\n }\n };\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while (i > 0) {\n r[--i] = 0;\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t);\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i);\n }\n r.clamp();\n };\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n;\n var i = r.t = this.t + a.t - n;\n r.s = 0; // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n);\n }\n r.clamp();\n r.drShiftTo(1, r);\n };\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0;\n }\n var d = this.DV % n;\n var r = (this.s < 0) ? n - 1 : 0;\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n;\n }\n else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n;\n }\n }\n }\n return r;\n };\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if (k <= 0) {\n return false;\n }\n var r = n1.shiftRight(k);\n t = (t + 1) >> 1;\n if (t > lowprimes.length) {\n t = lowprimes.length;\n }\n var a = nbi();\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)]);\n var y = a.modPow(r, this);\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this);\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false;\n }\n }\n if (y.compareTo(n1) != 0) {\n return false;\n }\n }\n }\n return true;\n };\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi();\n this.squareTo(r);\n return r;\n };\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = (this.s < 0) ? this.negate() : this.clone();\n var y = (a.s < 0) ? a.negate() : a.clone();\n if (x.compareTo(y) < 0) {\n var t = x;\n x = y;\n y = t;\n }\n var i = x.getLowestSetBit();\n var g = y.getLowestSetBit();\n if (g < 0) {\n callback(x);\n return;\n }\n if (i < g) {\n g = i;\n }\n if (g > 0) {\n x.rShiftTo(g, x);\n y.rShiftTo(g, y);\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x);\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y);\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x);\n x.rShiftTo(1, x);\n }\n else {\n y.subTo(x, y);\n y.rShiftTo(1, y);\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y);\n }\n setTimeout(function () { callback(y); }, 0); // escape\n }\n else {\n setTimeout(gcda1, 0);\n }\n };\n setTimeout(gcda1, 10);\n };\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1);\n }\n else {\n this.fromNumber(a, c);\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), _util__WEBPACK_IMPORTED_MODULE_0__.op_or, this);\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0);\n }\n var bnp_1 = this;\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0);\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1);\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(bnpfn1_1, 0);\n }\n };\n setTimeout(bnpfn1_1, 0);\n }\n }\n else {\n var x = [];\n var t = a & 7;\n x.length = (a >> 3) + 1;\n b.nextBytes(x);\n if (t > 0) {\n x[0] &= ((1 << t) - 1);\n }\n else {\n x[0] = 0;\n }\n this.fromString(x, 256);\n }\n };\n return BigInteger;\n}());\n\n//#region REDUCERS\n//#region NullExp\nvar NullExp = /** @class */ (function () {\n function NullExp() {\n }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x;\n };\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x;\n };\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n };\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n };\n return NullExp;\n}());\n// Modular reduction using \"classic\" algorithm\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\n//#endregion\n//#region Montgomery\n// Montgomery reduction\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\n//#endregion Montgomery\n//#region Barrett\n// Barrett modular reduction\nvar Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m;\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2);\n this.mu = this.r2.divide(m);\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m);\n }\n else if (x.compareTo(this.m) < 0) {\n return x;\n }\n else {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n };\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x;\n };\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2);\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1;\n x.clamp();\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3);\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2);\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1);\n }\n x.subTo(this.r2, x);\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Barrett;\n}());\n//#endregion\n//#endregion REDUCERS\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\nfunction parseBigInt(str, r) {\n return new BigInteger(str, r);\n}\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\nvar inBrowser = typeof navigator !== \"undefined\";\nif (inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am = function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n dbits = 30;\n}\nelse if (inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n BigInteger.prototype.am = function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am = function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n// Digit conversions\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\n// return bigint initialized to value\nfunction nbv(i) {\n var r = nbi();\n r.fromInt(i);\n return r;\n}\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/jsbn.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/prng4.js": + /*!*******************************!*\ + !*** ./lib/lib/jsbn/prng4.js ***! + \*******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Arcfour\": () => (/* binding */ Arcfour),\n/* harmony export */ \"prng_newstate\": () => (/* binding */ prng_newstate),\n/* harmony export */ \"rng_psize\": () => (/* binding */ rng_psize)\n/* harmony export */ });\n// prng4.js - uses Arcfour as a PRNG\nvar Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = [];\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i;\n var j;\n var t;\n for (i = 0; i < 256; ++i) {\n this.S[i] = i;\n }\n j = 0;\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n };\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n };\n return Arcfour;\n}());\n\n// Plug in your RNG constructor here\nfunction prng_newstate() {\n return new Arcfour();\n}\n// Pool size must be a multiple of 4 and greater than 32.\n// An array of bytes the size of the pool will be passed to init()\nvar rng_psize = 256;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/prng4.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/rng.js": + /*!*****************************!*\ + !*** ./lib/lib/jsbn/rng.js ***! + \*****************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SecureRandom\": () => (/* binding */ SecureRandom)\n/* harmony export */ });\n/* harmony import */ var _prng4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prng4 */ \"./lib/lib/jsbn/prng4.js\");\n// Random number generator - requires a PRNG backend, e.g. prng4.js\n\nvar rng_state;\nvar rng_pool = null;\nvar rng_pptr;\n// Initialize the pool with junk if needed.\nif (rng_pool == null) {\n rng_pool = [];\n rng_pptr = 0;\n var t = void 0;\n if (typeof window !== 'undefined' && window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256);\n window.crypto.getRandomValues(z);\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255;\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var count = 0;\n var onMouseMoveListener_1 = function (ev) {\n count = count || 0;\n if (count >= 256 || rng_pptr >= _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n return;\n }\n try {\n var mouseCoordinates = ev.x + ev.y;\n rng_pool[rng_pptr++] = mouseCoordinates & 255;\n count += 1;\n }\n catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n };\n if (typeof window !== 'undefined') {\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false);\n }\n else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1);\n }\n }\n}\nfunction rng_get_byte() {\n if (rng_state == null) {\n rng_state = (0,_prng4__WEBPACK_IMPORTED_MODULE_0__.prng_newstate)();\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < _prng4__WEBPACK_IMPORTED_MODULE_0__.rng_psize) {\n var random = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = random & 255;\n }\n rng_state.init(rng_pool);\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0;\n }\n rng_pptr = 0;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n}\nvar SecureRandom = /** @class */ (function () {\n function SecureRandom() {\n }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte();\n }\n };\n return SecureRandom;\n}());\n\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rng.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/rsa.js": + /*!*****************************!*\ + !*** ./lib/lib/jsbn/rsa.js ***! + \*****************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"RSAKey\": () => (/* binding */ RSAKey)\n/* harmony export */ });\n/* harmony import */ var _jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _rng__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rng */ \"./lib/lib/jsbn/rng.js\");\n// Depends on jsbn.js and rng.js\n// Version 1.1: support utf-8 encoding in pkcs1pad2\n// convert a (hex) string to a bignum object\n\n\n// function linebrk(s,n) {\n// var ret = \"\";\n// var i = 0;\n// while(i + n < s.length) {\n// ret += s.substring(i,i+n) + \"\\n\";\n// i += n;\n// }\n// return ret + s.substring(i,s.length);\n// }\n// function byte2Hex(b) {\n// if(b < 0x10)\n// return \"0\" + b.toString(16);\n// else\n// return b.toString(16);\n// }\nfunction pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\");\n return null;\n }\n var len = n - s.length - 6;\n var filler = \"\";\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\";\n }\n var m = \"0001\" + filler + \"00\" + s;\n return (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(m, 16);\n}\n// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\nfunction pkcs1pad2(s, n) {\n if (n < s.length + 11) { // TODO: fix for utf-8\n console.error(\"Message too long for RSA\");\n return null;\n }\n var ba = [];\n var i = s.length - 1;\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--);\n if (c < 128) { // encode using utf-8\n ba[--n] = c;\n }\n else if ((c > 127) && (c < 2048)) {\n ba[--n] = (c & 63) | 128;\n ba[--n] = (c >> 6) | 192;\n }\n else {\n ba[--n] = (c & 63) | 128;\n ba[--n] = ((c >> 6) & 63) | 128;\n ba[--n] = (c >> 12) | 224;\n }\n }\n ba[--n] = 0;\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var x = [];\n while (n > 2) { // random non-zero pad\n x[0] = 0;\n while (x[0] == 0) {\n rng.nextBytes(x);\n }\n ba[--n] = x[0];\n }\n ba[--n] = 2;\n ba[--n] = 0;\n return new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(ba);\n}\n// \"empty\" RSA key constructor\nvar RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null;\n this.e = 0;\n this.d = null;\n this.p = null;\n this.q = null;\n this.dmp1 = null;\n this.dmq1 = null;\n this.coeff = null;\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n);\n };\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n);\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p);\n var xq = x.mod(this.q).modPow(this.dmq1, this.q);\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p);\n }\n return xp.subtract(xq).multiply(this.coeff).mod(this.p).multiply(this.q).add(xq);\n };\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n }\n else {\n console.error(\"Invalid RSA public key\");\n }\n };\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var maxLength = (this.n.bitLength() + 7) >> 3;\n var m = pkcs1pad2(text, maxLength);\n if (m == null) {\n return null;\n }\n var c = this.doPublic(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n var length = h.length;\n // fix zero before result\n for (var i = 0; i < maxLength * 2 - length; i++) {\n h = \"0\" + h;\n }\n return h;\n };\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(N, 16);\n this.e = parseInt(E, 16);\n this.d = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(D, 16);\n this.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(P, 16);\n this.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(Q, 16);\n this.dmp1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DP, 16);\n this.dmq1 = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(DQ, 16);\n this.coeff = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(C, 16);\n }\n else {\n console.error(\"Invalid RSA private key\");\n }\n };\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n for (;;) {\n for (;;) {\n this.p = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(B - qs, 1, rng);\n if (this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.p.isProbablePrime(10)) {\n break;\n }\n }\n for (;;) {\n this.q = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(qs, 1, rng);\n if (this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && this.q.isProbablePrime(10)) {\n break;\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p;\n this.p = this.q;\n this.q = t;\n }\n var p1 = this.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = this.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q);\n this.d = ee.modInverse(phi);\n this.dmp1 = this.d.mod(p1);\n this.dmq1 = this.d.mod(q1);\n this.coeff = this.q.modInverse(this.p);\n break;\n }\n }\n };\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(ctext, 16);\n var m = this.doPrivate(c);\n if (m == null) {\n return null;\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3);\n };\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new _rng__WEBPACK_IMPORTED_MODULE_1__.SecureRandom();\n var qs = B >> 1;\n this.e = parseInt(E, 16);\n var ee = new _jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(E, 16);\n var rsa = this;\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p;\n rsa.p = rsa.q;\n rsa.q = t;\n }\n var p1 = rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var q1 = rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n var phi = p1.multiply(q1);\n if (phi.gcd(ee).compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q);\n rsa.d = ee.modInverse(phi);\n rsa.dmp1 = rsa.d.mod(p1);\n rsa.dmq1 = rsa.d.mod(q1);\n rsa.coeff = rsa.q.modInverse(rsa.p);\n setTimeout(function () { callback(); }, 0); // escape\n }\n else {\n setTimeout(loop1, 0);\n }\n };\n var loop3 = function () {\n rsa.q = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.q.isProbablePrime(10)) {\n setTimeout(loop4, 0);\n }\n else {\n setTimeout(loop3, 0);\n }\n });\n });\n };\n var loop2 = function () {\n rsa.p = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.nbi)();\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE).gcda(ee, function (r) {\n if (r.compareTo(_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE) == 0 && rsa.p.isProbablePrime(10)) {\n setTimeout(loop3, 0);\n }\n else {\n setTimeout(loop2, 0);\n }\n });\n });\n };\n setTimeout(loop2, 0);\n };\n setTimeout(loop1, 0);\n };\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName);\n var digest = header + digestMethod(text).toString();\n var m = pkcs1pad1(digest, this.n.bitLength() / 4);\n if (m == null) {\n return null;\n }\n var c = this.doPrivate(m);\n if (c == null) {\n return null;\n }\n var h = c.toString(16);\n if ((h.length & 1) == 0) {\n return h;\n }\n else {\n return \"0\" + h;\n }\n };\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = (0,_jsbn__WEBPACK_IMPORTED_MODULE_0__.parseBigInt)(signature, 16);\n var m = this.doPublic(c);\n if (m == null) {\n return null;\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\");\n var digest = removeDigestHeader(unpadded);\n return digest == digestMethod(text).toString();\n };\n return RSAKey;\n}());\n\n// Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\nfunction pkcs1unpad2(d, n) {\n var b = d.toByteArray();\n var i = 0;\n while (i < b.length && b[i] == 0) {\n ++i;\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null;\n }\n ++i;\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null;\n }\n }\n var ret = \"\";\n while (++i < b.length) {\n var c = b[i] & 255;\n if (c < 128) { // utf-8 decode\n ret += String.fromCharCode(c);\n }\n else if ((c > 191) && (c < 224)) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63));\n ++i;\n }\n else {\n ret += String.fromCharCode(((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63));\n i += 2;\n }\n }\n return ret;\n}\n// https://tools.ietf.org/html/rfc3447#page-43\nvar DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\"\n};\nfunction getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\";\n}\nfunction removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1];\n var len = header.length;\n if (str.substr(0, len) == header) {\n return str.substr(len);\n }\n }\n }\n return str;\n}\n// Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n// function RSAEncryptB64(text) {\n// var h = this.encrypt(text);\n// if(h) return hex2b64(h); else return null;\n// }\n// public\n// RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/rsa.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsbn/util.js": + /*!******************************!*\ + !*** ./lib/lib/jsbn/util.js ***! + \******************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"cbit\": () => (/* binding */ cbit),\n/* harmony export */ \"int2char\": () => (/* binding */ int2char),\n/* harmony export */ \"lbit\": () => (/* binding */ lbit),\n/* harmony export */ \"op_and\": () => (/* binding */ op_and),\n/* harmony export */ \"op_andnot\": () => (/* binding */ op_andnot),\n/* harmony export */ \"op_or\": () => (/* binding */ op_or),\n/* harmony export */ \"op_xor\": () => (/* binding */ op_xor)\n/* harmony export */ });\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\n//#region BIT_OPERATIONS\n// (public) this & a\nfunction op_and(x, y) {\n return x & y;\n}\n// (public) this | a\nfunction op_or(x, y) {\n return x | y;\n}\n// (public) this ^ a\nfunction op_xor(x, y) {\n return x ^ y;\n}\n// (public) this & ~a\nfunction op_andnot(x, y) {\n return x & ~y;\n}\n// return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\n if (x == 0) {\n return -1;\n }\n var r = 0;\n if ((x & 0xffff) == 0) {\n x >>= 16;\n r += 16;\n }\n if ((x & 0xff) == 0) {\n x >>= 8;\n r += 8;\n }\n if ((x & 0xf) == 0) {\n x >>= 4;\n r += 4;\n }\n if ((x & 3) == 0) {\n x >>= 2;\n r += 2;\n }\n if ((x & 1) == 0) {\n ++r;\n }\n return r;\n}\n// return number of 1 bits in x\nfunction cbit(x) {\n var r = 0;\n while (x != 0) {\n x &= x - 1;\n ++r;\n }\n return r;\n}\n//#endregion BIT_OPERATIONS\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsbn/util.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsrsasign/asn1-1.0.js": + /*!***************************************!*\ + !*** ./lib/lib/jsrsasign/asn1-1.0.js ***! + \***************************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"KJUR\": () => (/* binding */ KJUR)\n/* harmony export */ });\n/* harmony import */ var _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../jsbn/jsbn */ \"./lib/lib/jsbn/jsbn.js\");\n/* harmony import */ var _yahoo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./yahoo */ \"./lib/lib/jsrsasign/yahoo.js\");\n/* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n/*\n * asn1.js - ASN.1 DER encoder classes\n *\n * Copyright (c) 2013-2017 Kenji Urushima (kenji.urushima@gmail.com)\n *\n * This software is licensed under the terms of the MIT License.\n * https://kjur.github.io/jsrsasign/license\n *\n * The above copyright and license notice shall be\n * included in all copies or substantial portions of the Software.\n */\n\n\n/**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license MIT License\n */\n/**\n * kjur's class library name space\n *

\n * This name space provides following name spaces:\n *

    \n *
  • {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
  • \n *
  • {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
  • \n *
  • {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
  • \n *
\n *

\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\nvar KJUR = {};\n/**\n * kjur's ASN.1 class library name space\n *

\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *

PROVIDING ASN.1 PRIMITIVES

\n * Here are ASN.1 DER primitive classes.\n *
    \n *
  • 0x01 {@link KJUR.asn1.DERBoolean}
  • \n *
  • 0x02 {@link KJUR.asn1.DERInteger}
  • \n *
  • 0x03 {@link KJUR.asn1.DERBitString}
  • \n *
  • 0x04 {@link KJUR.asn1.DEROctetString}
  • \n *
  • 0x05 {@link KJUR.asn1.DERNull}
  • \n *
  • 0x06 {@link KJUR.asn1.DERObjectIdentifier}
  • \n *
  • 0x0a {@link KJUR.asn1.DEREnumerated}
  • \n *
  • 0x0c {@link KJUR.asn1.DERUTF8String}
  • \n *
  • 0x12 {@link KJUR.asn1.DERNumericString}
  • \n *
  • 0x13 {@link KJUR.asn1.DERPrintableString}
  • \n *
  • 0x14 {@link KJUR.asn1.DERTeletexString}
  • \n *
  • 0x16 {@link KJUR.asn1.DERIA5String}
  • \n *
  • 0x17 {@link KJUR.asn1.DERUTCTime}
  • \n *
  • 0x18 {@link KJUR.asn1.DERGeneralizedTime}
  • \n *
  • 0x30 {@link KJUR.asn1.DERSequence}
  • \n *
  • 0x31 {@link KJUR.asn1.DERSet}
  • \n *
\n *

OTHER ASN.1 CLASSES

\n *
    \n *
  • {@link KJUR.asn1.ASN1Object}
  • \n *
  • {@link KJUR.asn1.DERAbstractString}
  • \n *
  • {@link KJUR.asn1.DERAbstractTime}
  • \n *
  • {@link KJUR.asn1.DERAbstractStructured}
  • \n *
  • {@link KJUR.asn1.DERTaggedObject}
  • \n *
\n *

SUB NAME SPACES

\n *
    \n *
  • {@link KJUR.asn1.cades} - CAdES long term signature format
  • \n *
  • {@link KJUR.asn1.cms} - Cryptographic Message Syntax
  • \n *
  • {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
  • \n *
  • {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
  • \n *
  • {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
  • \n *
\n *

\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\nif (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1)\n KJUR.asn1 = {};\n/**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\nKJUR.asn1.ASN1Util = new function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16);\n if ((h.length % 2) == 1)\n h = '0' + h;\n return h;\n };\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16);\n if (h.substr(0, 1) != '-') {\n if (h.length % 2 == 1) {\n h = '0' + h;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n h = '00' + h;\n }\n }\n }\n else {\n var hPos = h.substr(1);\n var xorLen = hPos.length;\n if (xorLen % 2 == 1) {\n xorLen += 1;\n }\n else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2;\n }\n }\n var hMask = '';\n for (var i = 0; i < xorLen; i++) {\n hMask += 'f';\n }\n var biMask = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(hMask, 16);\n var biNeg = biMask.xor(bigIntegerValue).add(_jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger.ONE);\n h = biNeg.toString(16).replace(/^-/, '');\n }\n return h;\n };\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader);\n };\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n *
\n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n *
    \n *
  • 'bool' - DERBoolean
  • \n *
  • 'int' - DERInteger
  • \n *
  • 'bitstr' - DERBitString
  • \n *
  • 'octstr' - DEROctetString
  • \n *
  • 'null' - DERNull
  • \n *
  • 'oid' - DERObjectIdentifier
  • \n *
  • 'enum' - DEREnumerated
  • \n *
  • 'utf8str' - DERUTF8String
  • \n *
  • 'numstr' - DERNumericString
  • \n *
  • 'prnstr' - DERPrintableString
  • \n *
  • 'telstr' - DERTeletexString
  • \n *
  • 'ia5str' - DERIA5String
  • \n *
  • 'utctime' - DERUTCTime
  • \n *
  • 'gentime' - DERGeneralizedTime
  • \n *
  • 'seq' - DERSequence
  • \n *
  • 'set' - DERSet
  • \n *
  • 'tag' - DERTaggedObject
  • \n *
\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR, _KJUR_asn1 = _KJUR.asn1, _DERBoolean = _KJUR_asn1.DERBoolean, _DERInteger = _KJUR_asn1.DERInteger, _DERBitString = _KJUR_asn1.DERBitString, _DEROctetString = _KJUR_asn1.DEROctetString, _DERNull = _KJUR_asn1.DERNull, _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier, _DEREnumerated = _KJUR_asn1.DEREnumerated, _DERUTF8String = _KJUR_asn1.DERUTF8String, _DERNumericString = _KJUR_asn1.DERNumericString, _DERPrintableString = _KJUR_asn1.DERPrintableString, _DERTeletexString = _KJUR_asn1.DERTeletexString, _DERIA5String = _KJUR_asn1.DERIA5String, _DERUTCTime = _KJUR_asn1.DERUTCTime, _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime, _DERSequence = _KJUR_asn1.DERSequence, _DERSet = _KJUR_asn1.DERSet, _DERTaggedObject = _KJUR_asn1.DERTaggedObject, _newObject = _KJUR_asn1.ASN1Util.newObject;\n var keys = Object.keys(param);\n if (keys.length != 1)\n throw \"key of param shall be only one.\";\n var key = keys[0];\n if (\":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\":\" + key + \":\") == -1)\n throw \"undefined key: \" + key;\n if (key == \"bool\")\n return new _DERBoolean(param[key]);\n if (key == \"int\")\n return new _DERInteger(param[key]);\n if (key == \"bitstr\")\n return new _DERBitString(param[key]);\n if (key == \"octstr\")\n return new _DEROctetString(param[key]);\n if (key == \"null\")\n return new _DERNull(param[key]);\n if (key == \"oid\")\n return new _DERObjectIdentifier(param[key]);\n if (key == \"enum\")\n return new _DEREnumerated(param[key]);\n if (key == \"utf8str\")\n return new _DERUTF8String(param[key]);\n if (key == \"numstr\")\n return new _DERNumericString(param[key]);\n if (key == \"prnstr\")\n return new _DERPrintableString(param[key]);\n if (key == \"telstr\")\n return new _DERTeletexString(param[key]);\n if (key == \"ia5str\")\n return new _DERIA5String(param[key]);\n if (key == \"utctime\")\n return new _DERUTCTime(param[key]);\n if (key == \"gentime\")\n return new _DERGeneralizedTime(param[key]);\n if (key == \"seq\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSequence({ 'array': a });\n }\n if (key == \"set\") {\n var paramList = param[key];\n var a = [];\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i]);\n a.push(asn1Obj);\n }\n return new _DERSet({ 'array': a });\n }\n if (key == \"tag\") {\n var tagParam = param[key];\n if (Object.prototype.toString.call(tagParam) === '[object Array]' &&\n tagParam.length == 3) {\n var obj = _newObject(tagParam[2]);\n return new _DERTaggedObject({ tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj });\n }\n else {\n var newParam = {};\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit;\n if (tagParam.tag !== undefined)\n newParam.tag = tagParam.tag;\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\";\n newParam.obj = _newObject(tagParam.obj);\n return new _DERTaggedObject(newParam);\n }\n }\n };\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param);\n return asn1Obj.getEncodedHex();\n };\n};\n/**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\nKJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\";\n var i01 = parseInt(hex.substr(0, 2), 16);\n var i0 = Math.floor(i01 / 40);\n var i1 = i01 % 40;\n var s = i0 + \".\" + i1;\n var binbuf = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16);\n var bin = (\"00000000\" + value.toString(2)).slice(-8);\n binbuf = binbuf + bin.substr(1, 7);\n if (bin.substr(0, 1) == \"0\") {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(binbuf, 2);\n s = s + \".\" + bi.toString(10);\n binbuf = \"\";\n }\n }\n ;\n return s;\n};\n/**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\nKJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n return h;\n};\n// ********************************************************************\n// Abstract ASN.1 Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\nKJUR.asn1.ASN1Object = function () {\n var isModified = true;\n var hTLV = null;\n var hT = '00';\n var hL = '00';\n var hV = '';\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\";\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV;\n }\n var n = this.hV.length / 2;\n var hN = n.toString(16);\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN;\n }\n if (n < 128) {\n return hN;\n }\n else {\n var hNlen = hN.length / 2;\n if (hNlen > 15) {\n throw \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16);\n }\n var head = 128 + hNlen;\n return head.toString(16) + hN;\n }\n };\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex();\n this.hL = this.getLengthHexFromValue();\n this.hTLV = this.hT + this.hL + this.hV;\n this.isModified = false;\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV;\n };\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex();\n return this.hV;\n };\n this.getFreshValueHex = function () {\n return '';\n };\n};\n// == BEGIN DERAbstractString ================================================\n/**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var s = null;\n var hV = null;\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(this.s);\n };\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params);\n }\n else if (typeof params['str'] != \"undefined\") {\n this.setString(params['str']);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setStringHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object);\n// == END DERAbstractString ================================================\n// == BEGIN DERAbstractTime ==================================================\n/**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this);\n var s = null;\n var date = null;\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + (d.getTimezoneOffset() * 60000);\n var utcDate = new Date(utc);\n return utcDate;\n };\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding;\n var d = this.localDateToUTC(dateObject);\n var year = String(d.getFullYear());\n if (type == 'utc')\n year = year.substr(2, 2);\n var month = pad(String(d.getMonth() + 1), 2);\n var day = pad(String(d.getDate()), 2);\n var hour = pad(String(d.getHours()), 2);\n var min = pad(String(d.getMinutes()), 2);\n var sec = pad(String(d.getSeconds()), 2);\n var s = year + month + day + hour + min + sec;\n if (withMillis === true) {\n var millis = d.getMilliseconds();\n if (millis != 0) {\n var sMillis = pad(String(millis), 3);\n sMillis = sMillis.replace(/[0]+$/, \"\");\n s = s + \".\" + sMillis;\n }\n }\n return s + \"Z\";\n };\n this.zeroPadding = function (s, len) {\n if (s.length >= len)\n return s;\n return new Array(len - s.length + 1).join('0') + s;\n };\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s;\n };\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null;\n this.isModified = true;\n this.s = newS;\n this.hV = stohex(newS);\n };\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(Date.UTC(year, month - 1, day, hour, min, sec, 0));\n this.setByDate(dateObject);\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object);\n// == END DERAbstractTime ==================================================\n// == BEGIN DERAbstractStructured ============================================\n/**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this);\n var asn1Array = null;\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array = asn1ObjectArray;\n };\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null;\n this.isModified = true;\n this.asn1Array.push(asn1Object);\n };\n this.asn1Array = new Array();\n if (typeof params != \"undefined\") {\n if (typeof params['array'] != \"undefined\") {\n this.asn1Array = params['array'];\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object);\n// ********************************************************************\n// ASN.1 Object Classes\n// ********************************************************************\n// ********************************************************************\n/**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this);\n this.hT = \"01\";\n this.hTLV = \"0101ff\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • bigint - specify initial ASN.1 value(V) by BigInteger object
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this);\n this.hT = \"02\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['bigint'] != \"undefined\") {\n this.setByBigInteger(params['bigint']);\n }\n else if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • bin - specify binary string (ex. '10111')
  • \n *
  • array - specify array of boolean (ex. [true,false,true,true])
  • \n *
  • hex - specify hexadecimal string of ASN.1 value(V) including unused bits
  • \n *
  • obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = \"00\" + o.getEncodedHex();\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this);\n this.hT = \"03\";\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (newHexStringIncludingUnusedBits) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = newHexStringIncludingUnusedBits;\n };\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits;\n }\n var hUnusedBits = \"0\" + unusedBits;\n this.hTLV = null;\n this.isModified = true;\n this.hV = hUnusedBits + hValue;\n };\n /**\n * set ASN.1 DER BitString by binary string
\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, '');\n var unusedBits = 8 - binaryString.length % 8;\n if (unusedBits == 8)\n unusedBits = 0;\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += '0';\n }\n var h = '';\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8);\n var x = parseInt(b, 2).toString(16);\n if (x.length == 1)\n x = '0' + x;\n h += x;\n }\n this.hTLV = null;\n this.isModified = true;\n this.hV = '0' + unusedBits + h;\n };\n /**\n * set ASN.1 TLV value(V) by an array of boolean
\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = '';\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += '1';\n }\n else {\n s += '0';\n }\n }\n this.setByBinaryString(s);\n };\n /**\n * generate an array of falses with specified length
\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength);\n for (var i = 0; i < nLength; i++) {\n a[i] = false;\n }\n return a;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\" && params.toLowerCase().match(/^[0-9a-f]+$/)) {\n this.setHexValueIncludingUnusedBits(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params['hex']);\n }\n else if (typeof params['bin'] != \"undefined\") {\n this.setByBinaryString(params['bin']);\n }\n else if (typeof params['array'] != \"undefined\") {\n this.setByBooleanArray(params['array']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER OctetString
\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
\n * Supported \"params\" attributes are:\n *
    \n *
  • str - to set a string as a value
  • \n *
  • hex - to set a hexadecimal string as a value
  • \n *
  • obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
  • \n *
\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\nKJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj);\n params.hex = o.getEncodedHex();\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params);\n this.hT = \"04\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\nKJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this);\n this.hT = \"05\";\n this.hTLV = \"0500\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16);\n if (h.length == 1)\n h = '0' + h;\n return h;\n };\n var roidtox = function (roid) {\n var h = '';\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(roid, 10);\n var b = bi.toString(2);\n var padLen = 7 - b.length % 7;\n if (padLen == 7)\n padLen = 0;\n var bPad = '';\n for (var i = 0; i < padLen; i++)\n bPad += '0';\n b = bPad + b;\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7);\n if (i != b.length - 7)\n b8 = '1' + b8;\n h += itox(parseInt(b8, 2));\n }\n return h;\n };\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this);\n this.hT = \"06\";\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = newHexString;\n };\n /**\n * set value by a OID string
\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString;\n }\n var h = '';\n var a = oidString.split('.');\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1]);\n h += itox(i0);\n a.splice(0, 2);\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i]);\n }\n this.hTLV = null;\n this.isModified = true;\n this.s = null;\n this.hV = h;\n };\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName);\n if (oid !== '') {\n this.setValueOidString(oid);\n }\n else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params);\n }\n else {\n this.setValueName(params);\n }\n }\n else if (params.oid !== undefined) {\n this.setValueOidString(params.oid);\n }\n else if (params.hex !== undefined) {\n this.setValueHex(params.hex);\n }\n else if (params.name !== undefined) {\n this.setValueName(params.name);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\nKJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this);\n this.hT = \"0a\";\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null;\n this.isModified = true;\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(bigIntegerValue);\n };\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new _jsbn_jsbn__WEBPACK_IMPORTED_MODULE_0__.BigInteger(String(intValue), 10);\n this.setByBigInteger(bi);\n };\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString;\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['int'] != \"undefined\") {\n this.setByInteger(params['int']);\n }\n else if (typeof params == \"number\") {\n this.setByInteger(params);\n }\n else if (typeof params['hex'] != \"undefined\") {\n this.setValueHex(params['hex']);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params);\n this.hT = \"0c\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params);\n this.hT = \"12\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params);\n this.hT = \"13\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params);\n this.hT = \"14\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\nKJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params);\n this.hT = \"16\";\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString);\n// ********************************************************************\n/**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
\n * NOTE: 'params' can be omitted.\n *

EXAMPLES

\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\nKJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params);\n this.hT = \"17\";\n /**\n * set value by a Date object
\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'utc');\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
  • millis - specify flag to show milliseconds (from 1.0.6)
  • \n *
\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\nKJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params);\n this.hT = \"18\";\n this.withMillis = false;\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null;\n this.isModified = true;\n this.date = dateObject;\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n };\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date();\n this.s = this.formatDate(this.date, 'gen', this.withMillis);\n this.hV = stohex(this.s);\n }\n return this.hV;\n };\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str);\n }\n else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params);\n }\n else if (params.hex !== undefined) {\n this.setStringHex(params.hex);\n }\n else if (params.date !== undefined) {\n this.setByDate(params.date);\n }\n if (params.millis === true) {\n this.withMillis = true;\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime);\n// ********************************************************************\n/**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
\n * NOTE: 'params' can be omitted.\n */\nKJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params);\n this.hT = \"30\";\n this.getFreshValueHex = function () {\n var h = '';\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n h += asn1Obj.getEncodedHex();\n }\n this.hV = h;\n return this.hV;\n };\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
  • sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: sortflag is supported since 1.0.5.\n */\nKJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params);\n this.hT = \"31\";\n this.sortFlag = true; // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array();\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i];\n a.push(asn1Obj.getEncodedHex());\n }\n if (this.sortFlag == true)\n a.sort();\n this.hV = a.join('');\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" &&\n params.sortflag == false)\n this.sortFlag = false;\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured);\n// ********************************************************************\n/**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n *
    \n *
  • explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
  • \n *
  • tag - specify tag (default is 'a0' which means [0])
  • \n *
  • obj - specify ASN1Object which is tagged
  • \n *
\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\nKJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this);\n this.hT = \"a0\";\n this.hV = '';\n this.isExplicit = true;\n this.asn1Object = null;\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex;\n this.isExplicit = isExplicitFlag;\n this.asn1Object = asn1Object;\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex();\n this.hTLV = null;\n this.isModified = true;\n }\n else {\n this.hV = null;\n this.hTLV = asn1Object.getEncodedHex();\n this.hTLV = this.hTLV.replace(/^../, tagNoHex);\n this.isModified = false;\n }\n };\n this.getFreshValueHex = function () {\n return this.hV;\n };\n if (typeof params != \"undefined\") {\n if (typeof params['tag'] != \"undefined\") {\n this.hT = params['tag'];\n }\n if (typeof params['explicit'] != \"undefined\") {\n this.isExplicit = params['explicit'];\n }\n if (typeof params['obj'] != \"undefined\") {\n this.asn1Object = params['obj'];\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object);\n }\n }\n};\n_yahoo__WEBPACK_IMPORTED_MODULE_1__.YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object);\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/asn1-1.0.js?"); + + /***/ + }), + + /***/ + "./lib/lib/jsrsasign/yahoo.js": + /*!************************************!*\ + !*** ./lib/lib/jsrsasign/yahoo.js ***! + \************************************/ + /***/ + ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + + "use strict"; + eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"YAHOO\": () => (/* binding */ YAHOO)\n/* harmony export */ });\n/*!\nCopyright (c) 2011, Yahoo! Inc. All rights reserved.\nCode licensed under the BSD License:\nhttp://developer.yahoo.com/yui/license.html\nversion: 2.9.0\n*/\nvar YAHOO = {};\nYAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\");\n }\n var F = function () { };\n F.prototype = superc.prototype;\n subc.prototype = new F();\n subc.prototype.constructor = subc;\n subc.superclass = superc.prototype;\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc;\n }\n if (overrides) {\n var i;\n for (i in overrides) {\n subc.prototype[i] = overrides[i];\n }\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { }, ADD = [\"toString\", \"valueOf\"];\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i], f = s[fname];\n if (typeof f === 'function' && f != Object.prototype[fname]) {\n r[fname] = f;\n }\n }\n };\n }\n }\n catch (ex) { }\n ;\n _IEEnumFix(subc.prototype, overrides);\n }\n }\n};\n\n\n//# sourceURL=webpack://JSEncrypt/./lib/lib/jsrsasign/yahoo.js?"); + + /***/ + }), + + /***/ + "./node_modules/process/browser.js": + /*!*****************************************!*\ + !*** ./node_modules/process/browser.js ***! + \*****************************************/ + /***/ + ((module) => { + + eval("// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n//# sourceURL=webpack://JSEncrypt/./node_modules/process/browser.js?"); + + /***/ + }) + + /******/ + }); + /************************************************************************/ + /******/ // The module cache + /******/ + var __webpack_module_cache__ = {}; + /******/ + /******/ // The require function + /******/ + function __webpack_require__(moduleId) { + /******/ // Check if module is in cache + /******/ + var cachedModule = __webpack_module_cache__[moduleId]; + /******/ + if (cachedModule !== undefined) { + /******/ + return cachedModule.exports; + /******/ + } + /******/ // Create a new module (and put it into the cache) + /******/ + var module = __webpack_module_cache__[moduleId] = { + /******/ // no module.id needed + /******/ // no module.loaded needed + /******/ + exports: {} + /******/ + }; + /******/ + /******/ // Execute the module function + /******/ + __webpack_modules__[moduleId](module, module.exports, __webpack_require__); + /******/ + /******/ // Return the exports of the module + /******/ + return module.exports; + /******/ + } + /******/ + /************************************************************************/ + /******/ + /* webpack/runtime/define property getters */ + /******/ + (() => { + /******/ // define getter functions for harmony exports + /******/ + __webpack_require__.d = (exports, definition) => { + /******/ + for (var key in definition) { + /******/ + if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { + /******/ + Object.defineProperty(exports, key, { + enumerable: true, + get: definition[key] + }); + /******/ + } + /******/ + } + /******/ + }; + /******/ + })(); + /******/ + /******/ + /* webpack/runtime/hasOwnProperty shorthand */ + /******/ + (() => { + /******/ + __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) + /******/ + })(); + /******/ + /******/ + /* webpack/runtime/make namespace object */ + /******/ + (() => { + /******/ // define __esModule on exports + /******/ + __webpack_require__.r = (exports) => { + /******/ + if (typeof Symbol !== 'undefined' && Symbol.toStringTag) { + /******/ + Object.defineProperty(exports, Symbol.toStringTag, { + value: 'Module' + }); + /******/ + } + /******/ + Object.defineProperty(exports, '__esModule', { + value: true + }); + /******/ + }; + /******/ + })(); + /******/ + /************************************************************************/ + /******/ + /******/ // startup + /******/ // Load entry module and return exports + /******/ // This entry module can't be inlined because the eval devtool is used. + /******/ + var __webpack_exports__ = __webpack_require__("./lib/index.js"); + /******/ + __webpack_exports__ = __webpack_exports__["default"]; + /******/ + /******/ + return __webpack_exports__; + /******/ + })(); +}); \ No newline at end of file diff --git a/xiaosa/JS/json5.js b/xiaosa/JS/json5.js new file mode 100644 index 00000000..bb707e5e --- /dev/null +++ b/xiaosa/JS/json5.js @@ -0,0 +1,1809 @@ +(function(global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.JSON5 = factory()); +}(this, (function() { + 'use strict'; + + function createCommonjsModule(fn, module) { + return module = { + exports: {} + }, fn(module, module.exports), module.exports; + } + + var _global = createCommonjsModule(function(module) { + // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + var global = module.exports = typeof window != 'undefined' && window.Math == Math ? + window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : + Function('return this')(); + if (typeof __g == 'number') { + __g = global; + } // eslint-disable-line no-undef + }); + + var _core = createCommonjsModule(function(module) { + var core = module.exports = { + version: '2.6.5' + }; + if (typeof __e == 'number') { + __e = core; + } // eslint-disable-line no-undef + }); + var _core_1 = _core.version; + + var _isObject = function(it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; + }; + + var _anObject = function(it) { + if (!_isObject(it)) { + throw TypeError(it + ' is not an object!'); + } + return it; + }; + + var _fails = function(exec) { + try { + return !!exec(); + } catch (e) { + return true; + } + }; + + // Thank's IE8 for his funny defineProperty + var _descriptors = !_fails(function() { + return Object.defineProperty({}, 'a', { + get: function() { + return 7; + } + }).a != 7; + }); + + var document = _global.document; + // typeof document.createElement is 'object' in old IE + var is = _isObject(document) && _isObject(document.createElement); + var _domCreate = function(it) { + return is ? document.createElement(it) : {}; + }; + + var _ie8DomDefine = !_descriptors && !_fails(function() { + return Object.defineProperty(_domCreate('div'), 'a', { + get: function() { + return 7; + } + }).a != 7; + }); + + // 7.1.1 ToPrimitive(input [, PreferredType]) + + // instead of the ES6 spec version, we didn't implement @@toPrimitive case + // and the second argument - flag - preferred type is a string + var _toPrimitive = function(it, S) { + if (!_isObject(it)) { + return it; + } + var fn, val; + if (S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { + return val; + } + if (typeof(fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { + return val; + } + if (!S && typeof(fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { + return val; + } + throw TypeError("Can't convert object to primitive value"); + }; + + var dP = Object.defineProperty; + + var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) { + _anObject(O); + P = _toPrimitive(P, true); + _anObject(Attributes); + if (_ie8DomDefine) { + try { + return dP(O, P, Attributes); + } catch (e) { + /* empty */ } + } + if ('get' in Attributes || 'set' in Attributes) { + throw TypeError('Accessors not supported!'); + } + if ('value' in Attributes) { + O[P] = Attributes.value; + } + return O; + }; + + var _objectDp = { + f: f + }; + + var _propertyDesc = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; + }; + + var _hide = _descriptors ? function(object, key, value) { + return _objectDp.f(object, key, _propertyDesc(1, value)); + } : function(object, key, value) { + object[key] = value; + return object; + }; + + var hasOwnProperty = {}.hasOwnProperty; + var _has = function(it, key) { + return hasOwnProperty.call(it, key); + }; + + var id = 0; + var px = Math.random(); + var _uid = function(key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); + }; + + var _library = false; + + var _shared = createCommonjsModule(function(module) { + var SHARED = '__core-js_shared__'; + var store = _global[SHARED] || (_global[SHARED] = {}); + + (module.exports = function(key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: _core.version, + mode: _library ? 'pure' : 'global', + copyright: '© 2019 Denis Pushkarev (zloirock.ru)' + }); + }); + + var _functionToString = _shared('native-function-to-string', Function.toString); + + var _redefine = createCommonjsModule(function(module) { + var SRC = _uid('src'); + + var TO_STRING = 'toString'; + var TPL = ('' + _functionToString).split(TO_STRING); + + _core.inspectSource = function(it) { + return _functionToString.call(it); + }; + + (module.exports = function(O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) { + _has(val, 'name') || _hide(val, 'name', key); + } + if (O[key] === val) { + return; + } + if (isFunction) { + _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + } + if (O === _global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + _hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + _hide(O, key, val); + } + // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || _functionToString.call(this); + }); + }); + + var _aFunction = function(it) { + if (typeof it != 'function') { + throw TypeError(it + ' is not a function!'); + } + return it; + }; + + // optional / simple context binding + + var _ctx = function(fn, that, length) { + _aFunction(fn); + if (that === undefined) { + return fn; + } + switch (length) { + case 1: + return function(a) { + return fn.call(that, a); + }; + case 2: + return function(a, b) { + return fn.call(that, a, b); + }; + case 3: + return function(a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function( /* ...args */ ) { + return fn.apply(that, arguments); + }; + }; + + var PROTOTYPE = 'prototype'; + + var $export = function(type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) { + source = name; + } + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out; + // extend global + if (target) { + _redefine(target, key, out, type & $export.U); + } + // export + if (exports[key] != out) { + _hide(exports, key, exp); + } + if (IS_PROTO && expProto[key] != out) { + expProto[key] = out; + } + } + }; + _global.core = _core; + // type bitmap + $export.F = 1; // forced + $export.G = 2; // global + $export.S = 4; // static + $export.P = 8; // proto + $export.B = 16; // bind + $export.W = 32; // wrap + $export.U = 64; // safe + $export.R = 128; // real proto method for `library` + var _export = $export; + + // 7.1.4 ToInteger + var ceil = Math.ceil; + var floor = Math.floor; + var _toInteger = function(it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); + }; + + // 7.2.1 RequireObjectCoercible(argument) + var _defined = function(it) { + if (it == undefined) { + throw TypeError("Can't call method on " + it); + } + return it; + }; + + // true -> String#at + // false -> String#codePointAt + var _stringAt = function(TO_STRING) { + return function(that, pos) { + var s = String(_defined(that)); + var i = _toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) { + return TO_STRING ? '' : undefined; + } + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? + TO_STRING ? s.charAt(i) : a : + TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; + }; + + var $at = _stringAt(false); + _export(_export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos) { + return $at(this, pos); + } + }); + + var codePointAt = _core.String.codePointAt; + + var max = Math.max; + var min = Math.min; + var _toAbsoluteIndex = function(index, length) { + index = _toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); + }; + + var fromCharCode = String.fromCharCode; + var $fromCodePoint = String.fromCodePoint; + + // length should be 1, old FF problem + _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x) { + var arguments$1 = arguments; + // eslint-disable-line no-unused-vars + var res = []; + var aLen = arguments.length; + var i = 0; + var code; + while (aLen > i) { + code = +arguments$1[i++]; + if (_toAbsoluteIndex(code, 0x10ffff) !== code) { + throw RangeError(code + ' is not a valid code point'); + } + res.push(code < 0x10000 ? + fromCharCode(code) : + fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } + return res.join(''); + } + }); + + var fromCodePoint = _core.String.fromCodePoint; + + // This is a generated file. Do not edit. + var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/; + var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/; + var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/; + + var unicode = { + Space_Separator: Space_Separator, + ID_Start: ID_Start, + ID_Continue: ID_Continue + }; + + var util = { + isSpaceSeparator: function isSpaceSeparator(c) { + return typeof c === 'string' && unicode.Space_Separator.test(c) + }, + + isIdStartChar: function isIdStartChar(c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c === '$') || (c === '_') || + unicode.ID_Start.test(c) + ) + }, + + isIdContinueChar: function isIdContinueChar(c) { + return typeof c === 'string' && ( + (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + (c === '$') || (c === '_') || + (c === '\u200C') || (c === '\u200D') || + unicode.ID_Continue.test(c) + ) + }, + + isDigit: function isDigit(c) { + return typeof c === 'string' && /[0-9]/.test(c) + }, + + isHexDigit: function isHexDigit(c) { + return typeof c === 'string' && /[0-9A-Fa-f]/.test(c) + }, + }; + + var source; + var parseState; + var stack; + var pos; + var line; + var column; + var token; + var key; + var root; + + var parse = function parse(text, reviver) { + source = String(text); + parseState = 'start'; + stack = []; + pos = 0; + line = 1; + column = 0; + token = undefined; + key = undefined; + root = undefined; + + do { + token = lex(); + + // This code is unreachable. + // if (!parseStates[parseState]) { + // throw invalidParseState() + // } + + parseStates[parseState](); + } while (token.type !== 'eof') + + if (typeof reviver === 'function') { + return internalize({ + '': root + }, '', reviver) + } + + return root + }; + + function internalize(holder, name, reviver) { + var value = holder[name]; + if (value != null && typeof value === 'object') { + if (Array.isArray(value)) { + for (var i = 0; i < value.length; i++) { + var key = String(i); + var replacement = internalize(value, key, reviver); + if (replacement === undefined) { + delete value[key]; + } else { + Object.defineProperty(value, key, { + value: replacement, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + } else { + for (var key$1 in value) { + var replacement$1 = internalize(value, key$1, reviver); + if (replacement$1 === undefined) { + delete value[key$1]; + } else { + Object.defineProperty(value, key$1, { + value: replacement$1, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + } + } + + return reviver.call(holder, name, value) + } + + var lexState; + var buffer; + var doubleQuote; + var sign; + var c; + + function lex() { + lexState = 'default'; + buffer = ''; + doubleQuote = false; + sign = 1; + + for (;;) { + c = peek(); + + // This code is unreachable. + // if (!lexStates[lexState]) { + // throw invalidLexState(lexState) + // } + + var token = lexStates[lexState](); + if (token) { + return token + } + } + } + + function peek() { + if (source[pos]) { + return String.fromCodePoint(source.codePointAt(pos)) + } + } + + function read() { + var c = peek(); + + if (c === '\n') { + line++; + column = 0; + } else if (c) { + column += c.length; + } else { + column++; + } + + if (c) { + pos += c.length; + } + + return c + } + + var lexStates = { + default: function default$1() { + switch (c) { + case '\t': + case '\v': + case '\f': + case ' ': + case '\u00A0': + case '\uFEFF': + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + return + + case '/': + read(); + lexState = 'comment'; + return + + case undefined: + read(); + return newToken('eof') + } + + if (util.isSpaceSeparator(c)) { + read(); + return + } + + // This code is unreachable. + // if (!lexStates[parseState]) { + // throw invalidLexState(parseState) + // } + + return lexStates[parseState]() + }, + + comment: function comment() { + switch (c) { + case '*': + read(); + lexState = 'multiLineComment'; + return + + case '/': + read(); + lexState = 'singleLineComment'; + return + } + + throw invalidChar(read()) + }, + + multiLineComment: function multiLineComment() { + switch (c) { + case '*': + read(); + lexState = 'multiLineCommentAsterisk'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + }, + + multiLineCommentAsterisk: function multiLineCommentAsterisk() { + switch (c) { + case '*': + read(); + return + + case '/': + read(); + lexState = 'default'; + return + + case undefined: + throw invalidChar(read()) + } + + read(); + lexState = 'multiLineComment'; + }, + + singleLineComment: function singleLineComment() { + switch (c) { + case '\n': + case '\r': + case '\u2028': + case '\u2029': + read(); + lexState = 'default'; + return + + case undefined: + read(); + return newToken('eof') + } + + read(); + }, + + value: function value() { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + case 'n': + read(); + literal('ull'); + return newToken('null', null) + + case 't': + read(); + literal('rue'); + return newToken('boolean', true) + + case 'f': + read(); + literal('alse'); + return newToken('boolean', false) + + case '-': + case '+': + if (read() === '-') { + sign = -1; + } + + lexState = 'sign'; + return + + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + + case '"': + case "'": + doubleQuote = (read() === '"'); + buffer = ''; + lexState = 'string'; + return + } + + throw invalidChar(read()) + }, + + identifierNameStartEscape: function identifierNameStartEscape() { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + break + + default: + if (!util.isIdStartChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + identifierName: function identifierName() { + switch (c) { + case '$': + case '_': + case '\u200C': + case '\u200D': + buffer += read(); + return + + case '\\': + read(); + lexState = 'identifierNameEscape'; + return + } + + if (util.isIdContinueChar(c)) { + buffer += read(); + return + } + + return newToken('identifier', buffer) + }, + + identifierNameEscape: function identifierNameEscape() { + if (c !== 'u') { + throw invalidChar(read()) + } + + read(); + var u = unicodeEscape(); + switch (u) { + case '$': + case '_': + case '\u200C': + case '\u200D': + break + + default: + if (!util.isIdContinueChar(u)) { + throw invalidIdentifier() + } + + break + } + + buffer += u; + lexState = 'identifierName'; + }, + + sign: function sign$1() { + switch (c) { + case '.': + buffer = read(); + lexState = 'decimalPointLeading'; + return + + case '0': + buffer = read(); + lexState = 'zero'; + return + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + buffer = read(); + lexState = 'decimalInteger'; + return + + case 'I': + read(); + literal('nfinity'); + return newToken('numeric', sign * Infinity) + + case 'N': + read(); + literal('aN'); + return newToken('numeric', NaN) + } + + throw invalidChar(read()) + }, + + zero: function zero() { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + + case 'x': + case 'X': + buffer += read(); + lexState = 'hexadecimal'; + return + } + + return newToken('numeric', sign * 0) + }, + + decimalInteger: function decimalInteger() { + switch (c) { + case '.': + buffer += read(); + lexState = 'decimalPoint'; + return + + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalPointLeading: function decimalPointLeading() { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + throw invalidChar(read()) + }, + + decimalPoint: function decimalPoint() { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalFraction'; + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalFraction: function decimalFraction() { + switch (c) { + case 'e': + case 'E': + buffer += read(); + lexState = 'decimalExponent'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + decimalExponent: function decimalExponent() { + switch (c) { + case '+': + case '-': + buffer += read(); + lexState = 'decimalExponentSign'; + return + } + + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentSign: function decimalExponentSign() { + if (util.isDigit(c)) { + buffer += read(); + lexState = 'decimalExponentInteger'; + return + } + + throw invalidChar(read()) + }, + + decimalExponentInteger: function decimalExponentInteger() { + if (util.isDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + hexadecimal: function hexadecimal() { + if (util.isHexDigit(c)) { + buffer += read(); + lexState = 'hexadecimalInteger'; + return + } + + throw invalidChar(read()) + }, + + hexadecimalInteger: function hexadecimalInteger() { + if (util.isHexDigit(c)) { + buffer += read(); + return + } + + return newToken('numeric', sign * Number(buffer)) + }, + + string: function string() { + switch (c) { + case '\\': + read(); + buffer += escape(); + return + + case '"': + if (doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case "'": + if (!doubleQuote) { + read(); + return newToken('string', buffer) + } + + buffer += read(); + return + + case '\n': + case '\r': + throw invalidChar(read()) + + case '\u2028': + case '\u2029': + separatorChar(c); + break + + case undefined: + throw invalidChar(read()) + } + + buffer += read(); + }, + + start: function start() { + switch (c) { + case '{': + case '[': + return newToken('punctuator', read()) + + // This code is unreachable since the default lexState handles eof. + // case undefined: + // return newToken('eof') + } + + lexState = 'value'; + }, + + beforePropertyName: function beforePropertyName() { + switch (c) { + case '$': + case '_': + buffer = read(); + lexState = 'identifierName'; + return + + case '\\': + read(); + lexState = 'identifierNameStartEscape'; + return + + case '}': + return newToken('punctuator', read()) + + case '"': + case "'": + doubleQuote = (read() === '"'); + lexState = 'string'; + return + } + + if (util.isIdStartChar(c)) { + buffer += read(); + lexState = 'identifierName'; + return + } + + throw invalidChar(read()) + }, + + afterPropertyName: function afterPropertyName() { + if (c === ':') { + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforePropertyValue: function beforePropertyValue() { + lexState = 'value'; + }, + + afterPropertyValue: function afterPropertyValue() { + switch (c) { + case ',': + case '}': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + beforeArrayValue: function beforeArrayValue() { + if (c === ']') { + return newToken('punctuator', read()) + } + + lexState = 'value'; + }, + + afterArrayValue: function afterArrayValue() { + switch (c) { + case ',': + case ']': + return newToken('punctuator', read()) + } + + throw invalidChar(read()) + }, + + end: function end() { + // This code is unreachable since it's handled by the default lexState. + // if (c === undefined) { + // read() + // return newToken('eof') + // } + + throw invalidChar(read()) + }, + }; + + function newToken(type, value) { + return { + type: type, + value: value, + line: line, + column: column, + } + } + + function literal(s) { + for (var i = 0, list = s; i < list.length; i += 1) { + var c = list[i]; + + var p = peek(); + + if (p !== c) { + throw invalidChar(read()) + } + + read(); + } + } + + function escape() { + var c = peek(); + switch (c) { + case 'b': + read(); + return '\b' + + case 'f': + read(); + return '\f' + + case 'n': + read(); + return '\n' + + case 'r': + read(); + return '\r' + + case 't': + read(); + return '\t' + + case 'v': + read(); + return '\v' + + case '0': + read(); + if (util.isDigit(peek())) { + throw invalidChar(read()) + } + + return '\0' + + case 'x': + read(); + return hexEscape() + + case 'u': + read(); + return unicodeEscape() + + case '\n': + case '\u2028': + case '\u2029': + read(); + return '' + + case '\r': + read(); + if (peek() === '\n') { + read(); + } + + return '' + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + throw invalidChar(read()) + + case undefined: + throw invalidChar(read()) + } + + return read() + } + + function hexEscape() { + var buffer = ''; + var c = peek(); + + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + function unicodeEscape() { + var buffer = ''; + var count = 4; + + while (count-- > 0) { + var c = peek(); + if (!util.isHexDigit(c)) { + throw invalidChar(read()) + } + + buffer += read(); + } + + return String.fromCodePoint(parseInt(buffer, 16)) + } + + var parseStates = { + start: function start() { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforePropertyName: function beforePropertyName() { + switch (token.type) { + case 'identifier': + case 'string': + key = token.value; + parseState = 'afterPropertyName'; + return + + case 'punctuator': + // This code is unreachable since it's handled by the lexState. + // if (token.value !== '}') { + // throw invalidToken() + // } + + pop(); + return + + case 'eof': + throw invalidEOF() + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterPropertyName: function afterPropertyName() { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator' || token.value !== ':') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + parseState = 'beforePropertyValue'; + }, + + beforePropertyValue: function beforePropertyValue() { + if (token.type === 'eof') { + throw invalidEOF() + } + + push(); + }, + + beforeArrayValue: function beforeArrayValue() { + if (token.type === 'eof') { + throw invalidEOF() + } + + if (token.type === 'punctuator' && token.value === ']') { + pop(); + return + } + + push(); + }, + + afterPropertyValue: function afterPropertyValue() { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforePropertyName'; + return + + case '}': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + afterArrayValue: function afterArrayValue() { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'punctuator') { + // throw invalidToken() + // } + + if (token.type === 'eof') { + throw invalidEOF() + } + + switch (token.value) { + case ',': + parseState = 'beforeArrayValue'; + return + + case ']': + pop(); + } + + // This code is unreachable since it's handled by the lexState. + // throw invalidToken() + }, + + end: function end() { + // This code is unreachable since it's handled by the lexState. + // if (token.type !== 'eof') { + // throw invalidToken() + // } + }, + }; + + function push() { + var value; + + switch (token.type) { + case 'punctuator': + switch (token.value) { + case '{': + value = {}; + break + + case '[': + value = []; + break + } + + break + + case 'null': + case 'boolean': + case 'numeric': + case 'string': + value = token.value; + break + + // This code is unreachable. + // default: + // throw invalidToken() + } + + if (root === undefined) { + root = value; + } else { + var parent = stack[stack.length - 1]; + if (Array.isArray(parent)) { + parent.push(value); + } else { + Object.defineProperty(parent, key, { + value: value, + writable: true, + enumerable: true, + configurable: true, + }); + } + } + + if (value !== null && typeof value === 'object') { + stack.push(value); + + if (Array.isArray(value)) { + parseState = 'beforeArrayValue'; + } else { + parseState = 'beforePropertyName'; + } + } else { + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + } + + function pop() { + stack.pop(); + + var current = stack[stack.length - 1]; + if (current == null) { + parseState = 'end'; + } else if (Array.isArray(current)) { + parseState = 'afterArrayValue'; + } else { + parseState = 'afterPropertyValue'; + } + } + + // This code is unreachable. + // function invalidParseState () { + // return new Error(`JSON5: invalid parse state '${parseState}'`) + // } + + // This code is unreachable. + // function invalidLexState (state) { + // return new Error(`JSON5: invalid lex state '${state}'`) + // } + + function invalidChar(c) { + if (c === undefined) { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column)) + } + + function invalidEOF() { + return syntaxError(("JSON5: invalid end of input at " + line + ":" + column)) + } + + // This code is unreachable. + // function invalidToken () { + // if (token.type === 'eof') { + // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`) + // } + + // const c = String.fromCodePoint(token.value.codePointAt(0)) + // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`) + // } + + function invalidIdentifier() { + column -= 5; + return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column)) + } + + function separatorChar(c) { + console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping")); + } + + function formatChar(c) { + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + if (replacements[c]) { + return replacements[c] + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + return '\\x' + ('00' + hexString).substring(hexString.length) + } + + return c + } + + function syntaxError(message) { + var err = new SyntaxError(message); + err.lineNumber = line; + err.columnNumber = column; + return err + } + + var stringify = function stringify(value, replacer, space) { + var stack = []; + var indent = ''; + var propertyList; + var replacerFunc; + var gap = ''; + var quote; + + if ( + replacer != null && + typeof replacer === 'object' && + !Array.isArray(replacer) + ) { + space = replacer.space; + quote = replacer.quote; + replacer = replacer.replacer; + } + + if (typeof replacer === 'function') { + replacerFunc = replacer; + } else if (Array.isArray(replacer)) { + propertyList = []; + for (var i = 0, list = replacer; i < list.length; i += 1) { + var v = list[i]; + + var item = (void 0); + + if (typeof v === 'string') { + item = v; + } else if ( + typeof v === 'number' || + v instanceof String || + v instanceof Number + ) { + item = String(v); + } + + if (item !== undefined && propertyList.indexOf(item) < 0) { + propertyList.push(item); + } + } + } + + if (space instanceof Number) { + space = Number(space); + } else if (space instanceof String) { + space = String(space); + } + + if (typeof space === 'number') { + if (space > 0) { + space = Math.min(10, Math.floor(space)); + gap = ' '.substr(0, space); + } + } else if (typeof space === 'string') { + gap = space.substr(0, 10); + } + + return serializeProperty('', { + '': value + }) + + function serializeProperty(key, holder) { + var value = holder[key]; + if (value != null) { + if (typeof value.toJSON5 === 'function') { + value = value.toJSON5(key); + } else if (typeof value.toJSON === 'function') { + value = value.toJSON(key); + } + } + + if (replacerFunc) { + value = replacerFunc.call(holder, key, value); + } + + if (value instanceof Number) { + value = Number(value); + } else if (value instanceof String) { + value = String(value); + } else if (value instanceof Boolean) { + value = value.valueOf(); + } + + switch (value) { + case null: + return 'null' + case true: + return 'true' + case false: + return 'false' + } + + if (typeof value === 'string') { + return quoteString(value, false) + } + + if (typeof value === 'number') { + return String(value) + } + + if (typeof value === 'object') { + return Array.isArray(value) ? serializeArray(value) : serializeObject(value) + } + + return undefined + } + + function quoteString(value) { + var quotes = { + "'": 0.1, + '"': 0.2, + }; + + var replacements = { + "'": "\\'", + '"': '\\"', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\v': '\\v', + '\0': '\\0', + '\u2028': '\\u2028', + '\u2029': '\\u2029', + }; + + var product = ''; + + for (var i = 0; i < value.length; i++) { + var c = value[i]; + switch (c) { + case "'": + case '"': + quotes[c]++; + product += c; + continue + + case '\0': + if (util.isDigit(value[i + 1])) { + product += '\\x00'; + continue + } + } + + if (replacements[c]) { + product += replacements[c]; + continue + } + + if (c < ' ') { + var hexString = c.charCodeAt(0).toString(16); + product += '\\x' + ('00' + hexString).substring(hexString.length); + continue + } + + product += c; + } + + var quoteChar = quote || Object.keys(quotes).reduce(function(a, b) { + return (quotes[a] < quotes[b]) ? a : b; + }); + + product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]); + + return quoteChar + product + quoteChar + } + + function serializeObject(value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var keys = propertyList || Object.keys(value); + var partial = []; + for (var i = 0, list = keys; i < list.length; i += 1) { + var key = list[i]; + + var propertyString = serializeProperty(key, value); + if (propertyString !== undefined) { + var member = serializeKey(key) + ':'; + if (gap !== '') { + member += ' '; + } + member += propertyString; + partial.push(member); + } + } + + var final; + if (partial.length === 0) { + final = '{}'; + } else { + var properties; + if (gap === '') { + properties = partial.join(','); + final = '{' + properties + '}'; + } else { + var separator = ',\n' + indent; + properties = partial.join(separator); + final = '{\n' + indent + properties + ',\n' + stepback + '}'; + } + } + + stack.pop(); + indent = stepback; + return final + } + + function serializeKey(key) { + if (key.length === 0) { + return quoteString(key, true) + } + + var firstChar = String.fromCodePoint(key.codePointAt(0)); + if (!util.isIdStartChar(firstChar)) { + return quoteString(key, true) + } + + for (var i = firstChar.length; i < key.length; i++) { + if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) { + return quoteString(key, true) + } + } + + return key + } + + function serializeArray(value) { + if (stack.indexOf(value) >= 0) { + throw TypeError('Converting circular structure to JSON5') + } + + stack.push(value); + + var stepback = indent; + indent = indent + gap; + + var partial = []; + for (var i = 0; i < value.length; i++) { + var propertyString = serializeProperty(String(i), value); + partial.push((propertyString !== undefined) ? propertyString : 'null'); + } + + var final; + if (partial.length === 0) { + final = '[]'; + } else { + if (gap === '') { + var properties = partial.join(','); + final = '[' + properties + ']'; + } else { + var separator = ',\n' + indent; + var properties$1 = partial.join(separator); + final = '[\n' + indent + properties$1 + ',\n' + stepback + ']'; + } + } + + stack.pop(); + indent = stepback; + return final + } + }; + + var JSON5 = { + parse: parse, + stringify: stringify, + }; + + var lib = JSON5; + + var es5 = lib; + + return es5; + +}))); \ No newline at end of file diff --git a/xiaosa/JS/jsonpathplus.min.js b/xiaosa/JS/jsonpathplus.min.js new file mode 100644 index 00000000..1feb3265 --- /dev/null +++ b/xiaosa/JS/jsonpathplus.min.js @@ -0,0 +1,1277 @@ +! function(e, t) { + "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).JSONPath = {}) +}(this, function(e) { + "use strict"; + + function n(e, t, r) { + return t = l(t), + function(e, t) { + { + if (t && ("object" == typeof t || "function" == typeof t)) return t; + if (void 0 !== t) throw new TypeError("Derived constructors may only return object or undefined") + } + return function(e) { + if (void 0 !== e) return e; + throw new ReferenceError("this hasn't been initialised - super() hasn't been called") + }(e) + }(e, i() ? Reflect.construct(t, r || [], l(e).constructor) : t.apply(e, r)) + } + + function o(e, t, r) { + if (i()) return Reflect.construct.apply(null, arguments); + var n = [null]; + n.push.apply(n, t); + n = new(e.bind.apply(e, n)); + return r && h(n, r.prototype), n + } + + function i() { + try { + var e = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {})) + } catch (e) {} + return (i = function() { + return !!e + })() + } + + function t(t, e) { + var r, n = Object.keys(t); + return Object.getOwnPropertySymbols && (r = Object.getOwnPropertySymbols(t), e && (r = r.filter(function(e) { + return Object.getOwnPropertyDescriptor(t, e).enumerable + })), n.push.apply(n, r)), n + } + + function r(n) { + for (var e = 1; e < arguments.length; e++) { + var i = null != arguments[e] ? arguments[e] : {}; + e % 2 ? t(Object(i), !0).forEach(function(e) { + var t, r; + t = n, e = i[r = e], (r = a(r)) in t ? Object.defineProperty(t, r, { + value: e, + enumerable: !0, + configurable: !0, + writable: !0 + }) : t[r] = e + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(n, Object.getOwnPropertyDescriptors(i)) : t(Object(i)).forEach(function(e) { + Object.defineProperty(n, e, Object.getOwnPropertyDescriptor(i, e)) + }) + } + return n + } + + function a(e) { + e = function(e, t) { + if ("object" != typeof e || !e) return e; + var r = e[Symbol.toPrimitive]; + if (void 0 === r) return ("string" === t ? String : Number)(e); + if ("object" != typeof(t = r.call(e, t || "default"))) return t; + throw new TypeError("@@toPrimitive must return a primitive value.") + }(e, "string"); + return "symbol" == typeof e ? e : e + "" + } + + function C(e) { + return (C = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { + return typeof e + } : function(e) { + return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e + })(e) + } + + function s(e, t) { + if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") + } + + function u(e, t) { + for (var r = 0; r < t.length; r++) { + var n = t[r]; + n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, a(n.key), n) + } + } + + function c(e, t, r) { + return t && u(e.prototype, t), r && u(e, r), Object.defineProperty(e, "prototype", { + writable: !1 + }), e + } + + function l(e) { + return (l = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(e) { + return e.__proto__ || Object.getPrototypeOf(e) + })(e) + } + + function h(e, t) { + return (h = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(e, t) { + return e.__proto__ = t, e + })(e, t) + } + + function p(e) { + var r = "function" == typeof Map ? new Map : void 0; + return (p = function(e) { + if (null === e || ! function(t) { + try { + return -1 !== Function.toString.call(t).indexOf("[native code]") + } catch (e) { + return "function" == typeof t + } + }(e)) return e; + if ("function" != typeof e) throw new TypeError("Super expression must either be null or a function"); + if (void 0 !== r) { + if (r.has(e)) return r.get(e); + r.set(e, t) + } + + function t() { + return o(e, arguments, l(this).constructor) + } + return t.prototype = Object.create(e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), h(t, e) + })(e) + } + + function f(e) { + return function(e) { + if (Array.isArray(e)) return d(e) + }(e) || function(e) { + if ("undefined" != typeof Symbol && null != e[Symbol.iterator] || null != e["@@iterator"]) return Array.from(e) + }(e) || O(e) || function() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") + }() + } + + function O(e, t) { + if (e) { + if ("string" == typeof e) return d(e, t); + var r = Object.prototype.toString.call(e).slice(8, -1); + return "Object" === r && e.constructor && (r = e.constructor.name), "Map" === r || "Set" === r ? Array.from(e) : "Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r) ? d(e, t) : void 0 + } + } + + function d(e, t) { + (null == t || t > e.length) && (t = e.length); + for (var r = 0, n = new Array(t); r < t; r++) n[r] = e[r]; + return n + } + var y = function() { + return c(function e() { + s(this, e) + }, [{ + key: "add", + value: function(e, t, r) { + if ("string" != typeof e) + for (var n in e) this.add(n, e[n], t); + else(Array.isArray(e) ? e : [e]).forEach(function(e) { + this[e] = this[e] || [], t && this[e][r ? "unshift" : "push"](t) + }, this) + } + }, { + key: "run", + value: function(e, t) { + this[e] = this[e] || [], this[e].forEach(function(e) { + e.call(t && t.context ? t.context : t, t) + }) + } + }]) + }(), + b = function() { + return c(function e(t) { + s(this, e), this.jsep = t, this.registered = {} + }, [{ + key: "register", + value: function() { + for (var t = this, e = arguments.length, r = new Array(e), n = 0; n < e; n++) r[n] = arguments[n]; + r.forEach(function(e) { + if ("object" !== C(e) || !e.name || !e.init) throw new Error("Invalid JSEP plugin format"); + t.registered[e.name] || (e.init(t.jsep), t.registered[e.name] = e) + }) + } + }]) + }(), + v = function() { + function l(e) { + s(this, l), this.expr = e, this.index = 0 + } + return c(l, [{ + key: "char", + get: function() { + return this.expr.charAt(this.index) + } + }, { + key: "code", + get: function() { + return this.expr.charCodeAt(this.index) + } + }, { + key: "throwError", + value: function(e) { + var t = new Error(e + " at character " + this.index); + throw t.index = this.index, t.description = e, t + } + }, { + key: "runHook", + value: function(e, t) { + if (l.hooks[e]) { + var r = { + context: this, + node: t + }; + return l.hooks.run(e, r), r.node + } + return t + } + }, { + key: "searchHook", + value: function(e) { + if (l.hooks[e]) { + var t = { + context: this + }; + return l.hooks[e].find(function(e) { + return e.call(t.context, t), t.node + }), t.node + } + } + }, { + key: "gobbleSpaces", + value: function() { + for (var e = this.code; e === l.SPACE_CODE || e === l.TAB_CODE || e === l.LF_CODE || e === l.CR_CODE;) e = this.expr.charCodeAt(++this.index); + this.runHook("gobble-spaces") + } + }, { + key: "parse", + value: function() { + this.runHook("before-all"); + var e = this.gobbleExpressions(), + e = 1 === e.length ? e[0] : { + type: l.COMPOUND, + body: e + }; + return this.runHook("after-all", e) + } + }, { + key: "gobbleExpressions", + value: function(e) { + for (var t, r, n = []; this.index < this.expr.length;) + if ((t = this.code) === l.SEMCOL_CODE || t === l.COMMA_CODE) this.index++; + else if (r = this.gobbleExpression()) n.push(r); + else if (this.index < this.expr.length) { + if (t === e) break; + this.throwError('Unexpected "' + this.char + '"') + } + return n + } + }, { + key: "gobbleExpression", + value: function() { + var e = this.searchHook("gobble-expression") || this.gobbleBinaryExpression(); + return this.gobbleSpaces(), this.runHook("after-expression", e) + } + }, { + key: "gobbleBinaryOp", + value: function() { + this.gobbleSpaces(); + for (var e = this.expr.substr(this.index, l.max_binop_len), t = e.length; 0 < t;) { + if (l.binary_ops.hasOwnProperty(e) && (!l.isIdentifierStart(this.code) || this.index + e.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + e.length)))) return this.index += t, e; + e = e.substr(0, --t) + } + return !1 + } + }, { + key: "gobbleBinaryExpression", + value: function() { + var e, t, r, n, i, o, a, s, u, c = this.gobbleToken(); + if (!c) return c; + if (!(t = this.gobbleBinaryOp())) return c; + for (i = { + value: t, + prec: l.binaryPrecedence(t), + right_a: l.right_associative.has(t) + }, (o = this.gobbleToken()) || this.throwError("Expected expression after " + t), n = [c, i, o]; t = this.gobbleBinaryOp();) { + if (0 === (r = l.binaryPrecedence(t))) { + this.index -= t.length; + break + } + i = { + value: t, + prec: r, + right_a: l.right_associative.has(t) + }, s = t; + for (; 2 < n.length && (u = n[n.length - 2], i.right_a && u.right_a ? r > u.prec : r <= u.prec);) o = n.pop(), t = n.pop().value, c = n.pop(), e = { + type: l.BINARY_EXP, + operator: t, + left: c, + right: o + }, n.push(e); + (e = this.gobbleToken()) || this.throwError("Expected expression after " + s), n.push(i, e) + } + for (e = n[a = n.length - 1]; 1 < a;) e = { + type: l.BINARY_EXP, + operator: n[a - 1].value, + left: n[a - 2], + right: e + }, a -= 2; + return e + } + }, { + key: "gobbleToken", + value: function() { + var e, t, r, n; + if (this.gobbleSpaces(), n = this.searchHook("gobble-token")) return this.runHook("after-token", n); + if (e = this.code, l.isDecimalDigit(e) || e === l.PERIOD_CODE) return this.gobbleNumericLiteral(); + if (e === l.SQUOTE_CODE || e === l.DQUOTE_CODE) n = this.gobbleStringLiteral(); + else if (e === l.OBRACK_CODE) n = this.gobbleArray(); + else { + for (r = (t = this.expr.substr(this.index, l.max_unop_len)).length; 0 < r;) { + if (l.unary_ops.hasOwnProperty(t) && (!l.isIdentifierStart(this.code) || this.index + t.length < this.expr.length && !l.isIdentifierPart(this.expr.charCodeAt(this.index + t.length)))) { + this.index += r; + var i = this.gobbleToken(); + return i || this.throwError("missing unaryOp argument"), this.runHook("after-token", { + type: l.UNARY_EXP, + operator: t, + argument: i, + prefix: !0 + }) + } + t = t.substr(0, --r) + } + l.isIdentifierStart(e) ? (n = this.gobbleIdentifier(), l.literals.hasOwnProperty(n.name) ? n = { + type: l.LITERAL, + value: l.literals[n.name], + raw: n.name + } : n.name === l.this_str && (n = { + type: l.THIS_EXP + })) : e === l.OPAREN_CODE && (n = this.gobbleGroup()) + } + return n ? (n = this.gobbleTokenProperty(n), this.runHook("after-token", n)) : this.runHook("after-token", !1) + } + }, { + key: "gobbleTokenProperty", + value: function(e) { + this.gobbleSpaces(); + for (var t = this.code; t === l.PERIOD_CODE || t === l.OBRACK_CODE || t === l.OPAREN_CODE || t === l.QUMARK_CODE;) { + var r = void 0; + if (t === l.QUMARK_CODE) { + if (this.expr.charCodeAt(this.index + 1) !== l.PERIOD_CODE) break; + r = !0, this.index += 2, this.gobbleSpaces(), t = this.code + } + this.index++, t === l.OBRACK_CODE ? (e = { + type: l.MEMBER_EXP, + computed: !0, + object: e, + property: this.gobbleExpression() + }, this.gobbleSpaces(), (t = this.code) !== l.CBRACK_CODE && this.throwError("Unclosed ["), this.index++) : t === l.OPAREN_CODE ? e = { + type: l.CALL_EXP, + arguments: this.gobbleArguments(l.CPAREN_CODE), + callee: e + } : t !== l.PERIOD_CODE && !r || (r && this.index--, this.gobbleSpaces(), e = { + type: l.MEMBER_EXP, + computed: !1, + object: e, + property: this.gobbleIdentifier() + }), r && (e.optional = !0), this.gobbleSpaces(), t = this.code + } + return e + } + }, { + key: "gobbleNumericLiteral", + value: function() { + for (var e, t = ""; l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); + if (this.code === l.PERIOD_CODE) + for (t += this.expr.charAt(this.index++); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); + if ("e" === (e = this.char) || "E" === e) { + for (t += this.expr.charAt(this.index++), "+" !== (e = this.char) && "-" !== e || (t += this.expr.charAt(this.index++)); l.isDecimalDigit(this.code);) t += this.expr.charAt(this.index++); + l.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) || this.throwError("Expected exponent (" + t + this.char + ")") + } + return e = this.code, l.isIdentifierStart(e) ? this.throwError("Variable names cannot start with a number (" + t + this.char + ")") : (e === l.PERIOD_CODE || 1 === t.length && t.charCodeAt(0) === l.PERIOD_CODE) && this.throwError("Unexpected period"), { + type: l.LITERAL, + value: parseFloat(t), + raw: t + } + } + }, { + key: "gobbleStringLiteral", + value: function() { + for (var e = "", t = this.index, r = this.expr.charAt(this.index++), n = !1; this.index < this.expr.length;) { + var i = this.expr.charAt(this.index++); + if (i === r) { + n = !0; + break + } + if ("\\" === i) switch (i = this.expr.charAt(this.index++)) { + case "n": + e += "\n"; + break; + case "r": + e += "\r"; + break; + case "t": + e += "\t"; + break; + case "b": + e += "\b"; + break; + case "f": + e += "\f"; + break; + case "v": + e += "\v"; + break; + default: + e += i + } else e += i + } + return n || this.throwError('Unclosed quote after "' + e + '"'), { + type: l.LITERAL, + value: e, + raw: this.expr.substring(t, this.index) + } + } + }, { + key: "gobbleIdentifier", + value: function() { + var e = this.code, + t = this.index; + for (l.isIdentifierStart(e) ? this.index++ : this.throwError("Unexpected " + this.char); this.index < this.expr.length && (e = this.code, l.isIdentifierPart(e));) this.index++; + return { + type: l.IDENTIFIER, + name: this.expr.slice(t, this.index) + } + } + }, { + key: "gobbleArguments", + value: function(e) { + for (var t = [], r = !1, n = 0; this.index < this.expr.length;) { + this.gobbleSpaces(); + var i = this.code; + if (i === e) { + r = !0, this.index++, e === l.CPAREN_CODE && n && n >= t.length && this.throwError("Unexpected token " + String.fromCharCode(e)); + break + } + if (i === l.COMMA_CODE) { + if (this.index++, ++n !== t.length) + if (e === l.CPAREN_CODE) this.throwError("Unexpected token ,"); + else if (e === l.CBRACK_CODE) + for (var o = t.length; o < n; o++) t.push(null) + } else t.length !== n && 0 !== n ? this.throwError("Expected comma") : ((i = this.gobbleExpression()) && i.type !== l.COMPOUND || this.throwError("Expected comma"), t.push(i)) + } + return r || this.throwError("Expected " + String.fromCharCode(e)), t + } + }, { + key: "gobbleGroup", + value: function() { + this.index++; + var e = this.gobbleExpressions(l.CPAREN_CODE); + if (this.code === l.CPAREN_CODE) return this.index++, 1 === e.length ? e[0] : !!e.length && { + type: l.SEQUENCE_EXP, + expressions: e + }; + this.throwError("Unclosed (") + } + }, { + key: "gobbleArray", + value: function() { + return this.index++, { + type: l.ARRAY_EXP, + elements: this.gobbleArguments(l.CBRACK_CODE) + } + } + }], [{ + key: "version", + get: function() { + return "1.3.8" + } + }, { + key: "toString", + value: function() { + return "JavaScript Expression Parser (JSEP) v" + l.version + } + }, { + key: "addUnaryOp", + value: function(e) { + return l.max_unop_len = Math.max(e.length, l.max_unop_len), l.unary_ops[e] = 1, l + } + }, { + key: "addBinaryOp", + value: function(e, t, r) { + return l.max_binop_len = Math.max(e.length, l.max_binop_len), l.binary_ops[e] = t, r ? l.right_associative.add(e) : l.right_associative.delete(e), l + } + }, { + key: "addIdentifierChar", + value: function(e) { + return l.additional_identifier_chars.add(e), l + } + }, { + key: "addLiteral", + value: function(e, t) { + return l.literals[e] = t, l + } + }, { + key: "removeUnaryOp", + value: function(e) { + return delete l.unary_ops[e], e.length === l.max_unop_len && (l.max_unop_len = l.getMaxKeyLen(l.unary_ops)), l + } + }, { + key: "removeAllUnaryOps", + value: function() { + return l.unary_ops = {}, l.max_unop_len = 0, l + } + }, { + key: "removeIdentifierChar", + value: function(e) { + return l.additional_identifier_chars.delete(e), l + } + }, { + key: "removeBinaryOp", + value: function(e) { + return delete l.binary_ops[e], e.length === l.max_binop_len && (l.max_binop_len = l.getMaxKeyLen(l.binary_ops)), l.right_associative.delete(e), l + } + }, { + key: "removeAllBinaryOps", + value: function() { + return l.binary_ops = {}, l.max_binop_len = 0, l + } + }, { + key: "removeLiteral", + value: function(e) { + return delete l.literals[e], l + } + }, { + key: "removeAllLiterals", + value: function() { + return l.literals = {}, l + } + }, { + key: "parse", + value: function(e) { + return new l(e).parse() + } + }, { + key: "getMaxKeyLen", + value: function(e) { + return Math.max.apply(Math, [0].concat(f(Object.keys(e).map(function(e) { + return e.length + })))) + } + }, { + key: "isDecimalDigit", + value: function(e) { + return 48 <= e && e <= 57 + } + }, { + key: "binaryPrecedence", + value: function(e) { + return l.binary_ops[e] || 0 + } + }, { + key: "isIdentifierStart", + value: function(e) { + return 65 <= e && e <= 90 || 97 <= e && e <= 122 || 128 <= e && !l.binary_ops[String.fromCharCode(e)] || l.additional_identifier_chars.has(String.fromCharCode(e)) + } + }, { + key: "isIdentifierPart", + value: function(e) { + return l.isIdentifierStart(e) || l.isDecimalDigit(e) + } + }]) + }(), + y = new y; + Object.assign(v, { + hooks: y, + plugins: new b(v), + COMPOUND: "Compound", + SEQUENCE_EXP: "SequenceExpression", + IDENTIFIER: "Identifier", + MEMBER_EXP: "MemberExpression", + LITERAL: "Literal", + THIS_EXP: "ThisExpression", + CALL_EXP: "CallExpression", + UNARY_EXP: "UnaryExpression", + BINARY_EXP: "BinaryExpression", + ARRAY_EXP: "ArrayExpression", + TAB_CODE: 9, + LF_CODE: 10, + CR_CODE: 13, + SPACE_CODE: 32, + PERIOD_CODE: 46, + COMMA_CODE: 44, + SQUOTE_CODE: 39, + DQUOTE_CODE: 34, + OPAREN_CODE: 40, + CPAREN_CODE: 41, + OBRACK_CODE: 91, + CBRACK_CODE: 93, + QUMARK_CODE: 63, + SEMCOL_CODE: 59, + COLON_CODE: 58, + unary_ops: { + "-": 1, + "!": 1, + "~": 1, + "+": 1 + }, + binary_ops: { + "||": 1, + "&&": 2, + "|": 3, + "^": 4, + "&": 5, + "==": 6, + "!=": 6, + "===": 6, + "!==": 6, + "<": 7, + ">": 7, + "<=": 7, + ">=": 7, + "<<": 8, + ">>": 8, + ">>>": 8, + "+": 9, + "-": 9, + "*": 10, + "/": 10, + "%": 10 + }, + right_associative: new Set, + additional_identifier_chars: new Set(["$", "_"]), + literals: { + true: !0, + false: !1, + null: null + }, + this_str: "this" + }), v.max_unop_len = v.getMaxKeyLen(v.unary_ops), v.max_binop_len = v.getMaxKeyLen(v.binary_ops); + var E = function(e) { + return new v(e).parse() + }; + Object.getOwnPropertyNames(v).forEach(function(e) { + void 0 === E[e] && "prototype" !== e && (E[e] = v[e]) + }), E.Jsep = v; + b = { + name: "ternary", + init: function(o) { + o.hooks.add("after-expression", function(e) { + if (e.node && this.code === o.QUMARK_CODE) { + this.index++; + var t = e.node, + r = this.gobbleExpression(); + if (r || this.throwError("Expected expression"), this.gobbleSpaces(), this.code === o.COLON_CODE) { + this.index++; + var n = this.gobbleExpression(); + if (n || this.throwError("Expected expression"), e.node = { + type: "ConditionalExpression", + test: t, + consequent: r, + alternate: n + }, t.operator && o.binary_ops[t.operator] <= .9) { + for (var i = t; i.right.operator && o.binary_ops[i.right.operator] <= .9;) i = i.right; + e.node.test = i.right, i.right = e.node, e.node = t + } + } else this.throwError("Expected :") + } + }) + } + }; + E.plugins.register(b); + var b = { + name: "regex", + init: function(s) { + s.hooks.add("gobble-token", function(e) { + if (47 === this.code) { + for (var t = ++this.index, r = !1; this.index < this.expr.length;) { + if (47 === this.code && !r) { + for (var n = this.expr.slice(t, this.index), i = ""; ++this.index < this.expr.length;) { + var o = this.code; + if (!(97 <= o && o <= 122 || 65 <= o && o <= 90 || 48 <= o && o <= 57)) break; + i += this.char + } + var a = void 0; + try { + a = new RegExp(n, i) + } catch (e) { + this.throwError(e.message) + } + return e.node = { + type: s.LITERAL, + value: a, + raw: this.expr.slice(t - 1, this.index) + }, e.node = this.gobbleTokenProperty(e.node), e.node + } + this.code === s.OBRACK_CODE ? r = !0 : r && this.code === s.CBRACK_CODE && (r = !1), this.index += 92 === this.code ? 2 : 1 + } + this.throwError("Unclosed Regex") + } + }) + } + }, + g = { + name: "assignment", + assignmentOperators: new Set(["=", "*=", "**=", "/=", "%=", "+=", "-=", "<<=", ">>=", ">>>=", "&=", "^=", "|="]), + updateOperators: [43, 45], + assignmentPrecedence: .9, + init: function(t) { + var n = [t.IDENTIFIER, t.MEMBER_EXP]; + g.assignmentOperators.forEach(function(e) { + return t.addBinaryOp(e, g.assignmentPrecedence, !0) + }), t.hooks.add("gobble-token", function(e) { + var t = this, + r = this.code; + g.updateOperators.some(function(e) { + return e === r && e === t.expr.charCodeAt(t.index + 1) + }) && (this.index += 2, e.node = { + type: "UpdateExpression", + operator: 43 === r ? "++" : "--", + argument: this.gobbleTokenProperty(this.gobbleIdentifier()), + prefix: !0 + }, e.node.argument && n.includes(e.node.argument.type) || this.throwError("Unexpected ".concat(e.node.operator))) + }), t.hooks.add("after-token", function(e) { + var t, r = this; + e.node && (t = this.code, g.updateOperators.some(function(e) { + return e === t && e === r.expr.charCodeAt(r.index + 1) + }) && (n.includes(e.node.type) || this.throwError("Unexpected ".concat(e.node.operator)), this.index += 2, e.node = { + type: "UpdateExpression", + operator: 43 === t ? "++" : "--", + argument: e.node, + prefix: !1 + })) + }), t.hooks.add("after-expression", function(e) { + e.node && ! function t(e) { + g.assignmentOperators.has(e.operator) ? (e.type = "AssignmentExpression", t(e.left), t(e.right)) : e.operator || Object.values(e).forEach(function(e) { + e && "object" === C(e) && t(e) + }) + }(e.node) + }) + } + }, + A = Object.prototype.hasOwnProperty; + + function w(e, t) { + return (e = e.slice()).push(t), e + } + + function k(e, t) { + return (t = t.slice()).unshift(e), t + } + var x = function() { + function r(e) { + var t; + return s(this, r), (t = n(this, r, ['JSONPath should not be called with "new" (it prevents return of (unwrapped) scalar values)'])).avoidNew = !0, t.value = e, t.name = "NewError", t + } + return function(e, t) { + if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function"); + e.prototype = Object.create(t && t.prototype, { + constructor: { + value: e, + writable: !0, + configurable: !0 + } + }), Object.defineProperty(e, "prototype", { + writable: !1 + }), t && h(e, t) + }(r, p(Error)), c(r) + }(); + + function F(e, t, r, n, i) { + if (!(this instanceof F)) try { + return new F(e, t, r, n, i) + } catch (e) { + if (!e.avoidNew) throw e; + return e.value + } + "string" == typeof e && (i = n, n = r, r = t, t = e, e = null); + var o = e && "object" === C(e); + if (e = e || {}, this.json = e.json || r, this.path = e.path || t, this.resultType = e.resultType || "value", this.flatten = e.flatten || !1, this.wrap = !A.call(e, "wrap") || e.wrap, this.sandbox = e.sandbox || {}, this.eval = void 0 === e.eval ? "safe" : e.eval, this.ignoreEvalErrors = void 0 !== e.ignoreEvalErrors && e.ignoreEvalErrors, this.parent = e.parent || null, this.parentProperty = e.parentProperty || null, this.callback = e.callback || n || null, this.otherTypeCallback = e.otherTypeCallback || i || function() { + throw new TypeError("You must supply an otherTypeCallback callback option with the @other() operator.") + }, !1 !== e.autostart) { + var a = { + path: o ? e.path : t + }; + o ? "json" in e && (a.json = e.json) : a.json = r; + a = this.evaluate(a); + if (!a || "object" !== C(a)) throw new x(a); + return a + } + } + F.prototype.evaluate = function(e, t, r, n) { + var i = this, + o = this.parent, + a = this.parentProperty, + s = this.flatten, + u = this.wrap; + if (this.currResultType = this.resultType, this.currEval = this.eval, this.currSandbox = this.sandbox, r = r || this.callback, this.currOtherTypeCallback = n || this.otherTypeCallback, t = t || this.json, (e = e || this.path) && "object" === C(e) && !Array.isArray(e)) { + if (!e.path && "" !== e.path) throw new TypeError('You must supply a "path" property when providing an object argument to JSONPath.evaluate().'); + if (!A.call(e, "json")) throw new TypeError('You must supply a "json" property when providing an object argument to JSONPath.evaluate().'); + t = e.json, s = A.call(e, "flatten") ? e.flatten : s, this.currResultType = A.call(e, "resultType") ? e.resultType : this.currResultType, this.currSandbox = A.call(e, "sandbox") ? e.sandbox : this.currSandbox, u = A.call(e, "wrap") ? e.wrap : u, this.currEval = A.call(e, "eval") ? e.eval : this.currEval, r = A.call(e, "callback") ? e.callback : r, this.currOtherTypeCallback = A.call(e, "otherTypeCallback") ? e.otherTypeCallback : this.currOtherTypeCallback, o = A.call(e, "parent") ? e.parent : o, a = A.call(e, "parentProperty") ? e.parentProperty : a, e = e.path + } + if (o = o || null, a = a || null, Array.isArray(e) && (e = F.toPathString(e)), (e || "" === e) && t) { + e = F.toPathArray(e); + "$" === e[0] && 1 < e.length && e.shift(), this._hasParentSelector = null; + r = this._trace(e, t, ["$"], o, a, r).filter(function(e) { + return e && !e.isParentSelector + }); + return r.length ? u || 1 !== r.length || r[0].hasArrExpr ? r.reduce(function(e, t) { + t = i._getPreferredOutput(t); + return s && Array.isArray(t) ? e = e.concat(t) : e.push(t), e + }, []) : this._getPreferredOutput(r[0]) : u ? [] : void 0 + } + }, F.prototype._getPreferredOutput = function(e) { + var t = this.currResultType; + switch (t) { + case "all": + var r = Array.isArray(e.path) ? e.path : F.toPathArray(e.path); + return e.pointer = F.toPointer(r), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), e; + case "value": + case "parent": + case "parentProperty": + return e[t]; + case "path": + return F.toPathString(e[t]); + case "pointer": + return F.toPointer(e.path); + default: + throw new TypeError("Unknown result type") + } + }, F.prototype._handleCallback = function(e, t, r) { + var n; + t && (n = this._getPreferredOutput(e), e.path = "string" == typeof e.path ? e.path : F.toPathString(e.path), t(n, r, e)) + }, F.prototype._trace = function(t, n, i, o, a, s, e, r) { + var u = this; + if (!t.length) return v = { + path: i, + value: n, + parent: o, + parentProperty: a, + hasArrExpr: e + }, this._handleCallback(v, s, "value"), v; + var c = t[0], + l = t.slice(1), + h = []; + + function p(e) { + Array.isArray(e) ? e.forEach(function(e) { + h.push(e) + }) : h.push(e) + } + if (("string" != typeof c || r) && n && A.call(n, c)) p(this._trace(l, n[c], w(i, c), n, c, s, e)); + else if ("*" === c) this._walk(n, function(e) { + p(u._trace(l, n[e], w(i, e), n, e, s, !0, !0)) + }); + else if (".." === c) p(this._trace(l, n, i, o, a, s, e)), this._walk(n, function(e) { + "object" === C(n[e]) && p(u._trace(t.slice(), n[e], w(i, e), n, e, s, !0)) + }); + else { + if ("^" === c) return this._hasParentSelector = !0, { + path: i.slice(0, -1), + expr: l, + isParentSelector: !0 + }; + if ("~" === c) return v = { + path: w(i, c), + value: a, + parent: o, + parentProperty: null + }, this._handleCallback(v, s, "property"), v; + if ("$" === c) p(this._trace(l, n, i, null, null, s, e)); + else if (/^(\x2D?[0-9]*):(\x2D?[0-9]*):?([0-9]*)$/.test(c)) p(this._slice(c, l, n, i, o, a, s)); + else if (0 === c.indexOf("?(")) { + if (!1 === this.currEval) throw new Error("Eval [?(expr)] prevented in JSONPath expression."); + var f = c.replace(/^\?\(((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?)\)$/, "$1"), + d = /@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])?((?:[\0->@-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))(?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\)\])['\]]/g.exec(f); + d ? this._walk(n, function(e) { + var t = [d[2]], + r = d[1] ? n[e][d[1]] : n[e]; + 0 < u._trace(t, r, i, o, a, s, !0).length && p(u._trace(l, n[e], w(i, e), n, e, s, !0)) + }) : this._walk(n, function(e) { + u._eval(f, n[e], e, i, o, a) && p(u._trace(l, n[e], w(i, e), n, e, s, !0)) + }) + } else if ("(" === c[0]) { + if (!1 === this.currEval) throw new Error("Eval [(expr)] prevented in JSONPath expression."); + p(this._trace(k(this._eval(c, n, i[i.length - 1], i.slice(0, -1), o, a), l), n, i, o, a, s, e)) + } else if ("@" === c[0]) { + var y = !1, + b = c.slice(1, -2); + switch (b) { + case "scalar": + n && ["object", "function"].includes(C(n)) || (y = !0); + break; + case "boolean": + case "string": + case "undefined": + case "function": + C(n) === b && (y = !0); + break; + case "integer": + !Number.isFinite(n) || n % 1 || (y = !0); + break; + case "number": + Number.isFinite(n) && (y = !0); + break; + case "nonFinite": + "number" != typeof n || Number.isFinite(n) || (y = !0); + break; + case "object": + n && C(n) === b && (y = !0); + break; + case "array": + Array.isArray(n) && (y = !0); + break; + case "other": + y = this.currOtherTypeCallback(n, i, o, a); + break; + case "null": + null === n && (y = !0); + break; + default: + throw new TypeError("Unknown value type " + b) + } + if (y) return v = { + path: i, + value: n, + parent: o, + parentProperty: a + }, this._handleCallback(v, s, "value"), v + } else if ("`" === c[0] && n && A.call(n, c.slice(1))) { + var v = c.slice(1); + p(this._trace(l, n[v], w(i, v), n, v, s, e, !0)) + } else if (c.includes(",")) { + var E = function(e, t) { + var r = "undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"]; + if (!r) { + if (Array.isArray(e) || (r = O(e)) || t && e && "number" == typeof e.length) { + r && (e = r); + var n = 0, + t = function() {}; + return { + s: t, + n: function() { + return n >= e.length ? { + done: !0 + } : { + done: !1, + value: e[n++] + } + }, + e: function(e) { + throw e + }, + f: t + } + } + throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.") + } + var i, o = !0, + a = !1; + return { + s: function() { + r = r.call(e) + }, + n: function() { + var e = r.next(); + return o = e.done, e + }, + e: function(e) { + a = !0, i = e + }, + f: function() { + try { + o || null == r.return || r.return() + } finally { + if (a) throw i + } + } + } + }(c.split(",")); + try { + for (E.s(); !(g = E.n()).done;) { + var g = g.value; + p(this._trace(k(g, l), n, i, o, a, s, !0)) + } + } catch (e) { + E.e(e) + } finally { + E.f() + } + } else !r && n && A.call(n, c) && p(this._trace(l, n[c], w(i, c), n, c, s, e, !0)) + } + if (this._hasParentSelector) + for (var x = 0; x < h.length; x++) { + var F = h[x]; + if (F && F.isParentSelector) { + var D = this._trace(F.expr, n, F.path, o, a, s, e); + if (Array.isArray(D)) { + h[x] = D[0]; + for (var _ = D.length, m = 1; m < _; m++) x++, h.splice(x, 0, D[m]) + } else h[x] = D + } + } + return h + }, F.prototype._walk = function(e, t) { + if (Array.isArray(e)) + for (var r = e.length, n = 0; n < r; n++) t(n); + else e && "object" === C(e) && Object.keys(e).forEach(function(e) { + t(e) + }) + }, F.prototype._slice = function(e, t, r, n, i, o, a) { + if (Array.isArray(r)) { + for (var s = r.length, u = e.split(":"), c = u[2] && Number.parseInt(u[2]) || 1, e = u[0] && Number.parseInt(u[0]) || 0, l = u[1] && Number.parseInt(u[1]) || s, e = e < 0 ? Math.max(0, e + s) : Math.min(s, e), l = l < 0 ? Math.max(0, l + s) : Math.min(s, l), h = [], p = e; p < l; p += c) this._trace(k(p, t), r, n, i, o, a, !0).forEach(function(e) { + h.push(e) + }); + return h + } + }, F.prototype._eval = function(t, e, r, n, i, o) { + var a = this; + this.currSandbox._$_parentProperty = o, this.currSandbox._$_parent = i, this.currSandbox._$_property = r, this.currSandbox._$_root = this.json, this.currSandbox._$_v = e; + e = t.includes("@path"); + e && (this.currSandbox._$_path = F.toPathString(n.concat([r]))); + var s = this.currEval + "Script:" + t; + if (!F.cache[s]) { + var u = t.replace(/@parentProperty/g, "_$_parentProperty").replace(/@parent/g, "_$_parent").replace(/@property/g, "_$_property").replace(/@root/g, "_$_root").replace(/@([\t-\r \)\.\[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF])/g, "_$_v$1"); + if (e && (u = u.replace(/@path/g, "_$_path")), "safe" === this.currEval || !0 === this.currEval || void 0 === this.currEval) F.cache[s] = new this.safeVm.Script(u); + else if ("native" === this.currEval) F.cache[s] = new this.vm.Script(u); + else if ("function" == typeof this.currEval && this.currEval.prototype && A.call(this.currEval.prototype, "runInNewContext")) { + e = this.currEval; + F.cache[s] = new e(u) + } else { + if ("function" != typeof this.currEval) throw new TypeError('Unknown "eval" property "'.concat(this.currEval, '"')); + F.cache[s] = { + runInNewContext: function(e) { + return a.currEval(u, e) + } + } + } + } + try { + return F.cache[s].runInNewContext(this.currSandbox) + } catch (e) { + if (this.ignoreEvalErrors) return !1; + throw new Error("jsonPath: " + e.message + ": " + t) + } + }, F.cache = {}, F.toPathString = function(e) { + for (var t = e, r = t.length, n = "$", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += /^[\*0-9]+$/.test(t[i]) ? "[" + t[i] + "]" : "['" + t[i] + "']"); + return n + }, F.toPointer = function(e) { + for (var t = e, r = t.length, n = "", i = 1; i < r; i++) /^(~|\^|@(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\(\))$/.test(t[i]) || (n += "/" + t[i].toString().replace(/~/g, "~0").replace(/\//g, "~1")); + return n + }, F.toPathArray = function(e) { + var t = F.cache; + if (t[e]) return t[e].concat(); + var r = [], + n = e.replace(/@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\(\)/g, ";$&;").replace(/['\[](\??\((?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*?\))['\]](?!(?:[\0-\t\x0B\f\x0E-\u2027\u202A-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])\])/g, function(e, t) { + return "[#" + (r.push(t) - 1) + "]" + }).replace(/\[["']((?:[\0-&\(-\\\^-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)["']\]/g, function(e, t) { + return "['" + t.replace(/\./g, "%@%").replace(/~/g, "%%@@%%") + "']" + }).replace(/~/g, ";~;").replace(/["']?\.["']?(?!(?:[\0-Z\\-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*\])|\[["']?/g, ";").replace(/%@%/g, ".").replace(/%%@@%%/g, "~").replace(/(?:;)?(\^+)(?:;)?/g, function(e, t) { + return ";" + t.split("").join(";") + ";" + }).replace(/;;;|;;/g, ";..;").replace(/;$|'?\]|'$/g, "").split(";").map(function(e) { + var t = e.match(/#([0-9]+)/); + return t && t[1] ? r[t[1]] : e + }); + return t[e] = n, t[e].concat() + }; + E.plugins.register(b, g); + var D = { + evalAst: function(e, t) { + switch (e.type) { + case "BinaryExpression": + case "LogicalExpression": + return D.evalBinaryExpression(e, t); + case "Compound": + return D.evalCompound(e, t); + case "ConditionalExpression": + return D.evalConditionalExpression(e, t); + case "Identifier": + return D.evalIdentifier(e, t); + case "Literal": + return D.evalLiteral(e, t); + case "MemberExpression": + return D.evalMemberExpression(e, t); + case "UnaryExpression": + return D.evalUnaryExpression(e, t); + case "ArrayExpression": + return D.evalArrayExpression(e, t); + case "CallExpression": + return D.evalCallExpression(e, t); + case "AssignmentExpression": + return D.evalAssignmentExpression(e, t); + default: + throw SyntaxError("Unexpected expression", e) + } + }, + evalBinaryExpression: function(e, t) { + return { + "||": function(e, t) { + return e || t() + }, + "&&": function(e, t) { + return e && t() + }, + "|": function(e, t) { + return e | t() + }, + "^": function(e, t) { + return e ^ t() + }, + "&": function(e, t) { + return e & t() + }, + "==": function(e, t) { + return e == t() + }, + "!=": function(e, t) { + return e != t() + }, + "===": function(e, t) { + return e === t() + }, + "!==": function(e, t) { + return e !== t() + }, + "<": function(e, t) { + return e < t() + }, + ">": function(e, t) { + return e > t() + }, + "<=": function(e, t) { + return e <= t() + }, + ">=": function(e, t) { + return e >= t() + }, + "<<": function(e, t) { + return e << t() + }, + ">>": function(e, t) { + return e >> t() + }, + ">>>": function(e, t) { + return e >>> t() + }, + "+": function(e, t) { + return e + t() + }, + "-": function(e, t) { + return e - t() + }, + "*": function(e, t) { + return e * t() + }, + "/": function(e, t) { + return e / t() + }, + "%": function(e, t) { + return e % t() + } + } [e.operator](D.evalAst(e.left, t), function() { + return D.evalAst(e.right, t) + }) + }, + evalCompound: function(e, t) { + for (var r = 0; r < e.body.length; r++) { + "Identifier" === e.body[r].type && ["var", "let", "const"].includes(e.body[r].name) && e.body[r + 1] && "AssignmentExpression" === e.body[r + 1].type && (r += 1); + var n = e.body[r], + i = D.evalAst(n, t) + } + return i + }, + evalConditionalExpression: function(e, t) { + return D.evalAst(e.test, t) ? D.evalAst(e.consequent, t) : D.evalAst(e.alternate, t) + }, + evalIdentifier: function(e, t) { + if (e.name in t) return t[e.name]; + throw ReferenceError("".concat(e.name, " is not defined")) + }, + evalLiteral: function(e) { + return e.value + }, + evalMemberExpression: function(e, t) { + var r = e.computed ? D.evalAst(e.property) : e.property.name, + t = D.evalAst(e.object, t), + r = t[r]; + return "function" == typeof r ? r.bind(t) : r + }, + evalUnaryExpression: function(e, t) { + return { + "-": function(e) { + return -D.evalAst(e, t) + }, + "!": function(e) { + return !D.evalAst(e, t) + }, + "~": function(e) { + return ~D.evalAst(e, t) + }, + "+": function(e) { + return +D.evalAst(e, t) + } + } [e.operator](e.argument) + }, + evalArrayExpression: function(e, t) { + return e.elements.map(function(e) { + return D.evalAst(e, t) + }) + }, + evalCallExpression: function(e, t) { + var r = e.arguments.map(function(e) { + return D.evalAst(e, t) + }); + return D.evalAst(e.callee, t).apply(void 0, f(r)) + }, + evalAssignmentExpression: function(e, t) { + if ("Identifier" !== e.left.type) throw SyntaxError("Invalid left-hand side in assignment"); + var r = e.left.name, + e = D.evalAst(e.right, t); + return t[r] = e, t[r] + } + }, + b = function() { + return c(function e(t) { + s(this, e), this.code = t, this.ast = E(this.code) + }, [{ + key: "runInNewContext", + value: function(e) { + e = r({}, e); + return D.evalAst(this.ast, e) + } + }]) + }(); + F.prototype.vm = { + Script: function() { + return c(function e(t) { + s(this, e), this.code = t + }, [{ + key: "runInNewContext", + value: function(n) { + var e = this.code, + t = Object.keys(n), + r = []; + ! function(e, t, r) { + for (var n = e.length, i = 0; i < n; i++) r(e[i]) && t.push(e.splice(i--, 1)[0]) + }(t, r, function(e) { + return "function" == typeof n[e] + }); + var i = t.map(function(e) { + return n[e] + }), + r = r.reduce(function(e, t) { + var r = n[t].toString(); + return /function/.test(r) || (r = "function " + r), "var " + t + "=" + r + ";" + e + }, ""); + /(["'])use strict\1/.test(e = r + e) || t.includes("arguments") || (e = "var arguments = undefined;" + e); + r = (e = e.replace(/;[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*$/, "")).lastIndexOf(";"), e = -1 < r ? e.slice(0, r + 1) + " return " + e.slice(r + 1) : " return " + e; + return o(Function, t.concat([e])).apply(void 0, f(i)) + } + }]) + }() + }, F.prototype.safeVm = { + Script: b + }, e.JSONPath = F, e.SafeScript = b +}); \ No newline at end of file diff --git a/xiaosa/JS/node-rsa.js b/xiaosa/JS/node-rsa.js new file mode 100644 index 00000000..4f9396fc --- /dev/null +++ b/xiaosa/JS/node-rsa.js @@ -0,0 +1,5858 @@ +/*! For license information please see node-rsa.bundle.js.LICENSE.txt */ ! function(t, e) { + "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.NODERSA = e() : t.NODERSA = e() +}(globalThis, (() => (() => { + var t = { + 6395: t => { + t.exports = { + newInvalidAsn1Error: function(t) { + var e = new Error; + return e.name = "InvalidAsn1Error", e.message = t || "", e + } + } + }, + 5670: (t, e, r) => { + var n = r(6395), + i = r(6299), + o = r(3319), + s = r(1431); + for (var a in t.exports = { + Reader: o, + Writer: s + }, i) i.hasOwnProperty(a) && (t.exports[a] = i[a]); + for (var f in n) n.hasOwnProperty(f) && (t.exports[f] = n[f]) + }, + 3319: (t, e, r) => { + var n = r(4529), + i = r(4774).Buffer, + o = r(6299), + s = r(6395).newInvalidAsn1Error; + + function a(t) { + if (!t || !i.isBuffer(t)) throw new TypeError("data must be a node Buffer"); + this._buf = t, this._size = t.length, this._len = 0, this._offset = 0 + } + Object.defineProperty(a.prototype, "length", { + enumerable: !0, + get: function() { + return this._len + } + }), Object.defineProperty(a.prototype, "offset", { + enumerable: !0, + get: function() { + return this._offset + } + }), Object.defineProperty(a.prototype, "remain", { + get: function() { + return this._size - this._offset + } + }), Object.defineProperty(a.prototype, "buffer", { + get: function() { + return this._buf.slice(this._offset) + } + }), a.prototype.readByte = function(t) { + if (this._size - this._offset < 1) return null; + var e = 255 & this._buf[this._offset]; + return t || (this._offset += 1), e + }, a.prototype.peek = function() { + return this.readByte(!0) + }, a.prototype.readLength = function(t) { + if (void 0 === t && (t = this._offset), t >= this._size) return null; + var e = 255 & this._buf[t++]; + if (null === e) return null; + if (128 & ~e) this._len = e; + else { + if (0 == (e &= 127)) throw s("Indefinite length not supported"); + if (e > 4) throw s("encoding too long"); + if (this._size - t < e) return null; + this._len = 0; + for (var r = 0; r < e; r++) this._len = (this._len << 8) + (255 & this._buf[t++]) + } + return t + }, a.prototype.readSequence = function(t) { + var e = this.peek(); + if (null === e) return null; + if (void 0 !== t && t !== e) throw s("Expected 0x" + t.toString(16) + ": got 0x" + e.toString(16)); + var r = this.readLength(this._offset + 1); + return null === r ? null : (this._offset = r, e) + }, a.prototype.readInt = function() { + return this._readTag(o.Integer) + }, a.prototype.readBoolean = function() { + return 0 !== this._readTag(o.Boolean) + }, a.prototype.readEnumeration = function() { + return this._readTag(o.Enumeration) + }, a.prototype.readString = function(t, e) { + t || (t = o.OctetString); + var r = this.peek(); + if (null === r) return null; + if (r !== t) throw s("Expected 0x" + t.toString(16) + ": got 0x" + r.toString(16)); + var n = this.readLength(this._offset + 1); + if (null === n) return null; + if (this.length > this._size - n) return null; + if (this._offset = n, 0 === this.length) return e ? i.alloc(0) : ""; + var a = this._buf.slice(this._offset, this._offset + this.length); + return this._offset += this.length, e ? a : a.toString("utf8") + }, a.prototype.readOID = function(t) { + t || (t = o.OID); + var e = this.readString(t, !0); + if (null === e) return null; + for (var r = [], n = 0, i = 0; i < e.length; i++) { + var s = 255 & e[i]; + n <<= 7, n += 127 & s, 128 & s || (r.push(n), n = 0) + } + return n = r.shift(), r.unshift(n % 40), r.unshift(n / 40 | 0), r.join(".") + }, a.prototype._readTag = function(t) { + n.ok(void 0 !== t); + var e = this.peek(); + if (null === e) return null; + if (e !== t) throw s("Expected 0x" + t.toString(16) + ": got 0x" + e.toString(16)); + var r = this.readLength(this._offset + 1); + if (null === r) return null; + if (this.length > 4) throw s("Integer too long: " + this.length); + if (this.length > this._size - r) return null; + this._offset = r; + for (var i = this._buf[this._offset], o = 0, a = 0; a < this.length; a++) o <<= 8, o |= 255 & this._buf[this._offset++]; + return 128 & ~i || 4 === a || (o -= 1 << 8 * a), 0 | o + }, t.exports = a + }, + 6299: t => { + t.exports = { + EOC: 0, + Boolean: 1, + Integer: 2, + BitString: 3, + OctetString: 4, + Null: 5, + OID: 6, + ObjectDescriptor: 7, + External: 8, + Real: 9, + Enumeration: 10, + PDV: 11, + Utf8String: 12, + RelativeOID: 13, + Sequence: 16, + Set: 17, + NumericString: 18, + PrintableString: 19, + T61String: 20, + VideotexString: 21, + IA5String: 22, + UTCTime: 23, + GeneralizedTime: 24, + GraphicString: 25, + VisibleString: 26, + GeneralString: 28, + UniversalString: 29, + CharacterString: 30, + BMPString: 31, + Constructor: 32, + Context: 128 + } + }, + 1431: (t, e, r) => { + var n = r(4529), + i = r(4774).Buffer, + o = r(6299), + s = r(6395).newInvalidAsn1Error, + a = { + size: 1024, + growthFactor: 8 + }; + + function f(t) { + var e, r; + e = a, r = t || {}, n.ok(e), n.equal(typeof e, "object"), n.ok(r), n.equal(typeof r, "object"), Object.getOwnPropertyNames(e).forEach((function(t) { + if (!r[t]) { + var n = Object.getOwnPropertyDescriptor(e, t); + Object.defineProperty(r, t, n) + } + })), t = r, this._buf = i.alloc(t.size || 1024), this._size = this._buf.length, this._offset = 0, this._options = t, this._seq = [] + } + Object.defineProperty(f.prototype, "buffer", { + get: function() { + if (this._seq.length) throw s(this._seq.length + " unended sequence(s)"); + return this._buf.slice(0, this._offset) + } + }), f.prototype.writeByte = function(t) { + if ("number" != typeof t) throw new TypeError("argument must be a Number"); + this._ensure(1), this._buf[this._offset++] = t + }, f.prototype.writeInt = function(t, e) { + if ("number" != typeof t) throw new TypeError("argument must be a Number"); + "number" != typeof e && (e = o.Integer); + for (var r = 4; + (!(4286578688 & t) || -8388608 == (4286578688 & t)) && r > 1;) r--, t <<= 8; + if (r > 4) throw s("BER ints cannot be > 0xffffffff"); + for (this._ensure(2 + r), this._buf[this._offset++] = e, this._buf[this._offset++] = r; r-- > 0;) this._buf[this._offset++] = (4278190080 & t) >>> 24, t <<= 8 + }, f.prototype.writeNull = function() { + this.writeByte(o.Null), this.writeByte(0) + }, f.prototype.writeEnumeration = function(t, e) { + if ("number" != typeof t) throw new TypeError("argument must be a Number"); + return "number" != typeof e && (e = o.Enumeration), this.writeInt(t, e) + }, f.prototype.writeBoolean = function(t, e) { + if ("boolean" != typeof t) throw new TypeError("argument must be a Boolean"); + "number" != typeof e && (e = o.Boolean), this._ensure(3), this._buf[this._offset++] = e, this._buf[this._offset++] = 1, this._buf[this._offset++] = t ? 255 : 0 + }, f.prototype.writeString = function(t, e) { + if ("string" != typeof t) throw new TypeError("argument must be a string (was: " + typeof t + ")"); + "number" != typeof e && (e = o.OctetString); + var r = i.byteLength(t); + this.writeByte(e), this.writeLength(r), r && (this._ensure(r), this._buf.write(t, this._offset), this._offset += r) + }, f.prototype.writeBuffer = function(t, e) { + if ("number" != typeof e) throw new TypeError("tag must be a number"); + if (!i.isBuffer(t)) throw new TypeError("argument must be a buffer"); + this.writeByte(e), this.writeLength(t.length), this._ensure(t.length), t.copy(this._buf, this._offset, 0, t.length), this._offset += t.length + }, f.prototype.writeStringArray = function(t) { + if (!t instanceof Array) throw new TypeError("argument must be an Array[String]"); + var e = this; + t.forEach((function(t) { + e.writeString(t) + })) + }, f.prototype.writeOID = function(t, e) { + if ("string" != typeof t) throw new TypeError("argument must be a string"); + if ("number" != typeof e && (e = o.OID), !/^([0-9]+\.){3,}[0-9]+$/.test(t)) throw new Error("argument is not a valid OID string"); + var r = t.split("."), + n = []; + n.push(40 * parseInt(r[0], 10) + parseInt(r[1], 10)), r.slice(2).forEach((function(t) { + ! function(t, e) { + e < 128 ? t.push(e) : e < 16384 ? (t.push(e >>> 7 | 128), t.push(127 & e)) : e < 2097152 ? (t.push(e >>> 14 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e)) : e < 268435456 ? (t.push(e >>> 21 | 128), t.push(e >>> 14 & 255 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e)) : (t.push(e >>> 28 & 255 | 128), t.push(e >>> 21 & 255 | 128), t.push(e >>> 14 & 255 | 128), t.push(e >>> 7 & 255 | 128), t.push(127 & e)) + }(n, parseInt(t, 10)) + })); + var i = this; + this._ensure(2 + n.length), this.writeByte(e), this.writeLength(n.length), n.forEach((function(t) { + i.writeByte(t) + })) + }, f.prototype.writeLength = function(t) { + if ("number" != typeof t) throw new TypeError("argument must be a Number"); + if (this._ensure(4), t <= 127) this._buf[this._offset++] = t; + else if (t <= 255) this._buf[this._offset++] = 129, this._buf[this._offset++] = t; + else if (t <= 65535) this._buf[this._offset++] = 130, this._buf[this._offset++] = t >> 8, this._buf[this._offset++] = t; + else { + if (!(t <= 16777215)) throw s("Length too long (> 4 bytes)"); + this._buf[this._offset++] = 131, this._buf[this._offset++] = t >> 16, this._buf[this._offset++] = t >> 8, this._buf[this._offset++] = t + } + }, f.prototype.startSequence = function(t) { + "number" != typeof t && (t = o.Sequence | o.Constructor), this.writeByte(t), this._seq.push(this._offset), this._ensure(3), this._offset += 3 + }, f.prototype.endSequence = function() { + var t = this._seq.pop(), + e = t + 3, + r = this._offset - e; + if (r <= 127) this._shift(e, r, -2), this._buf[t] = r; + else if (r <= 255) this._shift(e, r, -1), this._buf[t] = 129, this._buf[t + 1] = r; + else if (r <= 65535) this._buf[t] = 130, this._buf[t + 1] = r >> 8, this._buf[t + 2] = r; + else { + if (!(r <= 16777215)) throw s("Sequence too long"); + this._shift(e, r, 1), this._buf[t] = 131, this._buf[t + 1] = r >> 16, this._buf[t + 2] = r >> 8, this._buf[t + 3] = r + } + }, f.prototype._shift = function(t, e, r) { + n.ok(void 0 !== t), n.ok(void 0 !== e), n.ok(r), this._buf.copy(this._buf, t + r, t, t + e), this._offset += r + }, f.prototype._ensure = function(t) { + if (n.ok(t), this._size - this._offset < t) { + var e = this._size * this._options.growthFactor; + e - this._offset < t && (e += t); + var r = i.alloc(e); + this._buf.copy(r, 0, 0, this._offset), this._buf = r, this._size = e + } + }, t.exports = f + }, + 3100: (t, e, r) => { + var n = r(5670); + t.exports = { + Ber: n, + BerReader: n.Reader, + BerWriter: n.Writer + } + }, + 4529: (t, e, r) => { + "use strict"; + var n = r(1514)(); + + function i(t, e) { + if (t === e) return 0; + for (var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i) + if (t[i] !== e[i]) { + r = t[i], n = e[i]; + break + } return r < n ? -1 : n < r ? 1 : 0 + } + + function o(t) { + return r.g.Buffer && "function" == typeof r.g.Buffer.isBuffer ? r.g.Buffer.isBuffer(t) : !(null == t || !t._isBuffer) + } + var s = r(4591), + a = Object.prototype.hasOwnProperty, + f = Array.prototype.slice, + u = "foo" === function() {}.name; + + function c(t) { + return Object.prototype.toString.call(t) + } + + function h(t) { + return !o(t) && "function" == typeof r.g.ArrayBuffer && ("function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(t) : !!t && (t instanceof DataView || !!(t.buffer && t.buffer instanceof ArrayBuffer))) + } + var p = t.exports = m, + l = /\s*function\s+([^\(\s]*)\s*/; + + function y(t) { + if (s.isFunction(t)) { + if (u) return t.name; + var e = t.toString().match(l); + return e && e[1] + } + } + + function g(t, e) { + return "string" == typeof t ? t.length < e ? t : t.slice(0, e) : t + } + + function d(t) { + if (u || !s.isFunction(t)) return s.inspect(t); + var e = y(t); + return "[Function" + (e ? ": " + e : "") + "]" + } + + function v(t, e, r, n, i) { + throw new p.AssertionError({ + message: r, + actual: t, + expected: e, + operator: n, + stackStartFunction: i + }) + } + + function m(t, e) { + t || v(t, !0, e, "==", p.ok) + } + + function S(t, e, r, n) { + if (t === e) return !0; + if (o(t) && o(e)) return 0 === i(t, e); + if (s.isDate(t) && s.isDate(e)) return t.getTime() === e.getTime(); + if (s.isRegExp(t) && s.isRegExp(e)) return t.source === e.source && t.global === e.global && t.multiline === e.multiline && t.lastIndex === e.lastIndex && t.ignoreCase === e.ignoreCase; + if (null !== t && "object" == typeof t || null !== e && "object" == typeof e) { + if (h(t) && h(e) && c(t) === c(e) && !(t instanceof Float32Array || t instanceof Float64Array)) return 0 === i(new Uint8Array(t.buffer), new Uint8Array(e.buffer)); + if (o(t) !== o(e)) return !1; + var a = (n = n || { + actual: [], + expected: [] + }).actual.indexOf(t); + return -1 !== a && a === n.expected.indexOf(e) || (n.actual.push(t), n.expected.push(e), function(t, e, r, n) { + if (null == t || null == e) return !1; + if (s.isPrimitive(t) || s.isPrimitive(e)) return t === e; + if (r && Object.getPrototypeOf(t) !== Object.getPrototypeOf(e)) return !1; + var i = _(t), + o = _(e); + if (i && !o || !i && o) return !1; + if (i) return S(t = f.call(t), e = f.call(e), r); + var a, u, c = w(t), + h = w(e); + if (c.length !== h.length) return !1; + for (c.sort(), h.sort(), u = c.length - 1; u >= 0; u--) + if (c[u] !== h[u]) return !1; + for (u = c.length - 1; u >= 0; u--) + if (!S(t[a = c[u]], e[a], r, n)) return !1; + return !0 + }(t, e, r, n)) + } + return r ? t === e : t == e + } + + function _(t) { + return "[object Arguments]" == Object.prototype.toString.call(t) + } + + function b(t, e) { + if (!t || !e) return !1; + if ("[object RegExp]" == Object.prototype.toString.call(e)) return e.test(t); + try { + if (t instanceof e) return !0 + } catch (t) {} + return !Error.isPrototypeOf(e) && !0 === e.call({}, t) + } + + function E(t, e, r, n) { + var i; + if ("function" != typeof e) throw new TypeError('"block" argument must be a function'); + "string" == typeof r && (n = r, r = null), i = function(t) { + var e; + try { + t() + } catch (t) { + e = t + } + return e + }(e), n = (r && r.name ? " (" + r.name + ")." : ".") + (n ? " " + n : "."), t && !i && v(i, r, "Missing expected exception" + n); + var o = "string" == typeof n, + a = !t && i && !r; + if ((!t && s.isError(i) && o && b(i, r) || a) && v(i, r, "Got unwanted exception" + n), t && i && r && !b(i, r) || !t && i) throw i + } + p.AssertionError = function(t) { + this.name = "AssertionError", this.actual = t.actual, this.expected = t.expected, this.operator = t.operator, t.message ? (this.message = t.message, this.generatedMessage = !1) : (this.message = g(d(this.actual), 128) + " " + this.operator + " " + g(d(this.expected), 128), this.generatedMessage = !0); + var e = t.stackStartFunction || v; + if (Error.captureStackTrace) Error.captureStackTrace(this, e); + else { + var r = new Error; + if (r.stack) { + var n = r.stack, + i = y(e), + o = n.indexOf("\n" + i); + if (o >= 0) { + var s = n.indexOf("\n", o + 1); + n = n.substring(s + 1) + } + this.stack = n + } + } + }, s.inherits(p.AssertionError, Error), p.fail = v, p.ok = m, p.equal = function(t, e, r) { + t != e && v(t, e, r, "==", p.equal) + }, p.notEqual = function(t, e, r) { + t == e && v(t, e, r, "!=", p.notEqual) + }, p.deepEqual = function(t, e, r) { + S(t, e, !1) || v(t, e, r, "deepEqual", p.deepEqual) + }, p.deepStrictEqual = function(t, e, r) { + S(t, e, !0) || v(t, e, r, "deepStrictEqual", p.deepStrictEqual) + }, p.notDeepEqual = function(t, e, r) { + S(t, e, !1) && v(t, e, r, "notDeepEqual", p.notDeepEqual) + }, p.notDeepStrictEqual = function t(e, r, n) { + S(e, r, !0) && v(e, r, n, "notDeepStrictEqual", t) + }, p.strictEqual = function(t, e, r) { + t !== e && v(t, e, r, "===", p.strictEqual) + }, p.notStrictEqual = function(t, e, r) { + t === e && v(t, e, r, "!==", p.notStrictEqual) + }, p.throws = function(t, e, r) { + E(!0, t, e, r) + }, p.doesNotThrow = function(t, e, r) { + E(!1, t, e, r) + }, p.ifError = function(t) { + if (t) throw t + }, p.strict = n((function t(e, r) { + e || v(e, !0, r, "==", t) + }), p, { + equal: p.strictEqual, + deepEqual: p.deepStrictEqual, + notEqual: p.notStrictEqual, + notDeepEqual: p.notDeepStrictEqual + }), p.strict.strict = p.strict; + var w = Object.keys || function(t) { + var e = []; + for (var r in t) a.call(t, r) && e.push(r); + return e + } + }, + 6100: t => { + "function" == typeof Object.create ? t.exports = function(t, e) { + t.super_ = e, t.prototype = Object.create(e.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }) + } : t.exports = function(t, e) { + t.super_ = e; + var r = function() {}; + r.prototype = e.prototype, t.prototype = new r, t.prototype.constructor = t + } + }, + 3845: t => { + t.exports = function(t) { + return t && "object" == typeof t && "function" == typeof t.copy && "function" == typeof t.fill && "function" == typeof t.readUInt8 + } + }, + 4591: (t, e, r) => { + var n = r(5606), + i = /%[sdj%]/g; + e.format = function(t) { + if (!v(t)) { + for (var e = [], r = 0; r < arguments.length; r++) e.push(a(arguments[r])); + return e.join(" ") + } + r = 1; + for (var n = arguments, o = n.length, s = String(t).replace(i, (function(t) { + if ("%%" === t) return "%"; + if (r >= o) return t; + switch (t) { + case "%s": + return String(n[r++]); + case "%d": + return Number(n[r++]); + case "%j": + try { + return JSON.stringify(n[r++]) + } catch (t) { + return "[Circular]" + } + default: + return t + } + })), f = n[r]; r < o; f = n[++r]) g(f) || !_(f) ? s += " " + f : s += " " + a(f); + return s + }, e.deprecate = function(t, i) { + if (m(r.g.process)) return function() { + return e.deprecate(t, i).apply(this, arguments) + }; + if (!0 === n.noDeprecation) return t; + var o = !1; + return function() { + if (!o) { + if (n.throwDeprecation) throw new Error(i); + n.traceDeprecation ? console.trace(i) : console.error(i), o = !0 + } + return t.apply(this, arguments) + } + }; + var o, s = {}; + + function a(t, r) { + var n = { + seen: [], + stylize: u + }; + return arguments.length >= 3 && (n.depth = arguments[2]), arguments.length >= 4 && (n.colors = arguments[3]), y(r) ? n.showHidden = r : r && e._extend(n, r), m(n.showHidden) && (n.showHidden = !1), m(n.depth) && (n.depth = 2), m(n.colors) && (n.colors = !1), m(n.customInspect) && (n.customInspect = !0), n.colors && (n.stylize = f), c(n, t, n.depth) + } + + function f(t, e) { + var r = a.styles[e]; + return r ? "[" + a.colors[r][0] + "m" + t + "[" + a.colors[r][1] + "m" : t + } + + function u(t, e) { + return t + } + + function c(t, r, n) { + if (t.customInspect && r && w(r.inspect) && r.inspect !== e.inspect && (!r.constructor || r.constructor.prototype !== r)) { + var i = r.inspect(n, t); + return v(i) || (i = c(t, i, n)), i + } + var o = function(t, e) { + if (m(e)) return t.stylize("undefined", "undefined"); + if (v(e)) { + var r = "'" + JSON.stringify(e).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'"; + return t.stylize(r, "string") + } + return d(e) ? t.stylize("" + e, "number") : y(e) ? t.stylize("" + e, "boolean") : g(e) ? t.stylize("null", "null") : void 0 + }(t, r); + if (o) return o; + var s = Object.keys(r), + a = function(t) { + var e = {}; + return t.forEach((function(t, r) { + e[t] = !0 + })), e + }(s); + if (t.showHidden && (s = Object.getOwnPropertyNames(r)), E(r) && (s.indexOf("message") >= 0 || s.indexOf("description") >= 0)) return h(r); + if (0 === s.length) { + if (w(r)) { + var f = r.name ? ": " + r.name : ""; + return t.stylize("[Function" + f + "]", "special") + } + if (S(r)) return t.stylize(RegExp.prototype.toString.call(r), "regexp"); + if (b(r)) return t.stylize(Date.prototype.toString.call(r), "date"); + if (E(r)) return h(r) + } + var u, _ = "", + O = !1, + B = ["{", "}"]; + return l(r) && (O = !0, B = ["[", "]"]), w(r) && (_ = " [Function" + (r.name ? ": " + r.name : "") + "]"), S(r) && (_ = " " + RegExp.prototype.toString.call(r)), b(r) && (_ = " " + Date.prototype.toUTCString.call(r)), E(r) && (_ = " " + h(r)), 0 !== s.length || O && 0 != r.length ? n < 0 ? S(r) ? t.stylize(RegExp.prototype.toString.call(r), "regexp") : t.stylize("[Object]", "special") : (t.seen.push(r), u = O ? function(t, e, r, n, i) { + for (var o = [], s = 0, a = e.length; s < a; ++s) x(e, String(s)) ? o.push(p(t, e, r, n, String(s), !0)) : o.push(""); + return i.forEach((function(i) { + i.match(/^\d+$/) || o.push(p(t, e, r, n, i, !0)) + })), o + }(t, r, n, a, s) : s.map((function(e) { + return p(t, r, n, a, e, O) + })), t.seen.pop(), function(t, e, r) { + return t.reduce((function(t, e) { + return e.indexOf("\n"), t + e.replace(/\u001b\[\d\d?m/g, "").length + 1 + }), 0) > 60 ? r[0] + ("" === e ? "" : e + "\n ") + " " + t.join(",\n ") + " " + r[1] : r[0] + e + " " + t.join(", ") + " " + r[1] + }(u, _, B)) : B[0] + _ + B[1] + } + + function h(t) { + return "[" + Error.prototype.toString.call(t) + "]" + } + + function p(t, e, r, n, i, o) { + var s, a, f; + if ((f = Object.getOwnPropertyDescriptor(e, i) || { + value: e[i] + }).get ? a = f.set ? t.stylize("[Getter/Setter]", "special") : t.stylize("[Getter]", "special") : f.set && (a = t.stylize("[Setter]", "special")), x(n, i) || (s = "[" + i + "]"), a || (t.seen.indexOf(f.value) < 0 ? (a = g(r) ? c(t, f.value, null) : c(t, f.value, r - 1)).indexOf("\n") > -1 && (a = o ? a.split("\n").map((function(t) { + return " " + t + })).join("\n").substr(2) : "\n" + a.split("\n").map((function(t) { + return " " + t + })).join("\n")) : a = t.stylize("[Circular]", "special")), m(s)) { + if (o && i.match(/^\d+$/)) return a; + (s = JSON.stringify("" + i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (s = s.substr(1, s.length - 2), s = t.stylize(s, "name")) : (s = s.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), s = t.stylize(s, "string")) + } + return s + ": " + a + } + + function l(t) { + return Array.isArray(t) + } + + function y(t) { + return "boolean" == typeof t + } + + function g(t) { + return null === t + } + + function d(t) { + return "number" == typeof t + } + + function v(t) { + return "string" == typeof t + } + + function m(t) { + return void 0 === t + } + + function S(t) { + return _(t) && "[object RegExp]" === O(t) + } + + function _(t) { + return "object" == typeof t && null !== t + } + + function b(t) { + return _(t) && "[object Date]" === O(t) + } + + function E(t) { + return _(t) && ("[object Error]" === O(t) || t instanceof Error) + } + + function w(t) { + return "function" == typeof t + } + + function O(t) { + return Object.prototype.toString.call(t) + } + + function B(t) { + return t < 10 ? "0" + t.toString(10) : t.toString(10) + } + e.debuglog = function(t) { + if (m(o) && (o = n.env.NODE_DEBUG || ""), t = t.toUpperCase(), !s[t]) + if (new RegExp("\\b" + t + "\\b", "i").test(o)) { + var r = n.pid; + s[t] = function() { + var n = e.format.apply(e, arguments); + console.error("%s %d: %s", t, r, n) + } + } else s[t] = function() {}; + return s[t] + }, e.inspect = a, a.colors = { + bold: [1, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + white: [37, 39], + grey: [90, 39], + black: [30, 39], + blue: [34, 39], + cyan: [36, 39], + green: [32, 39], + magenta: [35, 39], + red: [31, 39], + yellow: [33, 39] + }, a.styles = { + special: "cyan", + number: "yellow", + boolean: "yellow", + undefined: "grey", + null: "bold", + string: "green", + date: "magenta", + regexp: "red" + }, e.isArray = l, e.isBoolean = y, e.isNull = g, e.isNullOrUndefined = function(t) { + return null == t + }, e.isNumber = d, e.isString = v, e.isSymbol = function(t) { + return "symbol" == typeof t + }, e.isUndefined = m, e.isRegExp = S, e.isObject = _, e.isDate = b, e.isError = E, e.isFunction = w, e.isPrimitive = function(t) { + return null === t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || "symbol" == typeof t || void 0 === t + }, e.isBuffer = r(3845); + var A = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; + + function x(t, e) { + return Object.prototype.hasOwnProperty.call(t, e) + } + e.log = function() { + var t, r; + console.log("%s - %s", (r = [B((t = new Date).getHours()), B(t.getMinutes()), B(t.getSeconds())].join(":"), [t.getDate(), A[t.getMonth()], r].join(" ")), e.format.apply(e, arguments)) + }, e.inherits = r(6100), e._extend = function(t, e) { + if (!e || !_(e)) return t; + for (var r = Object.keys(e), n = r.length; n--;) t[r[n]] = e[r[n]]; + return t + } + }, + 7526: (t, e) => { + "use strict"; + e.byteLength = function(t) { + var e = a(t), + r = e[0], + n = e[1]; + return 3 * (r + n) / 4 - n + }, e.toByteArray = function(t) { + var e, r, o = a(t), + s = o[0], + f = o[1], + u = new i(function(t, e, r) { + return 3 * (e + r) / 4 - r + }(0, s, f)), + c = 0, + h = f > 0 ? s - 4 : s; + for (r = 0; r < h; r += 4) e = n[t.charCodeAt(r)] << 18 | n[t.charCodeAt(r + 1)] << 12 | n[t.charCodeAt(r + 2)] << 6 | n[t.charCodeAt(r + 3)], u[c++] = e >> 16 & 255, u[c++] = e >> 8 & 255, u[c++] = 255 & e; + return 2 === f && (e = n[t.charCodeAt(r)] << 2 | n[t.charCodeAt(r + 1)] >> 4, u[c++] = 255 & e), 1 === f && (e = n[t.charCodeAt(r)] << 10 | n[t.charCodeAt(r + 1)] << 4 | n[t.charCodeAt(r + 2)] >> 2, u[c++] = e >> 8 & 255, u[c++] = 255 & e), u + }, e.fromByteArray = function(t) { + for (var e, n = t.length, i = n % 3, o = [], s = 16383, a = 0, u = n - i; a < u; a += s) o.push(f(t, a, a + s > u ? u : a + s)); + return 1 === i ? (e = t[n - 1], o.push(r[e >> 2] + r[e << 4 & 63] + "==")) : 2 === i && (e = (t[n - 2] << 8) + t[n - 1], o.push(r[e >> 10] + r[e >> 4 & 63] + r[e << 2 & 63] + "=")), o.join("") + }; + for (var r = [], n = [], i = "undefined" != typeof Uint8Array ? Uint8Array : Array, o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", s = 0; s < 64; ++s) r[s] = o[s], n[o.charCodeAt(s)] = s; + + function a(t) { + var e = t.length; + if (e % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); + var r = t.indexOf("="); + return -1 === r && (r = e), [r, r === e ? 0 : 4 - r % 4] + } + + function f(t, e, n) { + for (var i, o, s = [], a = e; a < n; a += 3) i = (t[a] << 16 & 16711680) + (t[a + 1] << 8 & 65280) + (255 & t[a + 2]), s.push(r[(o = i) >> 18 & 63] + r[o >> 12 & 63] + r[o >> 6 & 63] + r[63 & o]); + return s.join("") + } + n["-".charCodeAt(0)] = 62, n["_".charCodeAt(0)] = 63 + }, + 8287: (t, e, r) => { + "use strict"; + var n = r(7526), + i = r(251); + e.Buffer = a, e.SlowBuffer = function(t) { + return +t != t && (t = 0), a.alloc(+t) + }, e.INSPECT_MAX_BYTES = 50; + var o = 2147483647; + + function s(t) { + if (t > o) throw new RangeError('The value "' + t + '" is invalid for option "size"'); + var e = new Uint8Array(t); + return e.__proto__ = a.prototype, e + } + + function a(t, e, r) { + if ("number" == typeof t) { + if ("string" == typeof e) throw new TypeError('The "string" argument must be of type string. Received type number'); + return c(t) + } + return f(t, e, r) + } + + function f(t, e, r) { + if ("string" == typeof t) return function(t, e) { + if ("string" == typeof e && "" !== e || (e = "utf8"), !a.isEncoding(e)) throw new TypeError("Unknown encoding: " + e); + var r = 0 | l(t, e), + n = s(r), + i = n.write(t, e); + return i !== r && (n = n.slice(0, i)), n + }(t, e); + if (ArrayBuffer.isView(t)) return h(t); + if (null == t) throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t); + if (H(t, ArrayBuffer) || t && H(t.buffer, ArrayBuffer)) return function(t, e, r) { + if (e < 0 || t.byteLength < e) throw new RangeError('"offset" is outside of buffer bounds'); + if (t.byteLength < e + (r || 0)) throw new RangeError('"length" is outside of buffer bounds'); + var n; + return (n = void 0 === e && void 0 === r ? new Uint8Array(t) : void 0 === r ? new Uint8Array(t, e) : new Uint8Array(t, e, r)).__proto__ = a.prototype, n + }(t, e, r); + if ("number" == typeof t) throw new TypeError('The "value" argument must not be of type number. Received type number'); + var n = t.valueOf && t.valueOf(); + if (null != n && n !== t) return a.from(n, e, r); + var i = function(t) { + if (a.isBuffer(t)) { + var e = 0 | p(t.length), + r = s(e); + return 0 === r.length || t.copy(r, 0, 0, e), r + } + return void 0 !== t.length ? "number" != typeof t.length || F(t.length) ? s(0) : h(t) : "Buffer" === t.type && Array.isArray(t.data) ? h(t.data) : void 0 + }(t); + if (i) return i; + if ("undefined" != typeof Symbol && null != Symbol.toPrimitive && "function" == typeof t[Symbol.toPrimitive]) return a.from(t[Symbol.toPrimitive]("string"), e, r); + throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t) + } + + function u(t) { + if ("number" != typeof t) throw new TypeError('"size" argument must be of type number'); + if (t < 0) throw new RangeError('The value "' + t + '" is invalid for option "size"') + } + + function c(t) { + return u(t), s(t < 0 ? 0 : 0 | p(t)) + } + + function h(t) { + for (var e = t.length < 0 ? 0 : 0 | p(t.length), r = s(e), n = 0; n < e; n += 1) r[n] = 255 & t[n]; + return r + } + + function p(t) { + if (t >= o) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + o.toString(16) + " bytes"); + return 0 | t + } + + function l(t, e) { + if (a.isBuffer(t)) return t.length; + if (ArrayBuffer.isView(t) || H(t, ArrayBuffer)) return t.byteLength; + if ("string" != typeof t) throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type ' + typeof t); + var r = t.length, + n = arguments.length > 2 && !0 === arguments[2]; + if (!n && 0 === r) return 0; + for (var i = !1;;) switch (e) { + case "ascii": + case "latin1": + case "binary": + return r; + case "utf8": + case "utf-8": + return U(t).length; + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return 2 * r; + case "hex": + return r >>> 1; + case "base64": + return M(t).length; + default: + if (i) return n ? -1 : U(t).length; + e = ("" + e).toLowerCase(), i = !0 + } + } + + function y(t, e, r) { + var n = !1; + if ((void 0 === e || e < 0) && (e = 0), e > this.length) return ""; + if ((void 0 === r || r > this.length) && (r = this.length), r <= 0) return ""; + if ((r >>>= 0) <= (e >>>= 0)) return ""; + for (t || (t = "utf8");;) switch (t) { + case "hex": + return T(this, e, r); + case "utf8": + case "utf-8": + return B(this, e, r); + case "ascii": + return x(this, e, r); + case "latin1": + case "binary": + return P(this, e, r); + case "base64": + return O(this, e, r); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return I(this, e, r); + default: + if (n) throw new TypeError("Unknown encoding: " + t); + t = (t + "").toLowerCase(), n = !0 + } + } + + function g(t, e, r) { + var n = t[e]; + t[e] = t[r], t[r] = n + } + + function d(t, e, r, n, i) { + if (0 === t.length) return -1; + if ("string" == typeof r ? (n = r, r = 0) : r > 2147483647 ? r = 2147483647 : r < -2147483648 && (r = -2147483648), F(r = +r) && (r = i ? 0 : t.length - 1), r < 0 && (r = t.length + r), r >= t.length) { + if (i) return -1; + r = t.length - 1 + } else if (r < 0) { + if (!i) return -1; + r = 0 + } + if ("string" == typeof e && (e = a.from(e, n)), a.isBuffer(e)) return 0 === e.length ? -1 : v(t, e, r, n, i); + if ("number" == typeof e) return e &= 255, "function" == typeof Uint8Array.prototype.indexOf ? i ? Uint8Array.prototype.indexOf.call(t, e, r) : Uint8Array.prototype.lastIndexOf.call(t, e, r) : v(t, [e], r, n, i); + throw new TypeError("val must be string, number or Buffer") + } + + function v(t, e, r, n, i) { + var o, s = 1, + a = t.length, + f = e.length; + if (void 0 !== n && ("ucs2" === (n = String(n).toLowerCase()) || "ucs-2" === n || "utf16le" === n || "utf-16le" === n)) { + if (t.length < 2 || e.length < 2) return -1; + s = 2, a /= 2, f /= 2, r /= 2 + } + + function u(t, e) { + return 1 === s ? t[e] : t.readUInt16BE(e * s) + } + if (i) { + var c = -1; + for (o = r; o < a; o++) + if (u(t, o) === u(e, -1 === c ? 0 : o - c)) { + if (-1 === c && (c = o), o - c + 1 === f) return c * s + } else - 1 !== c && (o -= o - c), c = -1 + } else + for (r + f > a && (r = a - f), o = r; o >= 0; o--) { + for (var h = !0, p = 0; p < f; p++) + if (u(t, o + p) !== u(e, p)) { + h = !1; + break + } if (h) return o + } + return -1 + } + + function m(t, e, r, n) { + r = Number(r) || 0; + var i = t.length - r; + n ? (n = Number(n)) > i && (n = i) : n = i; + var o = e.length; + n > o / 2 && (n = o / 2); + for (var s = 0; s < n; ++s) { + var a = parseInt(e.substr(2 * s, 2), 16); + if (F(a)) return s; + t[r + s] = a + } + return s + } + + function S(t, e, r, n) { + return j(U(e, t.length - r), t, r, n) + } + + function _(t, e, r, n) { + return j(function(t) { + for (var e = [], r = 0; r < t.length; ++r) e.push(255 & t.charCodeAt(r)); + return e + }(e), t, r, n) + } + + function b(t, e, r, n) { + return _(t, e, r, n) + } + + function E(t, e, r, n) { + return j(M(e), t, r, n) + } + + function w(t, e, r, n) { + return j(function(t, e) { + for (var r, n, i, o = [], s = 0; s < t.length && !((e -= 2) < 0); ++s) n = (r = t.charCodeAt(s)) >> 8, i = r % 256, o.push(i), o.push(n); + return o + }(e, t.length - r), t, r, n) + } + + function O(t, e, r) { + return 0 === e && r === t.length ? n.fromByteArray(t) : n.fromByteArray(t.slice(e, r)) + } + + function B(t, e, r) { + r = Math.min(t.length, r); + for (var n = [], i = e; i < r;) { + var o, s, a, f, u = t[i], + c = null, + h = u > 239 ? 4 : u > 223 ? 3 : u > 191 ? 2 : 1; + if (i + h <= r) switch (h) { + case 1: + u < 128 && (c = u); + break; + case 2: + 128 == (192 & (o = t[i + 1])) && (f = (31 & u) << 6 | 63 & o) > 127 && (c = f); + break; + case 3: + o = t[i + 1], s = t[i + 2], 128 == (192 & o) && 128 == (192 & s) && (f = (15 & u) << 12 | (63 & o) << 6 | 63 & s) > 2047 && (f < 55296 || f > 57343) && (c = f); + break; + case 4: + o = t[i + 1], s = t[i + 2], a = t[i + 3], 128 == (192 & o) && 128 == (192 & s) && 128 == (192 & a) && (f = (15 & u) << 18 | (63 & o) << 12 | (63 & s) << 6 | 63 & a) > 65535 && f < 1114112 && (c = f) + } + null === c ? (c = 65533, h = 1) : c > 65535 && (c -= 65536, n.push(c >>> 10 & 1023 | 55296), c = 56320 | 1023 & c), n.push(c), i += h + } + return function(t) { + var e = t.length; + if (e <= A) return String.fromCharCode.apply(String, t); + for (var r = "", n = 0; n < e;) r += String.fromCharCode.apply(String, t.slice(n, n += A)); + return r + }(n) + } + e.kMaxLength = o, a.TYPED_ARRAY_SUPPORT = function() { + try { + var t = new Uint8Array(1); + return t.__proto__ = { + __proto__: Uint8Array.prototype, + foo: function() { + return 42 + } + }, 42 === t.foo() + } catch (t) { + return !1 + } + }(), a.TYPED_ARRAY_SUPPORT || "undefined" == typeof console || "function" != typeof console.error || console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."), Object.defineProperty(a.prototype, "parent", { + enumerable: !0, + get: function() { + if (a.isBuffer(this)) return this.buffer + } + }), Object.defineProperty(a.prototype, "offset", { + enumerable: !0, + get: function() { + if (a.isBuffer(this)) return this.byteOffset + } + }), "undefined" != typeof Symbol && null != Symbol.species && a[Symbol.species] === a && Object.defineProperty(a, Symbol.species, { + value: null, + configurable: !0, + enumerable: !1, + writable: !1 + }), a.poolSize = 8192, a.from = function(t, e, r) { + return f(t, e, r) + }, a.prototype.__proto__ = Uint8Array.prototype, a.__proto__ = Uint8Array, a.alloc = function(t, e, r) { + return function(t, e, r) { + return u(t), t <= 0 ? s(t) : void 0 !== e ? "string" == typeof r ? s(t).fill(e, r) : s(t).fill(e) : s(t) + }(t, e, r) + }, a.allocUnsafe = function(t) { + return c(t) + }, a.allocUnsafeSlow = function(t) { + return c(t) + }, a.isBuffer = function(t) { + return null != t && !0 === t._isBuffer && t !== a.prototype + }, a.compare = function(t, e) { + if (H(t, Uint8Array) && (t = a.from(t, t.offset, t.byteLength)), H(e, Uint8Array) && (e = a.from(e, e.offset, e.byteLength)), !a.isBuffer(t) || !a.isBuffer(e)) throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); + if (t === e) return 0; + for (var r = t.length, n = e.length, i = 0, o = Math.min(r, n); i < o; ++i) + if (t[i] !== e[i]) { + r = t[i], n = e[i]; + break + } return r < n ? -1 : n < r ? 1 : 0 + }, a.isEncoding = function(t) { + switch (String(t).toLowerCase()) { + case "hex": + case "utf8": + case "utf-8": + case "ascii": + case "latin1": + case "binary": + case "base64": + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return !0; + default: + return !1 + } + }, a.concat = function(t, e) { + if (!Array.isArray(t)) throw new TypeError('"list" argument must be an Array of Buffers'); + if (0 === t.length) return a.alloc(0); + var r; + if (void 0 === e) + for (e = 0, r = 0; r < t.length; ++r) e += t[r].length; + var n = a.allocUnsafe(e), + i = 0; + for (r = 0; r < t.length; ++r) { + var o = t[r]; + if (H(o, Uint8Array) && (o = a.from(o)), !a.isBuffer(o)) throw new TypeError('"list" argument must be an Array of Buffers'); + o.copy(n, i), i += o.length + } + return n + }, a.byteLength = l, a.prototype._isBuffer = !0, a.prototype.swap16 = function() { + var t = this.length; + if (t % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); + for (var e = 0; e < t; e += 2) g(this, e, e + 1); + return this + }, a.prototype.swap32 = function() { + var t = this.length; + if (t % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); + for (var e = 0; e < t; e += 4) g(this, e, e + 3), g(this, e + 1, e + 2); + return this + }, a.prototype.swap64 = function() { + var t = this.length; + if (t % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); + for (var e = 0; e < t; e += 8) g(this, e, e + 7), g(this, e + 1, e + 6), g(this, e + 2, e + 5), g(this, e + 3, e + 4); + return this + }, a.prototype.toString = function() { + var t = this.length; + return 0 === t ? "" : 0 === arguments.length ? B(this, 0, t) : y.apply(this, arguments) + }, a.prototype.toLocaleString = a.prototype.toString, a.prototype.equals = function(t) { + if (!a.isBuffer(t)) throw new TypeError("Argument must be a Buffer"); + return this === t || 0 === a.compare(this, t) + }, a.prototype.inspect = function() { + var t = "", + r = e.INSPECT_MAX_BYTES; + return t = this.toString("hex", 0, r).replace(/(.{2})/g, "$1 ").trim(), this.length > r && (t += " ... "), "" + }, a.prototype.compare = function(t, e, r, n, i) { + if (H(t, Uint8Array) && (t = a.from(t, t.offset, t.byteLength)), !a.isBuffer(t)) throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type ' + typeof t); + if (void 0 === e && (e = 0), void 0 === r && (r = t ? t.length : 0), void 0 === n && (n = 0), void 0 === i && (i = this.length), e < 0 || r > t.length || n < 0 || i > this.length) throw new RangeError("out of range index"); + if (n >= i && e >= r) return 0; + if (n >= i) return -1; + if (e >= r) return 1; + if (this === t) return 0; + for (var o = (i >>>= 0) - (n >>>= 0), s = (r >>>= 0) - (e >>>= 0), f = Math.min(o, s), u = this.slice(n, i), c = t.slice(e, r), h = 0; h < f; ++h) + if (u[h] !== c[h]) { + o = u[h], s = c[h]; + break + } return o < s ? -1 : s < o ? 1 : 0 + }, a.prototype.includes = function(t, e, r) { + return -1 !== this.indexOf(t, e, r) + }, a.prototype.indexOf = function(t, e, r) { + return d(this, t, e, r, !0) + }, a.prototype.lastIndexOf = function(t, e, r) { + return d(this, t, e, r, !1) + }, a.prototype.write = function(t, e, r, n) { + if (void 0 === e) n = "utf8", r = this.length, e = 0; + else if (void 0 === r && "string" == typeof e) n = e, r = this.length, e = 0; + else { + if (!isFinite(e)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); + e >>>= 0, isFinite(r) ? (r >>>= 0, void 0 === n && (n = "utf8")) : (n = r, r = void 0) + } + var i = this.length - e; + if ((void 0 === r || r > i) && (r = i), t.length > 0 && (r < 0 || e < 0) || e > this.length) throw new RangeError("Attempt to write outside buffer bounds"); + n || (n = "utf8"); + for (var o = !1;;) switch (n) { + case "hex": + return m(this, t, e, r); + case "utf8": + case "utf-8": + return S(this, t, e, r); + case "ascii": + return _(this, t, e, r); + case "latin1": + case "binary": + return b(this, t, e, r); + case "base64": + return E(this, t, e, r); + case "ucs2": + case "ucs-2": + case "utf16le": + case "utf-16le": + return w(this, t, e, r); + default: + if (o) throw new TypeError("Unknown encoding: " + n); + n = ("" + n).toLowerCase(), o = !0 + } + }, a.prototype.toJSON = function() { + return { + type: "Buffer", + data: Array.prototype.slice.call(this._arr || this, 0) + } + }; + var A = 4096; + + function x(t, e, r) { + var n = ""; + r = Math.min(t.length, r); + for (var i = e; i < r; ++i) n += String.fromCharCode(127 & t[i]); + return n + } + + function P(t, e, r) { + var n = ""; + r = Math.min(t.length, r); + for (var i = e; i < r; ++i) n += String.fromCharCode(t[i]); + return n + } + + function T(t, e, r) { + var n, i = t.length; + (!e || e < 0) && (e = 0), (!r || r < 0 || r > i) && (r = i); + for (var o = "", s = e; s < r; ++s) o += (n = t[s]) < 16 ? "0" + n.toString(16) : n.toString(16); + return o + } + + function I(t, e, r) { + for (var n = t.slice(e, r), i = "", o = 0; o < n.length; o += 2) i += String.fromCharCode(n[o] + 256 * n[o + 1]); + return i + } + + function k(t, e, r) { + if (t % 1 != 0 || t < 0) throw new RangeError("offset is not uint"); + if (t + e > r) throw new RangeError("Trying to access beyond buffer length") + } + + function D(t, e, r, n, i, o) { + if (!a.isBuffer(t)) throw new TypeError('"buffer" argument must be a Buffer instance'); + if (e > i || e < o) throw new RangeError('"value" argument is out of bounds'); + if (r + n > t.length) throw new RangeError("Index out of range") + } + + function R(t, e, r, n, i, o) { + if (r + n > t.length) throw new RangeError("Index out of range"); + if (r < 0) throw new RangeError("Index out of range") + } + + function N(t, e, r, n, o) { + return e = +e, r >>>= 0, o || R(t, 0, r, 4), i.write(t, e, r, n, 23, 4), r + 4 + } + + function L(t, e, r, n, o) { + return e = +e, r >>>= 0, o || R(t, 0, r, 8), i.write(t, e, r, n, 52, 8), r + 8 + } + a.prototype.slice = function(t, e) { + var r = this.length; + (t = ~~t) < 0 ? (t += r) < 0 && (t = 0) : t > r && (t = r), (e = void 0 === e ? r : ~~e) < 0 ? (e += r) < 0 && (e = 0) : e > r && (e = r), e < t && (e = t); + var n = this.subarray(t, e); + return n.__proto__ = a.prototype, n + }, a.prototype.readUIntLE = function(t, e, r) { + t >>>= 0, e >>>= 0, r || k(t, e, this.length); + for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i; + return n + }, a.prototype.readUIntBE = function(t, e, r) { + t >>>= 0, e >>>= 0, r || k(t, e, this.length); + for (var n = this[t + --e], i = 1; e > 0 && (i *= 256);) n += this[t + --e] * i; + return n + }, a.prototype.readUInt8 = function(t, e) { + return t >>>= 0, e || k(t, 1, this.length), this[t] + }, a.prototype.readUInt16LE = function(t, e) { + return t >>>= 0, e || k(t, 2, this.length), this[t] | this[t + 1] << 8 + }, a.prototype.readUInt16BE = function(t, e) { + return t >>>= 0, e || k(t, 2, this.length), this[t] << 8 | this[t + 1] + }, a.prototype.readUInt32LE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), (this[t] | this[t + 1] << 8 | this[t + 2] << 16) + 16777216 * this[t + 3] + }, a.prototype.readUInt32BE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), 16777216 * this[t] + (this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3]) + }, a.prototype.readIntLE = function(t, e, r) { + t >>>= 0, e >>>= 0, r || k(t, e, this.length); + for (var n = this[t], i = 1, o = 0; ++o < e && (i *= 256);) n += this[t + o] * i; + return n >= (i *= 128) && (n -= Math.pow(2, 8 * e)), n + }, a.prototype.readIntBE = function(t, e, r) { + t >>>= 0, e >>>= 0, r || k(t, e, this.length); + for (var n = e, i = 1, o = this[t + --n]; n > 0 && (i *= 256);) o += this[t + --n] * i; + return o >= (i *= 128) && (o -= Math.pow(2, 8 * e)), o + }, a.prototype.readInt8 = function(t, e) { + return t >>>= 0, e || k(t, 1, this.length), 128 & this[t] ? -1 * (255 - this[t] + 1) : this[t] + }, a.prototype.readInt16LE = function(t, e) { + t >>>= 0, e || k(t, 2, this.length); + var r = this[t] | this[t + 1] << 8; + return 32768 & r ? 4294901760 | r : r + }, a.prototype.readInt16BE = function(t, e) { + t >>>= 0, e || k(t, 2, this.length); + var r = this[t + 1] | this[t] << 8; + return 32768 & r ? 4294901760 | r : r + }, a.prototype.readInt32LE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), this[t] | this[t + 1] << 8 | this[t + 2] << 16 | this[t + 3] << 24 + }, a.prototype.readInt32BE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), this[t] << 24 | this[t + 1] << 16 | this[t + 2] << 8 | this[t + 3] + }, a.prototype.readFloatLE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), i.read(this, t, !0, 23, 4) + }, a.prototype.readFloatBE = function(t, e) { + return t >>>= 0, e || k(t, 4, this.length), i.read(this, t, !1, 23, 4) + }, a.prototype.readDoubleLE = function(t, e) { + return t >>>= 0, e || k(t, 8, this.length), i.read(this, t, !0, 52, 8) + }, a.prototype.readDoubleBE = function(t, e) { + return t >>>= 0, e || k(t, 8, this.length), i.read(this, t, !1, 52, 8) + }, a.prototype.writeUIntLE = function(t, e, r, n) { + t = +t, e >>>= 0, r >>>= 0, n || D(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); + var i = 1, + o = 0; + for (this[e] = 255 & t; ++o < r && (i *= 256);) this[e + o] = t / i & 255; + return e + r + }, a.prototype.writeUIntBE = function(t, e, r, n) { + t = +t, e >>>= 0, r >>>= 0, n || D(this, t, e, r, Math.pow(2, 8 * r) - 1, 0); + var i = r - 1, + o = 1; + for (this[e + i] = 255 & t; --i >= 0 && (o *= 256);) this[e + i] = t / o & 255; + return e + r + }, a.prototype.writeUInt8 = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 1, 255, 0), this[e] = 255 & t, e + 1 + }, a.prototype.writeUInt16LE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 2, 65535, 0), this[e] = 255 & t, this[e + 1] = t >>> 8, e + 2 + }, a.prototype.writeUInt16BE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 2, 65535, 0), this[e] = t >>> 8, this[e + 1] = 255 & t, e + 2 + }, a.prototype.writeUInt32LE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 4, 4294967295, 0), this[e + 3] = t >>> 24, this[e + 2] = t >>> 16, this[e + 1] = t >>> 8, this[e] = 255 & t, e + 4 + }, a.prototype.writeUInt32BE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 4, 4294967295, 0), this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t, e + 4 + }, a.prototype.writeIntLE = function(t, e, r, n) { + if (t = +t, e >>>= 0, !n) { + var i = Math.pow(2, 8 * r - 1); + D(this, t, e, r, i - 1, -i) + } + var o = 0, + s = 1, + a = 0; + for (this[e] = 255 & t; ++o < r && (s *= 256);) t < 0 && 0 === a && 0 !== this[e + o - 1] && (a = 1), this[e + o] = (t / s | 0) - a & 255; + return e + r + }, a.prototype.writeIntBE = function(t, e, r, n) { + if (t = +t, e >>>= 0, !n) { + var i = Math.pow(2, 8 * r - 1); + D(this, t, e, r, i - 1, -i) + } + var o = r - 1, + s = 1, + a = 0; + for (this[e + o] = 255 & t; --o >= 0 && (s *= 256);) t < 0 && 0 === a && 0 !== this[e + o + 1] && (a = 1), this[e + o] = (t / s | 0) - a & 255; + return e + r + }, a.prototype.writeInt8 = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 1, 127, -128), t < 0 && (t = 255 + t + 1), this[e] = 255 & t, e + 1 + }, a.prototype.writeInt16LE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 2, 32767, -32768), this[e] = 255 & t, this[e + 1] = t >>> 8, e + 2 + }, a.prototype.writeInt16BE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 2, 32767, -32768), this[e] = t >>> 8, this[e + 1] = 255 & t, e + 2 + }, a.prototype.writeInt32LE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 4, 2147483647, -2147483648), this[e] = 255 & t, this[e + 1] = t >>> 8, this[e + 2] = t >>> 16, this[e + 3] = t >>> 24, e + 4 + }, a.prototype.writeInt32BE = function(t, e, r) { + return t = +t, e >>>= 0, r || D(this, t, e, 4, 2147483647, -2147483648), t < 0 && (t = 4294967295 + t + 1), this[e] = t >>> 24, this[e + 1] = t >>> 16, this[e + 2] = t >>> 8, this[e + 3] = 255 & t, e + 4 + }, a.prototype.writeFloatLE = function(t, e, r) { + return N(this, t, e, !0, r) + }, a.prototype.writeFloatBE = function(t, e, r) { + return N(this, t, e, !1, r) + }, a.prototype.writeDoubleLE = function(t, e, r) { + return L(this, t, e, !0, r) + }, a.prototype.writeDoubleBE = function(t, e, r) { + return L(this, t, e, !1, r) + }, a.prototype.copy = function(t, e, r, n) { + if (!a.isBuffer(t)) throw new TypeError("argument should be a Buffer"); + if (r || (r = 0), n || 0 === n || (n = this.length), e >= t.length && (e = t.length), e || (e = 0), n > 0 && n < r && (n = r), n === r) return 0; + if (0 === t.length || 0 === this.length) return 0; + if (e < 0) throw new RangeError("targetStart out of bounds"); + if (r < 0 || r >= this.length) throw new RangeError("Index out of range"); + if (n < 0) throw new RangeError("sourceEnd out of bounds"); + n > this.length && (n = this.length), t.length - e < n - r && (n = t.length - e + r); + var i = n - r; + if (this === t && "function" == typeof Uint8Array.prototype.copyWithin) this.copyWithin(e, r, n); + else if (this === t && r < e && e < n) + for (var o = i - 1; o >= 0; --o) t[o + e] = this[o + r]; + else Uint8Array.prototype.set.call(t, this.subarray(r, n), e); + return i + }, a.prototype.fill = function(t, e, r, n) { + if ("string" == typeof t) { + if ("string" == typeof e ? (n = e, e = 0, r = this.length) : "string" == typeof r && (n = r, r = this.length), void 0 !== n && "string" != typeof n) throw new TypeError("encoding must be a string"); + if ("string" == typeof n && !a.isEncoding(n)) throw new TypeError("Unknown encoding: " + n); + if (1 === t.length) { + var i = t.charCodeAt(0); + ("utf8" === n && i < 128 || "latin1" === n) && (t = i) + } + } else "number" == typeof t && (t &= 255); + if (e < 0 || this.length < e || this.length < r) throw new RangeError("Out of range index"); + if (r <= e) return this; + var o; + if (e >>>= 0, r = void 0 === r ? this.length : r >>> 0, t || (t = 0), "number" == typeof t) + for (o = e; o < r; ++o) this[o] = t; + else { + var s = a.isBuffer(t) ? t : a.from(t, n), + f = s.length; + if (0 === f) throw new TypeError('The value "' + t + '" is invalid for argument "value"'); + for (o = 0; o < r - e; ++o) this[o + e] = s[o % f] + } + return this + }; + var C = /[^+/0-9A-Za-z-_]/g; + + function U(t, e) { + var r; + e = e || 1 / 0; + for (var n = t.length, i = null, o = [], s = 0; s < n; ++s) { + if ((r = t.charCodeAt(s)) > 55295 && r < 57344) { + if (!i) { + if (r > 56319) { + (e -= 3) > -1 && o.push(239, 191, 189); + continue + } + if (s + 1 === n) { + (e -= 3) > -1 && o.push(239, 191, 189); + continue + } + i = r; + continue + } + if (r < 56320) { + (e -= 3) > -1 && o.push(239, 191, 189), i = r; + continue + } + r = 65536 + (i - 55296 << 10 | r - 56320) + } else i && (e -= 3) > -1 && o.push(239, 191, 189); + if (i = null, r < 128) { + if ((e -= 1) < 0) break; + o.push(r) + } else if (r < 2048) { + if ((e -= 2) < 0) break; + o.push(r >> 6 | 192, 63 & r | 128) + } else if (r < 65536) { + if ((e -= 3) < 0) break; + o.push(r >> 12 | 224, r >> 6 & 63 | 128, 63 & r | 128) + } else { + if (!(r < 1114112)) throw new Error("Invalid code point"); + if ((e -= 4) < 0) break; + o.push(r >> 18 | 240, r >> 12 & 63 | 128, r >> 6 & 63 | 128, 63 & r | 128) + } + } + return o + } + + function M(t) { + return n.toByteArray(function(t) { + if ((t = (t = t.split("=")[0]).trim().replace(C, "")).length < 2) return ""; + for (; t.length % 4 != 0;) t += "="; + return t + }(t)) + } + + function j(t, e, r, n) { + for (var i = 0; i < n && !(i + r >= e.length || i >= t.length); ++i) e[i + r] = t[i]; + return i + } + + function H(t, e) { + return t instanceof e || null != t && null != t.constructor && null != t.constructor.name && t.constructor.name === e.name + } + + function F(t) { + return t != t + } + }, + 8075: (t, e, r) => { + "use strict"; + var n = r(453), + i = r(487), + o = i(n("String.prototype.indexOf")); + t.exports = function(t, e) { + var r = n(t, !!e); + return "function" == typeof r && o(t, ".prototype.") > -1 ? i(r) : r + } + }, + 487: (t, e, r) => { + "use strict"; + var n = r(6743), + i = r(453), + o = r(6897), + s = r(9675), + a = i("%Function.prototype.apply%"), + f = i("%Function.prototype.call%"), + u = i("%Reflect.apply%", !0) || n.call(f, a), + c = r(655), + h = i("%Math.max%"); + t.exports = function(t) { + if ("function" != typeof t) throw new s("a function is required"); + var e = u(n, f, arguments); + return o(e, 1 + h(0, t.length - (arguments.length - 1)), !0) + }; + var p = function() { + return u(n, a, arguments) + }; + c ? c(t.exports, "apply", { + value: p + }) : t.exports.apply = p + }, + 955: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() { + var t = n, + e = t.lib.BlockCipher, + r = t.algo, + i = [], + o = [], + s = [], + a = [], + f = [], + u = [], + c = [], + h = [], + p = [], + l = []; + ! function() { + for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : e << 1 ^ 283; + var r = 0, + n = 0; + for (e = 0; e < 256; e++) { + var y = n ^ n << 1 ^ n << 2 ^ n << 3 ^ n << 4; + y = y >>> 8 ^ 255 & y ^ 99, i[r] = y, o[y] = r; + var g = t[r], + d = t[g], + v = t[d], + m = 257 * t[y] ^ 16843008 * y; + s[r] = m << 24 | m >>> 8, a[r] = m << 16 | m >>> 16, f[r] = m << 8 | m >>> 24, u[r] = m, m = 16843009 * v ^ 65537 * d ^ 257 * g ^ 16843008 * r, c[y] = m << 24 | m >>> 8, h[y] = m << 16 | m >>> 16, p[y] = m << 8 | m >>> 24, l[y] = m, r ? (r = g ^ t[t[t[v ^ g]]], n ^= t[t[n]]) : r = n = 1 + } + }(); + var y = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + g = r.AES = e.extend({ + _doReset: function() { + if (!this._nRounds || this._keyPriorReset !== this._key) { + for (var t = this._keyPriorReset = this._key, e = t.words, r = t.sigBytes / 4, n = 4 * ((this._nRounds = r + 6) + 1), o = this._keySchedule = [], s = 0; s < n; s++) + if (s < r) o[s] = e[s]; + else { + var a = o[s - 1]; + s % r ? r > 6 && s % r == 4 && (a = i[a >>> 24] << 24 | i[a >>> 16 & 255] << 16 | i[a >>> 8 & 255] << 8 | i[255 & a]) : (a = i[(a = a << 8 | a >>> 24) >>> 24] << 24 | i[a >>> 16 & 255] << 16 | i[a >>> 8 & 255] << 8 | i[255 & a], a ^= y[s / r | 0] << 24), o[s] = o[s - r] ^ a + } for (var f = this._invKeySchedule = [], u = 0; u < n; u++) s = n - u, a = u % 4 ? o[s] : o[s - 4], f[u] = u < 4 || s <= 4 ? a : c[i[a >>> 24]] ^ h[i[a >>> 16 & 255]] ^ p[i[a >>> 8 & 255]] ^ l[i[255 & a]] + } + }, + encryptBlock: function(t, e) { + this._doCryptBlock(t, e, this._keySchedule, s, a, f, u, i) + }, + decryptBlock: function(t, e) { + var r = t[e + 1]; + t[e + 1] = t[e + 3], t[e + 3] = r, this._doCryptBlock(t, e, this._invKeySchedule, c, h, p, l, o), r = t[e + 1], t[e + 1] = t[e + 3], t[e + 3] = r + }, + _doCryptBlock: function(t, e, r, n, i, o, s, a) { + for (var f = this._nRounds, u = t[e] ^ r[0], c = t[e + 1] ^ r[1], h = t[e + 2] ^ r[2], p = t[e + 3] ^ r[3], l = 4, y = 1; y < f; y++) { + var g = n[u >>> 24] ^ i[c >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & p] ^ r[l++], + d = n[c >>> 24] ^ i[h >>> 16 & 255] ^ o[p >>> 8 & 255] ^ s[255 & u] ^ r[l++], + v = n[h >>> 24] ^ i[p >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & c] ^ r[l++], + m = n[p >>> 24] ^ i[u >>> 16 & 255] ^ o[c >>> 8 & 255] ^ s[255 & h] ^ r[l++]; + u = g, c = d, h = v, p = m + } + g = (a[u >>> 24] << 24 | a[c >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & p]) ^ r[l++], d = (a[c >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[p >>> 8 & 255] << 8 | a[255 & u]) ^ r[l++], v = (a[h >>> 24] << 24 | a[p >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & c]) ^ r[l++], m = (a[p >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[c >>> 8 & 255] << 8 | a[255 & h]) ^ r[l++], t[e] = g, t[e + 1] = d, t[e + 2] = v, t[e + 3] = m + }, + keySize: 8 + }); + t.AES = e._createHelper(g) + }(), n.AES) + }, + 7165: function(t, e, r) { + var n, i, o, s, a, f, u, c, h, p, l, y, g, d, v, m, S, _, b; + t.exports = (n = r(9021), r(9506), void(n.lib.Cipher || (i = n, o = i.lib, s = o.Base, a = o.WordArray, f = o.BufferedBlockAlgorithm, u = i.enc, u.Utf8, c = u.Base64, h = i.algo.EvpKDF, p = o.Cipher = f.extend({ + cfg: s.extend(), + createEncryptor: function(t, e) { + return this.create(this._ENC_XFORM_MODE, t, e) + }, + createDecryptor: function(t, e) { + return this.create(this._DEC_XFORM_MODE, t, e) + }, + init: function(t, e, r) { + this.cfg = this.cfg.extend(r), this._xformMode = t, this._key = e, this.reset() + }, + reset: function() { + f.reset.call(this), this._doReset() + }, + process: function(t) { + return this._append(t), this._process() + }, + finalize: function(t) { + return t && this._append(t), this._doFinalize() + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function() { + function t(t) { + return "string" == typeof t ? b : S + } + return function(e) { + return { + encrypt: function(r, n, i) { + return t(n).encrypt(e, r, n, i) + }, + decrypt: function(r, n, i) { + return t(n).decrypt(e, r, n, i) + } + } + } + }() + }), o.StreamCipher = p.extend({ + _doFinalize: function() { + return this._process(!0) + }, + blockSize: 1 + }), l = i.mode = {}, y = o.BlockCipherMode = s.extend({ + createEncryptor: function(t, e) { + return this.Encryptor.create(t, e) + }, + createDecryptor: function(t, e) { + return this.Decryptor.create(t, e) + }, + init: function(t, e) { + this._cipher = t, this._iv = e + } + }), g = l.CBC = function() { + var t = y.extend(); + + function e(t, e, r) { + var n = this._iv; + if (n) { + var i = n; + this._iv = void 0 + } else i = this._prevBlock; + for (var o = 0; o < r; o++) t[e + o] ^= i[o] + } + return t.Encryptor = t.extend({ + processBlock: function(t, r) { + var n = this._cipher, + i = n.blockSize; + e.call(this, t, r, i), n.encryptBlock(t, r), this._prevBlock = t.slice(r, r + i) + } + }), t.Decryptor = t.extend({ + processBlock: function(t, r) { + var n = this._cipher, + i = n.blockSize, + o = t.slice(r, r + i); + n.decryptBlock(t, r), e.call(this, t, r, i), this._prevBlock = o + } + }), t + }(), d = (i.pad = {}).Pkcs7 = { + pad: function(t, e) { + for (var r = 4 * e, n = r - t.sigBytes % r, i = n << 24 | n << 16 | n << 8 | n, o = [], s = 0; s < n; s += 4) o.push(i); + var f = a.create(o, n); + t.concat(f) + }, + unpad: function(t) { + var e = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= e + } + }, o.BlockCipher = p.extend({ + cfg: p.cfg.extend({ + mode: g, + padding: d + }), + reset: function() { + p.reset.call(this); + var t = this.cfg, + e = t.iv, + r = t.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var n = r.createEncryptor; + else n = r.createDecryptor, this._minBufferSize = 1; + this._mode && this._mode.__creator == n ? this._mode.init(this, e && e.words) : (this._mode = n.call(r, this, e && e.words), this._mode.__creator = n) + }, + _doProcessBlock: function(t, e) { + this._mode.processBlock(t, e) + }, + _doFinalize: function() { + var t = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + t.pad(this._data, this.blockSize); + var e = this._process(!0) + } else e = this._process(!0), t.unpad(e); + return e + }, + blockSize: 4 + }), v = o.CipherParams = s.extend({ + init: function(t) { + this.mixIn(t) + }, + toString: function(t) { + return (t || this.formatter).stringify(this) + } + }), m = (i.format = {}).OpenSSL = { + stringify: function(t) { + var e = t.ciphertext, + r = t.salt; + if (r) var n = a.create([1398893684, 1701076831]).concat(r).concat(e); + else n = e; + return n.toString(c) + }, + parse: function(t) { + var e = c.parse(t), + r = e.words; + if (1398893684 == r[0] && 1701076831 == r[1]) { + var n = a.create(r.slice(2, 4)); + r.splice(0, 4), e.sigBytes -= 16 + } + return v.create({ + ciphertext: e, + salt: n + }) + } + }, S = o.SerializableCipher = s.extend({ + cfg: s.extend({ + format: m + }), + encrypt: function(t, e, r, n) { + n = this.cfg.extend(n); + var i = t.createEncryptor(r, n), + o = i.finalize(e), + s = i.cfg; + return v.create({ + ciphertext: o, + key: r, + iv: s.iv, + algorithm: t, + mode: s.mode, + padding: s.padding, + blockSize: t.blockSize, + formatter: n.format + }) + }, + decrypt: function(t, e, r, n) { + return n = this.cfg.extend(n), e = this._parse(e, n.format), t.createDecryptor(r, n).finalize(e.ciphertext) + }, + _parse: function(t, e) { + return "string" == typeof t ? e.parse(t, this) : t + } + }), _ = (i.kdf = {}).OpenSSL = { + execute: function(t, e, r, n) { + n || (n = a.random(8)); + var i = h.create({ + keySize: e + r + }).compute(t, n), + o = a.create(i.words.slice(e), 4 * r); + return i.sigBytes = 4 * e, v.create({ + key: i, + iv: o, + salt: n + }) + } + }, b = o.PasswordBasedCipher = S.extend({ + cfg: S.cfg.extend({ + kdf: _ + }), + encrypt: function(t, e, r, n) { + var i = (n = this.cfg.extend(n)).kdf.execute(r, t.keySize, t.ivSize); + n.iv = i.iv; + var o = S.encrypt.call(this, t, e, i.key, n); + return o.mixIn(i), o + }, + decrypt: function(t, e, r, n) { + n = this.cfg.extend(n), e = this._parse(e, n.format); + var i = n.kdf.execute(r, t.keySize, t.ivSize, e.salt); + return n.iv = i.iv, S.decrypt.call(this, t, e, i.key, n) + } + })))) + }, + 9021: function(t, e) { + var r; + t.exports = (r = r || function(t, e) { + var r = Object.create || function() { + function t() {} + return function(e) { + var r; + return t.prototype = e, r = new t, t.prototype = null, r + } + }(), + n = {}, + i = n.lib = {}, + o = i.Base = { + extend: function(t) { + var e = r(this); + return t && e.mixIn(t), e.hasOwnProperty("init") && this.init !== e.init || (e.init = function() { + e.$super.init.apply(this, arguments) + }), e.init.prototype = e, e.$super = this, e + }, + create: function() { + var t = this.extend(); + return t.init.apply(t, arguments), t + }, + init: function() {}, + mixIn: function(t) { + for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]); + t.hasOwnProperty("toString") && (this.toString = t.toString) + }, + clone: function() { + return this.init.prototype.extend(this) + } + }, + s = i.WordArray = o.extend({ + init: function(t, e) { + t = this.words = t || [], this.sigBytes = null != e ? e : 4 * t.length + }, + toString: function(t) { + return (t || f).stringify(this) + }, + concat: function(t) { + var e = this.words, + r = t.words, + n = this.sigBytes, + i = t.sigBytes; + if (this.clamp(), n % 4) + for (var o = 0; o < i; o++) { + var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255; + e[n + o >>> 2] |= s << 24 - (n + o) % 4 * 8 + } else + for (o = 0; o < i; o += 4) e[n + o >>> 2] = r[o >>> 2]; + return this.sigBytes += i, this + }, + clamp: function() { + var e = this.words, + r = this.sigBytes; + e[r >>> 2] &= 4294967295 << 32 - r % 4 * 8, e.length = t.ceil(r / 4) + }, + clone: function() { + var t = o.clone.call(this); + return t.words = this.words.slice(0), t + }, + random: function(e) { + for (var r, n = [], i = function(e) { + var r = 987654321, + n = 4294967295; + return function() { + var i = ((r = 36969 * (65535 & r) + (r >> 16) & n) << 16) + (e = 18e3 * (65535 & e) + (e >> 16) & n) & n; + return i /= 4294967296, (i += .5) * (t.random() > .5 ? 1 : -1) + } + }, o = 0; o < e; o += 4) { + var a = i(4294967296 * (r || t.random())); + r = 987654071 * a(), n.push(4294967296 * a() | 0) + } + return new s.init(n, e) + } + }), + a = n.enc = {}, + f = a.Hex = { + stringify: function(t) { + for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i++) { + var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255; + n.push((o >>> 4).toString(16)), n.push((15 & o).toString(16)) + } + return n.join("") + }, + parse: function(t) { + for (var e = t.length, r = [], n = 0; n < e; n += 2) r[n >>> 3] |= parseInt(t.substr(n, 2), 16) << 24 - n % 8 * 4; + return new s.init(r, e / 2) + } + }, + u = a.Latin1 = { + stringify: function(t) { + for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i++) { + var o = e[i >>> 2] >>> 24 - i % 4 * 8 & 255; + n.push(String.fromCharCode(o)) + } + return n.join("") + }, + parse: function(t) { + for (var e = t.length, r = [], n = 0; n < e; n++) r[n >>> 2] |= (255 & t.charCodeAt(n)) << 24 - n % 4 * 8; + return new s.init(r, e) + } + }, + c = a.Utf8 = { + stringify: function(t) { + try { + return decodeURIComponent(escape(u.stringify(t))) + } catch (t) { + throw new Error("Malformed UTF-8 data") + } + }, + parse: function(t) { + return u.parse(unescape(encodeURIComponent(t))) + } + }, + h = i.BufferedBlockAlgorithm = o.extend({ + reset: function() { + this._data = new s.init, this._nDataBytes = 0 + }, + _append: function(t) { + "string" == typeof t && (t = c.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes + }, + _process: function(e) { + var r = this._data, + n = r.words, + i = r.sigBytes, + o = this.blockSize, + a = i / (4 * o), + f = (a = e ? t.ceil(a) : t.max((0 | a) - this._minBufferSize, 0)) * o, + u = t.min(4 * f, i); + if (f) { + for (var c = 0; c < f; c += o) this._doProcessBlock(n, c); + var h = n.splice(0, f); + r.sigBytes -= u + } + return new s.init(h, u) + }, + clone: function() { + var t = o.clone.call(this); + return t._data = this._data.clone(), t + }, + _minBufferSize: 0 + }), + p = (i.Hasher = h.extend({ + cfg: o.extend(), + init: function(t) { + this.cfg = this.cfg.extend(t), this.reset() + }, + reset: function() { + h.reset.call(this), this._doReset() + }, + update: function(t) { + return this._append(t), this._process(), this + }, + finalize: function(t) { + return t && this._append(t), this._doFinalize() + }, + blockSize: 16, + _createHelper: function(t) { + return function(e, r) { + return new t.init(r).finalize(e) + } + }, + _createHmacHelper: function(t) { + return function(e, r) { + return new p.HMAC.init(t, r).finalize(e) + } + } + }), n.algo = {}); + return n + }(Math), r) + }, + 754: function(t, e, r) { + var n, i, o; + t.exports = (n = r(9021), o = (i = n).lib.WordArray, i.enc.Base64 = { + stringify: function(t) { + var e = t.words, + r = t.sigBytes, + n = this._map; + t.clamp(); + for (var i = [], o = 0; o < r; o += 3) + for (var s = (e[o >>> 2] >>> 24 - o % 4 * 8 & 255) << 16 | (e[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255) << 8 | e[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, a = 0; a < 4 && o + .75 * a < r; a++) i.push(n.charAt(s >>> 6 * (3 - a) & 63)); + var f = n.charAt(64); + if (f) + for (; i.length % 4;) i.push(f); + return i.join("") + }, + parse: function(t) { + var e = t.length, + r = this._map, + n = this._reverseMap; + if (!n) { + n = this._reverseMap = []; + for (var i = 0; i < r.length; i++) n[r.charCodeAt(i)] = i + } + var s = r.charAt(64); + if (s) { + var a = t.indexOf(s); - 1 !== a && (e = a) + } + return function(t, e, r) { + for (var n = [], i = 0, s = 0; s < e; s++) + if (s % 4) { + var a = r[t.charCodeAt(s - 1)] << s % 4 * 2, + f = r[t.charCodeAt(s)] >>> 6 - s % 4 * 2; + n[i >>> 2] |= (a | f) << 24 - i % 4 * 8, i++ + } return o.create(n, i) + }(t, e, n) + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + }, n.enc.Base64) + }, + 5503: function(t, e, r) { + var n; + t.exports = (n = r(9021), function() { + var t = n, + e = t.lib.WordArray, + r = t.enc; + + function i(t) { + return t << 8 & 4278255360 | t >>> 8 & 16711935 + } + r.Utf16 = r.Utf16BE = { + stringify: function(t) { + for (var e = t.words, r = t.sigBytes, n = [], i = 0; i < r; i += 2) { + var o = e[i >>> 2] >>> 16 - i % 4 * 8 & 65535; + n.push(String.fromCharCode(o)) + } + return n.join("") + }, + parse: function(t) { + for (var r = t.length, n = [], i = 0; i < r; i++) n[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; + return e.create(n, 2 * r) + } + }, r.Utf16LE = { + stringify: function(t) { + for (var e = t.words, r = t.sigBytes, n = [], o = 0; o < r; o += 2) { + var s = i(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); + n.push(String.fromCharCode(s)) + } + return n.join("") + }, + parse: function(t) { + for (var r = t.length, n = [], o = 0; o < r; o++) n[o >>> 1] |= i(t.charCodeAt(o) << 16 - o % 2 * 16); + return e.create(n, 2 * r) + } + } + }(), n.enc.Utf16) + }, + 9506: function(t, e, r) { + var n, i, o, s, a, f, u, c; + t.exports = (c = r(9021), r(5471), r(1025), o = (i = (n = c).lib).Base, s = i.WordArray, f = (a = n.algo).MD5, u = a.EvpKDF = o.extend({ + cfg: o.extend({ + keySize: 4, + hasher: f, + iterations: 1 + }), + init: function(t) { + this.cfg = this.cfg.extend(t) + }, + compute: function(t, e) { + for (var r = this.cfg, n = r.hasher.create(), i = s.create(), o = i.words, a = r.keySize, f = r.iterations; o.length < a;) { + u && n.update(u); + var u = n.update(t).finalize(e); + n.reset(); + for (var c = 1; c < f; c++) u = n.finalize(u), n.reset(); + i.concat(u) + } + return i.sigBytes = 4 * a, i + } + }), n.EvpKDF = function(t, e, r) { + return u.create(r).compute(t, e) + }, c.EvpKDF) + }, + 25: function(t, e, r) { + var n, i, o, s; + t.exports = (s = r(9021), r(7165), i = (n = s).lib.CipherParams, o = n.enc.Hex, n.format.Hex = { + stringify: function(t) { + return t.ciphertext.toString(o) + }, + parse: function(t) { + var e = o.parse(t); + return i.create({ + ciphertext: e + }) + } + }, s.format.Hex) + }, + 1025: function(t, e, r) { + var n, i, o; + t.exports = (i = (n = r(9021)).lib.Base, o = n.enc.Utf8, void(n.algo.HMAC = i.extend({ + init: function(t, e) { + t = this._hasher = new t.init, "string" == typeof e && (e = o.parse(e)); + var r = t.blockSize, + n = 4 * r; + e.sigBytes > n && (e = t.finalize(e)), e.clamp(); + for (var i = this._oKey = e.clone(), s = this._iKey = e.clone(), a = i.words, f = s.words, u = 0; u < r; u++) a[u] ^= 1549556828, f[u] ^= 909522486; + i.sigBytes = s.sigBytes = n, this.reset() + }, + reset: function() { + var t = this._hasher; + t.reset(), t.update(this._iKey) + }, + update: function(t) { + return this._hasher.update(t), this + }, + finalize: function(t) { + var e = this._hasher, + r = e.finalize(t); + return e.reset(), e.finalize(this._oKey.clone().concat(r)) + } + }))) + }, + 1396: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(3240), r(6440), r(5503), r(754), r(4636), r(5471), r(3009), r(6308), r(1380), r(9557), r(5953), r(8056), r(1025), r(19), r(9506), r(7165), r(2169), r(6939), r(6372), r(3797), r(8454), r(2073), r(4905), r(482), r(2155), r(8124), r(25), r(955), r(7628), r(7193), r(6298), r(2696), n) + }, + 6440: function(t, e, r) { + var n; + t.exports = (n = r(9021), function() { + if ("function" == typeof ArrayBuffer) { + var t = n.lib.WordArray, + e = t.init, + r = t.init = function(t) { + if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { + for (var r = t.byteLength, n = [], i = 0; i < r; i++) n[i >>> 2] |= t[i] << 24 - i % 4 * 8; + e.call(this, n, r) + } else e.apply(this, arguments) + }; + r.prototype = t + } + }(), n.lib.WordArray) + }, + 4636: function(t, e, r) { + var n; + t.exports = (n = r(9021), function(t) { + var e = n, + r = e.lib, + i = r.WordArray, + o = r.Hasher, + s = e.algo, + a = []; + ! function() { + for (var e = 0; e < 64; e++) a[e] = 4294967296 * t.abs(t.sin(e + 1)) | 0 + }(); + var f = s.MD5 = o.extend({ + _doReset: function() { + this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878]) + }, + _doProcessBlock: function(t, e) { + for (var r = 0; r < 16; r++) { + var n = e + r, + i = t[n]; + t[n] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8) + } + var o = this._hash.words, + s = t[e + 0], + f = t[e + 1], + l = t[e + 2], + y = t[e + 3], + g = t[e + 4], + d = t[e + 5], + v = t[e + 6], + m = t[e + 7], + S = t[e + 8], + _ = t[e + 9], + b = t[e + 10], + E = t[e + 11], + w = t[e + 12], + O = t[e + 13], + B = t[e + 14], + A = t[e + 15], + x = o[0], + P = o[1], + T = o[2], + I = o[3]; + x = u(x, P, T, I, s, 7, a[0]), I = u(I, x, P, T, f, 12, a[1]), T = u(T, I, x, P, l, 17, a[2]), P = u(P, T, I, x, y, 22, a[3]), x = u(x, P, T, I, g, 7, a[4]), I = u(I, x, P, T, d, 12, a[5]), T = u(T, I, x, P, v, 17, a[6]), P = u(P, T, I, x, m, 22, a[7]), x = u(x, P, T, I, S, 7, a[8]), I = u(I, x, P, T, _, 12, a[9]), T = u(T, I, x, P, b, 17, a[10]), P = u(P, T, I, x, E, 22, a[11]), x = u(x, P, T, I, w, 7, a[12]), I = u(I, x, P, T, O, 12, a[13]), T = u(T, I, x, P, B, 17, a[14]), x = c(x, P = u(P, T, I, x, A, 22, a[15]), T, I, f, 5, a[16]), I = c(I, x, P, T, v, 9, a[17]), T = c(T, I, x, P, E, 14, a[18]), P = c(P, T, I, x, s, 20, a[19]), x = c(x, P, T, I, d, 5, a[20]), I = c(I, x, P, T, b, 9, a[21]), T = c(T, I, x, P, A, 14, a[22]), P = c(P, T, I, x, g, 20, a[23]), x = c(x, P, T, I, _, 5, a[24]), I = c(I, x, P, T, B, 9, a[25]), T = c(T, I, x, P, y, 14, a[26]), P = c(P, T, I, x, S, 20, a[27]), x = c(x, P, T, I, O, 5, a[28]), I = c(I, x, P, T, l, 9, a[29]), T = c(T, I, x, P, m, 14, a[30]), x = h(x, P = c(P, T, I, x, w, 20, a[31]), T, I, d, 4, a[32]), I = h(I, x, P, T, S, 11, a[33]), T = h(T, I, x, P, E, 16, a[34]), P = h(P, T, I, x, B, 23, a[35]), x = h(x, P, T, I, f, 4, a[36]), I = h(I, x, P, T, g, 11, a[37]), T = h(T, I, x, P, m, 16, a[38]), P = h(P, T, I, x, b, 23, a[39]), x = h(x, P, T, I, O, 4, a[40]), I = h(I, x, P, T, s, 11, a[41]), T = h(T, I, x, P, y, 16, a[42]), P = h(P, T, I, x, v, 23, a[43]), x = h(x, P, T, I, _, 4, a[44]), I = h(I, x, P, T, w, 11, a[45]), T = h(T, I, x, P, A, 16, a[46]), x = p(x, P = h(P, T, I, x, l, 23, a[47]), T, I, s, 6, a[48]), I = p(I, x, P, T, m, 10, a[49]), T = p(T, I, x, P, B, 15, a[50]), P = p(P, T, I, x, d, 21, a[51]), x = p(x, P, T, I, w, 6, a[52]), I = p(I, x, P, T, y, 10, a[53]), T = p(T, I, x, P, b, 15, a[54]), P = p(P, T, I, x, f, 21, a[55]), x = p(x, P, T, I, S, 6, a[56]), I = p(I, x, P, T, A, 10, a[57]), T = p(T, I, x, P, v, 15, a[58]), P = p(P, T, I, x, O, 21, a[59]), x = p(x, P, T, I, g, 6, a[60]), I = p(I, x, P, T, E, 10, a[61]), T = p(T, I, x, P, l, 15, a[62]), P = p(P, T, I, x, _, 21, a[63]), o[0] = o[0] + x | 0, o[1] = o[1] + P | 0, o[2] = o[2] + T | 0, o[3] = o[3] + I | 0 + }, + _doFinalize: function() { + var e = this._data, + r = e.words, + n = 8 * this._nDataBytes, + i = 8 * e.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32; + var o = t.floor(n / 4294967296), + s = n; + r[15 + (i + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), r[14 + (i + 64 >>> 9 << 4)] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), e.sigBytes = 4 * (r.length + 1), this._process(); + for (var a = this._hash, f = a.words, u = 0; u < 4; u++) { + var c = f[u]; + f[u] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8) + } + return a + }, + clone: function() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t + } + }); + + function u(t, e, r, n, i, o, s) { + var a = t + (e & r | ~e & n) + i + s; + return (a << o | a >>> 32 - o) + e + } + + function c(t, e, r, n, i, o, s) { + var a = t + (e & n | r & ~n) + i + s; + return (a << o | a >>> 32 - o) + e + } + + function h(t, e, r, n, i, o, s) { + var a = t + (e ^ r ^ n) + i + s; + return (a << o | a >>> 32 - o) + e + } + + function p(t, e, r, n, i, o, s) { + var a = t + (r ^ (e | ~n)) + i + s; + return (a << o | a >>> 32 - o) + e + } + e.MD5 = o._createHelper(f), e.HmacMD5 = o._createHmacHelper(f) + }(Math), n.MD5) + }, + 2169: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.mode.CFB = function() { + var t = n.lib.BlockCipherMode.extend(); + + function e(t, e, r, n) { + var i = this._iv; + if (i) { + var o = i.slice(0); + this._iv = void 0 + } else o = this._prevBlock; + n.encryptBlock(o, 0); + for (var s = 0; s < r; s++) t[e + s] ^= o[s] + } + return t.Encryptor = t.extend({ + processBlock: function(t, r) { + var n = this._cipher, + i = n.blockSize; + e.call(this, t, r, i, n), this._prevBlock = t.slice(r, r + i) + } + }), t.Decryptor = t.extend({ + processBlock: function(t, r) { + var n = this._cipher, + i = n.blockSize, + o = t.slice(r, r + i); + e.call(this, t, r, i, n), this._prevBlock = o + } + }), t + }(), n.mode.CFB) + }, + 6372: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.mode.CTRGladman = function() { + var t = n.lib.BlockCipherMode.extend(); + + function e(t) { + if (255 & ~(t >> 24)) t += 1 << 24; + else { + var e = t >> 16 & 255, + r = t >> 8 & 255, + n = 255 & t; + 255 === e ? (e = 0, 255 === r ? (r = 0, 255 === n ? n = 0 : ++n) : ++r) : ++e, t = 0, t += e << 16, t += r << 8, t += n + } + return t + } + var r = t.Encryptor = t.extend({ + processBlock: function(t, r) { + var n = this._cipher, + i = n.blockSize, + o = this._iv, + s = this._counter; + o && (s = this._counter = o.slice(0), this._iv = void 0), + function(t) { + 0 === (t[0] = e(t[0])) && (t[1] = e(t[1])) + }(s); + var a = s.slice(0); + n.encryptBlock(a, 0); + for (var f = 0; f < i; f++) t[r + f] ^= a[f] + } + }); + return t.Decryptor = r, t + }(), n.mode.CTRGladman) + }, + 6939: function(t, e, r) { + var n, i, o; + t.exports = (o = r(9021), r(7165), o.mode.CTR = (i = (n = o.lib.BlockCipherMode.extend()).Encryptor = n.extend({ + processBlock: function(t, e) { + var r = this._cipher, + n = r.blockSize, + i = this._iv, + o = this._counter; + i && (o = this._counter = i.slice(0), this._iv = void 0); + var s = o.slice(0); + r.encryptBlock(s, 0), o[n - 1] = o[n - 1] + 1 | 0; + for (var a = 0; a < n; a++) t[e + a] ^= s[a] + } + }), n.Decryptor = i, n), o.mode.CTR) + }, + 8454: function(t, e, r) { + var n, i; + t.exports = (i = r(9021), r(7165), i.mode.ECB = ((n = i.lib.BlockCipherMode.extend()).Encryptor = n.extend({ + processBlock: function(t, e) { + this._cipher.encryptBlock(t, e) + } + }), n.Decryptor = n.extend({ + processBlock: function(t, e) { + this._cipher.decryptBlock(t, e) + } + }), n), i.mode.ECB) + }, + 3797: function(t, e, r) { + var n, i, o; + t.exports = (o = r(9021), r(7165), o.mode.OFB = (i = (n = o.lib.BlockCipherMode.extend()).Encryptor = n.extend({ + processBlock: function(t, e) { + var r = this._cipher, + n = r.blockSize, + i = this._iv, + o = this._keystream; + i && (o = this._keystream = i.slice(0), this._iv = void 0), r.encryptBlock(o, 0); + for (var s = 0; s < n; s++) t[e + s] ^= o[s] + } + }), n.Decryptor = i, n), o.mode.OFB) + }, + 2073: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.pad.AnsiX923 = { + pad: function(t, e) { + var r = t.sigBytes, + n = 4 * e, + i = n - r % n, + o = r + i - 1; + t.clamp(), t.words[o >>> 2] |= i << 24 - o % 4 * 8, t.sigBytes += i + }, + unpad: function(t) { + var e = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= e + } + }, n.pad.Ansix923) + }, + 4905: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.pad.Iso10126 = { + pad: function(t, e) { + var r = 4 * e, + i = r - t.sigBytes % r; + t.concat(n.lib.WordArray.random(i - 1)).concat(n.lib.WordArray.create([i << 24], 1)) + }, + unpad: function(t) { + var e = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= e + } + }, n.pad.Iso10126) + }, + 482: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.pad.Iso97971 = { + pad: function(t, e) { + t.concat(n.lib.WordArray.create([2147483648], 1)), n.pad.ZeroPadding.pad(t, e) + }, + unpad: function(t) { + n.pad.ZeroPadding.unpad(t), t.sigBytes-- + } + }, n.pad.Iso97971) + }, + 8124: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.pad.NoPadding = { + pad: function() {}, + unpad: function() {} + }, n.pad.NoPadding) + }, + 2155: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(7165), n.pad.ZeroPadding = { + pad: function(t, e) { + var r = 4 * e; + t.clamp(), t.sigBytes += r - (t.sigBytes % r || r) + }, + unpad: function(t) { + for (var e = t.words, r = t.sigBytes - 1; !(e[r >>> 2] >>> 24 - r % 4 * 8 & 255);) r--; + t.sigBytes = r + 1 + } + }, n.pad.ZeroPadding) + }, + 19: function(t, e, r) { + var n, i, o, s, a, f, u, c, h; + t.exports = (h = r(9021), r(5471), r(1025), o = (i = (n = h).lib).Base, s = i.WordArray, f = (a = n.algo).SHA1, u = a.HMAC, c = a.PBKDF2 = o.extend({ + cfg: o.extend({ + keySize: 4, + hasher: f, + iterations: 1 + }), + init: function(t) { + this.cfg = this.cfg.extend(t) + }, + compute: function(t, e) { + for (var r = this.cfg, n = u.create(r.hasher, t), i = s.create(), o = s.create([1]), a = i.words, f = o.words, c = r.keySize, h = r.iterations; a.length < c;) { + var p = n.update(e).finalize(o); + n.reset(); + for (var l = p.words, y = l.length, g = p, d = 1; d < h; d++) { + g = n.finalize(g), n.reset(); + for (var v = g.words, m = 0; m < y; m++) l[m] ^= v[m] + } + i.concat(p), f[0]++ + } + return i.sigBytes = 4 * c, i + } + }), n.PBKDF2 = function(t, e, r) { + return c.create(r).compute(t, e) + }, h.PBKDF2) + }, + 2696: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() { + var t = n, + e = t.lib.StreamCipher, + r = t.algo, + i = [], + o = [], + s = [], + a = r.RabbitLegacy = e.extend({ + _doReset: function() { + var t = this._key.words, + e = this.cfg.iv, + r = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var i = 0; i < 4; i++) f.call(this); + for (i = 0; i < 8; i++) n[i] ^= r[i + 4 & 7]; + if (e) { + var o = e.words, + s = o[0], + a = o[1], + u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), + c = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + h = u >>> 16 | 4294901760 & c, + p = c << 16 | 65535 & u; + for (n[0] ^= u, n[1] ^= h, n[2] ^= c, n[3] ^= p, n[4] ^= u, n[5] ^= h, n[6] ^= c, n[7] ^= p, i = 0; i < 4; i++) f.call(this) + } + }, + _doProcessBlock: function(t, e) { + var r = this._X; + f.call(this), i[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, i[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, i[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, i[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; + for (var n = 0; n < 4; n++) i[n] = 16711935 & (i[n] << 8 | i[n] >>> 24) | 4278255360 & (i[n] << 24 | i[n] >>> 8), t[e + n] ^= i[n] + }, + blockSize: 4, + ivSize: 2 + }); + + function f() { + for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r]; + for (e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0, r = 0; r < 8; r++) { + var n = t[r] + e[r], + i = 65535 & n, + a = n >>> 16, + f = ((i * i >>> 17) + i * a >>> 15) + a * a, + u = ((4294901760 & n) * n | 0) + ((65535 & n) * n | 0); + s[r] = f ^ u + } + t[0] = s[0] + (s[7] << 16 | s[7] >>> 16) + (s[6] << 16 | s[6] >>> 16) | 0, t[1] = s[1] + (s[0] << 8 | s[0] >>> 24) + s[7] | 0, t[2] = s[2] + (s[1] << 16 | s[1] >>> 16) + (s[0] << 16 | s[0] >>> 16) | 0, t[3] = s[3] + (s[2] << 8 | s[2] >>> 24) + s[1] | 0, t[4] = s[4] + (s[3] << 16 | s[3] >>> 16) + (s[2] << 16 | s[2] >>> 16) | 0, t[5] = s[5] + (s[4] << 8 | s[4] >>> 24) + s[3] | 0, t[6] = s[6] + (s[5] << 16 | s[5] >>> 16) + (s[4] << 16 | s[4] >>> 16) | 0, t[7] = s[7] + (s[6] << 8 | s[6] >>> 24) + s[5] | 0 + } + t.RabbitLegacy = e._createHelper(a) + }(), n.RabbitLegacy) + }, + 6298: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() { + var t = n, + e = t.lib.StreamCipher, + r = t.algo, + i = [], + o = [], + s = [], + a = r.Rabbit = e.extend({ + _doReset: function() { + for (var t = this._key.words, e = this.cfg.iv, r = 0; r < 4; r++) t[r] = 16711935 & (t[r] << 8 | t[r] >>> 24) | 4278255360 & (t[r] << 24 | t[r] >>> 8); + var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + i = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + for (this._b = 0, r = 0; r < 4; r++) f.call(this); + for (r = 0; r < 8; r++) i[r] ^= n[r + 4 & 7]; + if (e) { + var o = e.words, + s = o[0], + a = o[1], + u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), + c = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + h = u >>> 16 | 4294901760 & c, + p = c << 16 | 65535 & u; + for (i[0] ^= u, i[1] ^= h, i[2] ^= c, i[3] ^= p, i[4] ^= u, i[5] ^= h, i[6] ^= c, i[7] ^= p, r = 0; r < 4; r++) f.call(this) + } + }, + _doProcessBlock: function(t, e) { + var r = this._X; + f.call(this), i[0] = r[0] ^ r[5] >>> 16 ^ r[3] << 16, i[1] = r[2] ^ r[7] >>> 16 ^ r[5] << 16, i[2] = r[4] ^ r[1] >>> 16 ^ r[7] << 16, i[3] = r[6] ^ r[3] >>> 16 ^ r[1] << 16; + for (var n = 0; n < 4; n++) i[n] = 16711935 & (i[n] << 8 | i[n] >>> 24) | 4278255360 & (i[n] << 24 | i[n] >>> 8), t[e + n] ^= i[n] + }, + blockSize: 4, + ivSize: 2 + }); + + function f() { + for (var t = this._X, e = this._C, r = 0; r < 8; r++) o[r] = e[r]; + for (e[0] = e[0] + 1295307597 + this._b | 0, e[1] = e[1] + 3545052371 + (e[0] >>> 0 < o[0] >>> 0 ? 1 : 0) | 0, e[2] = e[2] + 886263092 + (e[1] >>> 0 < o[1] >>> 0 ? 1 : 0) | 0, e[3] = e[3] + 1295307597 + (e[2] >>> 0 < o[2] >>> 0 ? 1 : 0) | 0, e[4] = e[4] + 3545052371 + (e[3] >>> 0 < o[3] >>> 0 ? 1 : 0) | 0, e[5] = e[5] + 886263092 + (e[4] >>> 0 < o[4] >>> 0 ? 1 : 0) | 0, e[6] = e[6] + 1295307597 + (e[5] >>> 0 < o[5] >>> 0 ? 1 : 0) | 0, e[7] = e[7] + 3545052371 + (e[6] >>> 0 < o[6] >>> 0 ? 1 : 0) | 0, this._b = e[7] >>> 0 < o[7] >>> 0 ? 1 : 0, r = 0; r < 8; r++) { + var n = t[r] + e[r], + i = 65535 & n, + a = n >>> 16, + f = ((i * i >>> 17) + i * a >>> 15) + a * a, + u = ((4294901760 & n) * n | 0) + ((65535 & n) * n | 0); + s[r] = f ^ u + } + t[0] = s[0] + (s[7] << 16 | s[7] >>> 16) + (s[6] << 16 | s[6] >>> 16) | 0, t[1] = s[1] + (s[0] << 8 | s[0] >>> 24) + s[7] | 0, t[2] = s[2] + (s[1] << 16 | s[1] >>> 16) + (s[0] << 16 | s[0] >>> 16) | 0, t[3] = s[3] + (s[2] << 8 | s[2] >>> 24) + s[1] | 0, t[4] = s[4] + (s[3] << 16 | s[3] >>> 16) + (s[2] << 16 | s[2] >>> 16) | 0, t[5] = s[5] + (s[4] << 8 | s[4] >>> 24) + s[3] | 0, t[6] = s[6] + (s[5] << 16 | s[5] >>> 16) + (s[4] << 16 | s[4] >>> 16) | 0, t[7] = s[7] + (s[6] << 8 | s[6] >>> 24) + s[5] | 0 + } + t.Rabbit = e._createHelper(a) + }(), n.Rabbit) + }, + 7193: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() { + var t = n, + e = t.lib.StreamCipher, + r = t.algo, + i = r.RC4 = e.extend({ + _doReset: function() { + for (var t = this._key, e = t.words, r = t.sigBytes, n = this._S = [], i = 0; i < 256; i++) n[i] = i; + i = 0; + for (var o = 0; i < 256; i++) { + var s = i % r, + a = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; + o = (o + n[i] + a) % 256; + var f = n[i]; + n[i] = n[o], n[o] = f + } + this._i = this._j = 0 + }, + _doProcessBlock: function(t, e) { + t[e] ^= o.call(this) + }, + keySize: 8, + ivSize: 0 + }); + + function o() { + for (var t = this._S, e = this._i, r = this._j, n = 0, i = 0; i < 4; i++) { + r = (r + t[e = (e + 1) % 256]) % 256; + var o = t[e]; + t[e] = t[r], t[r] = o, n |= t[(t[e] + t[r]) % 256] << 24 - 8 * i + } + return this._i = e, this._j = r, n + } + t.RC4 = e._createHelper(i); + var s = r.RC4Drop = i.extend({ + cfg: i.cfg.extend({ + drop: 192 + }), + _doReset: function() { + i._doReset.call(this); + for (var t = this.cfg.drop; t > 0; t--) o.call(this) + } + }); + t.RC4Drop = e._createHelper(s) + }(), n.RC4) + }, + 8056: function(t, e, r) { + var n; + t.exports = (n = r(9021), function(t) { + var e = n, + r = e.lib, + i = r.WordArray, + o = r.Hasher, + s = e.algo, + a = i.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), + f = i.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), + u = i.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), + c = i.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), + h = i.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), + p = i.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), + l = s.RIPEMD160 = o.extend({ + _doReset: function() { + this._hash = i.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function(t, e) { + for (var r = 0; r < 16; r++) { + var n = e + r, + i = t[n]; + t[n] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8) + } + var o, s, l, _, b, E, w, O, B, A, x, P = this._hash.words, + T = h.words, + I = p.words, + k = a.words, + D = f.words, + R = u.words, + N = c.words; + for (E = o = P[0], w = s = P[1], O = l = P[2], B = _ = P[3], A = b = P[4], r = 0; r < 80; r += 1) x = o + t[e + k[r]] | 0, x += r < 16 ? y(s, l, _) + T[0] : r < 32 ? g(s, l, _) + T[1] : r < 48 ? d(s, l, _) + T[2] : r < 64 ? v(s, l, _) + T[3] : m(s, l, _) + T[4], x = (x = S(x |= 0, R[r])) + b | 0, o = b, b = _, _ = S(l, 10), l = s, s = x, x = E + t[e + D[r]] | 0, x += r < 16 ? m(w, O, B) + I[0] : r < 32 ? v(w, O, B) + I[1] : r < 48 ? d(w, O, B) + I[2] : r < 64 ? g(w, O, B) + I[3] : y(w, O, B) + I[4], x = (x = S(x |= 0, N[r])) + A | 0, E = A, A = B, B = S(O, 10), O = w, w = x; + x = P[1] + l + B | 0, P[1] = P[2] + _ + A | 0, P[2] = P[3] + b + E | 0, P[3] = P[4] + o + w | 0, P[4] = P[0] + s + O | 0, P[0] = x + }, + _doFinalize: function() { + var t = this._data, + e = t.words, + r = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + e[n >>> 5] |= 128 << 24 - n % 32, e[14 + (n + 64 >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); + for (var i = this._hash, o = i.words, s = 0; s < 5; s++) { + var a = o[s]; + o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8) + } + return i + }, + clone: function() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t + } + }); + + function y(t, e, r) { + return t ^ e ^ r + } + + function g(t, e, r) { + return t & e | ~t & r + } + + function d(t, e, r) { + return (t | ~e) ^ r + } + + function v(t, e, r) { + return t & r | e & ~r + } + + function m(t, e, r) { + return t ^ (e | ~r) + } + + function S(t, e) { + return t << e | t >>> 32 - e + } + e.RIPEMD160 = o._createHelper(l), e.HmacRIPEMD160 = o._createHmacHelper(l) + }(Math), n.RIPEMD160) + }, + 5471: function(t, e, r) { + var n, i, o, s, a, f, u, c; + t.exports = (i = (n = c = r(9021)).lib, o = i.WordArray, s = i.Hasher, a = n.algo, f = [], u = a.SHA1 = s.extend({ + _doReset: function() { + this._hash = new o.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) + }, + _doProcessBlock: function(t, e) { + for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], u = 0; u < 80; u++) { + if (u < 16) f[u] = 0 | t[e + u]; + else { + var c = f[u - 3] ^ f[u - 8] ^ f[u - 14] ^ f[u - 16]; + f[u] = c << 1 | c >>> 31 + } + var h = (n << 5 | n >>> 27) + a + f[u]; + h += u < 20 ? 1518500249 + (i & o | ~i & s) : u < 40 ? 1859775393 + (i ^ o ^ s) : u < 60 ? (i & o | i & s | o & s) - 1894007588 : (i ^ o ^ s) - 899497514, a = s, s = o, o = i << 30 | i >>> 2, i = n, n = h + } + r[0] = r[0] + n | 0, r[1] = r[1] + i | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + a | 0 + }, + _doFinalize: function() { + var t = this._data, + e = t.words, + r = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[14 + (n + 64 >>> 9 << 4)] = Math.floor(r / 4294967296), e[15 + (n + 64 >>> 9 << 4)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash + }, + clone: function() { + var t = s.clone.call(this); + return t._hash = this._hash.clone(), t + } + }), n.SHA1 = s._createHelper(u), n.HmacSHA1 = s._createHmacHelper(u), c.SHA1) + }, + 6308: function(t, e, r) { + var n, i, o, s, a, f; + t.exports = (f = r(9021), r(3009), i = (n = f).lib.WordArray, o = n.algo, s = o.SHA256, a = o.SHA224 = s.extend({ + _doReset: function() { + this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]) + }, + _doFinalize: function() { + var t = s._doFinalize.call(this); + return t.sigBytes -= 4, t + } + }), n.SHA224 = s._createHelper(a), n.HmacSHA224 = s._createHmacHelper(a), f.SHA224) + }, + 3009: function(t, e, r) { + var n; + t.exports = (n = r(9021), function(t) { + var e = n, + r = e.lib, + i = r.WordArray, + o = r.Hasher, + s = e.algo, + a = [], + f = []; + ! function() { + function e(e) { + for (var r = t.sqrt(e), n = 2; n <= r; n++) + if (!(e % n)) return !1; + return !0 + } + + function r(t) { + return 4294967296 * (t - (0 | t)) | 0 + } + for (var n = 2, i = 0; i < 64;) e(n) && (i < 8 && (a[i] = r(t.pow(n, .5))), f[i] = r(t.pow(n, 1 / 3)), i++), n++ + }(); + var u = [], + c = s.SHA256 = o.extend({ + _doReset: function() { + this._hash = new i.init(a.slice(0)) + }, + _doProcessBlock: function(t, e) { + for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], c = r[5], h = r[6], p = r[7], l = 0; l < 64; l++) { + if (l < 16) u[l] = 0 | t[e + l]; + else { + var y = u[l - 15], + g = (y << 25 | y >>> 7) ^ (y << 14 | y >>> 18) ^ y >>> 3, + d = u[l - 2], + v = (d << 15 | d >>> 17) ^ (d << 13 | d >>> 19) ^ d >>> 10; + u[l] = g + u[l - 7] + v + u[l - 16] + } + var m = n & i ^ n & o ^ i & o, + S = (n << 30 | n >>> 2) ^ (n << 19 | n >>> 13) ^ (n << 10 | n >>> 22), + _ = p + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & c ^ ~a & h) + f[l] + u[l]; + p = h, h = c, c = a, a = s + _ | 0, s = o, o = i, i = n, n = _ + (S + m) | 0 + } + r[0] = r[0] + n | 0, r[1] = r[1] + i | 0, r[2] = r[2] + o | 0, r[3] = r[3] + s | 0, r[4] = r[4] + a | 0, r[5] = r[5] + c | 0, r[6] = r[6] + h | 0, r[7] = r[7] + p | 0 + }, + _doFinalize: function() { + var e = this._data, + r = e.words, + n = 8 * this._nDataBytes, + i = 8 * e.sigBytes; + return r[i >>> 5] |= 128 << 24 - i % 32, r[14 + (i + 64 >>> 9 << 4)] = t.floor(n / 4294967296), r[15 + (i + 64 >>> 9 << 4)] = n, e.sigBytes = 4 * r.length, this._process(), this._hash + }, + clone: function() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t + } + }); + e.SHA256 = o._createHelper(c), e.HmacSHA256 = o._createHmacHelper(c) + }(Math), n.SHA256) + }, + 5953: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(3240), function(t) { + var e = n, + r = e.lib, + i = r.WordArray, + o = r.Hasher, + s = e.x64.Word, + a = e.algo, + f = [], + u = [], + c = []; + ! function() { + for (var t = 1, e = 0, r = 0; r < 24; r++) { + f[t + 5 * e] = (r + 1) * (r + 2) / 2 % 64; + var n = (2 * t + 3 * e) % 5; + t = e % 5, e = n + } + for (t = 0; t < 5; t++) + for (e = 0; e < 5; e++) u[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5; + for (var i = 1, o = 0; o < 24; o++) { + for (var a = 0, h = 0, p = 0; p < 7; p++) { + if (1 & i) { + var l = (1 << p) - 1; + l < 32 ? h ^= 1 << l : a ^= 1 << l - 32 + } + 128 & i ? i = i << 1 ^ 113 : i <<= 1 + } + c[o] = s.create(a, h) + } + }(); + var h = []; + ! function() { + for (var t = 0; t < 25; t++) h[t] = s.create() + }(); + var p = a.SHA3 = o.extend({ + cfg: o.cfg.extend({ + outputLength: 512 + }), + _doReset: function() { + for (var t = this._state = [], e = 0; e < 25; e++) t[e] = new s.init; + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32 + }, + _doProcessBlock: function(t, e) { + for (var r = this._state, n = this.blockSize / 2, i = 0; i < n; i++) { + var o = t[e + 2 * i], + s = t[e + 2 * i + 1]; + o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), (P = r[i]).high ^= s, P.low ^= o + } + for (var a = 0; a < 24; a++) { + for (var p = 0; p < 5; p++) { + for (var l = 0, y = 0, g = 0; g < 5; g++) l ^= (P = r[p + 5 * g]).high, y ^= P.low; + var d = h[p]; + d.high = l, d.low = y + } + for (p = 0; p < 5; p++) { + var v = h[(p + 4) % 5], + m = h[(p + 1) % 5], + S = m.high, + _ = m.low; + for (l = v.high ^ (S << 1 | _ >>> 31), y = v.low ^ (_ << 1 | S >>> 31), g = 0; g < 5; g++)(P = r[p + 5 * g]).high ^= l, P.low ^= y + } + for (var b = 1; b < 25; b++) { + var E = (P = r[b]).high, + w = P.low, + O = f[b]; + O < 32 ? (l = E << O | w >>> 32 - O, y = w << O | E >>> 32 - O) : (l = w << O - 32 | E >>> 64 - O, y = E << O - 32 | w >>> 64 - O); + var B = h[u[b]]; + B.high = l, B.low = y + } + var A = h[0], + x = r[0]; + for (A.high = x.high, A.low = x.low, p = 0; p < 5; p++) + for (g = 0; g < 5; g++) { + var P = r[b = p + 5 * g], + T = h[b], + I = h[(p + 1) % 5 + 5 * g], + k = h[(p + 2) % 5 + 5 * g]; + P.high = T.high ^ ~I.high & k.high, P.low = T.low ^ ~I.low & k.low + } + P = r[0]; + var D = c[a]; + P.high ^= D.high, P.low ^= D.low + } + }, + _doFinalize: function() { + var e = this._data, + r = e.words, + n = (this._nDataBytes, 8 * e.sigBytes), + o = 32 * this.blockSize; + r[n >>> 5] |= 1 << 24 - n % 32, r[(t.ceil((n + 1) / o) * o >>> 5) - 1] |= 128, e.sigBytes = 4 * r.length, this._process(); + for (var s = this._state, a = this.cfg.outputLength / 8, f = a / 8, u = [], c = 0; c < f; c++) { + var h = s[c], + p = h.high, + l = h.low; + p = 16711935 & (p << 8 | p >>> 24) | 4278255360 & (p << 24 | p >>> 8), l = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8), u.push(l), u.push(p) + } + return new i.init(u, a) + }, + clone: function() { + for (var t = o.clone.call(this), e = t._state = this._state.slice(0), r = 0; r < 25; r++) e[r] = e[r].clone(); + return t + } + }); + e.SHA3 = o._createHelper(p), e.HmacSHA3 = o._createHmacHelper(p) + }(Math), n.SHA3) + }, + 9557: function(t, e, r) { + var n, i, o, s, a, f, u, c; + t.exports = (c = r(9021), r(3240), r(1380), i = (n = c).x64, o = i.Word, s = i.WordArray, a = n.algo, f = a.SHA512, u = a.SHA384 = f.extend({ + _doReset: function() { + this._hash = new s.init([new o.init(3418070365, 3238371032), new o.init(1654270250, 914150663), new o.init(2438529370, 812702999), new o.init(355462360, 4144912697), new o.init(1731405415, 4290775857), new o.init(2394180231, 1750603025), new o.init(3675008525, 1694076839), new o.init(1203062813, 3204075428)]) + }, + _doFinalize: function() { + var t = f._doFinalize.call(this); + return t.sigBytes -= 16, t + } + }), n.SHA384 = f._createHelper(u), n.HmacSHA384 = f._createHmacHelper(u), c.SHA384) + }, + 1380: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(3240), function() { + var t = n, + e = t.lib.Hasher, + r = t.x64, + i = r.Word, + o = r.WordArray, + s = t.algo; + + function a() { + return i.create.apply(i, arguments) + } + var f = [a(1116352408, 3609767458), a(1899447441, 602891725), a(3049323471, 3964484399), a(3921009573, 2173295548), a(961987163, 4081628472), a(1508970993, 3053834265), a(2453635748, 2937671579), a(2870763221, 3664609560), a(3624381080, 2734883394), a(310598401, 1164996542), a(607225278, 1323610764), a(1426881987, 3590304994), a(1925078388, 4068182383), a(2162078206, 991336113), a(2614888103, 633803317), a(3248222580, 3479774868), a(3835390401, 2666613458), a(4022224774, 944711139), a(264347078, 2341262773), a(604807628, 2007800933), a(770255983, 1495990901), a(1249150122, 1856431235), a(1555081692, 3175218132), a(1996064986, 2198950837), a(2554220882, 3999719339), a(2821834349, 766784016), a(2952996808, 2566594879), a(3210313671, 3203337956), a(3336571891, 1034457026), a(3584528711, 2466948901), a(113926993, 3758326383), a(338241895, 168717936), a(666307205, 1188179964), a(773529912, 1546045734), a(1294757372, 1522805485), a(1396182291, 2643833823), a(1695183700, 2343527390), a(1986661051, 1014477480), a(2177026350, 1206759142), a(2456956037, 344077627), a(2730485921, 1290863460), a(2820302411, 3158454273), a(3259730800, 3505952657), a(3345764771, 106217008), a(3516065817, 3606008344), a(3600352804, 1432725776), a(4094571909, 1467031594), a(275423344, 851169720), a(430227734, 3100823752), a(506948616, 1363258195), a(659060556, 3750685593), a(883997877, 3785050280), a(958139571, 3318307427), a(1322822218, 3812723403), a(1537002063, 2003034995), a(1747873779, 3602036899), a(1955562222, 1575990012), a(2024104815, 1125592928), a(2227730452, 2716904306), a(2361852424, 442776044), a(2428436474, 593698344), a(2756734187, 3733110249), a(3204031479, 2999351573), a(3329325298, 3815920427), a(3391569614, 3928383900), a(3515267271, 566280711), a(3940187606, 3454069534), a(4118630271, 4000239992), a(116418474, 1914138554), a(174292421, 2731055270), a(289380356, 3203993006), a(460393269, 320620315), a(685471733, 587496836), a(852142971, 1086792851), a(1017036298, 365543100), a(1126000580, 2618297676), a(1288033470, 3409855158), a(1501505948, 4234509866), a(1607167915, 987167468), a(1816402316, 1246189591)], + u = []; + ! function() { + for (var t = 0; t < 80; t++) u[t] = a() + }(); + var c = s.SHA512 = e.extend({ + _doReset: function() { + this._hash = new o.init([new i.init(1779033703, 4089235720), new i.init(3144134277, 2227873595), new i.init(1013904242, 4271175723), new i.init(2773480762, 1595750129), new i.init(1359893119, 2917565137), new i.init(2600822924, 725511199), new i.init(528734635, 4215389547), new i.init(1541459225, 327033209)]) + }, + _doProcessBlock: function(t, e) { + for (var r = this._hash.words, n = r[0], i = r[1], o = r[2], s = r[3], a = r[4], c = r[5], h = r[6], p = r[7], l = n.high, y = n.low, g = i.high, d = i.low, v = o.high, m = o.low, S = s.high, _ = s.low, b = a.high, E = a.low, w = c.high, O = c.low, B = h.high, A = h.low, x = p.high, P = p.low, T = l, I = y, k = g, D = d, R = v, N = m, L = S, C = _, U = b, M = E, j = w, H = O, F = B, z = A, G = x, q = P, $ = 0; $ < 80; $++) { + var K = u[$]; + if ($ < 16) var W = K.high = 0 | t[e + 2 * $], + V = K.low = 0 | t[e + 2 * $ + 1]; + else { + var Y = u[$ - 15], + X = Y.high, + Z = Y.low, + J = (X >>> 1 | Z << 31) ^ (X >>> 8 | Z << 24) ^ X >>> 7, + Q = (Z >>> 1 | X << 31) ^ (Z >>> 8 | X << 24) ^ (Z >>> 7 | X << 25), + tt = u[$ - 2], + et = tt.high, + rt = tt.low, + nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ et >>> 6, + it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ (rt >>> 6 | et << 26), + ot = u[$ - 7], + st = ot.high, + at = ot.low, + ft = u[$ - 16], + ut = ft.high, + ct = ft.low; + W = (W = (W = J + st + ((V = Q + at) >>> 0 < Q >>> 0 ? 1 : 0)) + nt + ((V += it) >>> 0 < it >>> 0 ? 1 : 0)) + ut + ((V += ct) >>> 0 < ct >>> 0 ? 1 : 0), K.high = W, K.low = V + } + var ht, pt = U & j ^ ~U & F, + lt = M & H ^ ~M & z, + yt = T & k ^ T & R ^ k & R, + gt = I & D ^ I & N ^ D & N, + dt = (T >>> 28 | I << 4) ^ (T << 30 | I >>> 2) ^ (T << 25 | I >>> 7), + vt = (I >>> 28 | T << 4) ^ (I << 30 | T >>> 2) ^ (I << 25 | T >>> 7), + mt = (U >>> 14 | M << 18) ^ (U >>> 18 | M << 14) ^ (U << 23 | M >>> 9), + St = (M >>> 14 | U << 18) ^ (M >>> 18 | U << 14) ^ (M << 23 | U >>> 9), + _t = f[$], + bt = _t.high, + Et = _t.low, + wt = G + mt + ((ht = q + St) >>> 0 < q >>> 0 ? 1 : 0), + Ot = vt + gt; + G = F, q = z, F = j, z = H, j = U, H = M, U = L + (wt = (wt = (wt = wt + pt + ((ht += lt) >>> 0 < lt >>> 0 ? 1 : 0)) + bt + ((ht += Et) >>> 0 < Et >>> 0 ? 1 : 0)) + W + ((ht += V) >>> 0 < V >>> 0 ? 1 : 0)) + ((M = C + ht | 0) >>> 0 < C >>> 0 ? 1 : 0) | 0, L = R, C = N, R = k, N = D, k = T, D = I, T = wt + (dt + yt + (Ot >>> 0 < vt >>> 0 ? 1 : 0)) + ((I = ht + Ot | 0) >>> 0 < ht >>> 0 ? 1 : 0) | 0 + } + y = n.low = y + I, n.high = l + T + (y >>> 0 < I >>> 0 ? 1 : 0), d = i.low = d + D, i.high = g + k + (d >>> 0 < D >>> 0 ? 1 : 0), m = o.low = m + N, o.high = v + R + (m >>> 0 < N >>> 0 ? 1 : 0), _ = s.low = _ + C, s.high = S + L + (_ >>> 0 < C >>> 0 ? 1 : 0), E = a.low = E + M, a.high = b + U + (E >>> 0 < M >>> 0 ? 1 : 0), O = c.low = O + H, c.high = w + j + (O >>> 0 < H >>> 0 ? 1 : 0), A = h.low = A + z, h.high = B + F + (A >>> 0 < z >>> 0 ? 1 : 0), P = p.low = P + q, p.high = x + G + (P >>> 0 < q >>> 0 ? 1 : 0) + }, + _doFinalize: function() { + var t = this._data, + e = t.words, + r = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[30 + (n + 128 >>> 10 << 5)] = Math.floor(r / 4294967296), e[31 + (n + 128 >>> 10 << 5)] = r, t.sigBytes = 4 * e.length, this._process(), this._hash.toX32() + }, + clone: function() { + var t = e.clone.call(this); + return t._hash = this._hash.clone(), t + }, + blockSize: 32 + }); + t.SHA512 = e._createHelper(c), t.HmacSHA512 = e._createHmacHelper(c) + }(), n.SHA512) + }, + 7628: function(t, e, r) { + var n; + t.exports = (n = r(9021), r(754), r(4636), r(9506), r(7165), function() { + var t = n, + e = t.lib, + r = e.WordArray, + i = e.BlockCipher, + o = t.algo, + s = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], + a = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], + f = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], + u = [{ + 0: 8421888, + 268435456: 32768, + 536870912: 8421378, + 805306368: 2, + 1073741824: 512, + 1342177280: 8421890, + 1610612736: 8389122, + 1879048192: 8388608, + 2147483648: 514, + 2415919104: 8389120, + 2684354560: 33280, + 2952790016: 8421376, + 3221225472: 32770, + 3489660928: 8388610, + 3758096384: 0, + 4026531840: 33282, + 134217728: 0, + 402653184: 8421890, + 671088640: 33282, + 939524096: 32768, + 1207959552: 8421888, + 1476395008: 512, + 1744830464: 8421378, + 2013265920: 2, + 2281701376: 8389120, + 2550136832: 33280, + 2818572288: 8421376, + 3087007744: 8389122, + 3355443200: 8388610, + 3623878656: 32770, + 3892314112: 514, + 4160749568: 8388608, + 1: 32768, + 268435457: 2, + 536870913: 8421888, + 805306369: 8388608, + 1073741825: 8421378, + 1342177281: 33280, + 1610612737: 512, + 1879048193: 8389122, + 2147483649: 8421890, + 2415919105: 8421376, + 2684354561: 8388610, + 2952790017: 33282, + 3221225473: 514, + 3489660929: 8389120, + 3758096385: 32770, + 4026531841: 0, + 134217729: 8421890, + 402653185: 8421376, + 671088641: 8388608, + 939524097: 512, + 1207959553: 32768, + 1476395009: 8388610, + 1744830465: 2, + 2013265921: 33282, + 2281701377: 32770, + 2550136833: 8389122, + 2818572289: 514, + 3087007745: 8421888, + 3355443201: 8389120, + 3623878657: 0, + 3892314113: 33280, + 4160749569: 8421378 + }, { + 0: 1074282512, + 16777216: 16384, + 33554432: 524288, + 50331648: 1074266128, + 67108864: 1073741840, + 83886080: 1074282496, + 100663296: 1073758208, + 117440512: 16, + 134217728: 540672, + 150994944: 1073758224, + 167772160: 1073741824, + 184549376: 540688, + 201326592: 524304, + 218103808: 0, + 234881024: 16400, + 251658240: 1074266112, + 8388608: 1073758208, + 25165824: 540688, + 41943040: 16, + 58720256: 1073758224, + 75497472: 1074282512, + 92274688: 1073741824, + 109051904: 524288, + 125829120: 1074266128, + 142606336: 524304, + 159383552: 0, + 176160768: 16384, + 192937984: 1074266112, + 209715200: 1073741840, + 226492416: 540672, + 243269632: 1074282496, + 260046848: 16400, + 268435456: 0, + 285212672: 1074266128, + 301989888: 1073758224, + 318767104: 1074282496, + 335544320: 1074266112, + 352321536: 16, + 369098752: 540688, + 385875968: 16384, + 402653184: 16400, + 419430400: 524288, + 436207616: 524304, + 452984832: 1073741840, + 469762048: 540672, + 486539264: 1073758208, + 503316480: 1073741824, + 520093696: 1074282512, + 276824064: 540688, + 293601280: 524288, + 310378496: 1074266112, + 327155712: 16384, + 343932928: 1073758208, + 360710144: 1074282512, + 377487360: 16, + 394264576: 1073741824, + 411041792: 1074282496, + 427819008: 1073741840, + 444596224: 1073758224, + 461373440: 524304, + 478150656: 0, + 494927872: 16400, + 511705088: 1074266128, + 528482304: 540672 + }, { + 0: 260, + 1048576: 0, + 2097152: 67109120, + 3145728: 65796, + 4194304: 65540, + 5242880: 67108868, + 6291456: 67174660, + 7340032: 67174400, + 8388608: 67108864, + 9437184: 67174656, + 10485760: 65792, + 11534336: 67174404, + 12582912: 67109124, + 13631488: 65536, + 14680064: 4, + 15728640: 256, + 524288: 67174656, + 1572864: 67174404, + 2621440: 0, + 3670016: 67109120, + 4718592: 67108868, + 5767168: 65536, + 6815744: 65540, + 7864320: 260, + 8912896: 4, + 9961472: 256, + 11010048: 67174400, + 12058624: 65796, + 13107200: 65792, + 14155776: 67109124, + 15204352: 67174660, + 16252928: 67108864, + 16777216: 67174656, + 17825792: 65540, + 18874368: 65536, + 19922944: 67109120, + 20971520: 256, + 22020096: 67174660, + 23068672: 67108868, + 24117248: 0, + 25165824: 67109124, + 26214400: 67108864, + 27262976: 4, + 28311552: 65792, + 29360128: 67174400, + 30408704: 260, + 31457280: 65796, + 32505856: 67174404, + 17301504: 67108864, + 18350080: 260, + 19398656: 67174656, + 20447232: 0, + 21495808: 65540, + 22544384: 67109120, + 23592960: 256, + 24641536: 67174404, + 25690112: 65536, + 26738688: 67174660, + 27787264: 65796, + 28835840: 67108868, + 29884416: 67109124, + 30932992: 67174400, + 31981568: 4, + 33030144: 65792 + }, { + 0: 2151682048, + 65536: 2147487808, + 131072: 4198464, + 196608: 2151677952, + 262144: 0, + 327680: 4198400, + 393216: 2147483712, + 458752: 4194368, + 524288: 2147483648, + 589824: 4194304, + 655360: 64, + 720896: 2147487744, + 786432: 2151678016, + 851968: 4160, + 917504: 4096, + 983040: 2151682112, + 32768: 2147487808, + 98304: 64, + 163840: 2151678016, + 229376: 2147487744, + 294912: 4198400, + 360448: 2151682112, + 425984: 0, + 491520: 2151677952, + 557056: 4096, + 622592: 2151682048, + 688128: 4194304, + 753664: 4160, + 819200: 2147483648, + 884736: 4194368, + 950272: 4198464, + 1015808: 2147483712, + 1048576: 4194368, + 1114112: 4198400, + 1179648: 2147483712, + 1245184: 0, + 1310720: 4160, + 1376256: 2151678016, + 1441792: 2151682048, + 1507328: 2147487808, + 1572864: 2151682112, + 1638400: 2147483648, + 1703936: 2151677952, + 1769472: 4198464, + 1835008: 2147487744, + 1900544: 4194304, + 1966080: 64, + 2031616: 4096, + 1081344: 2151677952, + 1146880: 2151682112, + 1212416: 0, + 1277952: 4198400, + 1343488: 4194368, + 1409024: 2147483648, + 1474560: 2147487808, + 1540096: 64, + 1605632: 2147483712, + 1671168: 4096, + 1736704: 2147487744, + 1802240: 2151678016, + 1867776: 4160, + 1933312: 2151682048, + 1998848: 4194304, + 2064384: 4198464 + }, { + 0: 128, + 4096: 17039360, + 8192: 262144, + 12288: 536870912, + 16384: 537133184, + 20480: 16777344, + 24576: 553648256, + 28672: 262272, + 32768: 16777216, + 36864: 537133056, + 40960: 536871040, + 45056: 553910400, + 49152: 553910272, + 53248: 0, + 57344: 17039488, + 61440: 553648128, + 2048: 17039488, + 6144: 553648256, + 10240: 128, + 14336: 17039360, + 18432: 262144, + 22528: 537133184, + 26624: 553910272, + 30720: 536870912, + 34816: 537133056, + 38912: 0, + 43008: 553910400, + 47104: 16777344, + 51200: 536871040, + 55296: 553648128, + 59392: 16777216, + 63488: 262272, + 65536: 262144, + 69632: 128, + 73728: 536870912, + 77824: 553648256, + 81920: 16777344, + 86016: 553910272, + 90112: 537133184, + 94208: 16777216, + 98304: 553910400, + 102400: 553648128, + 106496: 17039360, + 110592: 537133056, + 114688: 262272, + 118784: 536871040, + 122880: 0, + 126976: 17039488, + 67584: 553648256, + 71680: 16777216, + 75776: 17039360, + 79872: 537133184, + 83968: 536870912, + 88064: 17039488, + 92160: 128, + 96256: 553910272, + 100352: 262272, + 104448: 553910400, + 108544: 0, + 112640: 553648128, + 116736: 16777344, + 120832: 262144, + 124928: 537133056, + 129024: 536871040 + }, { + 0: 268435464, + 256: 8192, + 512: 270532608, + 768: 270540808, + 1024: 268443648, + 1280: 2097152, + 1536: 2097160, + 1792: 268435456, + 2048: 0, + 2304: 268443656, + 2560: 2105344, + 2816: 8, + 3072: 270532616, + 3328: 2105352, + 3584: 8200, + 3840: 270540800, + 128: 270532608, + 384: 270540808, + 640: 8, + 896: 2097152, + 1152: 2105352, + 1408: 268435464, + 1664: 268443648, + 1920: 8200, + 2176: 2097160, + 2432: 8192, + 2688: 268443656, + 2944: 270532616, + 3200: 0, + 3456: 270540800, + 3712: 2105344, + 3968: 268435456, + 4096: 268443648, + 4352: 270532616, + 4608: 270540808, + 4864: 8200, + 5120: 2097152, + 5376: 268435456, + 5632: 268435464, + 5888: 2105344, + 6144: 2105352, + 6400: 0, + 6656: 8, + 6912: 270532608, + 7168: 8192, + 7424: 268443656, + 7680: 270540800, + 7936: 2097160, + 4224: 8, + 4480: 2105344, + 4736: 2097152, + 4992: 268435464, + 5248: 268443648, + 5504: 8200, + 5760: 270540808, + 6016: 270532608, + 6272: 270540800, + 6528: 270532616, + 6784: 8192, + 7040: 2105352, + 7296: 2097160, + 7552: 0, + 7808: 268435456, + 8064: 268443656 + }, { + 0: 1048576, + 16: 33555457, + 32: 1024, + 48: 1049601, + 64: 34604033, + 80: 0, + 96: 1, + 112: 34603009, + 128: 33555456, + 144: 1048577, + 160: 33554433, + 176: 34604032, + 192: 34603008, + 208: 1025, + 224: 1049600, + 240: 33554432, + 8: 34603009, + 24: 0, + 40: 33555457, + 56: 34604032, + 72: 1048576, + 88: 33554433, + 104: 33554432, + 120: 1025, + 136: 1049601, + 152: 33555456, + 168: 34603008, + 184: 1048577, + 200: 1024, + 216: 34604033, + 232: 1, + 248: 1049600, + 256: 33554432, + 272: 1048576, + 288: 33555457, + 304: 34603009, + 320: 1048577, + 336: 33555456, + 352: 34604032, + 368: 1049601, + 384: 1025, + 400: 34604033, + 416: 1049600, + 432: 1, + 448: 0, + 464: 34603008, + 480: 33554433, + 496: 1024, + 264: 1049600, + 280: 33555457, + 296: 34603009, + 312: 1, + 328: 33554432, + 344: 1048576, + 360: 1025, + 376: 34604032, + 392: 33554433, + 408: 34603008, + 424: 0, + 440: 34604033, + 456: 1049601, + 472: 1024, + 488: 33555456, + 504: 1048577 + }, { + 0: 134219808, + 1: 131072, + 2: 134217728, + 3: 32, + 4: 131104, + 5: 134350880, + 6: 134350848, + 7: 2048, + 8: 134348800, + 9: 134219776, + 10: 133120, + 11: 134348832, + 12: 2080, + 13: 0, + 14: 134217760, + 15: 133152, + 2147483648: 2048, + 2147483649: 134350880, + 2147483650: 134219808, + 2147483651: 134217728, + 2147483652: 134348800, + 2147483653: 133120, + 2147483654: 133152, + 2147483655: 32, + 2147483656: 134217760, + 2147483657: 2080, + 2147483658: 131104, + 2147483659: 134350848, + 2147483660: 0, + 2147483661: 134348832, + 2147483662: 134219776, + 2147483663: 131072, + 16: 133152, + 17: 134350848, + 18: 32, + 19: 2048, + 20: 134219776, + 21: 134217760, + 22: 134348832, + 23: 131072, + 24: 0, + 25: 131104, + 26: 134348800, + 27: 134219808, + 28: 134350880, + 29: 133120, + 30: 2080, + 31: 134217728, + 2147483664: 131072, + 2147483665: 2048, + 2147483666: 134348832, + 2147483667: 133152, + 2147483668: 32, + 2147483669: 134348800, + 2147483670: 134217728, + 2147483671: 134219808, + 2147483672: 134350880, + 2147483673: 134217760, + 2147483674: 134219776, + 2147483675: 0, + 2147483676: 133120, + 2147483677: 2080, + 2147483678: 131104, + 2147483679: 134350848 + }], + c = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], + h = o.DES = i.extend({ + _doReset: function() { + for (var t = this._key.words, e = [], r = 0; r < 56; r++) { + var n = s[r] - 1; + e[r] = t[n >>> 5] >>> 31 - n % 32 & 1 + } + for (var i = this._subKeys = [], o = 0; o < 16; o++) { + var u = i[o] = [], + c = f[o]; + for (r = 0; r < 24; r++) u[r / 6 | 0] |= e[(a[r] - 1 + c) % 28] << 31 - r % 6, u[4 + (r / 6 | 0)] |= e[28 + (a[r + 24] - 1 + c) % 28] << 31 - r % 6; + for (u[0] = u[0] << 1 | u[0] >>> 31, r = 1; r < 7; r++) u[r] = u[r] >>> 4 * (r - 1) + 3; + u[7] = u[7] << 5 | u[7] >>> 27 + } + var h = this._invSubKeys = []; + for (r = 0; r < 16; r++) h[r] = i[15 - r] + }, + encryptBlock: function(t, e) { + this._doCryptBlock(t, e, this._subKeys) + }, + decryptBlock: function(t, e) { + this._doCryptBlock(t, e, this._invSubKeys) + }, + _doCryptBlock: function(t, e, r) { + this._lBlock = t[e], this._rBlock = t[e + 1], p.call(this, 4, 252645135), p.call(this, 16, 65535), l.call(this, 2, 858993459), l.call(this, 8, 16711935), p.call(this, 1, 1431655765); + for (var n = 0; n < 16; n++) { + for (var i = r[n], o = this._lBlock, s = this._rBlock, a = 0, f = 0; f < 8; f++) a |= u[f][((s ^ i[f]) & c[f]) >>> 0]; + this._lBlock = s, this._rBlock = o ^ a + } + var h = this._lBlock; + this._lBlock = this._rBlock, this._rBlock = h, p.call(this, 1, 1431655765), l.call(this, 8, 16711935), l.call(this, 2, 858993459), p.call(this, 16, 65535), p.call(this, 4, 252645135), t[e] = this._lBlock, t[e + 1] = this._rBlock + }, + keySize: 2, + ivSize: 2, + blockSize: 2 + }); + + function p(t, e) { + var r = (this._lBlock >>> t ^ this._rBlock) & e; + this._rBlock ^= r, this._lBlock ^= r << t + } + + function l(t, e) { + var r = (this._rBlock >>> t ^ this._lBlock) & e; + this._lBlock ^= r, this._rBlock ^= r << t + } + t.DES = i._createHelper(h); + var y = o.TripleDES = i.extend({ + _doReset: function() { + var t = this._key.words; + this._des1 = h.createEncryptor(r.create(t.slice(0, 2))), this._des2 = h.createEncryptor(r.create(t.slice(2, 4))), this._des3 = h.createEncryptor(r.create(t.slice(4, 6))) + }, + encryptBlock: function(t, e) { + this._des1.encryptBlock(t, e), this._des2.decryptBlock(t, e), this._des3.encryptBlock(t, e) + }, + decryptBlock: function(t, e) { + this._des3.decryptBlock(t, e), this._des2.encryptBlock(t, e), this._des1.decryptBlock(t, e) + }, + keySize: 6, + ivSize: 2, + blockSize: 2 + }); + t.TripleDES = i._createHelper(y) + }(), n.TripleDES) + }, + 3240: function(t, e, r) { + var n, i, o, s, a, f; + t.exports = (n = r(9021), o = (i = n).lib, s = o.Base, a = o.WordArray, (f = i.x64 = {}).Word = s.extend({ + init: function(t, e) { + this.high = t, this.low = e + } + }), f.WordArray = s.extend({ + init: function(t, e) { + t = this.words = t || [], this.sigBytes = null != e ? e : 8 * t.length + }, + toX32: function() { + for (var t = this.words, e = t.length, r = [], n = 0; n < e; n++) { + var i = t[n]; + r.push(i.high), r.push(i.low) + } + return a.create(r, this.sigBytes) + }, + clone: function() { + for (var t = s.clone.call(this), e = t.words = this.words.slice(0), r = e.length, n = 0; n < r; n++) e[n] = e[n].clone(); + return t + } + }), n) + }, + 41: (t, e, r) => { + "use strict"; + var n = r(655), + i = r(8068), + o = r(9675), + s = r(5795); + t.exports = function(t, e, r) { + if (!t || "object" != typeof t && "function" != typeof t) throw new o("`obj` must be an object or a function`"); + if ("string" != typeof e && "symbol" != typeof e) throw new o("`property` must be a string or a symbol`"); + if (arguments.length > 3 && "boolean" != typeof arguments[3] && null !== arguments[3]) throw new o("`nonEnumerable`, if provided, must be a boolean or null"); + if (arguments.length > 4 && "boolean" != typeof arguments[4] && null !== arguments[4]) throw new o("`nonWritable`, if provided, must be a boolean or null"); + if (arguments.length > 5 && "boolean" != typeof arguments[5] && null !== arguments[5]) throw new o("`nonConfigurable`, if provided, must be a boolean or null"); + if (arguments.length > 6 && "boolean" != typeof arguments[6]) throw new o("`loose`, if provided, must be a boolean"); + var a = arguments.length > 3 ? arguments[3] : null, + f = arguments.length > 4 ? arguments[4] : null, + u = arguments.length > 5 ? arguments[5] : null, + c = arguments.length > 6 && arguments[6], + h = !!s && s(t, e); + if (n) n(t, e, { + configurable: null === u && h ? h.configurable : !u, + enumerable: null === a && h ? h.enumerable : !a, + value: r, + writable: null === f && h ? h.writable : !f + }); + else { + if (!c && (a || f || u)) throw new i("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable."); + t[e] = r + } + } + }, + 655: (t, e, r) => { + "use strict"; + var n = r(453)("%Object.defineProperty%", !0) || !1; + if (n) try { + n({}, "a", { + value: 1 + }) + } catch (t) { + n = !1 + } + t.exports = n + }, + 1237: t => { + "use strict"; + t.exports = EvalError + }, + 9383: t => { + "use strict"; + t.exports = Error + }, + 9290: t => { + "use strict"; + t.exports = RangeError + }, + 9538: t => { + "use strict"; + t.exports = ReferenceError + }, + 8068: t => { + "use strict"; + t.exports = SyntaxError + }, + 9675: t => { + "use strict"; + t.exports = TypeError + }, + 5345: t => { + "use strict"; + t.exports = URIError + }, + 9353: t => { + "use strict"; + var e = Object.prototype.toString, + r = Math.max, + n = function(t, e) { + for (var r = [], n = 0; n < t.length; n += 1) r[n] = t[n]; + for (var i = 0; i < e.length; i += 1) r[i + t.length] = e[i]; + return r + }; + t.exports = function(t) { + var i = this; + if ("function" != typeof i || "[object Function]" !== e.apply(i)) throw new TypeError("Function.prototype.bind called on incompatible " + i); + for (var o, s = function(t, e) { + for (var r = [], n = 1, i = 0; n < t.length; n += 1, i += 1) r[i] = t[n]; + return r + }(arguments), a = r(0, i.length - s.length), f = [], u = 0; u < a; u++) f[u] = "$" + u; + if (o = Function("binder", "return function (" + function(t, e) { + for (var r = "", n = 0; n < t.length; n += 1) r += t[n], n + 1 < t.length && (r += ","); + return r + }(f) + "){ return binder.apply(this,arguments); }")((function() { + if (this instanceof o) { + var e = i.apply(this, n(s, arguments)); + return Object(e) === e ? e : this + } + return i.apply(t, n(s, arguments)) + })), i.prototype) { + var c = function() {}; + c.prototype = i.prototype, o.prototype = new c, c.prototype = null + } + return o + } + }, + 6743: (t, e, r) => { + "use strict"; + var n = r(9353); + t.exports = Function.prototype.bind || n + }, + 453: (t, e, r) => { + "use strict"; + var n, i = r(9383), + o = r(1237), + s = r(9290), + a = r(9538), + f = r(8068), + u = r(9675), + c = r(5345), + h = Function, + p = function(t) { + try { + return h('"use strict"; return (' + t + ").constructor;")() + } catch (t) {} + }, + l = Object.getOwnPropertyDescriptor; + if (l) try { + l({}, "") + } catch (t) { + l = null + } + var y = function() { + throw new u + }, + g = l ? function() { + try { + return y + } catch (t) { + try { + return l(arguments, "callee").get + } catch (t) { + return y + } + } + }() : y, + d = r(4039)(), + v = r(24)(), + m = Object.getPrototypeOf || (v ? function(t) { + return t.__proto__ + } : null), + S = {}, + _ = "undefined" != typeof Uint8Array && m ? m(Uint8Array) : n, + b = { + __proto__: null, + "%AggregateError%": "undefined" == typeof AggregateError ? n : AggregateError, + "%Array%": Array, + "%ArrayBuffer%": "undefined" == typeof ArrayBuffer ? n : ArrayBuffer, + "%ArrayIteratorPrototype%": d && m ? m([][Symbol.iterator]()) : n, + "%AsyncFromSyncIteratorPrototype%": n, + "%AsyncFunction%": S, + "%AsyncGenerator%": S, + "%AsyncGeneratorFunction%": S, + "%AsyncIteratorPrototype%": S, + "%Atomics%": "undefined" == typeof Atomics ? n : Atomics, + "%BigInt%": "undefined" == typeof BigInt ? n : BigInt, + "%BigInt64Array%": "undefined" == typeof BigInt64Array ? n : BigInt64Array, + "%BigUint64Array%": "undefined" == typeof BigUint64Array ? n : BigUint64Array, + "%Boolean%": Boolean, + "%DataView%": "undefined" == typeof DataView ? n : DataView, + "%Date%": Date, + "%decodeURI%": decodeURI, + "%decodeURIComponent%": decodeURIComponent, + "%encodeURI%": encodeURI, + "%encodeURIComponent%": encodeURIComponent, + "%Error%": i, + "%eval%": eval, + "%EvalError%": o, + "%Float32Array%": "undefined" == typeof Float32Array ? n : Float32Array, + "%Float64Array%": "undefined" == typeof Float64Array ? n : Float64Array, + "%FinalizationRegistry%": "undefined" == typeof FinalizationRegistry ? n : FinalizationRegistry, + "%Function%": h, + "%GeneratorFunction%": S, + "%Int8Array%": "undefined" == typeof Int8Array ? n : Int8Array, + "%Int16Array%": "undefined" == typeof Int16Array ? n : Int16Array, + "%Int32Array%": "undefined" == typeof Int32Array ? n : Int32Array, + "%isFinite%": isFinite, + "%isNaN%": isNaN, + "%IteratorPrototype%": d && m ? m(m([][Symbol.iterator]())) : n, + "%JSON%": "object" == typeof JSON ? JSON : n, + "%Map%": "undefined" == typeof Map ? n : Map, + "%MapIteratorPrototype%": "undefined" != typeof Map && d && m ? m((new Map)[Symbol.iterator]()) : n, + "%Math%": Math, + "%Number%": Number, + "%Object%": Object, + "%parseFloat%": parseFloat, + "%parseInt%": parseInt, + "%Promise%": "undefined" == typeof Promise ? n : Promise, + "%Proxy%": "undefined" == typeof Proxy ? n : Proxy, + "%RangeError%": s, + "%ReferenceError%": a, + "%Reflect%": "undefined" == typeof Reflect ? n : Reflect, + "%RegExp%": RegExp, + "%Set%": "undefined" == typeof Set ? n : Set, + "%SetIteratorPrototype%": "undefined" != typeof Set && d && m ? m((new Set)[Symbol.iterator]()) : n, + "%SharedArrayBuffer%": "undefined" == typeof SharedArrayBuffer ? n : SharedArrayBuffer, + "%String%": String, + "%StringIteratorPrototype%": d && m ? m("" [Symbol.iterator]()) : n, + "%Symbol%": d ? Symbol : n, + "%SyntaxError%": f, + "%ThrowTypeError%": g, + "%TypedArray%": _, + "%TypeError%": u, + "%Uint8Array%": "undefined" == typeof Uint8Array ? n : Uint8Array, + "%Uint8ClampedArray%": "undefined" == typeof Uint8ClampedArray ? n : Uint8ClampedArray, + "%Uint16Array%": "undefined" == typeof Uint16Array ? n : Uint16Array, + "%Uint32Array%": "undefined" == typeof Uint32Array ? n : Uint32Array, + "%URIError%": c, + "%WeakMap%": "undefined" == typeof WeakMap ? n : WeakMap, + "%WeakRef%": "undefined" == typeof WeakRef ? n : WeakRef, + "%WeakSet%": "undefined" == typeof WeakSet ? n : WeakSet + }; + if (m) try { + null.error + } catch (t) { + var E = m(m(t)); + b["%Error.prototype%"] = E + } + var w = function t(e) { + var r; + if ("%AsyncFunction%" === e) r = p("async function () {}"); + else if ("%GeneratorFunction%" === e) r = p("function* () {}"); + else if ("%AsyncGeneratorFunction%" === e) r = p("async function* () {}"); + else if ("%AsyncGenerator%" === e) { + var n = t("%AsyncGeneratorFunction%"); + n && (r = n.prototype) + } else if ("%AsyncIteratorPrototype%" === e) { + var i = t("%AsyncGenerator%"); + i && m && (r = m(i.prototype)) + } + return b[e] = r, r + }, + O = { + __proto__: null, + "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], + "%ArrayPrototype%": ["Array", "prototype"], + "%ArrayProto_entries%": ["Array", "prototype", "entries"], + "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], + "%ArrayProto_keys%": ["Array", "prototype", "keys"], + "%ArrayProto_values%": ["Array", "prototype", "values"], + "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], + "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], + "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], + "%BooleanPrototype%": ["Boolean", "prototype"], + "%DataViewPrototype%": ["DataView", "prototype"], + "%DatePrototype%": ["Date", "prototype"], + "%ErrorPrototype%": ["Error", "prototype"], + "%EvalErrorPrototype%": ["EvalError", "prototype"], + "%Float32ArrayPrototype%": ["Float32Array", "prototype"], + "%Float64ArrayPrototype%": ["Float64Array", "prototype"], + "%FunctionPrototype%": ["Function", "prototype"], + "%Generator%": ["GeneratorFunction", "prototype"], + "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], + "%Int8ArrayPrototype%": ["Int8Array", "prototype"], + "%Int16ArrayPrototype%": ["Int16Array", "prototype"], + "%Int32ArrayPrototype%": ["Int32Array", "prototype"], + "%JSONParse%": ["JSON", "parse"], + "%JSONStringify%": ["JSON", "stringify"], + "%MapPrototype%": ["Map", "prototype"], + "%NumberPrototype%": ["Number", "prototype"], + "%ObjectPrototype%": ["Object", "prototype"], + "%ObjProto_toString%": ["Object", "prototype", "toString"], + "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], + "%PromisePrototype%": ["Promise", "prototype"], + "%PromiseProto_then%": ["Promise", "prototype", "then"], + "%Promise_all%": ["Promise", "all"], + "%Promise_reject%": ["Promise", "reject"], + "%Promise_resolve%": ["Promise", "resolve"], + "%RangeErrorPrototype%": ["RangeError", "prototype"], + "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], + "%RegExpPrototype%": ["RegExp", "prototype"], + "%SetPrototype%": ["Set", "prototype"], + "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], + "%StringPrototype%": ["String", "prototype"], + "%SymbolPrototype%": ["Symbol", "prototype"], + "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], + "%TypedArrayPrototype%": ["TypedArray", "prototype"], + "%TypeErrorPrototype%": ["TypeError", "prototype"], + "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], + "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], + "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], + "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], + "%URIErrorPrototype%": ["URIError", "prototype"], + "%WeakMapPrototype%": ["WeakMap", "prototype"], + "%WeakSetPrototype%": ["WeakSet", "prototype"] + }, + B = r(6743), + A = r(9957), + x = B.call(Function.call, Array.prototype.concat), + P = B.call(Function.apply, Array.prototype.splice), + T = B.call(Function.call, String.prototype.replace), + I = B.call(Function.call, String.prototype.slice), + k = B.call(Function.call, RegExp.prototype.exec), + D = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g, + R = /\\(\\)?/g, + N = function(t, e) { + var r, n = t; + if (A(O, n) && (n = "%" + (r = O[n])[0] + "%"), A(b, n)) { + var i = b[n]; + if (i === S && (i = w(n)), void 0 === i && !e) throw new u("intrinsic " + t + " exists, but is not available. Please file an issue!"); + return { + alias: r, + name: n, + value: i + } + } + throw new f("intrinsic " + t + " does not exist!") + }; + t.exports = function(t, e) { + if ("string" != typeof t || 0 === t.length) throw new u("intrinsic name must be a non-empty string"); + if (arguments.length > 1 && "boolean" != typeof e) throw new u('"allowMissing" argument must be a boolean'); + if (null === k(/^%?[^%]*%?$/, t)) throw new f("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); + var r = function(t) { + var e = I(t, 0, 1), + r = I(t, -1); + if ("%" === e && "%" !== r) throw new f("invalid intrinsic syntax, expected closing `%`"); + if ("%" === r && "%" !== e) throw new f("invalid intrinsic syntax, expected opening `%`"); + var n = []; + return T(t, D, (function(t, e, r, i) { + n[n.length] = r ? T(i, R, "$1") : e || t + })), n + }(t), + n = r.length > 0 ? r[0] : "", + i = N("%" + n + "%", e), + o = i.name, + s = i.value, + a = !1, + c = i.alias; + c && (n = c[0], P(r, x([0, 1], c))); + for (var h = 1, p = !0; h < r.length; h += 1) { + var y = r[h], + g = I(y, 0, 1), + d = I(y, -1); + if (('"' === g || "'" === g || "`" === g || '"' === d || "'" === d || "`" === d) && g !== d) throw new f("property names with quotes must have matching quotes"); + if ("constructor" !== y && p || (a = !0), A(b, o = "%" + (n += "." + y) + "%")) s = b[o]; + else if (null != s) { + if (!(y in s)) { + if (!e) throw new u("base intrinsic for " + t + " exists, but the property is not available."); + return + } + if (l && h + 1 >= r.length) { + var v = l(s, y); + s = (p = !!v) && "get" in v && !("originalValue" in v.get) ? v.get : s[y] + } else p = A(s, y), s = s[y]; + p && !a && (b[o] = s) + } + } + return s + } + }, + 5795: (t, e, r) => { + "use strict"; + var n = r(453)("%Object.getOwnPropertyDescriptor%", !0); + if (n) try { + n([], "length") + } catch (t) { + n = null + } + t.exports = n + }, + 592: (t, e, r) => { + "use strict"; + var n = r(655), + i = function() { + return !!n + }; + i.hasArrayLengthDefineBug = function() { + if (!n) return null; + try { + return 1 !== n([], "length", { + value: 1 + }).length + } catch (t) { + return !0 + } + }, t.exports = i + }, + 24: t => { + "use strict"; + var e = { + __proto__: null, + foo: {} + }, + r = Object; + t.exports = function() { + return { + __proto__: e + }.foo === e.foo && !(e instanceof r) + } + }, + 4039: (t, e, r) => { + "use strict"; + var n = "undefined" != typeof Symbol && Symbol, + i = r(1333); + t.exports = function() { + return "function" == typeof n && "function" == typeof Symbol && "symbol" == typeof n("foo") && "symbol" == typeof Symbol("bar") && i() + } + }, + 1333: t => { + "use strict"; + t.exports = function() { + if ("function" != typeof Symbol || "function" != typeof Object.getOwnPropertySymbols) return !1; + if ("symbol" == typeof Symbol.iterator) return !0; + var t = {}, + e = Symbol("test"), + r = Object(e); + if ("string" == typeof e) return !1; + if ("[object Symbol]" !== Object.prototype.toString.call(e)) return !1; + if ("[object Symbol]" !== Object.prototype.toString.call(r)) return !1; + for (e in t[e] = 42, t) return !1; + if ("function" == typeof Object.keys && 0 !== Object.keys(t).length) return !1; + if ("function" == typeof Object.getOwnPropertyNames && 0 !== Object.getOwnPropertyNames(t).length) return !1; + var n = Object.getOwnPropertySymbols(t); + if (1 !== n.length || n[0] !== e) return !1; + if (!Object.prototype.propertyIsEnumerable.call(t, e)) return !1; + if ("function" == typeof Object.getOwnPropertyDescriptor) { + var i = Object.getOwnPropertyDescriptor(t, e); + if (42 !== i.value || !0 !== i.enumerable) return !1 + } + return !0 + } + }, + 9957: (t, e, r) => { + "use strict"; + var n = Function.prototype.call, + i = Object.prototype.hasOwnProperty, + o = r(6743); + t.exports = o.call(n, i) + }, + 251: (t, e) => { + e.read = function(t, e, r, n, i) { + var o, s, a = 8 * i - n - 1, + f = (1 << a) - 1, + u = f >> 1, + c = -7, + h = r ? i - 1 : 0, + p = r ? -1 : 1, + l = t[e + h]; + for (h += p, o = l & (1 << -c) - 1, l >>= -c, c += a; c > 0; o = 256 * o + t[e + h], h += p, c -= 8); + for (s = o & (1 << -c) - 1, o >>= -c, c += n; c > 0; s = 256 * s + t[e + h], h += p, c -= 8); + if (0 === o) o = 1 - u; + else { + if (o === f) return s ? NaN : 1 / 0 * (l ? -1 : 1); + s += Math.pow(2, n), o -= u + } + return (l ? -1 : 1) * s * Math.pow(2, o - n) + }, e.write = function(t, e, r, n, i, o) { + var s, a, f, u = 8 * o - i - 1, + c = (1 << u) - 1, + h = c >> 1, + p = 23 === i ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + l = n ? 0 : o - 1, + y = n ? 1 : -1, + g = e < 0 || 0 === e && 1 / e < 0 ? 1 : 0; + for (e = Math.abs(e), isNaN(e) || e === 1 / 0 ? (a = isNaN(e) ? 1 : 0, s = c) : (s = Math.floor(Math.log(e) / Math.LN2), e * (f = Math.pow(2, -s)) < 1 && (s--, f *= 2), (e += s + h >= 1 ? p / f : p * Math.pow(2, 1 - h)) * f >= 2 && (s++, f /= 2), s + h >= c ? (a = 0, s = c) : s + h >= 1 ? (a = (e * f - 1) * Math.pow(2, i), s += h) : (a = e * Math.pow(2, h - 1) * Math.pow(2, i), s = 0)); i >= 8; t[r + l] = 255 & a, l += y, a /= 256, i -= 8); + for (s = s << i | a, u += i; u > 0; t[r + l] = 255 & s, l += y, s /= 256, u -= 8); + t[r + l - y] |= 128 * g + } + }, + 3229: (t, e, r) => { + var n = r(8287).Buffer, + i = r(7449), + o = r(5682), + s = (r(3200), r(3100).Ber, r(8226)._), + a = r(8226), + f = r(1768), + u = r(7460); + void 0 === i.RSA_NO_PADDING && (i.RSA_NO_PADDING = 3), t.exports = function() { + var t = { + node10: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"], + node: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"], + iojs: ["md4", "md5", "ripemd160", "sha1", "sha224", "sha256", "sha384", "sha512"], + browser: ["md5", "ripemd160", "sha1", "sha256", "sha512"] + }, + e = "pkcs1_oaep", + r = "pkcs1", + i = { + private: "pkcs1-private-pem", + "private-der": "pkcs1-private-der", + public: "pkcs8-public-pem", + "public-der": "pkcs8-public-der" + }; + + function c(t, i, f) { + if (!(this instanceof c)) return new c(t, i, f); + s.isObject(i) && (f = i, i = void 0), this.$options = { + signingScheme: r, + signingSchemeOptions: { + hash: "sha256", + saltLength: null + }, + encryptionScheme: e, + encryptionSchemeOptions: { + hash: "sha1", + label: null + }, + environment: a.detectEnvironment(), + rsaUtils: this + }, this.keyPair = new o.Key, this.$cache = {}, n.isBuffer(t) || s.isString(t) ? this.importKey(t, i) : s.isObject(t) && this.generateKeyPair(t.b, t.e), this.setOptions(f) + } + return c.prototype.setOptions = function(n) { + if ((n = n || {}).environment && (this.$options.environment = n.environment), n.signingScheme) { + if (s.isString(n.signingScheme)) { + var i = n.signingScheme.toLowerCase().split("-"); + 1 == i.length ? t.node.indexOf(i[0]) > -1 ? (this.$options.signingSchemeOptions = { + hash: i[0] + }, this.$options.signingScheme = r) : (this.$options.signingScheme = i[0], this.$options.signingSchemeOptions = { + hash: null + }) : (this.$options.signingSchemeOptions = { + hash: i[1] + }, this.$options.signingScheme = i[0]) + } else s.isObject(n.signingScheme) && (this.$options.signingScheme = n.signingScheme.scheme || r, this.$options.signingSchemeOptions = s.omit(n.signingScheme, "scheme")); + if (!f.isSignature(this.$options.signingScheme)) throw Error("Unsupported signing scheme"); + if (this.$options.signingSchemeOptions.hash && -1 === t[this.$options.environment].indexOf(this.$options.signingSchemeOptions.hash)) throw Error("Unsupported hashing algorithm for " + this.$options.environment + " environment") + } + if (n.encryptionScheme) { + if (s.isString(n.encryptionScheme) ? (this.$options.encryptionScheme = n.encryptionScheme.toLowerCase(), this.$options.encryptionSchemeOptions = {}) : s.isObject(n.encryptionScheme) && (this.$options.encryptionScheme = n.encryptionScheme.scheme || e, this.$options.encryptionSchemeOptions = s.omit(n.encryptionScheme, "scheme")), !f.isEncryption(this.$options.encryptionScheme)) throw Error("Unsupported encryption scheme"); + if (this.$options.encryptionSchemeOptions.hash && -1 === t[this.$options.environment].indexOf(this.$options.encryptionSchemeOptions.hash)) throw Error("Unsupported hashing algorithm for " + this.$options.environment + " environment") + } + this.keyPair.setOptions(this.$options) + }, c.prototype.generateKeyPair = function(t, e) { + if (e = e || 65537, (t = t || 2048) % 8 != 0) throw Error("Key size must be a multiple of 8."); + return this.keyPair.generate(t, e.toString(16)), this.$cache = {}, this + }, c.prototype.importKey = function(t, e) { + if (!t) throw Error("Empty key given"); + if (e && (e = i[e] || e), !u.detectAndImport(this.keyPair, t, e) && void 0 === e) throw Error("Key format must be specified"); + return this.$cache = {}, this + }, c.prototype.exportKey = function(t) { + return t = i[t = t || "private"] || t, this.$cache[t] || (this.$cache[t] = u.detectAndExport(this.keyPair, t)), this.$cache[t] + }, c.prototype.isPrivate = function() { + return this.keyPair.isPrivate() + }, c.prototype.isPublic = function(t) { + return this.keyPair.isPublic(t) + }, c.prototype.isEmpty = function(t) { + return !(this.keyPair.n || this.keyPair.e || this.keyPair.d) + }, c.prototype.encrypt = function(t, e, r) { + return this.$$encryptKey(!1, t, e, r) + }, c.prototype.decrypt = function(t, e) { + return this.$$decryptKey(!1, t, e) + }, c.prototype.encryptPrivate = function(t, e, r) { + return this.$$encryptKey(!0, t, e, r) + }, c.prototype.decryptPublic = function(t, e) { + return this.$$decryptKey(!0, t, e) + }, c.prototype.$$encryptKey = function(t, e, r, n) { + try { + var i = this.keyPair.encrypt(this.$getDataForEncrypt(e, n), t); + return "buffer" != r && r ? i.toString(r) : i + } catch (t) { + throw Error("Error during encryption. Original error: " + t) + } + }, c.prototype.$$decryptKey = function(t, e, r) { + try { + e = s.isString(e) ? n.from(e, "base64") : e; + var i = this.keyPair.decrypt(e, t); + if (null === i) throw Error("Key decrypt method returns null."); + return this.$getDecryptedData(i, r) + } catch (t) { + throw Error("Error during decryption (probably incorrect key). Original error: " + t) + } + }, c.prototype.sign = function(t, e, r) { + if (!this.isPrivate()) throw Error("This is not private key"); + var n = this.keyPair.sign(this.$getDataForEncrypt(t, r)); + return e && "buffer" != e && (n = n.toString(e)), n + }, c.prototype.verify = function(t, e, r, n) { + if (!this.isPublic()) throw Error("This is not public key"); + return n = n && "buffer" != n ? n : null, this.keyPair.verify(this.$getDataForEncrypt(t, r), e, n) + }, c.prototype.getKeySize = function() { + return this.keyPair.keySize + }, c.prototype.getMaxMessageSize = function() { + return this.keyPair.maxMessageLength + }, c.prototype.$getDataForEncrypt = function(t, e) { + if (s.isString(t) || s.isNumber(t)) return n.from("" + t, e || "utf8"); + if (n.isBuffer(t)) return t; + if (s.isObject(t)) return n.from(JSON.stringify(t)); + throw Error("Unexpected data type") + }, c.prototype.$getDecryptedData = function(t, e) { + return "buffer" == (e = e || "buffer") ? t : "json" == e ? JSON.parse(t.toString()) : t.toString(e) + }, c + }() + }, + 4538: (t, e, r) => { + var n = r(3200); + t.exports = { + getEngine: function(t, e) { + var i = r(7469); + return "node" === e.environment && "function" == typeof n.publicEncrypt && "function" == typeof n.privateDecrypt && (i = "function" == typeof n.privateEncrypt && "function" == typeof n.publicDecrypt ? r(2418) : r(1957)), i(t, e) + } + } + }, + 2418: (t, e, r) => { + var n = r(3200), + i = r(7449), + o = r(1768); + t.exports = function(t, e) { + var r = o.pkcs1.makeScheme(t, e); + return { + encrypt: function(t, o) { + var s; + if (o) return s = i.RSA_PKCS1_PADDING, e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding), n.privateEncrypt({ + key: e.rsaUtils.exportKey("private"), + padding: s + }, t); + s = i.RSA_PKCS1_OAEP_PADDING, "pkcs1" === e.encryptionScheme && (s = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding); + var a = t; + return s === i.RSA_NO_PADDING && (a = r.pkcs0pad(t)), n.publicEncrypt({ + key: e.rsaUtils.exportKey("public"), + padding: s + }, a) + }, + decrypt: function(t, o) { + var s; + if (o) return s = i.RSA_PKCS1_PADDING, e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding), n.publicDecrypt({ + key: e.rsaUtils.exportKey("public"), + padding: s + }, t); + s = i.RSA_PKCS1_OAEP_PADDING, "pkcs1" === e.encryptionScheme && (s = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (s = e.encryptionSchemeOptions.padding); + var a = n.privateDecrypt({ + key: e.rsaUtils.exportKey("private"), + padding: s + }, t); + return s === i.RSA_NO_PADDING ? r.pkcs0unpad(a) : a + } + } + } + }, + 7469: (t, e, r) => { + var n = r(1973), + i = r(1768); + t.exports = function(t, e) { + var r = i.pkcs1.makeScheme(t, e); + return { + encrypt: function(e, i) { + var o, s; + return i ? (o = new n(r.encPad(e, { + type: 1 + })), s = t.$doPrivate(o)) : (o = new n(t.encryptionScheme.encPad(e)), s = t.$doPublic(o)), s.toBuffer(t.encryptedDataLength) + }, + decrypt: function(e, i) { + var o, s = new n(e); + return i ? (o = t.$doPublic(s), r.encUnPad(o.toBuffer(t.encryptedDataLength), { + type: 1 + })) : (o = t.$doPrivate(s), t.encryptionScheme.encUnPad(o.toBuffer(t.encryptedDataLength))) + } + } + } + }, + 1957: (t, e, r) => { + var n = r(3200), + i = r(7449), + o = r(1768); + t.exports = function(t, e) { + var s = r(7469)(t, e), + a = o.pkcs1.makeScheme(t, e); + return { + encrypt: function(t, r) { + if (r) return s.encrypt(t, r); + var o = i.RSA_PKCS1_OAEP_PADDING; + "pkcs1" === e.encryptionScheme && (o = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (o = e.encryptionSchemeOptions.padding); + var f = t; + return o === i.RSA_NO_PADDING && (f = a.pkcs0pad(t)), n.publicEncrypt({ + key: e.rsaUtils.exportKey("public"), + padding: o + }, f) + }, + decrypt: function(t, r) { + if (r) return s.decrypt(t, r); + var o = i.RSA_PKCS1_OAEP_PADDING; + "pkcs1" === e.encryptionScheme && (o = i.RSA_PKCS1_PADDING), e.encryptionSchemeOptions && e.encryptionSchemeOptions.padding && (o = e.encryptionSchemeOptions.padding); + var f = n.privateDecrypt({ + key: e.rsaUtils.exportKey("private"), + padding: o + }, t); + return o === i.RSA_NO_PADDING ? a.pkcs0unpad(f) : f + } + } + } + }, + 3374: (t, e, r) => { + r(8226)._, r(8226), t.exports = { + privateExport: function(t, e) { + return { + n: t.n.toBuffer(), + e: t.e, + d: t.d.toBuffer(), + p: t.p.toBuffer(), + q: t.q.toBuffer(), + dmp1: t.dmp1.toBuffer(), + dmq1: t.dmq1.toBuffer(), + coeff: t.coeff.toBuffer() + } + }, + privateImport: function(t, e, r) { + if (!(e.n && e.e && e.d && e.p && e.q && e.dmp1 && e.dmq1 && e.coeff)) throw Error("Invalid key data"); + t.setPrivate(e.n, e.e, e.d, e.p, e.q, e.dmp1, e.dmq1, e.coeff) + }, + publicExport: function(t, e) { + return { + n: t.n.toBuffer(), + e: t.e + } + }, + publicImport: function(t, e, r) { + if (!e.n || !e.e) throw Error("Invalid key data"); + t.setPublic(e.n, e.e) + }, + autoImport: function(e, r) { + return !(!r.n || !r.e || (r.d && r.p && r.q && r.dmp1 && r.dmq1 && r.coeff ? (t.exports.privateImport(e, r), 0) : (t.exports.publicImport(e, r), 0))) + } + } + }, + 7460: (t, e, r) => { + function n(t) { + t = t.split("-"); + for (var e = "private", r = { + type: "default" + }, n = 1; n < t.length; n++) + if (t[n]) switch (t[n]) { + case "public": + case "private": + e = t[n]; + break; + case "pem": + case "der": + r.type = t[n] + } + return { + scheme: t[0], + keyType: e, + keyOpt: r + } + } + r(8226)._, t.exports = { + pkcs1: r(6566), + pkcs8: r(8573), + components: r(3374), + openssh: r(3194), + isPrivateExport: function(e) { + return t.exports[e] && "function" == typeof t.exports[e].privateExport + }, + isPrivateImport: function(e) { + return t.exports[e] && "function" == typeof t.exports[e].privateImport + }, + isPublicExport: function(e) { + return t.exports[e] && "function" == typeof t.exports[e].publicExport + }, + isPublicImport: function(e) { + return t.exports[e] && "function" == typeof t.exports[e].publicImport + }, + detectAndImport: function(e, r, i) { + if (void 0 === i) { + for (var o in t.exports) + if ("function" == typeof t.exports[o].autoImport && t.exports[o].autoImport(e, r)) return !0 + } else if (i) { + var s = n(i); + if (!t.exports[s.scheme]) throw Error("Unsupported key format"); + "private" === s.keyType ? t.exports[s.scheme].privateImport(e, r, s.keyOpt) : t.exports[s.scheme].publicImport(e, r, s.keyOpt) + } + return !1 + }, + detectAndExport: function(e, r) { + if (r) { + var i = n(r); + if (t.exports[i.scheme]) { + if ("private" === i.keyType) { + if (!e.isPrivate()) throw Error("This is not private key"); + return t.exports[i.scheme].privateExport(e, i.keyOpt) + } + if (!e.isPublic()) throw Error("This is not public key"); + return t.exports[i.scheme].publicExport(e, i.keyOpt) + } + throw Error("Unsupported key format") + } + } + } + }, + 3194: (t, e, r) => { + var n = r(8287).Buffer, + i = r(8226)._, + o = r(8226), + s = r(1973); + const a = "-----BEGIN OPENSSH PRIVATE KEY-----", + f = "-----END OPENSSH PRIVATE KEY-----"; + + function u(t) { + const e = t.buf.readInt32BE(t.off); + t.off += 4; + const r = t.buf.slice(t.off, t.off + e); + return t.off += e, r + } + + function c(t, e) { + t.buf.writeInt32BE(e.byteLength, t.off), t.off += 4, t.off += e.copy(t.buf, t.off) + } + t.exports = { + privateExport: function(t, e) { + const r = t.n.toBuffer(); + let i = n.alloc(4); + for (i.writeUInt32BE(t.e, 0); 0 === i[0];) i = i.slice(1); + const s = t.d.toBuffer(), + u = t.coeff.toBuffer(), + h = t.p.toBuffer(), + p = t.q.toBuffer(); + let l; + l = void 0 !== t.sshcomment ? n.from(t.sshcomment) : n.from([]); + const y = 15 + i.byteLength + 4 + r.byteLength, + g = 23 + r.byteLength + 4 + i.byteLength + 4 + s.byteLength + 4 + u.byteLength + 4 + h.byteLength + 4 + p.byteLength + 4 + l.byteLength; + let d = 43 + y + 4 + g; + d += 8 * Math.ceil(g / 8) - g; + const v = n.alloc(d), + m = { + buf: v, + off: 0 + }; + v.write("openssh-key-v1", "utf8"), v.writeUInt8(0, 14), m.off += 15, c(m, n.from("none")), c(m, n.from("none")), c(m, n.from("")), m.off = m.buf.writeUInt32BE(1, m.off), m.off = m.buf.writeUInt32BE(y, m.off), c(m, n.from("ssh-rsa")), c(m, i), c(m, r), m.off = m.buf.writeUInt32BE(d - 47 - y, m.off), m.off += 8, c(m, n.from("ssh-rsa")), c(m, r), c(m, i), c(m, s), c(m, u), c(m, h), c(m, p), c(m, l); + let S = 1; + for (; m.off < d;) m.off = m.buf.writeUInt8(S++, m.off); + return "der" === e.type ? m.buf : a + "\n" + o.linebrk(v.toString("base64"), 70) + "\n" + f + "\n" + }, + privateImport: function(t, e, r) { + var c; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), !i.isString(e)) throw Error("Unsupported key format"); + var h = o.trimSurroundingText(e, a, f).replace(/\s+|\n\r|\n|\r$/gm, ""); + c = n.from(h, "base64") + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + c = e + } + const p = { + buf: c, + off: 0 + }; + if ("openssh-key-v1" !== c.slice(0, 14).toString("ascii")) throw "Invalid file format."; + if (p.off += 15, "none" !== u(p).toString("ascii")) throw Error("Unsupported key type"); + if ("none" !== u(p).toString("ascii")) throw Error("Unsupported key type"); + if ("" !== u(p).toString("ascii")) throw Error("Unsupported key type"); + if (p.off += 4, p.off += 4, "ssh-rsa" !== u(p).toString("ascii")) throw Error("Unsupported key type"); + if (u(p), u(p), p.off += 12, "ssh-rsa" !== u(p).toString("ascii")) throw Error("Unsupported key type"); + const l = u(p), + y = u(p), + g = u(p), + d = u(p), + v = u(p), + m = u(p), + S = new s(g), + _ = new s(m), + b = new s(v), + E = S.mod(b.subtract(s.ONE)), + w = S.mod(_.subtract(s.ONE)); + t.setPrivate(l, y, g, v, m, E.toBuffer(), w.toBuffer(), d), t.sshcomment = u(p).toString("ascii") + }, + publicExport: function(t, e) { + let r = n.alloc(4); + for (r.writeUInt32BE(t.e, 0); 0 === r[0];) r = r.slice(1); + const i = t.n.toBuffer(), + o = n.alloc(r.byteLength + 4 + i.byteLength + 4 + 7 + 4), + s = { + buf: o, + off: 0 + }; + c(s, n.from("ssh-rsa")), c(s, r), c(s, i); + let a = t.sshcomment || ""; + return "der" === e.type ? s.buf : "ssh-rsa " + o.toString("base64") + " " + a + "\n" + }, + publicImport: function(t, e, r) { + var o; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), !i.isString(e)) throw Error("Unsupported key format"); + { + if ("ssh-rsa " !== e.substring(0, 8)) throw Error("Unsupported key format"); + let r = e.indexOf(" ", 8); - 1 === r ? r = e.length : t.sshcomment = e.substring(r + 1).replace(/\s+|\n\r|\n|\r$/gm, ""); + const i = e.substring(8, r).replace(/\s+|\n\r|\n|\r$/gm, ""); + o = n.from(i, "base64") + } + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + o = e + } + const s = { + buf: o, + off: 0 + }, + a = u(s).toString("ascii"); + if ("ssh-rsa" !== a) throw Error("Invalid key type: " + a); + const f = u(s), + c = u(s); + t.setPublic(c, f) + }, + autoImport: function(e, r) { + return /^[\S\s]*-----BEGIN OPENSSH PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END OPENSSH PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*ssh-rsa \s*(?=(([A-Za-z0-9+/=]+\s*)+))\1[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0) + } + } + }, + 6566: (t, e, r) => { + var n = r(8287).Buffer, + i = r(3100).Ber, + o = r(8226)._, + s = r(8226); + const a = "-----BEGIN RSA PRIVATE KEY-----", + f = "-----END RSA PRIVATE KEY-----", + u = "-----BEGIN RSA PUBLIC KEY-----", + c = "-----END RSA PUBLIC KEY-----"; + t.exports = { + privateExport: function(t, e) { + e = e || {}; + var r = t.n.toBuffer(), + n = t.d.toBuffer(), + o = t.p.toBuffer(), + u = t.q.toBuffer(), + c = t.dmp1.toBuffer(), + h = t.dmq1.toBuffer(), + p = t.coeff.toBuffer(), + l = r.length + n.length + o.length + u.length + c.length + h.length + p.length + 512, + y = new i.Writer({ + size: l + }); + return y.startSequence(), y.writeInt(0), y.writeBuffer(r, 2), y.writeInt(t.e), y.writeBuffer(n, 2), y.writeBuffer(o, 2), y.writeBuffer(u, 2), y.writeBuffer(c, 2), y.writeBuffer(h, 2), y.writeBuffer(p, 2), y.endSequence(), "der" === e.type ? y.buffer : a + "\n" + s.linebrk(y.buffer.toString("base64"), 64) + "\n" + f + }, + privateImport: function(t, e, r) { + var u; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), !o.isString(e)) throw Error("Unsupported key format"); + var c = s.trimSurroundingText(e, a, f).replace(/\s+|\n\r|\n|\r$/gm, ""); + u = n.from(c, "base64") + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + u = e + } + var h = new i.Reader(u); + h.readSequence(), h.readString(2, !0), t.setPrivate(h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0), h.readString(2, !0)) + }, + publicExport: function(t, e) { + e = e || {}; + var r = t.n.toBuffer(), + n = r.length + 512, + o = new i.Writer({ + size: n + }); + return o.startSequence(), o.writeBuffer(r, 2), o.writeInt(t.e), o.endSequence(), "der" === e.type ? o.buffer : u + "\n" + s.linebrk(o.buffer.toString("base64"), 64) + "\n" + c + }, + publicImport: function(t, e, r) { + var a; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), o.isString(e)) { + var f = s.trimSurroundingText(e, u, c).replace(/\s+|\n\r|\n|\r$/gm, ""); + a = n.from(f, "base64") + } + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + a = e + } + var h = new i.Reader(a); + h.readSequence(), t.setPublic(h.readString(2, !0), h.readString(2, !0)) + }, + autoImport: function(e, r) { + return /^[\S\s]*-----BEGIN RSA PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*-----BEGIN RSA PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END RSA PUBLIC KEY-----[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0) + } + } + }, + 8573: (t, e, r) => { + var n = r(8287).Buffer, + i = r(3100).Ber, + o = r(8226)._, + s = "1.2.840.113549.1.1.1", + a = r(8226); + const f = "-----BEGIN PRIVATE KEY-----", + u = "-----END PRIVATE KEY-----", + c = "-----BEGIN PUBLIC KEY-----", + h = "-----END PUBLIC KEY-----"; + t.exports = { + privateExport: function(t, e) { + e = e || {}; + var r = t.n.toBuffer(), + n = t.d.toBuffer(), + o = t.p.toBuffer(), + c = t.q.toBuffer(), + h = t.dmp1.toBuffer(), + p = t.dmq1.toBuffer(), + l = t.coeff.toBuffer(), + y = r.length + n.length + o.length + c.length + h.length + p.length + l.length + 512, + g = new i.Writer({ + size: y + }); + g.startSequence(), g.writeInt(0), g.writeBuffer(r, 2), g.writeInt(t.e), g.writeBuffer(n, 2), g.writeBuffer(o, 2), g.writeBuffer(c, 2), g.writeBuffer(h, 2), g.writeBuffer(p, 2), g.writeBuffer(l, 2), g.endSequence(); + var d = new i.Writer({ + size: y + }); + return d.startSequence(), d.writeInt(0), d.startSequence(), d.writeOID(s), d.writeNull(), d.endSequence(), d.writeBuffer(g.buffer, 4), d.endSequence(), "der" === e.type ? d.buffer : f + "\n" + a.linebrk(d.buffer.toString("base64"), 64) + "\n" + u + }, + privateImport: function(t, e, r) { + var c; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), !o.isString(e)) throw Error("Unsupported key format"); + var h = a.trimSurroundingText(e, f, u).replace("-----END PRIVATE KEY-----", "").replace(/\s+|\n\r|\n|\r$/gm, ""); + c = n.from(h, "base64") + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + c = e + } + var p = new i.Reader(c); + if (p.readSequence(), p.readInt(0), new i.Reader(p.readString(48, !0)).readOID(6, !0) !== s) throw Error("Invalid Public key format"); + var l = new i.Reader(p.readString(4, !0)); + l.readSequence(), l.readString(2, !0), t.setPrivate(l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0), l.readString(2, !0)) + }, + publicExport: function(t, e) { + e = e || {}; + var r = t.n.toBuffer(), + n = r.length + 512, + o = new i.Writer({ + size: n + }); + o.writeByte(0), o.startSequence(), o.writeBuffer(r, 2), o.writeInt(t.e), o.endSequence(); + var f = new i.Writer({ + size: n + }); + return f.startSequence(), f.startSequence(), f.writeOID(s), f.writeNull(), f.endSequence(), f.writeBuffer(o.buffer, 3), f.endSequence(), "der" === e.type ? f.buffer : c + "\n" + a.linebrk(f.buffer.toString("base64"), 64) + "\n" + h + }, + publicImport: function(t, e, r) { + var f; + if ("der" !== (r = r || {}).type) { + if (n.isBuffer(e) && (e = e.toString("utf8")), o.isString(e)) { + var u = a.trimSurroundingText(e, c, h).replace(/\s+|\n\r|\n|\r$/gm, ""); + f = n.from(u, "base64") + } + } else { + if (!n.isBuffer(e)) throw Error("Unsupported key format"); + f = e + } + var p = new i.Reader(f); + if (p.readSequence(), new i.Reader(p.readString(48, !0)).readOID(6, !0) !== s) throw Error("Invalid Public key format"); + var l = new i.Reader(p.readString(3, !0)); + l.readByte(), l.readSequence(), t.setPublic(l.readString(2, !0), l.readString(2, !0)) + }, + autoImport: function(e, r) { + return /^[\S\s]*-----BEGIN PRIVATE KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PRIVATE KEY-----[\S\s]*$/g.test(r) ? (t.exports.privateImport(e, r), !0) : !!/^[\S\s]*-----BEGIN PUBLIC KEY-----\s*(?=(([A-Za-z0-9+/=]+\s*)+))\1-----END PUBLIC KEY-----[\S\s]*$/g.test(r) && (t.exports.publicImport(e, r), !0) + } + } + }, + 1973: (t, e, r) => { + var n = r(8287).Buffer, + i = r(3200), + o = r(8226)._; + + function s(t, e) { + null != t && ("number" == typeof t ? this.fromNumber(t, e) : n.isBuffer(t) ? this.fromBuffer(t) : null == e && "string" != typeof t ? this.fromByteArray(t) : this.fromString(t, e)) + } + + function a() { + return new s(null) + } + s.prototype.am = function(t, e, r, n, i, o) { + for (var s = 16383 & e, a = e >> 14; --o >= 0;) { + var f = 16383 & this[t], + u = this[t++] >> 14, + c = a * f + u * s; + i = ((f = s * f + ((16383 & c) << 14) + r[n] + i) >> 28) + (c >> 14) + a * u, r[n++] = 268435455 & f + } + return i + }, s.prototype.DB = 28, s.prototype.DM = 268435455, s.prototype.DV = 1 << 28, s.prototype.FV = Math.pow(2, 52), s.prototype.F1 = 24, s.prototype.F2 = 4; + var f, u, c = new Array; + for (f = "0".charCodeAt(0), u = 0; u <= 9; ++u) c[f++] = u; + for (f = "a".charCodeAt(0), u = 10; u < 36; ++u) c[f++] = u; + for (f = "A".charCodeAt(0), u = 10; u < 36; ++u) c[f++] = u; + + function h(t) { + return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(t) + } + + function p(t, e) { + var r = c[t.charCodeAt(e)]; + return null == r ? -1 : r + } + + function l(t) { + var e = a(); + return e.fromInt(t), e + } + + function y(t) { + var e, r = 1; + return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r + } + + function g(t) { + this.m = t + } + + function d(t) { + this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t + } + + function v(t, e) { + return t & e + } + + function m(t, e) { + return t | e + } + + function S(t, e) { + return t ^ e + } + + function _(t, e) { + return t & ~e + } + + function b(t) { + if (0 === t) return -1; + var e = 0; + return 65535 & t || (t >>= 16, e += 16), 255 & t || (t >>= 8, e += 8), 15 & t || (t >>= 4, e += 4), 3 & t || (t >>= 2, e += 2), 1 & t || ++e, e + } + + function E(t) { + for (var e = 0; 0 != t;) t &= t - 1, ++e; + return e + } + + function w() {} + + function O(t) { + return t + } + + function B(t) { + this.r2 = a(), this.q3 = a(), s.ONE.dlShiftTo(2 * t.t, this.r2), this.mu = this.r2.divide(t), this.m = t + } + g.prototype.convert = function(t) { + return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t + }, g.prototype.revert = function(t) { + return t + }, g.prototype.reduce = function(t) { + t.divRemTo(this.m, null, t) + }, g.prototype.mulTo = function(t, e, r) { + t.multiplyTo(e, r), this.reduce(r) + }, g.prototype.sqrTo = function(t, e) { + t.squareTo(e), this.reduce(e) + }, d.prototype.convert = function(t) { + var e = a(); + return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && e.compareTo(s.ZERO) > 0 && this.m.subTo(e, e), e + }, d.prototype.revert = function(t) { + var e = a(); + return t.copyTo(e), this.reduce(e), e + }, d.prototype.reduce = function(t) { + for (; t.t <= this.mt2;) t[t.t++] = 0; + for (var e = 0; e < this.m.t; ++e) { + var r = 32767 & t[e], + n = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; + for (t[r = e + this.m.t] += this.m.am(0, n, t, e, 0, this.m.t); t[r] >= t.DV;) t[r] -= t.DV, t[++r]++ + } + t.clamp(), t.drShiftTo(this.m.t, t), t.compareTo(this.m) >= 0 && t.subTo(this.m, t) + }, d.prototype.mulTo = function(t, e, r) { + t.multiplyTo(e, r), this.reduce(r) + }, d.prototype.sqrTo = function(t, e) { + t.squareTo(e), this.reduce(e) + }, w.prototype.convert = O, w.prototype.revert = O, w.prototype.mulTo = function(t, e, r) { + t.multiplyTo(e, r) + }, w.prototype.sqrTo = function(t, e) { + t.squareTo(e) + }, B.prototype.convert = function(t) { + if (t.s < 0 || t.t > 2 * this.m.t) return t.mod(this.m); + if (t.compareTo(this.m) < 0) return t; + var e = a(); + return t.copyTo(e), this.reduce(e), e + }, B.prototype.revert = function(t) { + return t + }, B.prototype.reduce = function(t) { + for (t.drShiftTo(this.m.t - 1, this.r2), t.t > this.m.t + 1 && (t.t = this.m.t + 1, t.clamp()), this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3), this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); t.compareTo(this.r2) < 0;) t.dAddOffset(1, this.m.t + 1); + for (t.subTo(this.r2, t); t.compareTo(this.m) >= 0;) t.subTo(this.m, t) + }, B.prototype.mulTo = function(t, e, r) { + t.multiplyTo(e, r), this.reduce(r) + }, B.prototype.sqrTo = function(t, e) { + t.squareTo(e), this.reduce(e) + }; + var A = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997], + x = (1 << 26) / A[A.length - 1]; + s.prototype.copyTo = function(t) { + for (var e = this.t - 1; e >= 0; --e) t[e] = this[e]; + t.t = this.t, t.s = this.s + }, s.prototype.fromInt = function(t) { + this.t = 1, this.s = t < 0 ? -1 : 0, t > 0 ? this[0] = t : t < -1 ? this[0] = t + DV : this.t = 0 + }, s.prototype.fromString = function(t, e, r) { + var n; + switch (e) { + case 2: + n = 1; + break; + case 4: + n = 2; + break; + case 8: + n = 3; + break; + case 16: + n = 4; + break; + case 32: + n = 5; + break; + case 256: + n = 8; + break; + default: + return void this.fromRadix(t, e) + } + this.t = 0, this.s = 0; + for (var i = t.length, o = !1, a = 0; --i >= 0;) { + var f = 8 == n ? 255 & t[i] : p(t, i); + f < 0 ? "-" == t.charAt(i) && (o = !0) : (o = !1, 0 === a ? this[this.t++] = f : a + n > this.DB ? (this[this.t - 1] |= (f & (1 << this.DB - a) - 1) << a, this[this.t++] = f >> this.DB - a) : this[this.t - 1] |= f << a, (a += n) >= this.DB && (a -= this.DB)) + }!r && 8 == n && 128 & t[0] && (this.s = -1, a > 0 && (this[this.t - 1] |= (1 << this.DB - a) - 1 << a)), this.clamp(), o && s.ZERO.subTo(this, this) + }, s.prototype.fromByteArray = function(t, e) { + this.fromString(t, 256, e) + }, s.prototype.fromBuffer = function(t) { + this.fromString(t, 256, !0) + }, s.prototype.clamp = function() { + for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t;) --this.t + }, s.prototype.dlShiftTo = function(t, e) { + var r; + for (r = this.t - 1; r >= 0; --r) e[r + t] = this[r]; + for (r = t - 1; r >= 0; --r) e[r] = 0; + e.t = this.t + t, e.s = this.s + }, s.prototype.drShiftTo = function(t, e) { + for (var r = t; r < this.t; ++r) e[r - t] = this[r]; + e.t = Math.max(this.t - t, 0), e.s = this.s + }, s.prototype.lShiftTo = function(t, e) { + var r, n = t % this.DB, + i = this.DB - n, + o = (1 << i) - 1, + s = Math.floor(t / this.DB), + a = this.s << n & this.DM; + for (r = this.t - 1; r >= 0; --r) e[r + s + 1] = this[r] >> i | a, a = (this[r] & o) << n; + for (r = s - 1; r >= 0; --r) e[r] = 0; + e[s] = a, e.t = this.t + s + 1, e.s = this.s, e.clamp() + }, s.prototype.rShiftTo = function(t, e) { + e.s = this.s; + var r = Math.floor(t / this.DB); + if (r >= this.t) e.t = 0; + else { + var n = t % this.DB, + i = this.DB - n, + o = (1 << n) - 1; + e[0] = this[r] >> n; + for (var s = r + 1; s < this.t; ++s) e[s - r - 1] |= (this[s] & o) << i, e[s - r] = this[s] >> n; + n > 0 && (e[this.t - r - 1] |= (this.s & o) << i), e.t = this.t - r, e.clamp() + } + }, s.prototype.subTo = function(t, e) { + for (var r = 0, n = 0, i = Math.min(t.t, this.t); r < i;) n += this[r] - t[r], e[r++] = n & this.DM, n >>= this.DB; + if (t.t < this.t) { + for (n -= t.s; r < this.t;) n += this[r], e[r++] = n & this.DM, n >>= this.DB; + n += this.s + } else { + for (n += this.s; r < t.t;) n -= t[r], e[r++] = n & this.DM, n >>= this.DB; + n -= t.s + } + e.s = n < 0 ? -1 : 0, n < -1 ? e[r++] = this.DV + n : n > 0 && (e[r++] = n), e.t = r, e.clamp() + }, s.prototype.multiplyTo = function(t, e) { + var r = this.abs(), + n = t.abs(), + i = r.t; + for (e.t = i + n.t; --i >= 0;) e[i] = 0; + for (i = 0; i < n.t; ++i) e[i + r.t] = r.am(0, n[i], e, i, 0, r.t); + e.s = 0, e.clamp(), this.s != t.s && s.ZERO.subTo(e, e) + }, s.prototype.squareTo = function(t) { + for (var e = this.abs(), r = t.t = 2 * e.t; --r >= 0;) t[r] = 0; + for (r = 0; r < e.t - 1; ++r) { + var n = e.am(r, e[r], t, 2 * r, 0, 1); + (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, n, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1) + } + t.t > 0 && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp() + }, s.prototype.divRemTo = function(t, e, r) { + var n = t.abs(); + if (!(n.t <= 0)) { + var i = this.abs(); + if (i.t < n.t) return null != e && e.fromInt(0), void(null != r && this.copyTo(r)); + null == r && (r = a()); + var o = a(), + f = this.s, + u = t.s, + c = this.DB - y(n[n.t - 1]); + c > 0 ? (n.lShiftTo(c, o), i.lShiftTo(c, r)) : (n.copyTo(o), i.copyTo(r)); + var h = o.t, + p = o[h - 1]; + if (0 !== p) { + var l = p * (1 << this.F1) + (h > 1 ? o[h - 2] >> this.F2 : 0), + g = this.FV / l, + d = (1 << this.F1) / l, + v = 1 << this.F2, + m = r.t, + S = m - h, + _ = null == e ? a() : e; + for (o.dlShiftTo(S, _), r.compareTo(_) >= 0 && (r[r.t++] = 1, r.subTo(_, r)), s.ONE.dlShiftTo(h, _), _.subTo(o, o); o.t < h;) o[o.t++] = 0; + for (; --S >= 0;) { + var b = r[--m] == p ? this.DM : Math.floor(r[m] * g + (r[m - 1] + v) * d); + if ((r[m] += o.am(0, b, r, S, 0, h)) < b) + for (o.dlShiftTo(S, _), r.subTo(_, r); r[m] < --b;) r.subTo(_, r) + } + null != e && (r.drShiftTo(h, e), f != u && s.ZERO.subTo(e, e)), r.t = h, r.clamp(), c > 0 && r.rShiftTo(c, r), f < 0 && s.ZERO.subTo(r, r) + } + } + }, s.prototype.invDigit = function() { + if (this.t < 1) return 0; + var t = this[0]; + if (!(1 & t)) return 0; + var e = 3 & t; + return (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) > 0 ? this.DV - e : -e + }, s.prototype.isEven = function() { + return 0 === (this.t > 0 ? 1 & this[0] : this.s) + }, s.prototype.exp = function(t, e) { + if (t > 4294967295 || t < 1) return s.ONE; + var r = a(), + n = a(), + i = e.convert(this), + o = y(t) - 1; + for (i.copyTo(r); --o >= 0;) + if (e.sqrTo(r, n), (t & 1 << o) > 0) e.mulTo(n, i, r); + else { + var f = r; + r = n, n = f + } return e.revert(r) + }, s.prototype.chunkSize = function(t) { + return Math.floor(Math.LN2 * this.DB / Math.log(t)) + }, s.prototype.toRadix = function(t) { + if (null == t && (t = 10), 0 === this.signum() || t < 2 || t > 36) return "0"; + var e = this.chunkSize(t), + r = Math.pow(t, e), + n = l(r), + i = a(), + o = a(), + s = ""; + for (this.divRemTo(n, i, o); i.signum() > 0;) s = (r + o.intValue()).toString(t).substr(1) + s, i.divRemTo(n, i, o); + return o.intValue().toString(t) + s + }, s.prototype.fromRadix = function(t, e) { + this.fromInt(0), null == e && (e = 10); + for (var r = this.chunkSize(e), n = Math.pow(e, r), i = !1, o = 0, a = 0, f = 0; f < t.length; ++f) { + var u = p(t, f); + u < 0 ? "-" == t.charAt(f) && 0 === this.signum() && (i = !0) : (a = e * a + u, ++o >= r && (this.dMultiply(n), this.dAddOffset(a, 0), o = 0, a = 0)) + } + o > 0 && (this.dMultiply(Math.pow(e, o)), this.dAddOffset(a, 0)), i && s.ZERO.subTo(this, this) + }, s.prototype.fromNumber = function(t, e) { + if ("number" == typeof e) + if (t < 2) this.fromInt(1); + else + for (this.fromNumber(t), this.testBit(t - 1) || this.bitwiseTo(s.ONE.shiftLeft(t - 1), m, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(e);) this.dAddOffset(2, 0), this.bitLength() > t && this.subTo(s.ONE.shiftLeft(t - 1), this); + else { + var r = i.randomBytes(1 + (t >> 3)), + n = 7 & t; + n > 0 ? r[0] &= (1 << n) - 1 : r[0] = 0, this.fromByteArray(r) + } + }, s.prototype.bitwiseTo = function(t, e, r) { + var n, i, o = Math.min(t.t, this.t); + for (n = 0; n < o; ++n) r[n] = e(this[n], t[n]); + if (t.t < this.t) { + for (i = t.s & this.DM, n = o; n < this.t; ++n) r[n] = e(this[n], i); + r.t = this.t + } else { + for (i = this.s & this.DM, n = o; n < t.t; ++n) r[n] = e(i, t[n]); + r.t = t.t + } + r.s = e(this.s, t.s), r.clamp() + }, s.prototype.changeBit = function(t, e) { + var r = s.ONE.shiftLeft(t); + return this.bitwiseTo(r, e, r), r + }, s.prototype.addTo = function(t, e) { + for (var r = 0, n = 0, i = Math.min(t.t, this.t); r < i;) n += this[r] + t[r], e[r++] = n & this.DM, n >>= this.DB; + if (t.t < this.t) { + for (n += t.s; r < this.t;) n += this[r], e[r++] = n & this.DM, n >>= this.DB; + n += this.s + } else { + for (n += this.s; r < t.t;) n += t[r], e[r++] = n & this.DM, n >>= this.DB; + n += t.s + } + e.s = n < 0 ? -1 : 0, n > 0 ? e[r++] = n : n < -1 && (e[r++] = this.DV + n), e.t = r, e.clamp() + }, s.prototype.dMultiply = function(t) { + this[this.t] = this.am(0, t - 1, this, 0, 0, this.t), ++this.t, this.clamp() + }, s.prototype.dAddOffset = function(t, e) { + if (0 !== t) { + for (; this.t <= e;) this[this.t++] = 0; + for (this[e] += t; this[e] >= this.DV;) this[e] -= this.DV, ++e >= this.t && (this[this.t++] = 0), ++this[e] + } + }, s.prototype.multiplyLowerTo = function(t, e, r) { + var n, i = Math.min(this.t + t.t, e); + for (r.s = 0, r.t = i; i > 0;) r[--i] = 0; + for (n = r.t - this.t; i < n; ++i) r[i + this.t] = this.am(0, t[i], r, i, 0, this.t); + for (n = Math.min(t.t, e); i < n; ++i) this.am(0, t[i], r, i, 0, e - i); + r.clamp() + }, s.prototype.multiplyUpperTo = function(t, e, r) { + --e; + var n = r.t = this.t + t.t - e; + for (r.s = 0; --n >= 0;) r[n] = 0; + for (n = Math.max(e - this.t, 0); n < t.t; ++n) r[this.t + n - e] = this.am(e - n, t[n], r, 0, 0, this.t + n - e); + r.clamp(), r.drShiftTo(1, r) + }, s.prototype.modInt = function(t) { + if (t <= 0) return 0; + var e = this.DV % t, + r = this.s < 0 ? t - 1 : 0; + if (this.t > 0) + if (0 === e) r = this[0] % t; + else + for (var n = this.t - 1; n >= 0; --n) r = (e * r + this[n]) % t; + return r + }, s.prototype.millerRabin = function(t) { + var e = this.subtract(s.ONE), + r = e.getLowestSetBit(); + if (r <= 0) return !1; + var n = e.shiftRight(r); + (t = t + 1 >> 1) > A.length && (t = A.length); + for (var i = a(), o = 0; o < t; ++o) { + i.fromInt(A[Math.floor(Math.random() * A.length)]); + var f = i.modPow(n, this); + if (0 != f.compareTo(s.ONE) && 0 != f.compareTo(e)) { + for (var u = 1; u++ < r && 0 != f.compareTo(e);) + if (0 === (f = f.modPowInt(2, this)).compareTo(s.ONE)) return !1; + if (0 != f.compareTo(e)) return !1 + } + } + return !0 + }, s.prototype.toString = function(t) { + if (this.s < 0) return "-" + this.negate().toString(t); + var e; + if (16 == t) e = 4; + else if (8 == t) e = 3; + else if (2 == t) e = 1; + else if (32 == t) e = 5; + else { + if (4 != t) return this.toRadix(t); + e = 2 + } + var r, n = (1 << e) - 1, + i = !1, + o = "", + s = this.t, + a = this.DB - s * this.DB % e; + if (s-- > 0) + for (a < this.DB && (r = this[s] >> a) > 0 && (i = !0, o = h(r)); s >= 0;) a < e ? (r = (this[s] & (1 << a) - 1) << e - a, r |= this[--s] >> (a += this.DB - e)) : (r = this[s] >> (a -= e) & n, a <= 0 && (a += this.DB, --s)), r > 0 && (i = !0), i && (o += h(r)); + return i ? o : "0" + }, s.prototype.negate = function() { + var t = a(); + return s.ZERO.subTo(this, t), t + }, s.prototype.abs = function() { + return this.s < 0 ? this.negate() : this + }, s.prototype.compareTo = function(t) { + var e = this.s - t.s; + if (0 != e) return e; + var r = this.t; + if (0 != (e = r - t.t)) return this.s < 0 ? -e : e; + for (; --r >= 0;) + if (0 != (e = this[r] - t[r])) return e; + return 0 + }, s.prototype.bitLength = function() { + return this.t <= 0 ? 0 : this.DB * (this.t - 1) + y(this[this.t - 1] ^ this.s & this.DM) + }, s.prototype.mod = function(t) { + var e = a(); + return this.abs().divRemTo(t, null, e), this.s < 0 && e.compareTo(s.ZERO) > 0 && t.subTo(e, e), e + }, s.prototype.modPowInt = function(t, e) { + var r; + return r = t < 256 || e.isEven() ? new g(e) : new d(e), this.exp(t, r) + }, s.prototype.clone = function() { + var t = a(); + return this.copyTo(t), t + }, s.prototype.intValue = function() { + if (this.s < 0) { + if (1 == this.t) return this[0] - this.DV; + if (0 === this.t) return -1 + } else { + if (1 == this.t) return this[0]; + if (0 === this.t) return 0 + } + return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0] + }, s.prototype.byteValue = function() { + return 0 == this.t ? this.s : this[0] << 24 >> 24 + }, s.prototype.shortValue = function() { + return 0 == this.t ? this.s : this[0] << 16 >> 16 + }, s.prototype.signum = function() { + return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1 + }, s.prototype.toByteArray = function() { + var t = this.t, + e = new Array; + e[0] = this.s; + var r, n = this.DB - t * this.DB % 8, + i = 0; + if (t-- > 0) + for (n < this.DB && (r = this[t] >> n) != (this.s & this.DM) >> n && (e[i++] = r | this.s << this.DB - n); t >= 0;) n < 8 ? (r = (this[t] & (1 << n) - 1) << 8 - n, r |= this[--t] >> (n += this.DB - 8)) : (r = this[t] >> (n -= 8) & 255, n <= 0 && (n += this.DB, --t)), 128 & r && (r |= -256), 0 === i && (128 & this.s) != (128 & r) && ++i, (i > 0 || r != this.s) && (e[i++] = r); + return e + }, s.prototype.toBuffer = function(t) { + var e = n.from(this.toByteArray()); + if (!0 === t && 0 === e[0]) e = e.slice(1); + else if (o.isNumber(t)) { + if (e.length > t) { + for (var r = 0; r < e.length - t; r++) + if (0 !== e[r]) return null; + return e.slice(e.length - t) + } + if (e.length < t) { + var i = n.alloc(t); + return i.fill(0, 0, t - e.length), e.copy(i, t - e.length), i + } + } + return e + }, s.prototype.equals = function(t) { + return 0 == this.compareTo(t) + }, s.prototype.min = function(t) { + return this.compareTo(t) < 0 ? this : t + }, s.prototype.max = function(t) { + return this.compareTo(t) > 0 ? this : t + }, s.prototype.and = function(t) { + var e = a(); + return this.bitwiseTo(t, v, e), e + }, s.prototype.or = function(t) { + var e = a(); + return this.bitwiseTo(t, m, e), e + }, s.prototype.xor = function(t) { + var e = a(); + return this.bitwiseTo(t, S, e), e + }, s.prototype.andNot = function(t) { + var e = a(); + return this.bitwiseTo(t, _, e), e + }, s.prototype.not = function() { + for (var t = a(), e = 0; e < this.t; ++e) t[e] = this.DM & ~this[e]; + return t.t = this.t, t.s = ~this.s, t + }, s.prototype.shiftLeft = function(t) { + var e = a(); + return t < 0 ? this.rShiftTo(-t, e) : this.lShiftTo(t, e), e + }, s.prototype.shiftRight = function(t) { + var e = a(); + return t < 0 ? this.lShiftTo(-t, e) : this.rShiftTo(t, e), e + }, s.prototype.getLowestSetBit = function() { + for (var t = 0; t < this.t; ++t) + if (0 != this[t]) return t * this.DB + b(this[t]); + return this.s < 0 ? this.t * this.DB : -1 + }, s.prototype.bitCount = function() { + for (var t = 0, e = this.s & this.DM, r = 0; r < this.t; ++r) t += E(this[r] ^ e); + return t + }, s.prototype.testBit = function(t) { + var e = Math.floor(t / this.DB); + return e >= this.t ? 0 != this.s : !!(this[e] & 1 << t % this.DB) + }, s.prototype.setBit = function(t) { + return this.changeBit(t, m) + }, s.prototype.clearBit = function(t) { + return this.changeBit(t, _) + }, s.prototype.flipBit = function(t) { + return this.changeBit(t, S) + }, s.prototype.add = function(t) { + var e = a(); + return this.addTo(t, e), e + }, s.prototype.subtract = function(t) { + var e = a(); + return this.subTo(t, e), e + }, s.prototype.multiply = function(t) { + var e = a(); + return this.multiplyTo(t, e), e + }, s.prototype.divide = function(t) { + var e = a(); + return this.divRemTo(t, e, null), e + }, s.prototype.remainder = function(t) { + var e = a(); + return this.divRemTo(t, null, e), e + }, s.prototype.divideAndRemainder = function(t) { + var e = a(), + r = a(); + return this.divRemTo(t, e, r), new Array(e, r) + }, s.prototype.modPow = function(t, e) { + var r, n, i = t.bitLength(), + o = l(1); + if (i <= 0) return o; + r = i < 18 ? 1 : i < 48 ? 3 : i < 144 ? 4 : i < 768 ? 5 : 6, n = i < 8 ? new g(e) : e.isEven() ? new B(e) : new d(e); + var s = new Array, + f = 3, + u = r - 1, + c = (1 << r) - 1; + if (s[1] = n.convert(this), r > 1) { + var h = a(); + for (n.sqrTo(s[1], h); f <= c;) s[f] = a(), n.mulTo(h, s[f - 2], s[f]), f += 2 + } + var p, v, m = t.t - 1, + S = !0, + _ = a(); + for (i = y(t[m]) - 1; m >= 0;) { + for (i >= u ? p = t[m] >> i - u & c : (p = (t[m] & (1 << i + 1) - 1) << u - i, m > 0 && (p |= t[m - 1] >> this.DB + i - u)), f = r; !(1 & p);) p >>= 1, --f; + if ((i -= f) < 0 && (i += this.DB, --m), S) s[p].copyTo(o), S = !1; + else { + for (; f > 1;) n.sqrTo(o, _), n.sqrTo(_, o), f -= 2; + f > 0 ? n.sqrTo(o, _) : (v = o, o = _, _ = v), n.mulTo(_, s[p], o) + } + for (; m >= 0 && !(t[m] & 1 << i);) n.sqrTo(o, _), v = o, o = _, _ = v, --i < 0 && (i = this.DB - 1, --m) + } + return n.revert(o) + }, s.prototype.modInverse = function(t) { + var e = t.isEven(); + if (this.isEven() && e || 0 === t.signum()) return s.ZERO; + for (var r = t.clone(), n = this.clone(), i = l(1), o = l(0), a = l(0), f = l(1); 0 != r.signum();) { + for (; r.isEven();) r.rShiftTo(1, r), e ? (i.isEven() && o.isEven() || (i.addTo(this, i), o.subTo(t, o)), i.rShiftTo(1, i)) : o.isEven() || o.subTo(t, o), o.rShiftTo(1, o); + for (; n.isEven();) n.rShiftTo(1, n), e ? (a.isEven() && f.isEven() || (a.addTo(this, a), f.subTo(t, f)), a.rShiftTo(1, a)) : f.isEven() || f.subTo(t, f), f.rShiftTo(1, f); + r.compareTo(n) >= 0 ? (r.subTo(n, r), e && i.subTo(a, i), o.subTo(f, o)) : (n.subTo(r, n), e && a.subTo(i, a), f.subTo(o, f)) + } + return 0 != n.compareTo(s.ONE) ? s.ZERO : f.compareTo(t) >= 0 ? f.subtract(t) : f.signum() < 0 ? (f.addTo(t, f), f.signum() < 0 ? f.add(t) : f) : f + }, s.prototype.pow = function(t) { + return this.exp(t, new w) + }, s.prototype.gcd = function(t) { + var e = this.s < 0 ? this.negate() : this.clone(), + r = t.s < 0 ? t.negate() : t.clone(); + if (e.compareTo(r) < 0) { + var n = e; + e = r, r = n + } + var i = e.getLowestSetBit(), + o = r.getLowestSetBit(); + if (o < 0) return e; + for (i < o && (o = i), o > 0 && (e.rShiftTo(o, e), r.rShiftTo(o, r)); e.signum() > 0;)(i = e.getLowestSetBit()) > 0 && e.rShiftTo(i, e), (i = r.getLowestSetBit()) > 0 && r.rShiftTo(i, r), e.compareTo(r) >= 0 ? (e.subTo(r, e), e.rShiftTo(1, e)) : (r.subTo(e, r), r.rShiftTo(1, r)); + return o > 0 && r.lShiftTo(o, r), r + }, s.prototype.isProbablePrime = function(t) { + var e, r = this.abs(); + if (1 == r.t && r[0] <= A[A.length - 1]) { + for (e = 0; e < A.length; ++e) + if (r[0] == A[e]) return !0; + return !1 + } + if (r.isEven()) return !1; + for (e = 1; e < A.length;) { + for (var n = A[e], i = e + 1; i < A.length && n < x;) n *= A[i++]; + for (n = r.modInt(n); e < i;) + if (n % A[e++] == 0) return !1 + } + return r.millerRabin(t) + }, s.int2char = h, s.ZERO = l(0), s.ONE = l(1), s.prototype.square = function() { + var t = a(); + return this.squareTo(t), t + }, t.exports = s + }, + 5682: (t, e, r) => { + var n = r(8287).Buffer, + i = r(8226)._, + o = (r(3200), r(1973)), + s = r(8226), + a = r(1768), + f = r(4538); + e.BigInteger = o, t.exports.Key = function() { + function t() { + this.n = null, this.e = 0, this.d = null, this.p = null, this.q = null, this.dmp1 = null, this.dmq1 = null, this.coeff = null + } + return t.prototype.setOptions = function(t) { + var e = a[t.signingScheme], + r = a[t.encryptionScheme]; + e === r ? this.signingScheme = this.encryptionScheme = r.makeScheme(this, t) : (this.encryptionScheme = r.makeScheme(this, t), this.signingScheme = e.makeScheme(this, t)), this.encryptEngine = f.getEngine(this, t) + }, t.prototype.generate = function(t, e) { + var r = t >> 1; + this.e = parseInt(e, 16); + for (var n = new o(e, 16);;) { + for (; this.p = new o(t - r, 1), 0 !== this.p.subtract(o.ONE).gcd(n).compareTo(o.ONE) || !this.p.isProbablePrime(10);); + for (; this.q = new o(r, 1), 0 !== this.q.subtract(o.ONE).gcd(n).compareTo(o.ONE) || !this.q.isProbablePrime(10);); + if (this.p.compareTo(this.q) <= 0) { + var i = this.p; + this.p = this.q, this.q = i + } + var s = this.p.subtract(o.ONE), + a = this.q.subtract(o.ONE), + f = s.multiply(a); + if (0 === f.gcd(n).compareTo(o.ONE)) { + if (this.n = this.p.multiply(this.q), this.n.bitLength() < t) continue; + this.d = n.modInverse(f), this.dmp1 = this.d.mod(s), this.dmq1 = this.d.mod(a), this.coeff = this.q.modInverse(this.p); + break + } + } + this.$$recalculateCache() + }, t.prototype.setPrivate = function(t, e, r, n, a, f, u, c) { + if (!(t && e && r && t.length > 0 && (i.isNumber(e) || e.length > 0) && r.length > 0)) throw Error("Invalid RSA private key"); + this.n = new o(t), this.e = i.isNumber(e) ? e : s.get32IntFromBuffer(e, 0), this.d = new o(r), n && a && f && u && c && (this.p = new o(n), this.q = new o(a), this.dmp1 = new o(f), this.dmq1 = new o(u), this.coeff = new o(c)), this.$$recalculateCache() + }, t.prototype.setPublic = function(t, e) { + if (!(t && e && t.length > 0 && (i.isNumber(e) || e.length > 0))) throw Error("Invalid RSA public key"); + this.n = new o(t), this.e = i.isNumber(e) ? e : s.get32IntFromBuffer(e, 0), this.$$recalculateCache() + }, t.prototype.$doPrivate = function(t) { + if (this.p || this.q) return t.modPow(this.d, this.n); + for (var e = t.mod(this.p).modPow(this.dmp1, this.p), r = t.mod(this.q).modPow(this.dmq1, this.q); e.compareTo(r) < 0;) e = e.add(this.p); + return e.subtract(r).multiply(this.coeff).mod(this.p).multiply(this.q).add(r) + }, t.prototype.$doPublic = function(t) { + return t.modPowInt(this.e, this.n) + }, t.prototype.encrypt = function(t, e) { + var r = [], + i = [], + o = t.length, + s = Math.ceil(o / this.maxMessageLength) || 1, + a = Math.ceil(o / s || 1); + if (1 == s) r.push(t); + else + for (var f = 0; f < s; f++) r.push(t.slice(f * a, (f + 1) * a)); + for (var u = 0; u < r.length; u++) i.push(this.encryptEngine.encrypt(r[u], e)); + return n.concat(i) + }, t.prototype.decrypt = function(t, e) { + if (t.length % this.encryptedDataLength > 0) throw Error("Incorrect data or key"); + for (var r = [], i = 0, o = 0, s = t.length / this.encryptedDataLength, a = 0; a < s; a++) o = (i = a * this.encryptedDataLength) + this.encryptedDataLength, r.push(this.encryptEngine.decrypt(t.slice(i, Math.min(o, t.length)), e)); + return n.concat(r) + }, t.prototype.sign = function(t) { + return this.signingScheme.sign.apply(this.signingScheme, arguments) + }, t.prototype.verify = function(t, e, r) { + return this.signingScheme.verify.apply(this.signingScheme, arguments) + }, t.prototype.isPrivate = function() { + return !!(this.n && this.e && this.d) + }, t.prototype.isPublic = function(t) { + return this.n && this.e && !(t && this.d) || !1 + }, Object.defineProperty(t.prototype, "keySize", { + get: function() { + return this.cache.keyBitLength + } + }), Object.defineProperty(t.prototype, "encryptedDataLength", { + get: function() { + return this.cache.keyByteLength + } + }), Object.defineProperty(t.prototype, "maxMessageLength", { + get: function() { + return this.encryptionScheme.maxMessageLength() + } + }), t.prototype.$$recalculateCache = function() { + this.cache = this.cache || {}, this.cache.keyBitLength = this.n.bitLength(), this.cache.keyByteLength = this.cache.keyBitLength + 6 >> 3 + }, t + }() + }, + 2487: (t, e, r) => { + var n = r(8287).Buffer, + i = (r(1973), r(3200)); + t.exports = { + isEncryption: !0, + isSignature: !1 + }, t.exports.digestLength = { + md4: 16, + md5: 16, + ripemd160: 20, + rmd160: 20, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64 + }; + var o = "sha1"; + t.exports.eme_oaep_mgf1 = function(e, r, s) { + s = s || o; + for (var a = t.exports.digestLength[s], f = Math.ceil(r / a), u = n.alloc(a * f), c = n.alloc(4), h = 0; h < f; ++h) { + var p = i.createHash(s); + p.update(e), c.writeUInt32BE(h, 0), p.update(c), p.digest().copy(u, h * a) + } + return u.slice(0, r) + }, t.exports.makeScheme = function(e, r) { + function s(t, e) { + this.key = t, this.options = e + } + return s.prototype.maxMessageLength = function() { + return this.key.encryptedDataLength - 2 * t.exports.digestLength[this.options.encryptionSchemeOptions.hash || o] - 2 + }, s.prototype.encPad = function(e) { + var r = this.options.encryptionSchemeOptions.hash || o, + s = this.options.encryptionSchemeOptions.mgf || t.exports.eme_oaep_mgf1, + a = this.options.encryptionSchemeOptions.label || n.alloc(0), + f = this.key.encryptedDataLength, + u = t.exports.digestLength[r]; + if (e.length > f - 2 * u - 2) throw new Error("Message is too long to encode into an encoded message with a length of " + f + " bytes, increaseemLen to fix this error (minimum value for given parameters and options: " + (f - 2 * u - 2) + ")"); + var c = i.createHash(r); + c.update(a), c = c.digest(); + var h = n.alloc(f - e.length - 2 * u - 1); + h.fill(0), h[h.length - 1] = 1; + for (var p = n.concat([c, h, e]), l = i.randomBytes(u), y = s(l, p.length, r), g = 0; g < p.length; g++) p[g] ^= y[g]; + for (y = s(p, u, r), g = 0; g < l.length; g++) l[g] ^= y[g]; + var d = n.alloc(1 + l.length + p.length); + return d[0] = 0, l.copy(d, 1), p.copy(d, 1 + l.length), d + }, s.prototype.encUnPad = function(e) { + var r = this.options.encryptionSchemeOptions.hash || o, + s = this.options.encryptionSchemeOptions.mgf || t.exports.eme_oaep_mgf1, + a = this.options.encryptionSchemeOptions.label || n.alloc(0), + f = t.exports.digestLength[r]; + if (e.length < 2 * f + 2) throw new Error("Error decoding message, the supplied message is not long enough to be a valid OAEP encoded message"); + for (var u = e.slice(1, f + 1), c = e.slice(1 + f), h = s(c, f, r), p = 0; p < u.length; p++) u[p] ^= h[p]; + for (h = s(u, c.length, r), p = 0; p < c.length; p++) c[p] ^= h[p]; + var l = i.createHash(r); + if (l.update(a), l = l.digest(), c.slice(0, f).toString("hex") != l.toString("hex")) throw new Error("Error decoding message, the lHash calculated from the label provided and the lHash in the encrypted data do not match."); + for (p = f; 0 === c[p++] && p < c.length;); + if (1 != c[p - 1]) throw new Error("Error decoding message, there is no padding message separator byte"); + return c.slice(p) + }, new s(e, r) + } + }, + 8290: (t, e, r) => { + var n = r(8287).Buffer, + i = r(1973), + o = r(3200), + s = r(7449), + a = { + md2: n.from("3020300c06082a864886f70d020205000410", "hex"), + md5: n.from("3020300c06082a864886f70d020505000410", "hex"), + sha1: n.from("3021300906052b0e03021a05000414", "hex"), + sha224: n.from("302d300d06096086480165030402040500041c", "hex"), + sha256: n.from("3031300d060960864801650304020105000420", "hex"), + sha384: n.from("3041300d060960864801650304020205000430", "hex"), + sha512: n.from("3051300d060960864801650304020305000440", "hex"), + ripemd160: n.from("3021300906052b2403020105000414", "hex"), + rmd160: n.from("3021300906052b2403020105000414", "hex") + }, + f = { + ripemd160: "rmd160" + }, + u = "sha256"; + t.exports = { + isEncryption: !0, + isSignature: !0 + }, t.exports.makeScheme = function(t, e) { + function r(t, e) { + this.key = t, this.options = e + } + return r.prototype.maxMessageLength = function() { + return this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING ? this.key.encryptedDataLength : this.key.encryptedDataLength - 11 + }, r.prototype.encPad = function(t, e) { + var r; + if (e = e || {}, t.length > this.key.maxMessageLength) throw new Error("Message too long for RSA (n=" + this.key.encryptedDataLength + ", l=" + t.length + ")"); + if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return (r = n.alloc(this.key.maxMessageLength - t.length)).fill(0), n.concat([r, t]); + if (1 === e.type) return (r = n.alloc(this.key.encryptedDataLength - t.length - 1)).fill(255, 0, r.length - 1), r[0] = 1, r[r.length - 1] = 0, n.concat([r, t]); + (r = n.alloc(this.key.encryptedDataLength - t.length))[0] = 0, r[1] = 2; + for (var i = o.randomBytes(r.length - 3), a = 0; a < i.length; a++) { + for (var f = i[a]; 0 === f;) f = o.randomBytes(1)[0]; + r[a + 2] = f + } + return r[r.length - 1] = 0, n.concat([r, t]) + }, r.prototype.encUnPad = function(t, e) { + e = e || {}; + var r = 0; + if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return "function" == typeof t.lastIndexOf ? t.slice(t.lastIndexOf("\0") + 1, t.length) : t.slice(String.prototype.lastIndexOf.call(t, "\0") + 1, t.length); + if (t.length < 4) return null; + if (1 === e.type) { + if (0 !== t[0] || 1 !== t[1]) return null; + for (r = 3; 0 !== t[r];) + if (255 != t[r] || ++r >= t.length) return null + } else { + if (0 !== t[0] || 2 !== t[1]) return null; + for (r = 3; 0 !== t[r];) + if (++r >= t.length) return null + } + return t.slice(r + 1, t.length) + }, r.prototype.sign = function(t) { + var e = this.options.signingSchemeOptions.hash || u; + if ("browser" === this.options.environment) { + e = f[e] || e; + var r = o.createHash(e); + r.update(t); + var n = this.pkcs1pad(r.digest(), e); + return this.key.$doPrivate(new i(n)).toBuffer(this.key.encryptedDataLength) + } + var s = o.createSign("RSA-" + e.toUpperCase()); + return s.update(t), s.sign(this.options.rsaUtils.exportKey("private")) + }, r.prototype.verify = function(t, e, r) { + if (this.options.encryptionSchemeOptions && this.options.encryptionSchemeOptions.padding == s.RSA_NO_PADDING) return !1; + var a = this.options.signingSchemeOptions.hash || u; + if ("browser" === this.options.environment) { + a = f[a] || a, r && (e = n.from(e, r)); + var c = o.createHash(a); + c.update(t); + var h = this.pkcs1pad(c.digest(), a); + return this.key.$doPublic(new i(e)).toBuffer().toString("hex") == h.toString("hex") + } + var p = o.createVerify("RSA-" + a.toUpperCase()); + return p.update(t), p.verify(this.options.rsaUtils.exportKey("public"), e, r) + }, r.prototype.pkcs0pad = function(t) { + var e = n.alloc(this.key.maxMessageLength - t.length); + return e.fill(0), n.concat([e, t]) + }, r.prototype.pkcs0unpad = function(t) { + return "function" == typeof t.lastIndexOf ? t.slice(t.lastIndexOf("\0") + 1, t.length) : t.slice(String.prototype.lastIndexOf.call(t, "\0") + 1, t.length) + }, r.prototype.pkcs1pad = function(t, e) { + var r = a[e]; + if (!r) throw Error("Unsupported hash algorithm"); + var i = n.concat([r, t]); + if (i.length + 10 > this.key.encryptedDataLength) throw Error("Key is too short for signing algorithm (" + e + ")"); + var o = n.alloc(this.key.encryptedDataLength - i.length - 1); + return o.fill(255, 0, o.length - 1), o[0] = 1, o[o.length - 1] = 0, n.concat([o, i]) + }, new r(t, e) + } + }, + 4414: (t, e, r) => { + var n = r(8287).Buffer, + i = r(1973), + o = r(3200); + t.exports = { + isEncryption: !1, + isSignature: !0 + }; + var s = "sha1"; + t.exports.makeScheme = function(t, e) { + var a = r(1768).pkcs1_oaep; + + function f(t, e) { + this.key = t, this.options = e + } + return f.prototype.sign = function(t) { + var e = o.createHash(this.options.signingSchemeOptions.hash || s); + e.update(t); + var r = this.emsa_pss_encode(e.digest(), this.key.keySize - 1); + return this.key.$doPrivate(new i(r)).toBuffer(this.key.encryptedDataLength) + }, f.prototype.verify = function(t, e, r) { + r && (e = n.from(e, r)), e = new i(e); + var a = Math.ceil((this.key.keySize - 1) / 8), + f = this.key.$doPublic(e).toBuffer(a), + u = o.createHash(this.options.signingSchemeOptions.hash || s); + return u.update(t), this.emsa_pss_verify(u.digest(), f, this.key.keySize - 1) + }, f.prototype.emsa_pss_encode = function(t, e) { + var r = this.options.signingSchemeOptions.hash || s, + i = this.options.signingSchemeOptions.mgf || a.eme_oaep_mgf1, + f = this.options.signingSchemeOptions.saltLength || 20, + u = a.digestLength[r], + c = Math.ceil(e / 8); + if (c < u + f + 2) throw new Error("Output length passed to emBits(" + e + ") is too small for the options specified(" + r + ", " + f + "). To fix this issue increase the value of emBits. (minimum size: " + (8 * u + 8 * f + 9) + ")"); + var h = o.randomBytes(f), + p = n.alloc(8 + u + f); + p.fill(0, 0, 8), t.copy(p, 8), h.copy(p, 8 + t.length); + var l = o.createHash(r); + l.update(p), l = l.digest(); + var y = n.alloc(c - h.length - u - 2); + y.fill(0); + var g = n.alloc(y.length + 1 + h.length); + y.copy(g), g[y.length] = 1, h.copy(g, y.length + 1); + for (var d = i(l, g.length, r), v = n.alloc(g.length), m = 0; m < d.length; m++) v[m] = g[m] ^ d[m]; + var S = 8 * c - e, + _ = 255 ^ 255 >> 8 - S << 8 - S; + v[0] = v[0] & _; + var b = n.alloc(v.length + l.length + 1); + return v.copy(b, 0), l.copy(b, v.length), b[b.length - 1] = 188, b + }, f.prototype.emsa_pss_verify = function(t, e, r) { + var i = this.options.signingSchemeOptions.hash || s, + f = this.options.signingSchemeOptions.mgf || a.eme_oaep_mgf1, + u = this.options.signingSchemeOptions.saltLength || 20, + c = a.digestLength[i], + h = Math.ceil(r / 8); + if (h < c + u + 2 || 188 != e[e.length - 1]) return !1; + var p = n.alloc(h - c - 1); + e.copy(p, 0, 0, h - c - 1); + for (var l = 0, y = 0, g = 8 * h - r; y < g; y++) l |= 1 << 7 - y; + if (p[0] & l) return !1; + var d = e.slice(h - c - 1, h - 1), + v = f(d, p.length, i); + for (y = 0; y < p.length; y++) p[y] ^= v[y]; + for (l = 255 ^ 255 >> 8 - (g = 8 * h - r) << 8 - g, p[0] = p[0] & l, y = 0; 0 === p[y] && y < p.length; y++); + if (1 != p[y]) return !1; + var m = p.slice(p.length - u), + S = n.alloc(8 + c + u); + S.fill(0, 0, 8), t.copy(S, 8), m.copy(S, 8 + t.length); + var _ = o.createHash(i); + return _.update(S), _ = _.digest(), d.toString("hex") === _.toString("hex") + }, new f(t, e) + } + }, + 1768: (t, e, r) => { + t.exports = { + pkcs1: r(8290), + pkcs1_oaep: r(2487), + pss: r(4414), + isEncryption: function(e) { + return t.exports[e] && t.exports[e].isEncryption + }, + isSignature: function(e) { + return t.exports[e] && t.exports[e].isSignature + } + } + }, + 8226: (t, e, r) => { + var n = r(5606); + r(3200), t.exports.linebrk = function(t, e) { + for (var r = "", n = 0; n + e < t.length;) r += t.substring(n, n + e) + "\n", n += e; + return r + t.substring(n, t.length) + }, t.exports.detectEnvironment = function() { + return "browser"; + "undefined" == typeof window || !window || n && "node" === n.title ? "node" : "browser" + }, t.exports.get32IntFromBuffer = function(t, e) { + var r; + if (e = e || 0, (r = t.length - e) > 0) { + if (r >= 4) return t.readUIntBE(e, r); + for (var n = 0, i = e + r, o = 0; i > e; i--, o += 2) n += t[i - 1] * Math.pow(16, o); + return n + } + return NaN + }, t.exports._ = { + isObject: function(t) { + var e = typeof t; + return !!t && ("object" == e || "function" == e) + }, + isString: function(t) { + return "string" == typeof t || t instanceof String + }, + isNumber: function(t) { + return "number" == typeof t || !isNaN(parseFloat(t)) && isFinite(t) + }, + omit: function(t, e) { + var r = {}; + for (var n in t) t.hasOwnProperty(n) && n !== e && (r[n] = t[n]); + return r + } + }, t.exports.trimSurroundingText = function(t, e, r) { + var n = 0, + i = t.length, + o = t.indexOf(e); + o >= 0 && (n = o + e.length); + var s = t.indexOf(r, o); + return s >= 0 && (i = s), t.substring(n, i) + } + }, + 8875: (t, e, r) => { + "use strict"; + var n; + if (!Object.keys) { + var i = Object.prototype.hasOwnProperty, + o = Object.prototype.toString, + s = r(1093), + a = Object.prototype.propertyIsEnumerable, + f = !a.call({ + toString: null + }, "toString"), + u = a.call((function() {}), "prototype"), + c = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], + h = function(t) { + var e = t.constructor; + return e && e.prototype === t + }, + p = { + $applicationCache: !0, + $console: !0, + $external: !0, + $frame: !0, + $frameElement: !0, + $frames: !0, + $innerHeight: !0, + $innerWidth: !0, + $onmozfullscreenchange: !0, + $onmozfullscreenerror: !0, + $outerHeight: !0, + $outerWidth: !0, + $pageXOffset: !0, + $pageYOffset: !0, + $parent: !0, + $scrollLeft: !0, + $scrollTop: !0, + $scrollX: !0, + $scrollY: !0, + $self: !0, + $webkitIndexedDB: !0, + $webkitStorageInfo: !0, + $window: !0 + }, + l = function() { + if ("undefined" == typeof window) return !1; + for (var t in window) try { + if (!p["$" + t] && i.call(window, t) && null !== window[t] && "object" == typeof window[t]) try { + h(window[t]) + } catch (t) { + return !0 + } + } catch (t) { + return !0 + } + return !1 + }(); + n = function(t) { + var e = null !== t && "object" == typeof t, + r = "[object Function]" === o.call(t), + n = s(t), + a = e && "[object String]" === o.call(t), + p = []; + if (!e && !r && !n) throw new TypeError("Object.keys called on a non-object"); + var y = u && r; + if (a && t.length > 0 && !i.call(t, 0)) + for (var g = 0; g < t.length; ++g) p.push(String(g)); + if (n && t.length > 0) + for (var d = 0; d < t.length; ++d) p.push(String(d)); + else + for (var v in t) y && "prototype" === v || !i.call(t, v) || p.push(String(v)); + if (f) + for (var m = function(t) { + if ("undefined" == typeof window || !l) return h(t); + try { + return h(t) + } catch (t) { + return !1 + } + }(t), S = 0; S < c.length; ++S) m && "constructor" === c[S] || !i.call(t, c[S]) || p.push(c[S]); + return p + } + } + t.exports = n + }, + 1189: (t, e, r) => { + "use strict"; + var n = Array.prototype.slice, + i = r(1093), + o = Object.keys, + s = o ? function(t) { + return o(t) + } : r(8875), + a = Object.keys; + s.shim = function() { + if (Object.keys) { + var t = function() { + var t = Object.keys(arguments); + return t && t.length === arguments.length + }(1, 2); + t || (Object.keys = function(t) { + return i(t) ? a(n.call(t)) : a(t) + }) + } else Object.keys = s; + return Object.keys || s + }, t.exports = s + }, + 1093: t => { + "use strict"; + var e = Object.prototype.toString; + t.exports = function(t) { + var r = e.call(t), + n = "[object Arguments]" === r; + return n || (n = "[object Array]" !== r && null !== t && "object" == typeof t && "number" == typeof t.length && t.length >= 0 && "[object Function]" === e.call(t.callee)), n + } + }, + 8403: (t, e, r) => { + "use strict"; + var n = r(1189), + i = r(1333)(), + o = r(8075), + s = Object, + a = o("Array.prototype.push"), + f = o("Object.prototype.propertyIsEnumerable"), + u = i ? Object.getOwnPropertySymbols : null; + t.exports = function(t, e) { + if (null == t) throw new TypeError("target must be an object"); + var r = s(t); + if (1 === arguments.length) return r; + for (var o = 1; o < arguments.length; ++o) { + var c = s(arguments[o]), + h = n(c), + p = i && (Object.getOwnPropertySymbols || u); + if (p) + for (var l = p(c), y = 0; y < l.length; ++y) { + var g = l[y]; + f(c, g) && a(h, g) + } + for (var d = 0; d < h.length; ++d) { + var v = h[d]; + if (f(c, v)) { + var m = c[v]; + r[v] = m + } + } + } + return r + } + }, + 1514: (t, e, r) => { + "use strict"; + var n = r(8403); + t.exports = function() { + return Object.assign ? function() { + if (!Object.assign) return !1; + for (var t = "abcdefghijklmnopqrst", e = t.split(""), r = {}, n = 0; n < e.length; ++n) r[e[n]] = e[n]; + var i = Object.assign({}, r), + o = ""; + for (var s in i) o += s; + return t !== o + }() || function() { + if (!Object.assign || !Object.preventExtensions) return !1; + var t = Object.preventExtensions({ + 1: 2 + }); + try { + Object.assign(t, "xy") + } catch (e) { + return "y" === t[1] + } + return !1 + }() ? n : Object.assign : n + } + }, + 5606: t => { + var e, r, n = t.exports = {}; + + function i() { + throw new Error("setTimeout has not been defined") + } + + function o() { + throw new Error("clearTimeout has not been defined") + } + + function s(t) { + if (e === setTimeout) return setTimeout(t, 0); + if ((e === i || !e) && setTimeout) return e = setTimeout, setTimeout(t, 0); + try { + return e(t, 0) + } catch (r) { + try { + return e.call(null, t, 0) + } catch (r) { + return e.call(this, t, 0) + } + } + }! function() { + try { + e = "function" == typeof setTimeout ? setTimeout : i + } catch (t) { + e = i + } + try { + r = "function" == typeof clearTimeout ? clearTimeout : o + } catch (t) { + r = o + } + }(); + var a, f = [], + u = !1, + c = -1; + + function h() { + u && a && (u = !1, a.length ? f = a.concat(f) : c = -1, f.length && p()) + } + + function p() { + if (!u) { + var t = s(h); + u = !0; + for (var e = f.length; e;) { + for (a = f, f = []; ++c < e;) a && a[c].run(); + c = -1, e = f.length + } + a = null, u = !1, + function(t) { + if (r === clearTimeout) return clearTimeout(t); + if ((r === o || !r) && clearTimeout) return r = clearTimeout, clearTimeout(t); + try { + return r(t) + } catch (e) { + try { + return r.call(null, t) + } catch (e) { + return r.call(this, t) + } + } + }(t) + } + } + + function l(t, e) { + this.fun = t, this.array = e + } + + function y() {} + n.nextTick = function(t) { + var e = new Array(arguments.length - 1); + if (arguments.length > 1) + for (var r = 1; r < arguments.length; r++) e[r - 1] = arguments[r]; + f.push(new l(t, e)), 1 !== f.length || u || s(p) + }, l.prototype.run = function() { + this.fun.apply(null, this.array) + }, n.title = "browser", n.browser = !0, n.env = {}, n.argv = [], n.version = "", n.versions = {}, n.on = y, n.addListener = y, n.once = y, n.off = y, n.removeListener = y, n.removeAllListeners = y, n.emit = y, n.prependListener = y, n.prependOnceListener = y, n.listeners = function(t) { + return [] + }, n.binding = function(t) { + throw new Error("process.binding is not supported") + }, n.cwd = function() { + return "/" + }, n.chdir = function(t) { + throw new Error("process.chdir is not supported") + }, n.umask = function() { + return 0 + } + }, + 4774: (t, e, r) => { + "use strict"; + var n, i = r(5606), + o = r(8287), + s = o.Buffer, + a = {}; + for (n in o) o.hasOwnProperty(n) && "SlowBuffer" !== n && "Buffer" !== n && (a[n] = o[n]); + var f = a.Buffer = {}; + for (n in s) s.hasOwnProperty(n) && "allocUnsafe" !== n && "allocUnsafeSlow" !== n && (f[n] = s[n]); + if (a.Buffer.prototype = s.prototype, f.from && f.from !== Uint8Array.from || (f.from = function(t, e, r) { + if ("number" == typeof t) throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof t); + if (t && void 0 === t.length) throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof t); + return s(t, e, r) + }), f.alloc || (f.alloc = function(t, e, r) { + if ("number" != typeof t) throw new TypeError('The "size" argument must be of type number. Received type ' + typeof t); + if (t < 0 || t >= 2 * (1 << 30)) throw new RangeError('The value "' + t + '" is invalid for option "size"'); + var n = s(t); + return e && 0 !== e.length ? "string" == typeof r ? n.fill(e, r) : n.fill(e) : n.fill(0), n + }), !a.kStringMaxLength) try { + a.kStringMaxLength = i.binding("buffer").kStringMaxLength + } catch (t) {} + a.constants || (a.constants = { + MAX_LENGTH: a.kMaxLength + }, a.kStringMaxLength && (a.constants.MAX_STRING_LENGTH = a.kStringMaxLength)), t.exports = a + }, + 6897: (t, e, r) => { + "use strict"; + var n = r(453), + i = r(41), + o = r(592)(), + s = r(5795), + a = r(9675), + f = n("%Math.floor%"); + t.exports = function(t, e) { + if ("function" != typeof t) throw new a("`fn` is not a function"); + if ("number" != typeof e || e < 0 || e > 4294967295 || f(e) !== e) throw new a("`length` must be a positive 32-bit integer"); + var r = arguments.length > 2 && !!arguments[2], + n = !0, + u = !0; + if ("length" in t && s) { + var c = s(t, "length"); + c && !c.configurable && (n = !1), c && !c.writable && (u = !1) + } + return (n || u || !r) && (o ? i(t, "length", e, !0, !0) : i(t, "length", e)), t + } + }, + 3200: (t, e, r) => { + var n = r(8287).Buffer, + i = r(1396), + o = { + randomBytes: function(t) { + for (var e = [], r = 0; r < t; r++) e.push(Math.floor(256 * Math.random())); + return n.from(e) + }, + createHash(t) { + let e = n.from([]); + return { + update: function(t) { + return e = n.concat([e, t]), this + }, + digest: function() { + let r = i[t.toUpperCase()](i.lib.WordArray.create(new Uint8Array(e))).toString(); + return n.from(r, "hex") + } + } + } + }; + t.exports = o + }, + 7033: (t, e, r) => { + var n = r(8287).Buffer; + const i = r(3229); + let o = { + outputEncoding: "", + PublicFormat: "pkcs1-public", + PrivateFormat: "pkcs1-private", + options: { + environment: "browser", + encryptionScheme: "pkcs1" + } + }; + t.exports = { + NodeRSA: i, + encryptRSAWithPublicKey: function(t, e, r = {}) { + return r = Object.assign({}, o, r), new i(e, r.PublicFormat, r.options).encrypt(t, r.outEncoding || "base64") + }, + encryptRSAWithPrivateKey: function(t, e, r = {}) { + return r = Object.assign({}, o, r), new i(e, r.PrivateFormat, r.options).encryptPrivate(t, r.outputEncoding || "base64") + }, + decryptRSAWithPublicKey: function(t, e, r = {}) { + return r = Object.assign({}, o, r), new i(e, r.PublicEncoding, r.options).decryptPublic(t, r.outEncoding || "utf8") + }, + decryptRSAWithPrivateKey: function(t, e, r = {}) { + return r = Object.assign({}, o, r), new i(e, r.PrivateEncoding, r.options).decrypt(t, r.outEncoding || "utf8") + }, + sign: function(t, e, r = {}) { + return r = Object.assign({}, o, r), new i(e, r.PrivateEncoding, r.options).sign(t, r.outEncoding || "base64") + }, + verify: function(t, e, r, s = {}) { + return "string" == typeof e && e.match(/^([0-9a-fA-F]{2})*$/) ? e = n.from(e, "hex") : "string" == typeof e && (e = n.from(e, "base64")), s = Object.assign({}, o, s), new i(r, s.PublicEncoding, s.options).verify(t, e) + } + } + }, + 7449: t => { + "use strict"; + t.exports = JSON.parse('{"O_RDONLY":0,"O_WRONLY":1,"O_RDWR":2,"S_IFMT":61440,"S_IFREG":32768,"S_IFDIR":16384,"S_IFCHR":8192,"S_IFBLK":24576,"S_IFIFO":4096,"S_IFLNK":40960,"S_IFSOCK":49152,"O_CREAT":512,"O_EXCL":2048,"O_NOCTTY":131072,"O_TRUNC":1024,"O_APPEND":8,"O_DIRECTORY":1048576,"O_NOFOLLOW":256,"O_SYNC":128,"O_SYMLINK":2097152,"O_NONBLOCK":4,"S_IRWXU":448,"S_IRUSR":256,"S_IWUSR":128,"S_IXUSR":64,"S_IRWXG":56,"S_IRGRP":32,"S_IWGRP":16,"S_IXGRP":8,"S_IRWXO":7,"S_IROTH":4,"S_IWOTH":2,"S_IXOTH":1,"E2BIG":7,"EACCES":13,"EADDRINUSE":48,"EADDRNOTAVAIL":49,"EAFNOSUPPORT":47,"EAGAIN":35,"EALREADY":37,"EBADF":9,"EBADMSG":94,"EBUSY":16,"ECANCELED":89,"ECHILD":10,"ECONNABORTED":53,"ECONNREFUSED":61,"ECONNRESET":54,"EDEADLK":11,"EDESTADDRREQ":39,"EDOM":33,"EDQUOT":69,"EEXIST":17,"EFAULT":14,"EFBIG":27,"EHOSTUNREACH":65,"EIDRM":90,"EILSEQ":92,"EINPROGRESS":36,"EINTR":4,"EINVAL":22,"EIO":5,"EISCONN":56,"EISDIR":21,"ELOOP":62,"EMFILE":24,"EMLINK":31,"EMSGSIZE":40,"EMULTIHOP":95,"ENAMETOOLONG":63,"ENETDOWN":50,"ENETRESET":52,"ENETUNREACH":51,"ENFILE":23,"ENOBUFS":55,"ENODATA":96,"ENODEV":19,"ENOENT":2,"ENOEXEC":8,"ENOLCK":77,"ENOLINK":97,"ENOMEM":12,"ENOMSG":91,"ENOPROTOOPT":42,"ENOSPC":28,"ENOSR":98,"ENOSTR":99,"ENOSYS":78,"ENOTCONN":57,"ENOTDIR":20,"ENOTEMPTY":66,"ENOTSOCK":38,"ENOTSUP":45,"ENOTTY":25,"ENXIO":6,"EOPNOTSUPP":102,"EOVERFLOW":84,"EPERM":1,"EPIPE":32,"EPROTO":100,"EPROTONOSUPPORT":43,"EPROTOTYPE":41,"ERANGE":34,"EROFS":30,"ESPIPE":29,"ESRCH":3,"ESTALE":70,"ETIME":101,"ETIMEDOUT":60,"ETXTBSY":26,"EWOULDBLOCK":35,"EXDEV":18,"SIGHUP":1,"SIGINT":2,"SIGQUIT":3,"SIGILL":4,"SIGTRAP":5,"SIGABRT":6,"SIGIOT":6,"SIGBUS":10,"SIGFPE":8,"SIGKILL":9,"SIGUSR1":30,"SIGSEGV":11,"SIGUSR2":31,"SIGPIPE":13,"SIGALRM":14,"SIGTERM":15,"SIGCHLD":20,"SIGCONT":19,"SIGSTOP":17,"SIGTSTP":18,"SIGTTIN":21,"SIGTTOU":22,"SIGURG":16,"SIGXCPU":24,"SIGXFSZ":25,"SIGVTALRM":26,"SIGPROF":27,"SIGWINCH":28,"SIGIO":23,"SIGSYS":12,"SSL_OP_ALL":2147486719,"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION":262144,"SSL_OP_CIPHER_SERVER_PREFERENCE":4194304,"SSL_OP_CISCO_ANYCONNECT":32768,"SSL_OP_COOKIE_EXCHANGE":8192,"SSL_OP_CRYPTOPRO_TLSEXT_BUG":2147483648,"SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS":2048,"SSL_OP_EPHEMERAL_RSA":0,"SSL_OP_LEGACY_SERVER_CONNECT":4,"SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER":32,"SSL_OP_MICROSOFT_SESS_ID_BUG":1,"SSL_OP_MSIE_SSLV2_RSA_PADDING":0,"SSL_OP_NETSCAPE_CA_DN_BUG":536870912,"SSL_OP_NETSCAPE_CHALLENGE_BUG":2,"SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG":1073741824,"SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG":8,"SSL_OP_NO_COMPRESSION":131072,"SSL_OP_NO_QUERY_MTU":4096,"SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION":65536,"SSL_OP_NO_SSLv2":16777216,"SSL_OP_NO_SSLv3":33554432,"SSL_OP_NO_TICKET":16384,"SSL_OP_NO_TLSv1":67108864,"SSL_OP_NO_TLSv1_1":268435456,"SSL_OP_NO_TLSv1_2":134217728,"SSL_OP_PKCS1_CHECK_1":0,"SSL_OP_PKCS1_CHECK_2":0,"SSL_OP_SINGLE_DH_USE":1048576,"SSL_OP_SINGLE_ECDH_USE":524288,"SSL_OP_SSLEAY_080_CLIENT_DH_BUG":128,"SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG":0,"SSL_OP_TLS_BLOCK_PADDING_BUG":512,"SSL_OP_TLS_D5_BUG":256,"SSL_OP_TLS_ROLLBACK_BUG":8388608,"ENGINE_METHOD_DSA":2,"ENGINE_METHOD_DH":4,"ENGINE_METHOD_RAND":8,"ENGINE_METHOD_ECDH":16,"ENGINE_METHOD_ECDSA":32,"ENGINE_METHOD_CIPHERS":64,"ENGINE_METHOD_DIGESTS":128,"ENGINE_METHOD_STORE":256,"ENGINE_METHOD_PKEY_METHS":512,"ENGINE_METHOD_PKEY_ASN1_METHS":1024,"ENGINE_METHOD_ALL":65535,"ENGINE_METHOD_NONE":0,"DH_CHECK_P_NOT_SAFE_PRIME":2,"DH_CHECK_P_NOT_PRIME":1,"DH_UNABLE_TO_CHECK_GENERATOR":4,"DH_NOT_SUITABLE_GENERATOR":8,"NPN_ENABLED":1,"RSA_PKCS1_PADDING":1,"RSA_SSLV23_PADDING":2,"RSA_NO_PADDING":3,"RSA_PKCS1_OAEP_PADDING":4,"RSA_X931_PADDING":5,"RSA_PKCS1_PSS_PADDING":6,"POINT_CONVERSION_COMPRESSED":2,"POINT_CONVERSION_UNCOMPRESSED":4,"POINT_CONVERSION_HYBRID":6,"F_OK":0,"R_OK":4,"W_OK":2,"X_OK":1,"UV_UDP_REUSEADDR":4}') + } + }, + e = {}; + + function r(n) { + var i = e[n]; + if (void 0 !== i) return i.exports; + var o = e[n] = { + exports: {} + }; + return t[n].call(o.exports, o, o.exports, r), o.exports + } + return r.g = function() { + if ("object" == typeof globalThis) return globalThis; + try { + return this || new Function("return this")() + } catch (t) { + if ("object" == typeof window) return window + } + }(), r(7033) +})())); \ No newline at end of file diff --git a/xiaosa/JS/pako.min.js b/xiaosa/JS/pako.min.js new file mode 100644 index 00000000..e8824a3d --- /dev/null +++ b/xiaosa/JS/pako.min.js @@ -0,0 +1,1439 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */ ! function(t, e) { + "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).pako = {}) +}(this, (function(t) { + "use strict"; + + function e(t) { + let e = t.length; + for (; --e >= 0;) t[e] = 0 + } + const a = 256, + i = 286, + n = 30, + s = 15, + r = new Uint8Array([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]), + o = new Uint8Array([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]), + l = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]), + h = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), + d = new Array(576); + e(d); + const _ = new Array(60); + e(_); + const f = new Array(512); + e(f); + const c = new Array(256); + e(c); + const u = new Array(29); + e(u); + const w = new Array(n); + + function m(t, e, a, i, n) { + this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = i, this.max_length = n, this.has_stree = t && t.length + } + let b, g, p; + + function k(t, e) { + this.dyn_tree = t, this.max_code = 0, this.stat_desc = e + } + e(w); + const v = t => t < 256 ? f[t] : f[256 + (t >>> 7)], + y = (t, e) => { + t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255 + }, + x = (t, e, a) => { + t.bi_valid > 16 - a ? (t.bi_buf |= e << t.bi_valid & 65535, y(t, t.bi_buf), t.bi_buf = e >> 16 - t.bi_valid, t.bi_valid += a - 16) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a) + }, + z = (t, e, a) => { + x(t, a[2 * e], a[2 * e + 1]) + }, + A = (t, e) => { + let a = 0; + do { + a |= 1 & t, t >>>= 1, a <<= 1 + } while (--e > 0); + return a >>> 1 + }, + E = (t, e, a) => { + const i = new Array(16); + let n, r, o = 0; + for (n = 1; n <= s; n++) o = o + a[n - 1] << 1, i[n] = o; + for (r = 0; r <= e; r++) { + let e = t[2 * r + 1]; + 0 !== e && (t[2 * r] = A(i[e]++, e)) + } + }, + R = t => { + let e; + for (e = 0; e < i; e++) t.dyn_ltree[2 * e] = 0; + for (e = 0; e < n; e++) t.dyn_dtree[2 * e] = 0; + for (e = 0; e < 19; e++) t.bl_tree[2 * e] = 0; + t.dyn_ltree[512] = 1, t.opt_len = t.static_len = 0, t.sym_next = t.matches = 0 + }, + Z = t => { + t.bi_valid > 8 ? y(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 + }, + U = (t, e, a, i) => { + const n = 2 * e, + s = 2 * a; + return t[n] < t[s] || t[n] === t[s] && i[e] <= i[a] + }, + S = (t, e, a) => { + const i = t.heap[a]; + let n = a << 1; + for (; n <= t.heap_len && (n < t.heap_len && U(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !U(e, i, t.heap[n], t.depth));) t.heap[a] = t.heap[n], a = n, n <<= 1; + t.heap[a] = i + }, + D = (t, e, i) => { + let n, s, l, h, d = 0; + if (0 !== t.sym_next) + do { + n = 255 & t.pending_buf[t.sym_buf + d++], n += (255 & t.pending_buf[t.sym_buf + d++]) << 8, s = t.pending_buf[t.sym_buf + d++], 0 === n ? z(t, s, e) : (l = c[s], z(t, l + a + 1, e), h = r[l], 0 !== h && (s -= u[l], x(t, s, h)), n--, l = v(n), z(t, l, i), h = o[l], 0 !== h && (n -= w[l], x(t, n, h))) + } while (d < t.sym_next); + z(t, 256, e) + }, + T = (t, e) => { + const a = e.dyn_tree, + i = e.stat_desc.static_tree, + n = e.stat_desc.has_stree, + r = e.stat_desc.elems; + let o, l, h, d = -1; + for (t.heap_len = 0, t.heap_max = 573, o = 0; o < r; o++) 0 !== a[2 * o] ? (t.heap[++t.heap_len] = d = o, t.depth[o] = 0) : a[2 * o + 1] = 0; + for (; t.heap_len < 2;) h = t.heap[++t.heap_len] = d < 2 ? ++d : 0, a[2 * h] = 1, t.depth[h] = 0, t.opt_len--, n && (t.static_len -= i[2 * h + 1]); + for (e.max_code = d, o = t.heap_len >> 1; o >= 1; o--) S(t, a, o); + h = r; + do { + o = t.heap[1], t.heap[1] = t.heap[t.heap_len--], S(t, a, 1), l = t.heap[1], t.heap[--t.heap_max] = o, t.heap[--t.heap_max] = l, a[2 * h] = a[2 * o] + a[2 * l], t.depth[h] = (t.depth[o] >= t.depth[l] ? t.depth[o] : t.depth[l]) + 1, a[2 * o + 1] = a[2 * l + 1] = h, t.heap[1] = h++, S(t, a, 1) + } while (t.heap_len >= 2); + t.heap[--t.heap_max] = t.heap[1], ((t, e) => { + const a = e.dyn_tree, + i = e.max_code, + n = e.stat_desc.static_tree, + r = e.stat_desc.has_stree, + o = e.stat_desc.extra_bits, + l = e.stat_desc.extra_base, + h = e.stat_desc.max_length; + let d, _, f, c, u, w, m = 0; + for (c = 0; c <= s; c++) t.bl_count[c] = 0; + for (a[2 * t.heap[t.heap_max] + 1] = 0, d = t.heap_max + 1; d < 573; d++) _ = t.heap[d], c = a[2 * a[2 * _ + 1] + 1] + 1, c > h && (c = h, m++), a[2 * _ + 1] = c, _ > i || (t.bl_count[c]++, u = 0, _ >= l && (u = o[_ - l]), w = a[2 * _], t.opt_len += w * (c + u), r && (t.static_len += w * (n[2 * _ + 1] + u))); + if (0 !== m) { + do { + for (c = h - 1; 0 === t.bl_count[c];) c--; + t.bl_count[c]--, t.bl_count[c + 1] += 2, t.bl_count[h]--, m -= 2 + } while (m > 0); + for (c = h; 0 !== c; c--) + for (_ = t.bl_count[c]; 0 !== _;) f = t.heap[--d], f > i || (a[2 * f + 1] !== c && (t.opt_len += (c - a[2 * f + 1]) * a[2 * f], a[2 * f + 1] = c), _--) + } + })(t, e), E(a, d, t.bl_count) + }, + O = (t, e, a) => { + let i, n, s = -1, + r = e[1], + o = 0, + l = 7, + h = 4; + for (0 === r && (l = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++) n = r, r = e[2 * (i + 1) + 1], ++o < l && n === r || (o < h ? t.bl_tree[2 * n] += o : 0 !== n ? (n !== s && t.bl_tree[2 * n]++, t.bl_tree[32]++) : o <= 10 ? t.bl_tree[34]++ : t.bl_tree[36]++, o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4)) + }, + I = (t, e, a) => { + let i, n, s = -1, + r = e[1], + o = 0, + l = 7, + h = 4; + for (0 === r && (l = 138, h = 3), i = 0; i <= a; i++) + if (n = r, r = e[2 * (i + 1) + 1], !(++o < l && n === r)) { + if (o < h) + do { + z(t, n, t.bl_tree) + } while (0 != --o); + else 0 !== n ? (n !== s && (z(t, n, t.bl_tree), o--), z(t, 16, t.bl_tree), x(t, o - 3, 2)) : o <= 10 ? (z(t, 17, t.bl_tree), x(t, o - 3, 3)) : (z(t, 18, t.bl_tree), x(t, o - 11, 7)); + o = 0, s = n, 0 === r ? (l = 138, h = 3) : n === r ? (l = 6, h = 3) : (l = 7, h = 4) + } + }; + let F = !1; + const L = (t, e, a, i) => { + x(t, 0 + (i ? 1 : 0), 3), Z(t), y(t, a), y(t, ~a), a && t.pending_buf.set(t.window.subarray(e, e + a), t.pending), t.pending += a + }; + var N = (t, e, i, n) => { + let s, r, o = 0; + t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = (t => { + let e, i = 4093624447; + for (e = 0; e <= 31; e++, i >>>= 1) + if (1 & i && 0 !== t.dyn_ltree[2 * e]) return 0; + if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1; + for (e = 32; e < a; e++) + if (0 !== t.dyn_ltree[2 * e]) return 1; + return 0 + })(t)), T(t, t.l_desc), T(t, t.d_desc), o = (t => { + let e; + for (O(t, t.dyn_ltree, t.l_desc.max_code), O(t, t.dyn_dtree, t.d_desc.max_code), T(t, t.bl_desc), e = 18; e >= 3 && 0 === t.bl_tree[2 * h[e] + 1]; e--); + return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e + })(t), s = t.opt_len + 3 + 7 >>> 3, r = t.static_len + 3 + 7 >>> 3, r <= s && (s = r)) : s = r = i + 5, i + 4 <= s && -1 !== e ? L(t, e, i, n) : 4 === t.strategy || r === s ? (x(t, 2 + (n ? 1 : 0), 3), D(t, d, _)) : (x(t, 4 + (n ? 1 : 0), 3), ((t, e, a, i) => { + let n; + for (x(t, e - 257, 5), x(t, a - 1, 5), x(t, i - 4, 4), n = 0; n < i; n++) x(t, t.bl_tree[2 * h[n] + 1], 3); + I(t, t.dyn_ltree, e - 1), I(t, t.dyn_dtree, a - 1) + })(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, o + 1), D(t, t.dyn_ltree, t.dyn_dtree)), R(t), n && Z(t) + }, + B = { + _tr_init: t => { + F || ((() => { + let t, e, a, h, k; + const v = new Array(16); + for (a = 0, h = 0; h < 28; h++) + for (u[h] = a, t = 0; t < 1 << r[h]; t++) c[a++] = h; + for (c[a - 1] = h, k = 0, h = 0; h < 16; h++) + for (w[h] = k, t = 0; t < 1 << o[h]; t++) f[k++] = h; + for (k >>= 7; h < n; h++) + for (w[h] = k << 7, t = 0; t < 1 << o[h] - 7; t++) f[256 + k++] = h; + for (e = 0; e <= s; e++) v[e] = 0; + for (t = 0; t <= 143;) d[2 * t + 1] = 8, t++, v[8]++; + for (; t <= 255;) d[2 * t + 1] = 9, t++, v[9]++; + for (; t <= 279;) d[2 * t + 1] = 7, t++, v[7]++; + for (; t <= 287;) d[2 * t + 1] = 8, t++, v[8]++; + for (E(d, 287, v), t = 0; t < n; t++) _[2 * t + 1] = 5, _[2 * t] = A(t, 5); + b = new m(d, r, 257, i, s), g = new m(_, o, 0, n, s), p = new m(new Array(0), l, 0, 19, 7) + })(), F = !0), t.l_desc = new k(t.dyn_ltree, b), t.d_desc = new k(t.dyn_dtree, g), t.bl_desc = new k(t.bl_tree, p), t.bi_buf = 0, t.bi_valid = 0, R(t) + }, + _tr_stored_block: L, + _tr_flush_block: N, + _tr_tally: (t, e, i) => (t.pending_buf[t.sym_buf + t.sym_next++] = e, t.pending_buf[t.sym_buf + t.sym_next++] = e >> 8, t.pending_buf[t.sym_buf + t.sym_next++] = i, 0 === e ? t.dyn_ltree[2 * i]++ : (t.matches++, e--, t.dyn_ltree[2 * (c[i] + a + 1)]++, t.dyn_dtree[2 * v(e)]++), t.sym_next === t.sym_end), + _tr_align: t => { + x(t, 2, 3), z(t, 256, d), (t => { + 16 === t.bi_valid ? (y(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8) + })(t) + } + }; + var C = (t, e, a, i) => { + let n = 65535 & t | 0, + s = t >>> 16 & 65535 | 0, + r = 0; + for (; 0 !== a;) { + r = a > 2e3 ? 2e3 : a, a -= r; + do { + n = n + e[i++] | 0, s = s + n | 0 + } while (--r); + n %= 65521, s %= 65521 + } + return n | s << 16 | 0 + }; + const M = new Uint32Array((() => { + let t, e = []; + for (var a = 0; a < 256; a++) { + t = a; + for (var i = 0; i < 8; i++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; + e[a] = t + } + return e + })()); + var H = (t, e, a, i) => { + const n = M, + s = i + a; + t ^= -1; + for (let a = i; a < s; a++) t = t >>> 8 ^ n[255 & (t ^ e[a])]; + return -1 ^ t + }, + j = { + 2: "need dictionary", + 1: "stream end", + 0: "", + "-1": "file error", + "-2": "stream error", + "-3": "data error", + "-4": "insufficient memory", + "-5": "buffer error", + "-6": "incompatible version" + }, + K = { + Z_NO_FLUSH: 0, + Z_PARTIAL_FLUSH: 1, + Z_SYNC_FLUSH: 2, + Z_FULL_FLUSH: 3, + Z_FINISH: 4, + Z_BLOCK: 5, + Z_TREES: 6, + Z_OK: 0, + Z_STREAM_END: 1, + Z_NEED_DICT: 2, + Z_ERRNO: -1, + Z_STREAM_ERROR: -2, + Z_DATA_ERROR: -3, + Z_MEM_ERROR: -4, + Z_BUF_ERROR: -5, + Z_NO_COMPRESSION: 0, + Z_BEST_SPEED: 1, + Z_BEST_COMPRESSION: 9, + Z_DEFAULT_COMPRESSION: -1, + Z_FILTERED: 1, + Z_HUFFMAN_ONLY: 2, + Z_RLE: 3, + Z_FIXED: 4, + Z_DEFAULT_STRATEGY: 0, + Z_BINARY: 0, + Z_TEXT: 1, + Z_UNKNOWN: 2, + Z_DEFLATED: 8 + }; + const { + _tr_init: P, + _tr_stored_block: Y, + _tr_flush_block: G, + _tr_tally: X, + _tr_align: W + } = B, { + Z_NO_FLUSH: q, + Z_PARTIAL_FLUSH: J, + Z_FULL_FLUSH: Q, + Z_FINISH: V, + Z_BLOCK: $, + Z_OK: tt, + Z_STREAM_END: et, + Z_STREAM_ERROR: at, + Z_DATA_ERROR: it, + Z_BUF_ERROR: nt, + Z_DEFAULT_COMPRESSION: st, + Z_FILTERED: rt, + Z_HUFFMAN_ONLY: ot, + Z_RLE: lt, + Z_FIXED: ht, + Z_DEFAULT_STRATEGY: dt, + Z_UNKNOWN: _t, + Z_DEFLATED: ft + } = K, ct = 258, ut = 262, wt = 42, mt = 113, bt = 666, gt = (t, e) => (t.msg = j[e], e), pt = t => 2 * t - (t > 4 ? 9 : 0), kt = t => { + let e = t.length; + for (; --e >= 0;) t[e] = 0 + }, vt = t => { + let e, a, i, n = t.w_size; + e = t.hash_size, i = e; + do { + a = t.head[--i], t.head[i] = a >= n ? a - n : 0 + } while (--e); + e = n, i = e; + do { + a = t.prev[--i], t.prev[i] = a >= n ? a - n : 0 + } while (--e) + }; + let yt = (t, e, a) => (e << t.hash_shift ^ a) & t.hash_mask; + const xt = t => { + const e = t.state; + let a = e.pending; + a > t.avail_out && (a = t.avail_out), 0 !== a && (t.output.set(e.pending_buf.subarray(e.pending_out, e.pending_out + a), t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0)) + }, + zt = (t, e) => { + G(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, xt(t.strm) + }, + At = (t, e) => { + t.pending_buf[t.pending++] = e + }, + Et = (t, e) => { + t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e + }, + Rt = (t, e, a, i) => { + let n = t.avail_in; + return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, e.set(t.input.subarray(t.next_in, t.next_in + n), a), 1 === t.state.wrap ? t.adler = C(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = H(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n) + }, + Zt = (t, e) => { + let a, i, n = t.max_chain_length, + s = t.strstart, + r = t.prev_length, + o = t.nice_match; + const l = t.strstart > t.w_size - ut ? t.strstart - (t.w_size - ut) : 0, + h = t.window, + d = t.w_mask, + _ = t.prev, + f = t.strstart + ct; + let c = h[s + r - 1], + u = h[s + r]; + t.prev_length >= t.good_match && (n >>= 2), o > t.lookahead && (o = t.lookahead); + do { + if (a = e, h[a + r] === u && h[a + r - 1] === c && h[a] === h[s] && h[++a] === h[s + 1]) { + s += 2, a++; + do {} while (h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && s < f); + if (i = ct - (f - s), s = f - ct, i > r) { + if (t.match_start = e, r = i, i >= o) break; + c = h[s + r - 1], u = h[s + r] + } + } + } while ((e = _[e & d]) > l && 0 != --n); + return r <= t.lookahead ? r : t.lookahead + }, + Ut = t => { + const e = t.w_size; + let a, i, n; + do { + if (i = t.window_size - t.lookahead - t.strstart, t.strstart >= e + (e - ut) && (t.window.set(t.window.subarray(e, e + e - i), 0), t.match_start -= e, t.strstart -= e, t.block_start -= e, t.insert > t.strstart && (t.insert = t.strstart), vt(t), i += e), 0 === t.strm.avail_in) break; + if (a = Rt(t.strm, t.window, t.strstart + t.lookahead, i), t.lookahead += a, t.lookahead + t.insert >= 3) + for (n = t.strstart - t.insert, t.ins_h = t.window[n], t.ins_h = yt(t, t.ins_h, t.window[n + 1]); t.insert && (t.ins_h = yt(t, t.ins_h, t.window[n + 3 - 1]), t.prev[n & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = n, n++, t.insert--, !(t.lookahead + t.insert < 3));); + } while (t.lookahead < ut && 0 !== t.strm.avail_in) + }, + St = (t, e) => { + let a, i, n, s = t.pending_buf_size - 5 > t.w_size ? t.w_size : t.pending_buf_size - 5, + r = 0, + o = t.strm.avail_in; + do { + if (a = 65535, n = t.bi_valid + 42 >> 3, t.strm.avail_out < n) break; + if (n = t.strm.avail_out - n, i = t.strstart - t.block_start, a > i + t.strm.avail_in && (a = i + t.strm.avail_in), a > n && (a = n), a < s && (0 === a && e !== V || e === q || a !== i + t.strm.avail_in)) break; + r = e === V && a === i + t.strm.avail_in ? 1 : 0, Y(t, 0, 0, r), t.pending_buf[t.pending - 4] = a, t.pending_buf[t.pending - 3] = a >> 8, t.pending_buf[t.pending - 2] = ~a, t.pending_buf[t.pending - 1] = ~a >> 8, xt(t.strm), i && (i > a && (i = a), t.strm.output.set(t.window.subarray(t.block_start, t.block_start + i), t.strm.next_out), t.strm.next_out += i, t.strm.avail_out -= i, t.strm.total_out += i, t.block_start += i, a -= i), a && (Rt(t.strm, t.strm.output, t.strm.next_out, a), t.strm.next_out += a, t.strm.avail_out -= a, t.strm.total_out += a) + } while (0 === r); + return o -= t.strm.avail_in, o && (o >= t.w_size ? (t.matches = 2, t.window.set(t.strm.input.subarray(t.strm.next_in - t.w_size, t.strm.next_in), 0), t.strstart = t.w_size, t.insert = t.strstart) : (t.window_size - t.strstart <= o && (t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, t.insert > t.strstart && (t.insert = t.strstart)), t.window.set(t.strm.input.subarray(t.strm.next_in - o, t.strm.next_in), t.strstart), t.strstart += o, t.insert += o > t.w_size - t.insert ? t.w_size - t.insert : o), t.block_start = t.strstart), t.high_water < t.strstart && (t.high_water = t.strstart), r ? 4 : e !== q && e !== V && 0 === t.strm.avail_in && t.strstart === t.block_start ? 2 : (n = t.window_size - t.strstart, t.strm.avail_in > n && t.block_start >= t.w_size && (t.block_start -= t.w_size, t.strstart -= t.w_size, t.window.set(t.window.subarray(t.w_size, t.w_size + t.strstart), 0), t.matches < 2 && t.matches++, n += t.w_size, t.insert > t.strstart && (t.insert = t.strstart)), n > t.strm.avail_in && (n = t.strm.avail_in), n && (Rt(t.strm, t.window, t.strstart, n), t.strstart += n, t.insert += n > t.w_size - t.insert ? t.w_size - t.insert : n), t.high_water < t.strstart && (t.high_water = t.strstart), n = t.bi_valid + 42 >> 3, n = t.pending_buf_size - n > 65535 ? 65535 : t.pending_buf_size - n, s = n > t.w_size ? t.w_size : n, i = t.strstart - t.block_start, (i >= s || (i || e === V) && e !== q && 0 === t.strm.avail_in && i <= n) && (a = i > n ? n : i, r = e === V && 0 === t.strm.avail_in && a === i ? 1 : 0, Y(t, t.block_start, a, r), t.block_start += a, xt(t.strm)), r ? 3 : 1) + }, + Dt = (t, e) => { + let a, i; + for (;;) { + if (t.lookahead < ut) { + if (Ut(t), t.lookahead < ut && e === q) return 1; + if (0 === t.lookahead) break + } + if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - ut && (t.match_length = Zt(t, a)), t.match_length >= 3) + if (i = X(t, t.strstart - t.match_start, t.match_length - 3), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= 3) { + t.match_length--; + do { + t.strstart++, t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart + } while (0 != --t.match_length); + t.strstart++ + } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 1]); + else i = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++; + if (i && (zt(t, !1), 0 === t.strm.avail_out)) return 1 + } + return t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 + }, + Tt = (t, e) => { + let a, i, n; + for (;;) { + if (t.lookahead < ut) { + if (Ut(t), t.lookahead < ut && e === q) return 1; + if (0 === t.lookahead) break + } + if (a = 0, t.lookahead >= 3 && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = 2, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - ut && (t.match_length = Zt(t, a), t.match_length <= 5 && (t.strategy === rt || 3 === t.match_length && t.strstart - t.match_start > 4096) && (t.match_length = 2)), t.prev_length >= 3 && t.match_length <= t.prev_length) { + n = t.strstart + t.lookahead - 3, i = X(t, t.strstart - 1 - t.prev_match, t.prev_length - 3), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; + do { + ++t.strstart <= n && (t.ins_h = yt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart) + } while (0 != --t.prev_length); + if (t.match_available = 0, t.match_length = 2, t.strstart++, i && (zt(t, !1), 0 === t.strm.avail_out)) return 1 + } else if (t.match_available) { + if (i = X(t, 0, t.window[t.strstart - 1]), i && zt(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return 1 + } else t.match_available = 1, t.strstart++, t.lookahead-- + } + return t.match_available && (i = X(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < 2 ? t.strstart : 2, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 + }; + + function Ot(t, e, a, i, n) { + this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n + } + const It = [new Ot(0, 0, 0, 0, St), new Ot(4, 4, 8, 4, Dt), new Ot(4, 5, 16, 8, Dt), new Ot(4, 6, 32, 32, Dt), new Ot(4, 4, 16, 16, Tt), new Ot(8, 16, 32, 32, Tt), new Ot(8, 16, 128, 128, Tt), new Ot(8, 32, 128, 256, Tt), new Ot(32, 128, 258, 1024, Tt), new Ot(32, 258, 258, 4096, Tt)]; + + function Ft() { + this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = ft, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(1146), this.dyn_dtree = new Uint16Array(122), this.bl_tree = new Uint16Array(78), kt(this.dyn_ltree), kt(this.dyn_dtree), kt(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(16), this.heap = new Uint16Array(573), kt(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(573), kt(this.depth), this.sym_buf = 0, this.lit_bufsize = 0, this.sym_next = 0, this.sym_end = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 + } + const Lt = t => { + if (!t) return 1; + const e = t.state; + return !e || e.strm !== t || e.status !== wt && 57 !== e.status && 69 !== e.status && 73 !== e.status && 91 !== e.status && 103 !== e.status && e.status !== mt && e.status !== bt ? 1 : 0 + }, + Nt = t => { + if (Lt(t)) return gt(t, at); + t.total_in = t.total_out = 0, t.data_type = _t; + const e = t.state; + return e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = 2 === e.wrap ? 57 : e.wrap ? wt : mt, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = -2, P(e), tt + }, + Bt = t => { + const e = Nt(t); + var a; + return e === tt && ((a = t.state).window_size = 2 * a.w_size, kt(a.head), a.max_lazy_match = It[a.level].max_lazy, a.good_match = It[a.level].good_length, a.nice_match = It[a.level].nice_length, a.max_chain_length = It[a.level].max_chain, a.strstart = 0, a.block_start = 0, a.lookahead = 0, a.insert = 0, a.match_length = a.prev_length = 2, a.match_available = 0, a.ins_h = 0), e + }, + Ct = (t, e, a, i, n, s) => { + if (!t) return at; + let r = 1; + if (e === st && (e = 6), i < 0 ? (r = 0, i = -i) : i > 15 && (r = 2, i -= 16), n < 1 || n > 9 || a !== ft || i < 8 || i > 15 || e < 0 || e > 9 || s < 0 || s > ht || 8 === i && 1 !== r) return gt(t, at); + 8 === i && (i = 9); + const o = new Ft; + return t.state = o, o.strm = t, o.status = wt, o.wrap = r, o.gzhead = null, o.w_bits = i, o.w_size = 1 << o.w_bits, o.w_mask = o.w_size - 1, o.hash_bits = n + 7, o.hash_size = 1 << o.hash_bits, o.hash_mask = o.hash_size - 1, o.hash_shift = ~~((o.hash_bits + 3 - 1) / 3), o.window = new Uint8Array(2 * o.w_size), o.head = new Uint16Array(o.hash_size), o.prev = new Uint16Array(o.w_size), o.lit_bufsize = 1 << n + 6, o.pending_buf_size = 4 * o.lit_bufsize, o.pending_buf = new Uint8Array(o.pending_buf_size), o.sym_buf = o.lit_bufsize, o.sym_end = 3 * (o.lit_bufsize - 1), o.level = e, o.strategy = s, o.method = a, Bt(t) + }; + var Mt = { + deflateInit: (t, e) => Ct(t, e, ft, 15, 8, dt), + deflateInit2: Ct, + deflateReset: Bt, + deflateResetKeep: Nt, + deflateSetHeader: (t, e) => Lt(t) || 2 !== t.state.wrap ? at : (t.state.gzhead = e, tt), + deflate: (t, e) => { + if (Lt(t) || e > $ || e < 0) return t ? gt(t, at) : at; + const a = t.state; + if (!t.output || 0 !== t.avail_in && !t.input || a.status === bt && e !== V) return gt(t, 0 === t.avail_out ? nt : at); + const i = a.last_flush; + if (a.last_flush = e, 0 !== a.pending) { + if (xt(t), 0 === t.avail_out) return a.last_flush = -1, tt + } else if (0 === t.avail_in && pt(e) <= pt(i) && e !== V) return gt(t, nt); + if (a.status === bt && 0 !== t.avail_in) return gt(t, nt); + if (a.status === wt && 0 === a.wrap && (a.status = mt), a.status === wt) { + let e = ft + (a.w_bits - 8 << 4) << 8, + i = -1; + if (i = a.strategy >= ot || a.level < 2 ? 0 : a.level < 6 ? 1 : 6 === a.level ? 2 : 3, e |= i << 6, 0 !== a.strstart && (e |= 32), e += 31 - e % 31, Et(a, e), 0 !== a.strstart && (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), t.adler = 1, a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt + } + if (57 === a.status) + if (t.adler = 0, At(a, 31), At(a, 139), At(a, 8), a.gzhead) At(a, (a.gzhead.text ? 1 : 0) + (a.gzhead.hcrc ? 2 : 0) + (a.gzhead.extra ? 4 : 0) + (a.gzhead.name ? 8 : 0) + (a.gzhead.comment ? 16 : 0)), At(a, 255 & a.gzhead.time), At(a, a.gzhead.time >> 8 & 255), At(a, a.gzhead.time >> 16 & 255), At(a, a.gzhead.time >> 24 & 255), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 255 & a.gzhead.os), a.gzhead.extra && a.gzhead.extra.length && (At(a, 255 & a.gzhead.extra.length), At(a, a.gzhead.extra.length >> 8 & 255)), a.gzhead.hcrc && (t.adler = H(t.adler, a.pending_buf, a.pending, 0)), a.gzindex = 0, a.status = 69; + else if (At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 0), At(a, 9 === a.level ? 2 : a.strategy >= ot || a.level < 2 ? 4 : 0), At(a, 3), a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt; + if (69 === a.status) { + if (a.gzhead.extra) { + let e = a.pending, + i = (65535 & a.gzhead.extra.length) - a.gzindex; + for (; a.pending + i > a.pending_buf_size;) { + let n = a.pending_buf_size - a.pending; + if (a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex, a.gzindex + n), a.pending), a.pending = a.pending_buf_size, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex += n, xt(t), 0 !== a.pending) return a.last_flush = -1, tt; + e = 0, i -= n + } + let n = new Uint8Array(a.gzhead.extra); + a.pending_buf.set(n.subarray(a.gzindex, a.gzindex + i), a.pending), a.pending += i, a.gzhead.hcrc && a.pending > e && (t.adler = H(t.adler, a.pending_buf, a.pending - e, e)), a.gzindex = 0 + } + a.status = 73 + } + if (73 === a.status) { + if (a.gzhead.name) { + let e, i = a.pending; + do { + if (a.pending === a.pending_buf_size) { + if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt; + i = 0 + } + e = a.gzindex < a.gzhead.name.length ? 255 & a.gzhead.name.charCodeAt(a.gzindex++) : 0, At(a, e) + } while (0 !== e); + a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), a.gzindex = 0 + } + a.status = 91 + } + if (91 === a.status) { + if (a.gzhead.comment) { + let e, i = a.pending; + do { + if (a.pending === a.pending_buf_size) { + if (a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)), xt(t), 0 !== a.pending) return a.last_flush = -1, tt; + i = 0 + } + e = a.gzindex < a.gzhead.comment.length ? 255 & a.gzhead.comment.charCodeAt(a.gzindex++) : 0, At(a, e) + } while (0 !== e); + a.gzhead.hcrc && a.pending > i && (t.adler = H(t.adler, a.pending_buf, a.pending - i, i)) + } + a.status = 103 + } + if (103 === a.status) { + if (a.gzhead.hcrc) { + if (a.pending + 2 > a.pending_buf_size && (xt(t), 0 !== a.pending)) return a.last_flush = -1, tt; + At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), t.adler = 0 + } + if (a.status = mt, xt(t), 0 !== a.pending) return a.last_flush = -1, tt + } + if (0 !== t.avail_in || 0 !== a.lookahead || e !== q && a.status !== bt) { + let i = 0 === a.level ? St(a, e) : a.strategy === ot ? ((t, e) => { + let a; + for (;;) { + if (0 === t.lookahead && (Ut(t), 0 === t.lookahead)) { + if (e === q) return 1; + break + } + if (t.match_length = 0, a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (zt(t, !1), 0 === t.strm.avail_out)) return 1 + } + return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 + })(a, e) : a.strategy === lt ? ((t, e) => { + let a, i, n, s; + const r = t.window; + for (;;) { + if (t.lookahead <= ct) { + if (Ut(t), t.lookahead <= ct && e === q) return 1; + if (0 === t.lookahead) break + } + if (t.match_length = 0, t.lookahead >= 3 && t.strstart > 0 && (n = t.strstart - 1, i = r[n], i === r[++n] && i === r[++n] && i === r[++n])) { + s = t.strstart + ct; + do {} while (i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && n < s); + t.match_length = ct - (s - n), t.match_length > t.lookahead && (t.match_length = t.lookahead) + } + if (t.match_length >= 3 ? (a = X(t, 1, t.match_length - 3), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = X(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (zt(t, !1), 0 === t.strm.avail_out)) return 1 + } + return t.insert = 0, e === V ? (zt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.sym_next && (zt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 + })(a, e) : It[a.level].func(a, e); + if (3 !== i && 4 !== i || (a.status = bt), 1 === i || 3 === i) return 0 === t.avail_out && (a.last_flush = -1), tt; + if (2 === i && (e === J ? W(a) : e !== $ && (Y(a, 0, 0, !1), e === Q && (kt(a.head), 0 === a.lookahead && (a.strstart = 0, a.block_start = 0, a.insert = 0))), xt(t), 0 === t.avail_out)) return a.last_flush = -1, tt + } + return e !== V ? tt : a.wrap <= 0 ? et : (2 === a.wrap ? (At(a, 255 & t.adler), At(a, t.adler >> 8 & 255), At(a, t.adler >> 16 & 255), At(a, t.adler >> 24 & 255), At(a, 255 & t.total_in), At(a, t.total_in >> 8 & 255), At(a, t.total_in >> 16 & 255), At(a, t.total_in >> 24 & 255)) : (Et(a, t.adler >>> 16), Et(a, 65535 & t.adler)), xt(t), a.wrap > 0 && (a.wrap = -a.wrap), 0 !== a.pending ? tt : et) + }, + deflateEnd: t => { + if (Lt(t)) return at; + const e = t.state.status; + return t.state = null, e === mt ? gt(t, it) : tt + }, + deflateSetDictionary: (t, e) => { + let a = e.length; + if (Lt(t)) return at; + const i = t.state, + n = i.wrap; + if (2 === n || 1 === n && i.status !== wt || i.lookahead) return at; + if (1 === n && (t.adler = C(t.adler, e, a, 0)), i.wrap = 0, a >= i.w_size) { + 0 === n && (kt(i.head), i.strstart = 0, i.block_start = 0, i.insert = 0); + let t = new Uint8Array(i.w_size); + t.set(e.subarray(a - i.w_size, a), 0), e = t, a = i.w_size + } + const s = t.avail_in, + r = t.next_in, + o = t.input; + for (t.avail_in = a, t.next_in = 0, t.input = e, Ut(i); i.lookahead >= 3;) { + let t = i.strstart, + e = i.lookahead - 2; + do { + i.ins_h = yt(i, i.ins_h, i.window[t + 3 - 1]), i.prev[t & i.w_mask] = i.head[i.ins_h], i.head[i.ins_h] = t, t++ + } while (--e); + i.strstart = t, i.lookahead = 2, Ut(i) + } + return i.strstart += i.lookahead, i.block_start = i.strstart, i.insert = i.lookahead, i.lookahead = 0, i.match_length = i.prev_length = 2, i.match_available = 0, t.next_in = r, t.input = o, t.avail_in = s, i.wrap = n, tt + }, + deflateInfo: "pako deflate (from Nodeca project)" + }; + const Ht = (t, e) => Object.prototype.hasOwnProperty.call(t, e); + var jt = function(t) { + const e = Array.prototype.slice.call(arguments, 1); + for (; e.length;) { + const a = e.shift(); + if (a) { + if ("object" != typeof a) throw new TypeError(a + "must be non-object"); + for (const e in a) Ht(a, e) && (t[e] = a[e]) + } + } + return t + }, + Kt = t => { + let e = 0; + for (let a = 0, i = t.length; a < i; a++) e += t[a].length; + const a = new Uint8Array(e); + for (let e = 0, i = 0, n = t.length; e < n; e++) { + let n = t[e]; + a.set(n, i), i += n.length + } + return a + }; + let Pt = !0; + try { + String.fromCharCode.apply(null, new Uint8Array(1)) + } catch (t) { + Pt = !1 + } + const Yt = new Uint8Array(256); + for (let t = 0; t < 256; t++) Yt[t] = t >= 252 ? 6 : t >= 248 ? 5 : t >= 240 ? 4 : t >= 224 ? 3 : t >= 192 ? 2 : 1; + Yt[254] = Yt[254] = 1; + var Gt = t => { + if ("function" == typeof TextEncoder && TextEncoder.prototype.encode) return (new TextEncoder).encode(t); + let e, a, i, n, s, r = t.length, + o = 0; + for (n = 0; n < r; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), o += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; + for (e = new Uint8Array(o), s = 0, n = 0; s < o; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), a < 128 ? e[s++] = a : a < 2048 ? (e[s++] = 192 | a >>> 6, e[s++] = 128 | 63 & a) : a < 65536 ? (e[s++] = 224 | a >>> 12, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a) : (e[s++] = 240 | a >>> 18, e[s++] = 128 | a >>> 12 & 63, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a); + return e + }, + Xt = (t, e) => { + const a = e || t.length; + if ("function" == typeof TextDecoder && TextDecoder.prototype.decode) return (new TextDecoder).decode(t.subarray(0, e)); + let i, n; + const s = new Array(2 * a); + for (n = 0, i = 0; i < a;) { + let e = t[i++]; + if (e < 128) { + s[n++] = e; + continue + } + let r = Yt[e]; + if (r > 4) s[n++] = 65533, i += r - 1; + else { + for (e &= 2 === r ? 31 : 3 === r ? 15 : 7; r > 1 && i < a;) e = e << 6 | 63 & t[i++], r--; + r > 1 ? s[n++] = 65533 : e < 65536 ? s[n++] = e : (e -= 65536, s[n++] = 55296 | e >> 10 & 1023, s[n++] = 56320 | 1023 & e) + } + } + return ((t, e) => { + if (e < 65534 && t.subarray && Pt) return String.fromCharCode.apply(null, t.length === e ? t : t.subarray(0, e)); + let a = ""; + for (let i = 0; i < e; i++) a += String.fromCharCode(t[i]); + return a + })(s, n) + }, + Wt = (t, e) => { + (e = e || t.length) > t.length && (e = t.length); + let a = e - 1; + for (; a >= 0 && 128 == (192 & t[a]);) a--; + return a < 0 || 0 === a ? e : a + Yt[t[a]] > e ? a : e + }; + var qt = function() { + this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 + }; + const Jt = Object.prototype.toString, + { + Z_NO_FLUSH: Qt, + Z_SYNC_FLUSH: Vt, + Z_FULL_FLUSH: $t, + Z_FINISH: te, + Z_OK: ee, + Z_STREAM_END: ae, + Z_DEFAULT_COMPRESSION: ie, + Z_DEFAULT_STRATEGY: ne, + Z_DEFLATED: se + } = K; + + function re(t) { + this.options = jt({ + level: ie, + method: se, + chunkSize: 16384, + windowBits: 15, + memLevel: 8, + strategy: ne + }, t || {}); + let e = this.options; + e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new qt, this.strm.avail_out = 0; + let a = Mt.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); + if (a !== ee) throw new Error(j[a]); + if (e.header && Mt.deflateSetHeader(this.strm, e.header), e.dictionary) { + let t; + if (t = "string" == typeof e.dictionary ? Gt(e.dictionary) : "[object ArrayBuffer]" === Jt.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, a = Mt.deflateSetDictionary(this.strm, t), a !== ee) throw new Error(j[a]); + this._dict_set = !0 + } + } + + function oe(t, e) { + const a = new re(e); + if (a.push(t, !0), a.err) throw a.msg || j[a.err]; + return a.result + } + re.prototype.push = function(t, e) { + const a = this.strm, + i = this.options.chunkSize; + let n, s; + if (this.ended) return !1; + for (s = e === ~~e ? e : !0 === e ? te : Qt, "string" == typeof t ? a.input = Gt(t) : "[object ArrayBuffer]" === Jt.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;) + if (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), (s === Vt || s === $t) && a.avail_out <= 6) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0; + else { + if (n = Mt.deflate(a, s), n === ae) return a.next_out > 0 && this.onData(a.output.subarray(0, a.next_out)), n = Mt.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === ee; + if (0 !== a.avail_out) { + if (s > 0 && a.next_out > 0) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0; + else if (0 === a.avail_in) break + } else this.onData(a.output) + } return !0 + }, re.prototype.onData = function(t) { + this.chunks.push(t) + }, re.prototype.onEnd = function(t) { + t === ee && (this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg + }; + var le = { + Deflate: re, + deflate: oe, + deflateRaw: function(t, e) { + return (e = e || {}).raw = !0, oe(t, e) + }, + gzip: function(t, e) { + return (e = e || {}).gzip = !0, oe(t, e) + }, + constants: K + }; + const he = 16209; + var de = function(t, e) { + let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z, A; + const E = t.state; + a = t.next_in, z = t.input, i = a + (t.avail_in - 5), n = t.next_out, A = t.output, s = n - (e - t.avail_out), r = n + (t.avail_out - 257), o = E.dmax, l = E.wsize, h = E.whave, d = E.wnext, _ = E.window, f = E.hold, c = E.bits, u = E.lencode, w = E.distcode, m = (1 << E.lenbits) - 1, b = (1 << E.distbits) - 1; + t: do { + c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = u[f & m]; + e: for (;;) { + if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, 0 === p) A[n++] = 65535 & g; + else { + if (!(16 & p)) { + if (0 == (64 & p)) { + g = u[(65535 & g) + (f & (1 << p) - 1)]; + continue e + } + if (32 & p) { + E.mode = 16191; + break t + } + t.msg = "invalid literal/length code", E.mode = he; + break t + } + k = 65535 & g, p &= 15, p && (c < p && (f += z[a++] << c, c += 8), k += f & (1 << p) - 1, f >>>= p, c -= p), c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), g = w[f & b]; + a: for (;;) { + if (p = g >>> 24, f >>>= p, c -= p, p = g >>> 16 & 255, !(16 & p)) { + if (0 == (64 & p)) { + g = w[(65535 & g) + (f & (1 << p) - 1)]; + continue a + } + t.msg = "invalid distance code", E.mode = he; + break t + } + if (v = 65535 & g, p &= 15, c < p && (f += z[a++] << c, c += 8, c < p && (f += z[a++] << c, c += 8)), v += f & (1 << p) - 1, v > o) { + t.msg = "invalid distance too far back", E.mode = he; + break t + } + if (f >>>= p, c -= p, p = n - s, v > p) { + if (p = v - p, p > h && E.sane) { + t.msg = "invalid distance too far back", E.mode = he; + break t + } + if (y = 0, x = _, 0 === d) { + if (y += l - p, p < k) { + k -= p; + do { + A[n++] = _[y++] + } while (--p); + y = n - v, x = A + } + } else if (d < p) { + if (y += l + d - p, p -= d, p < k) { + k -= p; + do { + A[n++] = _[y++] + } while (--p); + if (y = 0, d < k) { + p = d, k -= p; + do { + A[n++] = _[y++] + } while (--p); + y = n - v, x = A + } + } + } else if (y += d - p, p < k) { + k -= p; + do { + A[n++] = _[y++] + } while (--p); + y = n - v, x = A + } + for (; k > 2;) A[n++] = x[y++], A[n++] = x[y++], A[n++] = x[y++], k -= 3; + k && (A[n++] = x[y++], k > 1 && (A[n++] = x[y++])) + } else { + y = n - v; + do { + A[n++] = A[y++], A[n++] = A[y++], A[n++] = A[y++], k -= 3 + } while (k > 2); + k && (A[n++] = A[y++], k > 1 && (A[n++] = A[y++])) + } + break + } + } + break + } + } while (a < i && n < r); + k = c >> 3, a -= k, c -= k << 3, f &= (1 << c) - 1, t.next_in = a, t.next_out = n, t.avail_in = a < i ? i - a + 5 : 5 - (a - i), t.avail_out = n < r ? r - n + 257 : 257 - (n - r), E.hold = f, E.bits = c + }; + const _e = 15, + fe = new Uint16Array([3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]), + ce = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]), + ue = new Uint16Array([1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]), + we = new Uint8Array([16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]); + var me = (t, e, a, i, n, s, r, o) => { + const l = o.bits; + let h, d, _, f, c, u, w = 0, + m = 0, + b = 0, + g = 0, + p = 0, + k = 0, + v = 0, + y = 0, + x = 0, + z = 0, + A = null; + const E = new Uint16Array(16), + R = new Uint16Array(16); + let Z, U, S, D = null; + for (w = 0; w <= _e; w++) E[w] = 0; + for (m = 0; m < i; m++) E[e[a + m]]++; + for (p = l, g = _e; g >= 1 && 0 === E[g]; g--); + if (p > g && (p = g), 0 === g) return n[s++] = 20971520, n[s++] = 20971520, o.bits = 1, 0; + for (b = 1; b < g && 0 === E[b]; b++); + for (p < b && (p = b), y = 1, w = 1; w <= _e; w++) + if (y <<= 1, y -= E[w], y < 0) return -1; + if (y > 0 && (0 === t || 1 !== g)) return -1; + for (R[1] = 0, w = 1; w < _e; w++) R[w + 1] = R[w] + E[w]; + for (m = 0; m < i; m++) 0 !== e[a + m] && (r[R[e[a + m]]++] = m); + if (0 === t ? (A = D = r, u = 20) : 1 === t ? (A = fe, D = ce, u = 257) : (A = ue, D = we, u = 0), z = 0, m = 0, w = b, c = s, k = p, v = 0, _ = -1, x = 1 << p, f = x - 1, 1 === t && x > 852 || 2 === t && x > 592) return 1; + for (;;) { + Z = w - v, r[m] + 1 < u ? (U = 0, S = r[m]) : r[m] >= u ? (U = D[r[m] - u], S = A[r[m] - u]) : (U = 96, S = 0), h = 1 << w - v, d = 1 << k, b = d; + do { + d -= h, n[c + (z >> v) + d] = Z << 24 | U << 16 | S | 0 + } while (0 !== d); + for (h = 1 << w - 1; z & h;) h >>= 1; + if (0 !== h ? (z &= h - 1, z += h) : z = 0, m++, 0 == --E[w]) { + if (w === g) break; + w = e[a + r[m]] + } + if (w > p && (z & f) !== _) { + for (0 === v && (v = p), c += b, k = w - v, y = 1 << k; k + v < g && (y -= E[k + v], !(y <= 0));) k++, y <<= 1; + if (x += 1 << k, 1 === t && x > 852 || 2 === t && x > 592) return 1; + _ = z & f, n[_] = p << 24 | k << 16 | c - s | 0 + } + } + return 0 !== z && (n[c + z] = w - v << 24 | 64 << 16 | 0), o.bits = p, 0 + }; + const { + Z_FINISH: be, + Z_BLOCK: ge, + Z_TREES: pe, + Z_OK: ke, + Z_STREAM_END: ve, + Z_NEED_DICT: ye, + Z_STREAM_ERROR: xe, + Z_DATA_ERROR: ze, + Z_MEM_ERROR: Ae, + Z_BUF_ERROR: Ee, + Z_DEFLATED: Re + } = K, Ze = 16180, Ue = 16190, Se = 16191, De = 16192, Te = 16194, Oe = 16199, Ie = 16200, Fe = 16206, Le = 16209, Ne = t => (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24); + + function Be() { + this.strm = null, this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0 + } + const Ce = t => { + if (!t) return 1; + const e = t.state; + return !e || e.strm !== t || e.mode < Ze || e.mode > 16211 ? 1 : 0 + }, + Me = t => { + if (Ce(t)) return xe; + const e = t.state; + return t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = Ze, e.last = 0, e.havedict = 0, e.flags = -1, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new Int32Array(852), e.distcode = e.distdyn = new Int32Array(592), e.sane = 1, e.back = -1, ke + }, + He = t => { + if (Ce(t)) return xe; + const e = t.state; + return e.wsize = 0, e.whave = 0, e.wnext = 0, Me(t) + }, + je = (t, e) => { + let a; + if (Ce(t)) return xe; + const i = t.state; + return e < 0 ? (a = 0, e = -e) : (a = 5 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? xe : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, He(t)) + }, + Ke = (t, e) => { + if (!t) return xe; + const a = new Be; + t.state = a, a.strm = t, a.window = null, a.mode = Ze; + const i = je(t, e); + return i !== ke && (t.state = null), i + }; + let Pe, Ye, Ge = !0; + const Xe = t => { + if (Ge) { + Pe = new Int32Array(512), Ye = new Int32Array(32); + let e = 0; + for (; e < 144;) t.lens[e++] = 8; + for (; e < 256;) t.lens[e++] = 9; + for (; e < 280;) t.lens[e++] = 7; + for (; e < 288;) t.lens[e++] = 8; + for (me(1, t.lens, 0, 288, Pe, 0, t.work, { + bits: 9 + }), e = 0; e < 32;) t.lens[e++] = 5; + me(2, t.lens, 0, 32, Ye, 0, t.work, { + bits: 5 + }), Ge = !1 + } + t.lencode = Pe, t.lenbits = 9, t.distcode = Ye, t.distbits = 5 + }, + We = (t, e, a, i) => { + let n; + const s = t.state; + return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new Uint8Array(s.wsize)), i >= s.wsize ? (s.window.set(e.subarray(a - s.wsize, a), 0), s.wnext = 0, s.whave = s.wsize) : (n = s.wsize - s.wnext, n > i && (n = i), s.window.set(e.subarray(a - i, a - i + n), s.wnext), (i -= n) ? (s.window.set(e.subarray(a - i, a), 0), s.wnext = i, s.whave = s.wsize) : (s.wnext += n, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += n))), 0 + }; + var qe = { + inflateReset: He, + inflateReset2: je, + inflateResetKeep: Me, + inflateInit: t => Ke(t, 15), + inflateInit2: Ke, + inflate: (t, e) => { + let a, i, n, s, r, o, l, h, d, _, f, c, u, w, m, b, g, p, k, v, y, x, z = 0; + const A = new Uint8Array(4); + let E, R; + const Z = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); + if (Ce(t) || !t.output || !t.input && 0 !== t.avail_in) return xe; + a = t.state, a.mode === Se && (a.mode = De), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, _ = o, f = l, x = ke; + t: for (;;) switch (a.mode) { + case Ze: + if (0 === a.wrap) { + a.mode = De; + break + } + for (; d < 16;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (2 & a.wrap && 35615 === h) { + 0 === a.wbits && (a.wbits = 15), a.check = 0, A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0), h = 0, d = 0, a.mode = 16181; + break + } + if (a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & h) << 8) + (h >> 8)) % 31) { + t.msg = "incorrect header check", a.mode = Le; + break + } + if ((15 & h) !== Re) { + t.msg = "unknown compression method", a.mode = Le; + break + } + if (h >>>= 4, d -= 4, y = 8 + (15 & h), 0 === a.wbits && (a.wbits = y), y > 15 || y > a.wbits) { + t.msg = "invalid window size", a.mode = Le; + break + } + a.dmax = 1 << a.wbits, a.flags = 0, t.adler = a.check = 1, a.mode = 512 & h ? 16189 : Se, h = 0, d = 0; + break; + case 16181: + for (; d < 16;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (a.flags = h, (255 & a.flags) !== Re) { + t.msg = "unknown compression method", a.mode = Le; + break + } + if (57344 & a.flags) { + t.msg = "unknown header flags set", a.mode = Le; + break + } + a.head && (a.head.text = h >> 8 & 1), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16182; + case 16182: + for (; d < 32;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.head && (a.head.time = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, A[2] = h >>> 16 & 255, A[3] = h >>> 24 & 255, a.check = H(a.check, A, 4, 0)), h = 0, d = 0, a.mode = 16183; + case 16183: + for (; d < 16;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.head && (a.head.xflags = 255 & h, a.head.os = h >> 8), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 16184; + case 16184: + if (1024 & a.flags) { + for (; d < 16;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.length = h, a.head && (a.head.extra_len = h), 512 & a.flags && 4 & a.wrap && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = H(a.check, A, 2, 0)), h = 0, d = 0 + } else a.head && (a.head.extra = null); + a.mode = 16185; + case 16185: + if (1024 & a.flags && (c = a.length, c > o && (c = o), c && (a.head && (y = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Uint8Array(a.head.extra_len)), a.head.extra.set(i.subarray(s, s + c), y)), 512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, a.length -= c), a.length)) break t; + a.length = 0, a.mode = 16186; + case 16186: + if (2048 & a.flags) { + if (0 === o) break t; + c = 0; + do { + y = i[s + c++], a.head && y && a.length < 65536 && (a.head.name += String.fromCharCode(y)) + } while (y && c < o); + if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t + } else a.head && (a.head.name = null); + a.length = 0, a.mode = 16187; + case 16187: + if (4096 & a.flags) { + if (0 === o) break t; + c = 0; + do { + y = i[s + c++], a.head && y && a.length < 65536 && (a.head.comment += String.fromCharCode(y)) + } while (y && c < o); + if (512 & a.flags && 4 & a.wrap && (a.check = H(a.check, i, c, s)), o -= c, s += c, y) break t + } else a.head && (a.head.comment = null); + a.mode = 16188; + case 16188: + if (512 & a.flags) { + for (; d < 16;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (4 & a.wrap && h !== (65535 & a.check)) { + t.msg = "header crc mismatch", a.mode = Le; + break + } + h = 0, d = 0 + } + a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = Se; + break; + case 16189: + for (; d < 32;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + t.adler = a.check = Ne(h), h = 0, d = 0, a.mode = Ue; + case Ue: + if (0 === a.havedict) return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, ye; + t.adler = a.check = 1, a.mode = Se; + case Se: + if (e === ge || e === pe) break t; + case De: + if (a.last) { + h >>>= 7 & d, d -= 7 & d, a.mode = Fe; + break + } + for (; d < 3;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + switch (a.last = 1 & h, h >>>= 1, d -= 1, 3 & h) { + case 0: + a.mode = 16193; + break; + case 1: + if (Xe(a), a.mode = Oe, e === pe) { + h >>>= 2, d -= 2; + break t + } + break; + case 2: + a.mode = 16196; + break; + case 3: + t.msg = "invalid block type", a.mode = Le + } + h >>>= 2, d -= 2; + break; + case 16193: + for (h >>>= 7 & d, d -= 7 & d; d < 32;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if ((65535 & h) != (h >>> 16 ^ 65535)) { + t.msg = "invalid stored block lengths", a.mode = Le; + break + } + if (a.length = 65535 & h, h = 0, d = 0, a.mode = Te, e === pe) break t; + case Te: + a.mode = 16195; + case 16195: + if (c = a.length, c) { + if (c > o && (c = o), c > l && (c = l), 0 === c) break t; + n.set(i.subarray(s, s + c), r), o -= c, s += c, l -= c, r += c, a.length -= c; + break + } + a.mode = Se; + break; + case 16196: + for (; d < 14;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (a.nlen = 257 + (31 & h), h >>>= 5, d -= 5, a.ndist = 1 + (31 & h), h >>>= 5, d -= 5, a.ncode = 4 + (15 & h), h >>>= 4, d -= 4, a.nlen > 286 || a.ndist > 30) { + t.msg = "too many length or distance symbols", a.mode = Le; + break + } + a.have = 0, a.mode = 16197; + case 16197: + for (; a.have < a.ncode;) { + for (; d < 3;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.lens[Z[a.have++]] = 7 & h, h >>>= 3, d -= 3 + } + for (; a.have < 19;) a.lens[Z[a.have++]] = 0; + if (a.lencode = a.lendyn, a.lenbits = 7, E = { + bits: a.lenbits + }, x = me(0, a.lens, 0, 19, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) { + t.msg = "invalid code lengths set", a.mode = Le; + break + } + a.have = 0, a.mode = 16198; + case 16198: + for (; a.have < a.nlen + a.ndist;) { + for (; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (g < 16) h >>>= m, d -= m, a.lens[a.have++] = g; + else { + if (16 === g) { + for (R = m + 2; d < R;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (h >>>= m, d -= m, 0 === a.have) { + t.msg = "invalid bit length repeat", a.mode = Le; + break + } + y = a.lens[a.have - 1], c = 3 + (3 & h), h >>>= 2, d -= 2 + } else if (17 === g) { + for (R = m + 3; d < R;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + h >>>= m, d -= m, y = 0, c = 3 + (7 & h), h >>>= 3, d -= 3 + } else { + for (R = m + 7; d < R;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + h >>>= m, d -= m, y = 0, c = 11 + (127 & h), h >>>= 7, d -= 7 + } + if (a.have + c > a.nlen + a.ndist) { + t.msg = "invalid bit length repeat", a.mode = Le; + break + } + for (; c--;) a.lens[a.have++] = y + } + } + if (a.mode === Le) break; + if (0 === a.lens[256]) { + t.msg = "invalid code -- missing end-of-block", a.mode = Le; + break + } + if (a.lenbits = 9, E = { + bits: a.lenbits + }, x = me(1, a.lens, 0, a.nlen, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) { + t.msg = "invalid literal/lengths set", a.mode = Le; + break + } + if (a.distbits = 6, a.distcode = a.distdyn, E = { + bits: a.distbits + }, x = me(2, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, E), a.distbits = E.bits, x) { + t.msg = "invalid distances set", a.mode = Le; + break + } + if (a.mode = Oe, e === pe) break t; + case Oe: + a.mode = Ie; + case Ie: + if (o >= 6 && l >= 258) { + t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, de(t, f), r = t.next_out, n = t.output, l = t.avail_out, s = t.next_in, i = t.input, o = t.avail_in, h = a.hold, d = a.bits, a.mode === Se && (a.back = -1); + break + } + for (a.back = 0; z = a.lencode[h & (1 << a.lenbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (b && 0 == (240 & b)) { + for (p = m, k = b, v = g; z = a.lencode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + h >>>= p, d -= p, a.back += p + } + if (h >>>= m, d -= m, a.back += m, a.length = g, 0 === b) { + a.mode = 16205; + break + } + if (32 & b) { + a.back = -1, a.mode = Se; + break + } + if (64 & b) { + t.msg = "invalid literal/length code", a.mode = Le; + break + } + a.extra = 15 & b, a.mode = 16201; + case 16201: + if (a.extra) { + for (R = a.extra; d < R;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.length += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra + } + a.was = a.length, a.mode = 16202; + case 16202: + for (; z = a.distcode[h & (1 << a.distbits) - 1], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(m <= d);) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (0 == (240 & b)) { + for (p = m, k = b, v = g; z = a.distcode[v + ((h & (1 << p + k) - 1) >> p)], m = z >>> 24, b = z >>> 16 & 255, g = 65535 & z, !(p + m <= d);) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + h >>>= p, d -= p, a.back += p + } + if (h >>>= m, d -= m, a.back += m, 64 & b) { + t.msg = "invalid distance code", a.mode = Le; + break + } + a.offset = g, a.extra = 15 & b, a.mode = 16203; + case 16203: + if (a.extra) { + for (R = a.extra; d < R;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + a.offset += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra + } + if (a.offset > a.dmax) { + t.msg = "invalid distance too far back", a.mode = Le; + break + } + a.mode = 16204; + case 16204: + if (0 === l) break t; + if (c = f - l, a.offset > c) { + if (c = a.offset - c, c > a.whave && a.sane) { + t.msg = "invalid distance too far back", a.mode = Le; + break + } + c > a.wnext ? (c -= a.wnext, u = a.wsize - c) : u = a.wnext - c, c > a.length && (c = a.length), w = a.window + } else w = n, u = r - a.offset, c = a.length; + c > l && (c = l), l -= c, a.length -= c; + do { + n[r++] = w[u++] + } while (--c); + 0 === a.length && (a.mode = Ie); + break; + case 16205: + if (0 === l) break t; + n[r++] = a.length, l--, a.mode = Ie; + break; + case Fe: + if (a.wrap) { + for (; d < 32;) { + if (0 === o) break t; + o--, h |= i[s++] << d, d += 8 + } + if (f -= l, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, r - f) : C(a.check, n, f, r - f)), f = l, 4 & a.wrap && (a.flags ? h : Ne(h)) !== a.check) { + t.msg = "incorrect data check", a.mode = Le; + break + } + h = 0, d = 0 + } + a.mode = 16207; + case 16207: + if (a.wrap && a.flags) { + for (; d < 32;) { + if (0 === o) break t; + o--, h += i[s++] << d, d += 8 + } + if (4 & a.wrap && h !== (4294967295 & a.total)) { + t.msg = "incorrect length check", a.mode = Le; + break + } + h = 0, d = 0 + } + a.mode = 16208; + case 16208: + x = ve; + break t; + case Le: + x = ze; + break t; + case 16210: + return Ae; + default: + return xe + } + return t.next_out = r, t.avail_out = l, t.next_in = s, t.avail_in = o, a.hold = h, a.bits = d, (a.wsize || f !== t.avail_out && a.mode < Le && (a.mode < Fe || e !== be)) && We(t, t.output, t.next_out, f - t.avail_out), _ -= t.avail_in, f -= t.avail_out, t.total_in += _, t.total_out += f, a.total += f, 4 & a.wrap && f && (t.adler = a.check = a.flags ? H(a.check, n, f, t.next_out - f) : C(a.check, n, f, t.next_out - f)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === Se ? 128 : 0) + (a.mode === Oe || a.mode === Te ? 256 : 0), (0 === _ && 0 === f || e === be) && x === ke && (x = Ee), x + }, + inflateEnd: t => { + if (Ce(t)) return xe; + let e = t.state; + return e.window && (e.window = null), t.state = null, ke + }, + inflateGetHeader: (t, e) => { + if (Ce(t)) return xe; + const a = t.state; + return 0 == (2 & a.wrap) ? xe : (a.head = e, e.done = !1, ke) + }, + inflateSetDictionary: (t, e) => { + const a = e.length; + let i, n, s; + return Ce(t) ? xe : (i = t.state, 0 !== i.wrap && i.mode !== Ue ? xe : i.mode === Ue && (n = 1, n = C(n, e, a, 0), n !== i.check) ? ze : (s = We(t, e, a, a), s ? (i.mode = 16210, Ae) : (i.havedict = 1, ke))) + }, + inflateInfo: "pako inflate (from Nodeca project)" + }; + var Je = function() { + this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1 + }; + const Qe = Object.prototype.toString, + { + Z_NO_FLUSH: Ve, + Z_FINISH: $e, + Z_OK: ta, + Z_STREAM_END: ea, + Z_NEED_DICT: aa, + Z_STREAM_ERROR: ia, + Z_DATA_ERROR: na, + Z_MEM_ERROR: sa + } = K; + + function ra(t) { + this.options = jt({ + chunkSize: 65536, + windowBits: 15, + to: "" + }, t || {}); + const e = this.options; + e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new qt, this.strm.avail_out = 0; + let a = qe.inflateInit2(this.strm, e.windowBits); + if (a !== ta) throw new Error(j[a]); + if (this.header = new Je, qe.inflateGetHeader(this.strm, this.header), e.dictionary && ("string" == typeof e.dictionary ? e.dictionary = Gt(e.dictionary) : "[object ArrayBuffer]" === Qe.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (a = qe.inflateSetDictionary(this.strm, e.dictionary), a !== ta))) throw new Error(j[a]) + } + + function oa(t, e) { + const a = new ra(e); + if (a.push(t), a.err) throw a.msg || j[a.err]; + return a.result + } + ra.prototype.push = function(t, e) { + const a = this.strm, + i = this.options.chunkSize, + n = this.options.dictionary; + let s, r, o; + if (this.ended) return !1; + for (r = e === ~~e ? e : !0 === e ? $e : Ve, "[object ArrayBuffer]" === Qe.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length;;) { + for (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), s = qe.inflate(a, r), s === aa && n && (s = qe.inflateSetDictionary(a, n), s === ta ? s = qe.inflate(a, r) : s === na && (s = aa)); a.avail_in > 0 && s === ea && a.state.wrap > 0 && 0 !== t[a.next_in];) qe.inflateReset(a), s = qe.inflate(a, r); + switch (s) { + case ia: + case na: + case aa: + case sa: + return this.onEnd(s), this.ended = !0, !1 + } + if (o = a.avail_out, a.next_out && (0 === a.avail_out || s === ea)) + if ("string" === this.options.to) { + let t = Wt(a.output, a.next_out), + e = a.next_out - t, + n = Xt(a.output, t); + a.next_out = e, a.avail_out = i - e, e && a.output.set(a.output.subarray(t, t + e), 0), this.onData(n) + } else this.onData(a.output.length === a.next_out ? a.output : a.output.subarray(0, a.next_out)); + if (s !== ta || 0 !== o) { + if (s === ea) return s = qe.inflateEnd(this.strm), this.onEnd(s), this.ended = !0, !0; + if (0 === a.avail_in) break + } + } + return !0 + }, ra.prototype.onData = function(t) { + this.chunks.push(t) + }, ra.prototype.onEnd = function(t) { + t === ta && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Kt(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg + }; + var la = { + Inflate: ra, + inflate: oa, + inflateRaw: function(t, e) { + return (e = e || {}).raw = !0, oa(t, e) + }, + ungzip: oa, + constants: K + }; + const { + Deflate: ha, + deflate: da, + deflateRaw: _a, + gzip: fa + } = le, { + Inflate: ca, + inflate: ua, + inflateRaw: wa, + ungzip: ma + } = la; + var ba = ha, + ga = da, + pa = _a, + ka = fa, + va = ca, + ya = ua, + xa = wa, + za = ma, + Aa = K, + Ea = { + Deflate: ba, + deflate: ga, + deflateRaw: pa, + gzip: ka, + Inflate: va, + inflate: ya, + inflateRaw: xa, + ungzip: za, + constants: Aa + }; + t.Deflate = ba, t.Inflate = va, t.constants = Aa, t.default = Ea, t.deflate = ga, t.deflateRaw = pa, t.gzip = ka, t.inflate = ya, t.inflateRaw = xa, t.ungzip = za, Object.defineProperty(t, "__esModule", { + value: !0 + }) +})); \ No newline at end of file diff --git a/xiaosa/JS/quark.min.js b/xiaosa/JS/quark.min.js new file mode 100644 index 00000000..b2e82df5 --- /dev/null +++ b/xiaosa/JS/quark.min.js @@ -0,0 +1,3057 @@ +import cheerio from "assets://js/lib/cheerio.min.js"; +import "assets://js/lib/crypto-js.js"; +import "./jsencrypt.js"; +import "./node-rsa.js"; +import "./pako.min.js"; +import 模板 from "./模板.js"; +import { + gbkTool +} from "./gbk.js"; +import "./json5.js"; +import "./jinja.js"; +const _jinja2 = cheerio.jinja2; +cheerio.jinja2 = function(template, obj) { + try { + return jinja.render(template, obj) + } catch (e) { + console.log("新的jinja2库渲染失败,换回原始cheerio:" + e.message); + return _jinja2(template, obj) + } +}; +let vercode = typeof pdfl === "function" ? "drpy2.1" : "drpy2"; +const VERSION = vercode + " 3.9.51beta5 20241104"; +const UpdateInfo = [{ + date: "20241104", + title: "drpy更新,增加新特性", + version: "3.9.51beta5 20241104", + msg: ` + 1. rule增加 搜索验证标识 属性,可以不定义,默认为 '系统安全验证|请输入验证码' + 2. rule增加 searchNoPage 属性,可以不定义,如果定义 1 将关闭该源的搜索翻页功能,超过1页直接返回空 + ` +}]; + +function getUpdateInfo() { + return UpdateInfo.map(_o => { + _o.msg = _o.msg.trim().split("\n").map(_it => _it.trim()).join("\n"); + return _o + }) +} + +function init_test() { + console.log("init_test_start"); + console.log("当前版本号:" + VERSION); + console.log("本地代理地址:" + getProxyUrl()); + console.log(RKEY); + console.log(JSON.stringify(rule)); + console.log("init_test_end") +} + +function ocr_demo_test() { + let img_base64 = `iVBORw0KGgoAAAANSUhEUgAAAIAAAAAoBAMAAADEX+97AAAAG1BMVEXz+/4thQTa7N6QwIFFkyNeokKozqDB3b93sWHFR+MEAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABN0lEQVRIie2TQU+DQBCFt9vScvQpxR4xrcSjJCZ67JDGXsX+AdR4B3vpsSYm/m2HXaRLmuySepR3Gdidb/btDAjRq5dT96eCMlfBuzi1QLZUoZy2yz5sOvI+9iomaPEZ6nWnEtxqIyiM1RcAy44GNDhBXUjot/VVNweV1ah68FqWRyjKIOqAcyYF6rGcmpYnHzGt3fycNoMw0d3/THFu7hFSJ/8OXO6iTM8/KSg09obAzIHLO250LgQ0txOZSfgrV4Exdw98uGycJ0ErAeExZGhOmFHV9zHO6qVSj0MpLq7xZON56o++MjlsEgfVhbQWWME+xQX7J4V6zfi9A1Ly9rP1BvEXp+BbVJ/M77n+wfOIDVp51pZ4iBxvmj9AGrtvry6emwfKnVkW+ZRKd5ZNMvob36vXP9YPDmQki8QiCFAAAAAASUVORK5CYII=`; + OcrApi.api = OCR_API; + let code = OcrApi.classification(img_base64); + log("测试验证码图片的ocr识别结果为:" + code) +} + +function rsa_demo_test() { + let t1 = (new Date).getTime(); + let pkcs1_public = ` +-----BEGIN RSA PUBLIC KEY----- +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +-----END RSA PUBLIC KEY----- +`.trim(); + let pkcs1_public_pem = ` +MEgCQQCrI0pQ/ERRpJ3Ou190XJedFq846nDYP52rOtXyDxlFK5D3p6JJu2RwsKwy +lsQ9xY0xYPpRZUZKMEeR7e9gmRNLAgMBAAE= +`.trim(); + let pkcs8_public = ` +-----BEGIN PUBLIC KEY----- +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +-----END PUBLIC KEY-----`.trim(); + let pkcs8_public_pem = ` +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/ +nas61fIPGUUrkPenokm7ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQ== +`.trim(); + let pkcs1_private = ` +-----BEGIN RSA PRIVATE KEY----- +MIIBOAIBAAJBAKsjSlD8RFGknc67X3Rcl50WrzjqcNg/nas61fIPGUUrkPenokm7 +ZHCwrDKWxD3FjTFg+lFlRkowR5Ht72CZE0sCAwEAAQI/b6OV1z65UokQaMvSeRXt +0Yv6wiYtduQI9qpq5nzy/ytaqsbBfClNTi/HifKPKxlRouWFkc518EQI8LBxoarJ +AiEA4DaONMplV8PQNa3TKn2F+SDEvLOCjdL0kHKdN90Ti28CIQDDZnTBaHgZwZbA +hS7Bbf5yvwjWMhO6Y7l04/Qm7R+35QIgPuQuqXIoUSD080mp1N5WyRW++atksIF+ +5lGv9e6GP/MCICnj8y/rl6Pd7tXDN6zcSeqLrfdNsREKhB3dKOCXgW9JAiAFYtFS +EJNBXVRTK42SNsZ2hJ/9xLwOwnH2epT8Q43s3Q== +-----END RSA PRIVATE KEY----- +`.trim(); + let pkcs8_private = ` +-----BEGIN PRIVATE KEY----- +MIIBUgIBADANBgkqhkiG9w0BAQEFAASCATwwggE4AgEAAkEAqyNKUPxEUaSdzrtf +dFyXnRavOOpw2D+dqzrV8g8ZRSuQ96eiSbtkcLCsMpbEPcWNMWD6UWVGSjBHke3v +YJkTSwIDAQABAj9vo5XXPrlSiRBoy9J5Fe3Ri/rCJi125Aj2qmrmfPL/K1qqxsF8 +KU1OL8eJ8o8rGVGi5YWRznXwRAjwsHGhqskCIQDgNo40ymVXw9A1rdMqfYX5IMS8 +s4KN0vSQcp033ROLbwIhAMNmdMFoeBnBlsCFLsFt/nK/CNYyE7pjuXTj9CbtH7fl +AiA+5C6pcihRIPTzSanU3lbJFb75q2SwgX7mUa/17oY/8wIgKePzL+uXo93u1cM3 +rNxJ6out902xEQqEHd0o4JeBb0kCIAVi0VIQk0FdVFMrjZI2xnaEn/3EvA7CcfZ6 +lPxDjezd +-----END PRIVATE KEY----- +`.trim(); + let data = ` +NodeRsa +这是node-rsa 现在修改集成在drpy里使用`.trim(); + let encryptedWithPublic = NODERSA.encryptRSAWithPublicKey(data, pkcs1_public, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("公钥加密"); + console.log(encryptedWithPublic); + let decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey(encryptedWithPublic, pkcs1_private, { + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("私钥解密"); + console.log(decryptedWithPrivate); + let pkcs1_sha256_sign = NODERSA.sign("1", pkcs1_private, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: "pkcs1", + signingScheme: "pkcs1-sha256" + } + }); + console.log("pkcs1_sha256_sign"); + console.log(pkcs1_sha256_sign); + let pkcs1_sha256_sign_verify = NODERSA.verify("1", "Oulx2QrgeipKYBtqEDqFb2s/+ndk2cGQxO4CkhU7iBM1vyNmmvqubpsmeoUuN3waGrYZLknSEdwBkfv0tUMpFQ==", pkcs1_private, { + options: { + environment: "browser", + encryptionScheme: "pkcs1", + signingScheme: "pkcs1-sha256" + } + }); + console.log("pkcs1_sha256_sign_verify"); + console.log(pkcs1_sha256_sign_verify); + let pkcs1_oaep_sha256 = NODERSA.encryptRSAWithPublicKey(data, `-----BEGIN RSA PUBLIC KEY----- +MIIBCgKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7IsT1du +SYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7Sxhdm +kte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy3zD8 +PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+HP+m +PfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEAApRb +Dd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQAB +-----END RSA PUBLIC KEY----- +`, { + outputEncoding: "base64", + options: { + environment: "browser", + encryptionScheme: { + scheme: "pkcs1_oaep", + hash: "sha256" + } + } + }); + console.log("pkcs1_oaep_sha256"); + console.log(pkcs1_oaep_sha256); + decryptedWithPrivate = NODERSA.decryptRSAWithPrivateKey("kSZesAAyYh2hdsQnYMdGqb6gKAzTauBKouvBzWcc4+F8RvGd0nwO6mVkUMVilPgUuNxjEauHayHiY8gI3Py45UI3+km0rSGyHrS6dHiHgCkMejXHieglYzAB0IxX3Jkm4z/66bdB/D+GFy0oct5fGCMI1UHPjEAYOsazJDa8lBFNbjiWFeb/qiZtIx3vGM7KYPAZzyRf/zPbbQ8zy9xOmRuOl5nnIxgo0Okp3KO/RIPO4GZOSBA8f2lx1UtNwwrXAMpcNavtoqHVcjJ/9lcotXYQFrn5b299pSIRf2gVm8ZJ31SK6Z8cc14nKtvgnmsgClDzIXJ1o1RcDK+knVAySg==", `-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEA5KOq1gRNyllLNWKQy8sGpZE3Q1ULLSmzZw+eaAhj9lvqn7Is +T1duSYn08FfoOA2qMwtz+1O2l1mgzNoSVCyVpVabnTG+C9XKeZXAnJHd8aYA7l7S +xhdmkte+iymYZ0ZBPzijo8938iugtVvqi9UgDmnY3u/NlQDqiL5BGqSxSTd/Sgmy +3zD8PYzEa3wD9vehQ5fZZ45vKIq8GNVh2Z8+IGO85FF1OsN7+b2yGJa/FmDDNn0+ +HP+mPfI+kYBqEVpo0Ztbc3UdxgFwGC8O1n8AQyriwHnSOtIiuBH62J/7qyC/3LEA +ApRbDd9YszqzmODjQUddZKHmvc638VW+azc0EwIDAQABAoIBADZ/QGgUzInvsLp/ +zO2WbfYm39o/uhNAvk9RbLt1TIZbMFhyOpeKynHi3Swwd9xsfWX/U9zS/lGi/m31 +iKrhmaW4OA1G3vqpMcK7TBbFufYwUEaA+ZJX344euH8pIfdzyneMQ4z3Far2dS7l +QsmjuilVV2kEFadveXewiYoVOWCu00w6bN8wy2SIHlQn+kIL6HQhWz12iKKflIKu +eGRdzLHsKmBt6WbY1Wuhx7HU0fAKdlBDPxCHNlI+kybUYE9o5C2vJiaVM5wqJBgZ +8Dz8kt1QbLJ910JoLXkLVQ8uC8NJKQwFtqQjTGPnEq0+wbgz6Ij599rKZkwW/xq9 +l6KoUiECgYEA6Ah42tVdkNW047f03xVYXFH96RgorHRS36mR8Y+ONUq1fwKidovC +WjwVujt4OPf3l1W6iyn/F6cu/bsmvPrSc3HTN0B1V31QK4OjgetxQ2PSbTldH02J +NPzkt+v+cPxXpx/P5mgt7Weefw5txU547KubGrHUV5rBKFtIx9pj16MCgYEA/EF0 +o19+D24DZAPwlDS5VbEd7FStnwY4oQ5PqbuNOSbSJLMWU0AqzXcRokp8UTyCZ0X3 +ATkS1REq97kShCuR+npTR6a6DlY7sdpPI1SMLNajgB2tkx0EOzX+PfNIbHUd4jpJ +I0ZMAHv/OOtkzQHDaeTWBTrzsWm6/nTiykfduNECgYEA46AMD4HpPECqKAs66e5i +tI6q7JSKskObWVdcmQEfnSAhVOwcvPb2Ptda6UuV8S0xcwDi88rLOUUFUFzc79+P +vTkY38cYVi/VChsluDpk7ptqv0PbGu5Rf+3n4pZdEjI7OvR2W64wAAn67uIUxc7p +yiO/ET0K9rYWb6S9jXGtKMkCgYEA2kPAqoO7zZoBMQ7/oR0lp/HC1HRIbiqx4RlC +8Lgpb+QZPEwA6zPAVVvLVENi4d+bbcRp/xLlKpraNNJcJSSWAMbLPFoU7sbKjA87 +HnTPfRSTEA2d3Ibk3F7Rh8TzS3Ti0JZiJjVzGZAwu41iAMifzwaD8K6boUy80eNN +QH2CaaECgYBUsLYvC/MiYg3w+LGOONuQongoVUXjGqnw2bjVa9RK7lwRdXPUqJ51 +MpVO98IkoLvGSI/0sGNP3GKNhC+eMGjJAVwFyEuOn+JsmMv9Y9uStIVi5tIHIhKw +m7mp8il0kaftHdSxTbspG3tZ2fjIiFIZkLEOmRpd7ogWumgOajzUdA== +-----END RSA PRIVATE KEY-----`, { + options: { + environment: "browser", + encryptionScheme: "pkcs1_oaep" + } + }); + console.log("decryptedWithPrivate"); + console.log(decryptedWithPrivate); + (() => { + let key = new NODERSA.NodeRSA({ + b: 1024 + }); + key.setOptions({ + encryptionScheme: "pkcs1" + }); + let text = `你好drpy node-ras`; + let encrypted = key.encrypt(text, "base64"); + console.log("encrypted: ", encrypted); + const decrypted = key.decrypt(encrypted, "utf8"); + console.log("decrypted: ", decrypted) + })(); + let t2 = (new Date).getTime(); + console.log("rsa_demo_test 测试耗时:" + (t2 - t1) + "毫秒") +} + +function pre() { + if (typeof rule.预处理 === "string" && rule.预处理 && rule.预处理.trim()) { + let code = rule.预处理.trim(); + console.log("执行预处理代码:" + code); + if (code.startsWith("js:")) { + code = code.replace("js:", "") + } + try { + eval(code) + } catch (e) { + console.log(`预处理执行失败:${e.message}`) + } + } +} +let rule = {}; +const MOBILE_UA = "Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36"; +const PC_UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36"; +const UA = "Mozilla/5.0"; +const UC_UA = "Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36"; +const IOS_UA = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1"; +const RULE_CK = "cookie"; +const CATE_EXCLUDE = "首页|留言|APP|下载|资讯|新闻|动态"; +const TAB_EXCLUDE = "猜你|喜欢|下载|剧情|榜|评论"; +const OCR_RETRY = 3; +const OCR_API = "https://api.nn.ci/ocr/b64/text"; +if (typeof MY_URL === "undefined") { + var MY_URL +} +var HOST; +var RKEY; +var fetch; +var print; +var log; +var rule_fetch_params; +var fetch_params; +var oheaders; +var _pdfh; +var _pdfa; +var _pd; +const DOM_CHECK_ATTR = /(url|src|href|-original|-src|-play|-url|style)$/; +const SPECIAL_URL = /^(ftp|magnet|thunder|ws):/; +const NOADD_INDEX = /:eq|:lt|:gt|:first|:last|^body$|^#/; +const URLJOIN_ATTR = /(url|src|href|-original|-src|-play|-url|style)$|^(data-|url-|src-)/; +const SELECT_REGEX = /:eq|:lt|:gt|#/g; +const SELECT_REGEX_A = /:eq|:lt|:gt/g; +const $js = { + toString(func) { + let strfun = func.toString(); + return strfun.replace(/^\(\)(\s+)?=>(\s+)?\{/, "js:").replace(/\}$/, "") + } +}; + +function window_b64() { + let b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + let base64DecodeChars = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); + + function btoa(str) { + var out, i, len; + var c1, c2, c3; + len = str.length; + i = 0; + out = ""; + while (i < len) { + c1 = str.charCodeAt(i++) & 255; + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4); + out += "=="; + break + } + c2 = str.charCodeAt(i++); + if (i == len) { + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4); + out += b64map.charAt((c2 & 15) << 2); + out += "="; + break + } + c3 = str.charCodeAt(i++); + out += b64map.charAt(c1 >> 2); + out += b64map.charAt((c1 & 3) << 4 | (c2 & 240) >> 4); + out += b64map.charAt((c2 & 15) << 2 | (c3 & 192) >> 6); + out += b64map.charAt(c3 & 63) + } + return out + } + + function atob(str) { + var c1, c2, c3, c4; + var i, len, out; + len = str.length; + i = 0; + out = ""; + while (i < len) { + do { + c1 = base64DecodeChars[str.charCodeAt(i++) & 255] + } while (i < len && c1 == -1); + if (c1 == -1) break; + do { + c2 = base64DecodeChars[str.charCodeAt(i++) & 255] + } while (i < len && c2 == -1); + if (c2 == -1) break; + out += String.fromCharCode(c1 << 2 | (c2 & 48) >> 4); + do { + c3 = str.charCodeAt(i++) & 255; + if (c3 == 61) return out; + c3 = base64DecodeChars[c3] + } while (i < len && c3 == -1); + if (c3 == -1) break; + out += String.fromCharCode((c2 & 15) << 4 | (c3 & 60) >> 2); + do { + c4 = str.charCodeAt(i++) & 255; + if (c4 == 61) return out; + c4 = base64DecodeChars[c4] + } while (i < len && c4 == -1); + if (c4 == -1) break; + out += String.fromCharCode((c3 & 3) << 6 | c4) + } + return out + } + return { + atob: atob, + btoa: btoa + } +} +if (typeof atob !== "function" || typeof btoa !== "function") { + var { + atob, + btoa + } = window_b64() +} +if (typeof Object.assign !== "function") { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; i < arguments.length; i++) { + let source = arguments[i]; + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key] + } + } + } + return target + } +} +if (!String.prototype.includes) { + String.prototype.includes = function(search, start) { + if (typeof start !== "number") { + start = 0 + } + if (start + search.length > this.length) { + return false + } else { + return this.indexOf(search, start) !== -1 + } + } +} +if (!Array.prototype.includes) { + Object.defineProperty(Array.prototype, "includes", { + value: function(searchElement, fromIndex) { + if (this == null) { + throw new TypeError('"this" is null or not defined') + } + var o = Object(this); + var len = o.length >>> 0; + if (len === 0) { + return false + } + var n = fromIndex | 0; + var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); + while (k < len) { + if (o[k] === searchElement) { + return true + } + k++ + } + return false + }, + enumerable: false + }) +} +if (typeof String.prototype.startsWith !== "function") { + String.prototype.startsWith = function(prefix) { + return this.slice(0, prefix.length) === prefix + } +} +if (typeof String.prototype.endsWith !== "function") { + String.prototype.endsWith = function(suffix) { + return this.indexOf(suffix, this.length - suffix.length) !== -1 + } +} +Object.defineProperty(Object.prototype, "myValues", { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + }, + enumerable: false +}); +if (typeof Object.prototype.values !== "function") { + Object.defineProperty(Object.prototype, "values", { + value: function(obj) { + if (obj == null) { + throw new TypeError("Cannot convert undefined or null to object") + } + var res = []; + for (var k in obj) { + if (obj.hasOwnProperty(k)) { + res.push(obj[k]) + } + } + return res + }, + enumerable: false + }) +} +if (typeof Array.prototype.join !== "function") { + Object.defineProperty(Array.prototype, "join", { + value: function(emoji) { + emoji = emoji || ""; + let self = this; + let str = ""; + let i = 0; + if (!Array.isArray(self)) { + throw String(self) + "is not Array" + } + if (self.length === 0) { + return "" + } + if (self.length === 1) { + return String(self[0]) + } + i = 1; + str = this[0]; + for (; i < self.length; i++) { + str += String(emoji) + String(self[i]) + } + return str + }, + enumerable: false + }) +} +if (typeof Array.prototype.toReversed !== "function") { + Object.defineProperty(Array.prototype, "toReversed", { + value: function() { + const clonedList = this.slice(); + const reversedList = clonedList.reverse(); + return reversedList + }, + enumerable: false + }) +} +Object.defineProperty(Array.prototype, "append", { + value: Array.prototype.push, + enumerable: false +}); +Object.defineProperty(String.prototype, "strip", { + value: String.prototype.trim, + enumerable: false +}); +Object.defineProperty(String.prototype, "rstrip", { + value: function(chars) { + let regex = new RegExp(chars + "$"); + return this.replace(regex, "") + }, + enumerable: false +}); + +function 是否正版(vipUrl) { + let flag = new RegExp("qq.com|iqiyi.com|youku.com|mgtv.com|bilibili.com|sohu.com|ixigua.com|pptv.com|miguvideo.com|le.com|1905.com|fun.tv"); + return flag.test(vipUrl) +} + +function urlDeal(vipUrl) { + if (!vipUrl) { + return "" + } + if (!是否正版(vipUrl)) { + return vipUrl + } + if (!/miguvideo/.test(vipUrl)) { + vipUrl = vipUrl.split("#")[0].split("?")[0] + } + return vipUrl +} + +function setResult(d) { + if (!Array.isArray(d)) { + return [] + } + VODS = []; + d.forEach(function(it) { + let obj = { + vod_id: it.url || "", + vod_name: it.title || "", + vod_remarks: it.desc || "", + vod_content: it.content || "", + vod_pic: it.pic_url || it.img || "" + }; + let keys = Object.keys(it); + if (keys.includes("tname")) { + obj.type_name = it.tname || "" + } + if (keys.includes("tid")) { + obj.type_id = it.tid || "" + } + if (keys.includes("year")) { + obj.vod_year = it.year || "" + } + if (keys.includes("actor")) { + obj.vod_actor = it.actor || "" + } + if (keys.includes("director")) { + obj.vod_director = it.director || "" + } + if (keys.includes("area")) { + obj.vod_area = it.area || "" + } + VODS.push(obj) + }); + return VODS +} + +function setResult2(res) { + VODS = res.list || []; + return VODS +} + +function setHomeResult(res) { + if (!res || typeof res !== "object") { + return [] + } + return setResult(res.list) +} + +function rc(js) { + if (js === "maomi_aes.js") { + var a = CryptoJS.enc.Utf8.parse("625222f9149e961d"); + var t = CryptoJS.enc.Utf8.parse("5efdtf6060e2o330"); + return { + De: function(word) { + word = CryptoJS.enc.Hex.parse(word); + return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + }, + En: function(word) { + var Encrypted = CryptoJS.AES.encrypt(word, a, { + iv: t, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return Encrypted.ciphertext.toString() + } + } + } + return {} +} + +function maoss(jxurl, ref, key) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + eval(getCryptoJS()); + try { + var getVideoInfo = function(text) { + return CryptoJS.AES.decrypt(text, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + }; + var token_key = key == undefined ? "dvyYRQlnPRCMdQSe" : key; + if (ref) { + var html = request(jxurl, { + headers: { + Referer: ref + } + }) + } else { + var html = request(jxurl) + } + if (html.indexOf("&btwaf=") != -1) { + html = request(jxurl + "&btwaf" + html.match(/&btwaf(.*?)"/)[1], { + headers: { + Referer: ref + } + }) + } + var token_iv = html.split('_token = "')[1].split('"')[0]; + var key = CryptoJS.enc.Utf8.parse(token_key); + var iv = CryptoJS.enc.Utf8.parse(token_iv); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ""); + if (!config.url.startsWith("http")) { + config.url = CryptoJS.AES.decrypt(config.url, key, { + iv: iv, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8) + } + return config.url + } catch (e) { + return "" + } +} + +function urlencode(str) { + str = (str + "").toString(); + return encodeURIComponent(str).replace(/!/g, "%21").replace(/'/g, "%27").replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/\*/g, "%2A").replace(/%20/g, "+") +} + +function encodeUrl(str) { + if (typeof encodeURI == "function") { + return encodeURI(str) + } else { + str = (str + "").toString(); + return encodeURIComponent(str).replace(/%2F/g, "/").replace(/%3F/g, "?").replace(/%3A/g, ":").replace(/%40/g, "@").replace(/%3D/g, "=").replace(/%3A/g, ":").replace(/%2C/g, ",").replace(/%2B/g, "+").replace(/%24/g, "$") + } +} + +function base64Encode(text) { + return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text)) +} + +function base64Decode(text) { + return CryptoJS.enc.Utf8.stringify(CryptoJS.enc.Base64.parse(text)) +} + +function md5(text) { + return CryptoJS.MD5(text).toString() +} + +function uint8ArrayToBase64(uint8Array) { + let binaryString = String.fromCharCode.apply(null, Array.from(uint8Array)); + return btoa(binaryString) +} + +function Utf8ArrayToStr(array) { + var out, i, len, c; + var char2, char3; + out = ""; + len = array.length; + i = 0; + while (i < len) { + c = array[i++]; + switch (c >> 4) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + out += String.fromCharCode(c); + break; + case 12: + case 13: + char2 = array[i++]; + out += String.fromCharCode((c & 31) << 6 | char2 & 63); + break; + case 14: + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode((c & 15) << 12 | (char2 & 63) << 6 | (char3 & 63) << 0); + break + } + } + return out +} + +function gzip(str) { + let arr = pako.gzip(str, {}); + return uint8ArrayToBase64(arr) +} + +function ungzip(b64Data) { + let strData = atob(b64Data); + const charData = strData.split("").map(function(x) { + return x.charCodeAt(0) + }); + const binData = new Uint8Array(charData); + const data = pako.inflate(binData); + return Utf8ArrayToStr(data) +} + +function encodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.encode(input) + } + return input +} + +function decodeStr(input, encoding) { + encoding = encoding || "gbk"; + if (encoding.startsWith("gb")) { + const strTool = gbkTool(); + input = strTool.decode(input) + } + return input +} + +function getCryptoJS() { + return 'console.log("CryptoJS已装载");' +} +const RSA = { + decode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let privateKey = this.getPrivateKey(key); + const decryptor = new JSEncrypt; + decryptor.setPrivateKey(privateKey); + let uncrypted = ""; + uncrypted = decryptor.decryptUnicodeLong(data); + return uncrypted + } else { + return false + } + }, + encode: function(data, key, option) { + option = option || {}; + if (typeof JSEncrypt === "function") { + let chunkSize = option.chunkSize || 117; + let publicKey = this.getPublicKey(key); + const encryptor = new JSEncrypt; + encryptor.setPublicKey(publicKey); + let encrypted = ""; + encrypted = encryptor.encryptUnicodeLong(data); + return encrypted + } else { + return false + } + }, + fixKey(key, prefix, endfix) { + if (!key.includes(prefix)) { + key = prefix + key + } + if (!key.includes(endfix)) { + key += endfix + } + return key + }, + getPrivateKey(key) { + let prefix = "-----BEGIN RSA PRIVATE KEY-----"; + let endfix = "-----END RSA PRIVATE KEY-----"; + return this.fixKey(key, prefix, endfix) + }, + getPublicKey(key) { + let prefix = "-----BEGIN PUBLIC KEY-----"; + let endfix = "-----END PUBLIC KEY-----"; + return this.fixKey(key, prefix, endfix) + } +}; + +function getProxyUrl() { + if (typeof getProxy === "function") { + return getProxy(true) + } else { + return "http://127.0.0.1:9978/proxy?do=js" + } +} + +function fixAdM3u8(m3u8_text, m3u8_url, ad_remove) { + if (!m3u8_text && !m3u8_url || !m3u8_text && m3u8_url && !m3u8_url.startsWith("http")) { + return "" + } + if (!m3u8_text) { + log("m3u8_url:" + m3u8_url); + m3u8_text = request(m3u8_url) + } + log("len(m3u8_text):" + m3u8_text.length); + if (!ad_remove) { + return m3u8_text + } + if (ad_remove.startsWith("reg:")) { + ad_remove = ad_remove.slice(4) + } else if (ad_remove.startsWith("js:")) { + ad_remove = ad_remove.slice(3) + } + let m3u8_start = m3u8_text.slice(0, m3u8_text.indexOf("#EXTINF")).trim(); + let m3u8_body = m3u8_text.slice(m3u8_text.indexOf("#EXTINF"), m3u8_text.indexOf("#EXT-X-ENDLIST")).trim(); + let m3u8_end = m3u8_text.slice(m3u8_text.indexOf("#EXT-X-ENDLIST")).trim(); + let murls = []; + let m3_body_list = m3u8_body.split("\n"); + let m3_len = m3_body_list.length; + let i = 0; + while (i < m3_len) { + let mi = m3_body_list[i]; + let mi_1 = m3_body_list[i + 1]; + if (mi.startsWith("#EXTINF")) { + murls.push([mi, mi_1].join("&")); + i += 2 + } else if (mi.startsWith("#EXT-X-DISCONTINUITY")) { + let mi_2 = m3_body_list[i + 2]; + murls.push([mi, mi_1, mi_2].join("&")); + i += 3 + } else { + break + } + } + let new_m3u8_body = []; + for (let murl of murls) { + if (ad_remove && new RegExp(ad_remove).test(murl)) {} else { + let murl_list = murl.split("&"); + if (!murl_list[murl_list.length - 1].startsWith("http") && m3u8_url.startsWith("http")) { + murl_list[murl_list.length - 1] = urljoin(m3u8_url, murl_list[murl_list.length - 1]) + } + murl_list.forEach(it => { + new_m3u8_body.push(it) + }) + } + } + new_m3u8_body = new_m3u8_body.join("\n").trim(); + m3u8_text = [m3u8_start, new_m3u8_body, m3u8_end].join("\n").trim(); + return m3u8_text +} + +function fixAdM3u8Ai(m3u8_url, headers) { + let ts = (new Date).getTime(); + let option = headers ? { + headers: headers + } : {}; + + function b(s1, s2) { + let i = 0; + while (i < s1.length) { + if (s1[i] !== s2[i]) { + break + } + i++ + } + return i + } + + function reverseString(str) { + return str.split("").reverse().join("") + } + let m3u8 = request(m3u8_url, option); + m3u8 = m3u8.trim().split("\n").map(it => it.startsWith("#") ? it : urljoin(m3u8_url, it)).join("\n"); + m3u8 = m3u8.replace(/\n\n/gi, "\n"); + let last_url = m3u8.split("\n").slice(-1)[0]; + if (last_url.length < 5) { + last_url = m3u8.split("\n").slice(-2)[0] + } + if (last_url.includes(".m3u8") && last_url !== m3u8_url) { + m3u8_url = urljoin2(m3u8_url, last_url); + log("嵌套的m3u8_url:" + m3u8_url); + m3u8 = request(m3u8_url, option) + } + let s = m3u8.trim().split("\n").filter(it => it.trim()).join("\n"); + let ss = s.split("\n"); + let firststr = ""; + let maxl = 0; + let kk = 0; + let kkk = 2; + let secondstr = ""; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (kk == 0) firststr = s; + if (kk == 1) maxl = b(firststr, s); + if (kk > 1) { + if (maxl > b(firststr, s)) { + if (secondstr.length < 5) secondstr = s; + kkk = kkk + 2 + } else { + maxl = b(firststr, s); + kkk++ + } + } + kk++; + if (kk >= 20) break + } + } + if (kkk > 30) firststr = secondstr; + let firststrlen = firststr.length; + let ml = Math.round(ss.length / 2).toString().length; + let maxc = 0; + let laststr = ss.toReversed().find(x => { + if (!x.startsWith("#")) { + let k = b(reverseString(firststr), reverseString(x)); + maxl = b(firststr, x); + maxc++; + if (firststrlen - maxl <= ml + k || maxc > 10) { + return true + } + } + return false + }); + log("最后一条切片:" + laststr); + let ad_urls = []; + for (let i = 0; i < ss.length; i++) { + let s = ss[i]; + if (!s.startsWith("#")) { + if (b(firststr, s) < maxl) { + ad_urls.push(s); + ss.splice(i - 1, 2); + i = i - 2 + } else { + ss[i] = urljoin(m3u8_url, s) + } + } else { + ss[i] = s.replace(/URI=\"(.*)\"/, 'URI="' + urljoin(m3u8_url, "$1") + '"') + } + } + log("处理的m3u8地址:" + m3u8_url); + log("----广告地址----"); + log(ad_urls); + m3u8 = ss.join("\n"); + log("处理耗时:" + ((new Date).getTime() - ts).toString()); + return m3u8 +} + +function forceOrder(lists, key, option) { + let start = Math.floor(lists.length / 2); + let end = Math.min(lists.length - 1, start + 1); + if (start >= end) { + return lists + } + let first = lists[start]; + let second = lists[end]; + if (key) { + try { + first = first[key]; + second = second[key] + } catch (e) {} + } + if (option && typeof option === "function") { + try { + first = option(first); + second = option(second) + } catch (e) {} + } + first += ""; + second += ""; + if (first.match(/(\d+)/) && second.match(/(\d+)/)) { + let num1 = Number(first.match(/(\d+)/)[1]); + let num2 = Number(second.match(/(\d+)/)[1]); + if (num1 > num2) { + lists.reverse() + } + } + return lists +} +let VODS = []; +let VOD = {}; +let TABS = []; +let LISTS = []; + +function getQuery(url) { + try { + if (url.indexOf("?") > -1) { + url = url.slice(url.indexOf("?") + 1) + } + let arr = url.split("#")[0].split("&"); + const resObj = {}; + arr.forEach(item => { + let arr1 = item.split("="); + let key = arr1[0]; + let value = arr1.slice(1).join("="); + resObj[key] = value + }); + return resObj + } catch (err) { + log(`getQuery发生错误:${e.message}`); + return {} + } +} + +function urljoin(fromPath, nowPath) { + fromPath = fromPath || ""; + nowPath = nowPath || ""; + return joinUrl(fromPath, nowPath) +} +var urljoin2 = urljoin; +const defaultParser = { + pdfh: pdfh, + pdfa: pdfa, + pd: pd +}; + +function pdfh2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele).toString() + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`) + } + let result = defaultParser.pdfh(html2, parse); + let option = parse.includes("&&") ? parse.split("&&").slice(-1)[0] : parse.split(" ").slice(-1)[0]; + if (/style/.test(option.toLowerCase()) && /url\(/.test(result)) { + try { + result = result.match(/url\((.*?)\)/)[1]; + result = result.replace(/^['|"](.*)['|"]$/, "$1") + } catch (e) {} + } + return result +} + +function pdfa2(html, parse) { + let html2 = html; + try { + if (typeof html !== "string") { + html2 = html.rr(html.ele).toString() + } + } catch (e) { + print(`html对象转文本发生了错误:${e.message}`) + } + return defaultParser.pdfa(html2, parse) +} + +function pd2(html, parse, uri) { + let ret = pdfh2(html, parse); + if (typeof uri === "undefined" || !uri) { + uri = "" + } + if (DOM_CHECK_ATTR.test(parse) && !SPECIAL_URL.test(ret)) { + if (/http/.test(ret)) { + ret = ret.slice(ret.indexOf("http")) + } else { + ret = urljoin(MY_URL, ret) + } + } + return ret +} +const parseTags = { + jsp: { + pdfh: pdfh2, + pdfa: pdfa2, + pd: pd2 + }, + json: { + pdfh(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + parse = parse.split("||"); + for (let ps of parse) { + let ret = cheerio.jp(ps, html); + if (Array.isArray(ret)) { + ret = ret[0] || "" + } else { + ret = ret || "" + } + if (ret && typeof ret !== "string") { + ret = ret.toString() + } + if (ret) { + return ret + } + } + return "" + }, + pdfa(html, parse) { + if (!parse || !parse.trim()) { + return "" + } + if (typeof html === "string") { + html = JSON.parse(html) + } + parse = parse.trim(); + if (!parse.startsWith("$.")) { + parse = "$." + parse + } + let ret = cheerio.jp(parse, html); + if (Array.isArray(ret) && Array.isArray(ret[0]) && ret.length === 1) { + return ret[0] || [] + } + return ret || [] + }, + pd(html, parse) { + let ret = parseTags.json.pdfh(html, parse); + if (ret) { + return urljoin(MY_URL, ret) + } + return ret + } + }, + jq: { + pdfh(html, parse) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + let result = defaultParser.pdfh(html, parse); + return result + }, + pdfa(html, parse) { + if (!html || !parse || !parse.trim()) { + return [] + } + parse = parse.trim(); + let result = defaultParser.pdfa(html, parse); + print(`pdfa解析${parse}=>${result.length}`); + return result + }, + pd(html, parse, base_url) { + if (!html || !parse || !parse.trim()) { + return "" + } + parse = parse.trim(); + base_url = base_url || MY_URL; + return defaultParser.pd(html, parse, base_url) + } + }, + getParse(p0) { + if (p0.startsWith("jsp:")) { + return this.jsp + } else if (p0.startsWith("json:")) { + return this.json + } else if (p0.startsWith("jq:")) { + return this.jq + } else { + return this.jq + } + } +}; +const stringify = JSON.stringify; +const jsp = parseTags.jsp; +const jq = parseTags.jq; + +function readFile(filePath) { + filePath = filePath || "./uri.min.js"; + var fd = os.open(filePath); + var buffer = new ArrayBuffer(1024); + var len = os.read(fd, buffer, 0, 1024); + console.log(len); + let text = String.fromCharCode.apply(null, new Uint8Array(buffer)); + console.log(text); + return text +} + +function dealJson(html) { + try { + html = html.trim(); + if (!(html.startsWith("{") && html.endsWith("}") || html.startsWith("[") && html.endsWith("]"))) { + html = "{" + html.match(/.*?\{(.*)\}/m)[1] + "}" + } + } catch (e) {} + try { + html = JSON.parse(html) + } catch (e) {} + return html +} +var OcrApi = { + api: OCR_API, + classification: function(img) { + let code = ""; + try { + log("通过drpy_ocr验证码接口过验证..."); + let html = ""; + if (this.api.endsWith("drpy/text")) { + html = request(this.api, { + data: { + img: img + }, + headers: { + "User-Agent": PC_UA + }, + method: "POST" + }, true) + } else { + html = post(this.api, { + body: img + }) + } + code = html || "" + } catch (e) { + log(`OCR识别验证码发生错误:${e.message}`) + } + return code + } +}; + +function verifyCode(url) { + let cnt = 0; + let host = getHome(url); + let cookie = ""; + while (cnt < OCR_RETRY) { + try { + let yzm_url = `${host}/index.php/verify/index.html`; + console.log(`验证码链接:${yzm_url}`); + let hhtml = request(yzm_url, { + withHeaders: true, + toBase64: true + }, true); + let json = JSON.parse(hhtml); + if (!cookie) { + let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie"); + cookie = setCk ? json[setCk].split(";")[0] : "" + } + console.log("cookie:" + cookie); + let img = json.body; + let code = OcrApi.classification(img); + console.log(`第${cnt+1}次验证码识别结果:${code}`); + let submit_url = `${host}/index.php/ajax/verify_check?type=search&verify=${code}`; + console.log(submit_url); + let html = request(submit_url, { + headers: { + Cookie: cookie + }, + method: "POST" + }); + html = JSON.parse(html); + if (html.msg === "ok") { + console.log(`第${cnt+1}次验证码提交成功`); + return cookie + } else if (html.msg !== "ok" && cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } catch (e) { + console.log(`第${cnt+1}次验证码提交失败:${e.message}`); + if (cnt + 1 >= OCR_RETRY) { + cookie = "" + } + } + cnt += 1 + } + return cookie +} + +function setItem(k, v) { + local.set(RKEY, k, v); + console.log(`规则${RKEY}设置${k} => ${v}`) +} + +function getItem(k, v) { + return local.get(RKEY, k) || v +} + +function clearItem(k) { + local.delete(RKEY, k) +} + +function getHome(url) { + if (!url) { + return "" + } + let tmp = url.split("//"); + url = tmp[0] + "//" + tmp[1].split("/")[0]; + try { + url = decodeURIComponent(url) + } catch (e) {} + return url +} + +function buildUrl(url, obj) { + obj = obj || {}; + if (url.indexOf("?") < 0) { + url += "?" + } + let param_list = []; + let keys = Object.keys(obj); + keys.forEach(it => { + param_list.push(it + "=" + obj[it]) + }); + let prs = param_list.join("&"); + if (keys.length > 0 && !url.endsWith("?")) { + url += "&" + } + url += prs; + return url +} + +function $require(url) { + eval(request(url)) +} + +function keysToLowerCase(obj) { + return Object.keys(obj).reduce((result, key) => { + const newKey = key.toLowerCase(); + result[newKey] = obj[key]; + return result + }, {}) +} + +function parseQueryString(query) { + const params = {}; + query.split("&").forEach(function(part) { + const regex = /^(.*?)=(.*)/; + const match = part.match(regex); + if (match) { + const key = decodeURIComponent(match[1]); + const value = decodeURIComponent(match[2]); + params[key] = value + } + }); + return params +} + +function encodeIfContainsSpecialChars(value) { + const specialChars = ":/?#[]@!$'()*+,;=%"; + if (specialChars.split("").some(char => value.includes(char))) { + return encodeURIComponent(value) + } + return value +} + +function objectToQueryString(obj) { + const encoded = []; + for (let key in obj) { + if (obj.hasOwnProperty(key)) { + encoded.push(encodeURIComponent(key) + "=" + encodeIfContainsSpecialChars(obj[key])) + } + } + return encoded.join("&") +} + +function request(url, obj, ocr_flag) { + ocr_flag = ocr_flag || false; + if (typeof obj === "undefined" || !obj || obj === {}) { + if (!fetch_params || !fetch_params.headers) { + let headers = { + "User-Agent": MOBILE_UA + }; + if (rule.headers) { + Object.assign(headers, rule.headers) + } + if (!fetch_params) { + fetch_params = {} + } + fetch_params.headers = headers + } + if (!fetch_params.headers.Referer) { + fetch_params.headers.Referer = getHome(url) + } + obj = fetch_params + } else { + let headers = obj.headers || {}; + let keys = Object.keys(headers).map(it => it.toLowerCase()); + if (!keys.includes("user-agent")) { + headers["User-Agent"] = MOBILE_UA; + if (typeof fetch_params === "object" && fetch_params && fetch_params.headers) { + let fetch_headers = keysToLowerCase(fetch_params.headers); + if (fetch_headers["user-agent"]) { + headers["User-Agent"] = fetch_headers["user-agent"] + } + } + } + if (!keys.includes("referer")) { + headers["Referer"] = getHome(url) + } + obj.headers = headers + } + if (rule.encoding && rule.encoding !== "utf-8" && !ocr_flag) { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "text/html; charset=" + rule.encoding + } + } + if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "string") { + if (!obj.headers.hasOwnProperty("Content-Type") && !obj.headers.hasOwnProperty("content-type")) { + obj.headers["Content-Type"] = "application/x-www-form-urlencoded; charset=" + rule.encoding + } + } else if (typeof obj.body != "undefined" && obj.body && typeof obj.body === "object") { + obj.data = obj.body; + delete obj.body + } + if (!url) { + return obj.withHeaders ? "{}" : "" + } + if (obj.toBase64) { + obj.buffer = 2; + delete obj.toBase64 + } + if (obj.redirect === false) { + obj.redirect = 0 + } + if (obj.headers.hasOwnProperty("Content-Type") || obj.headers.hasOwnProperty("content-type")) { + let _contentType = obj.headers["Content-Type"] || obj.headers["content-type"] || ""; + if (_contentType.includes("application/x-www-form-urlencoded")) { + log("custom body is application/x-www-form-urlencoded"); + if (typeof obj.body == "string") { + let temp_obj = parseQueryString(obj.body); + console.log(JSON.stringify(temp_obj)) + } + } + } + console.log(JSON.stringify(obj.headers)); + console.log("request:" + url + `|method:${obj.method||"GET"}|body:${obj.body||""}`); + let res = req(url, obj); + let html = res.content || ""; + if (obj.withHeaders) { + let htmlWithHeaders = res.headers; + htmlWithHeaders.body = html; + return JSON.stringify(htmlWithHeaders) + } else { + return html + } +} + +function post(url, obj) { + obj = obj || {}; + obj.method = "POST"; + return request(url, obj) +} + +function reqCookie(url, obj, all_cookie) { + obj = obj || {}; + obj.withHeaders = true; + all_cookie = all_cookie || false; + let html = request(url, obj); + let json = JSON.parse(html); + let setCk = Object.keys(json).find(it => it.toLowerCase() === "set-cookie"); + let cookie = setCk ? json[setCk] : ""; + if (Array.isArray(cookie)) { + cookie = cookie.join(";") + } + if (!all_cookie) { + cookie = cookie.split(";")[0] + } + html = json.body; + return { + cookie: cookie, + html: html + } +} +fetch = request; +print = function(data) { + data = data || ""; + if (typeof data == "object" && Object.keys(data).length > 0) { + try { + data = JSON.stringify(data); + console.log(data) + } catch (e) { + console.log(typeof data + ":" + data.length); + return + } + } else if (typeof data == "object" && Object.keys(data).length < 1) { + console.log("null object") + } else { + console.log(data) + } +}; +log = print; + +function checkHtml(html, url, obj) { + if (/\?btwaf=/.test(html)) { + let btwaf = html.match(/btwaf(.*?)"/)[1]; + url = url.split("#")[0] + "?btwaf" + btwaf; + print("宝塔验证访问链接:" + url); + html = request(url, obj) + } + return html +} + +function getCode(url, obj) { + let html = request(url, obj); + html = checkHtml(html, url, obj); + return html +} + +function getHtml(url) { + let obj = {}; + if (rule.headers) { + obj.headers = rule.headers + } + let cookie = getItem(RULE_CK, ""); + if (cookie) { + if (obj.headers && !Object.keys(obj.headers).map(it => it.toLowerCase()).includes("cookie")) { + log("历史无cookie,新增过验证后的cookie"); + obj.headers["Cookie"] = cookie + } else if (obj.headers && obj.headers.cookie && obj.headers.cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有小写过期的cookie,更新过验证后的cookie") + } else if (obj.headers && obj.headers.Cookie && obj.headers.Cookie !== cookie) { + obj.headers["Cookie"] = cookie; + log("历史有大写过期的cookie,更新过验证后的cookie") + } else if (!obj.headers) { + obj.headers = { + Cookie: cookie + }; + log("历史无headers,更新过验证后的含cookie的headers") + } + } + let html = getCode(url, obj); + return html +} + +function homeParse(homeObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let classes = []; + if (homeObj.class_name && homeObj.class_url) { + let names = homeObj.class_name.split("&"); + let urls = homeObj.class_url.split("&"); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + type_id: urls[i], + type_name: names[i] + }) + } + } + if (homeObj.class_parse) { + if (homeObj.class_parse.startsWith("js:")) { + var input = homeObj.MY_URL; + try { + eval(homeObj.class_parse.replace("js:", "")); + if (Array.isArray(input)) { + classes = input + } + } catch (e) { + log(`通过js动态获取分类发生了错误:${e.message}`) + } + } else { + let p = homeObj.class_parse.split(";"); + let p0 = p[0]; + let _ps = parseTags.getParse(p0); + let is_json = p0.startsWith("json:"); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + MY_URL = rule.url; + if (is_json) { + try { + let cms_cate_url = homeObj.MY_URL.replace("ac=detail", "ac=list"); + let html = homeObj.home_html || getHtml(cms_cate_url); + if (html) { + if (cms_cate_url === homeObj.MY_URL) { + homeHtmlCache = html + } + let list = _pdfa(html, p0.replace("json:", "")); + if (list && list.length > 0) { + classes = list + } + } + } catch (e) { + console.log(e.message) + } + } else if (p.length >= 3 && !is_json) { + try { + let html = homeObj.home_html || getHtml(homeObj.MY_URL); + if (html) { + homeHtmlCache = html; + let list = _pdfa(html, p0); + if (list && list.length > 0) { + list.forEach((it, idex) => { + try { + let name = _pdfh(it, p[1]); + if (homeObj.cate_exclude && new RegExp(homeObj.cate_exclude).test(name)) { + return + } + let url = _pd(it, p[2]); + if (p.length > 3 && p[3] && !homeObj.home_html) { + let exp = new RegExp(p[3]); + url = url.match(exp)[1] + } + classes.push({ + type_id: url.trim(), + type_name: name.trim() + }) + } catch (e) { + console.log(`分类列表定位第${idex}个元素正常报错:${e.message}`) + } + }) + } + } + } catch (e) { + console.log(e.message) + } + } + } + } + classes = classes.filter(it => !homeObj.cate_exclude || !new RegExp(homeObj.cate_exclude).test(it.type_name)); + let resp = { + class: classes + }; + if (homeObj.filter) { + resp.filters = homeObj.filter + } + console.log(JSON.stringify(resp)); + return JSON.stringify(resp) +} + +function getPP(p, pn, pp, ppn) { + try { + let ps = p[pn] === "*" && pp.length > ppn ? pp[ppn] : p[pn]; + return ps + } catch (e) { + return "" + } +} + +function homeVodParse(homeVodObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + MY_URL = homeVodObj.homeUrl; + console.log(MY_URL); + let t1 = (new Date).getTime(); + let p = homeVodObj.推荐; + print("p:" + p); + if (p === "*" && rule.一级) { + p = rule.一级; + homeVodObj.double = false + } + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(";") : []; + if (p.startsWith("js:")) { + const TYPE = "home"; + var input = MY_URL; + HOST = rule.host; + eval(p.replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (!homeVodObj.double && p.length < 5) { + return "{}" + } else if (homeVodObj.double && p.length < 6) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + let html = homeHtmlCache || getHtml(MY_URL); + homeHtmlCache = undefined; + if (is_json) { + html = dealJson(html) + } + try { + console.log("double:" + homeVodObj.double); + if (homeVodObj.double) { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 0); + let p2 = getPP(p, 2, pp, 1); + let p3 = getPP(p, 3, pp, 2); + let p4 = getPP(p, 4, pp, 3); + let p5 = getPP(p, 5, pp, 4); + let p6 = getPP(p, 6, pp, 5); + for (let item of items) { + let items2 = _pdfa(item, p1); + for (let item2 of items2) { + try { + let title = _pdfh(item2, p2); + let img = ""; + try { + img = _pd(item2, p3) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item2, p4) + } catch (e) {} + let links = []; + for (let _p5 of p5.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item2, _p5, MY_URL) : _pdfh(item2, _p5); + links.push(link) + } + let content; + if (p.length > 6 && p[6]) { + content = _pdfh(item2, p6) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log(`首页列表双层定位处理发生错误:${e.message}`) + } + } + } + } else { + let items = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + for (let item of items) { + try { + let title = _pdfh(item, p1); + let img = ""; + try { + img = _pd(item, p2, MY_URL) + } catch (e) {} + let desc = ""; + try { + desc = _pdfh(item, p3) + } catch (e) {} + let links = []; + for (let _p5 of p4.split("+")) { + let link = !homeVodObj.detailUrl ? _pd(item, _p5, MY_URL) : _pdfh(item, _p5); + links.push(link) + } + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(item, p5) + } else { + content = "" + } + let vid = links.join("$"); + if (rule.二级 === "*") { + vid = vid + "@@" + title + "@@" + img + } + let vod = { + vod_name: title, + vod_pic: img, + vod_remarks: desc, + vod_content: content, + vod_id: vid + }; + d.push(vod) + } catch (e) { + console.log(`首页列表单层定位处理发生错误:${e.message}`) + } + } + } + } catch (e) {} + } + let t2 = (new Date).getTime(); + console.log("加载首页推荐耗时:" + (t2 - t1) + "毫秒"); + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + return JSON.stringify({ + list: d + }) +} + +function categoryParse(cateObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let p = cateObj.一级; + if (!p || typeof p !== "string") { + return "{}" + } + let d = []; + let url = cateObj.url.replaceAll("fyclass", cateObj.tid); + if (cateObj.pg === 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[1].split("]")[0] + } else if (cateObj.pg > 1 && url.includes("[") && url.includes("]")) { + url = url.split("[")[0] + } + if (rule.filter_url) { + if (!/fyfilter/.test(url)) { + if (!url.endsWith("&") && !rule.filter_url.startsWith("&")) { + url += "&" + } + url += rule.filter_url + } else { + url = url.replace("fyfilter", rule.filter_url) + } + url = url.replaceAll("fyclass", cateObj.tid); + let fl = cateObj.filter ? cateObj.extend : {}; + if (rule.filter_def && typeof rule.filter_def === "object") { + try { + if (Object.keys(rule.filter_def).length > 0 && rule.filter_def.hasOwnProperty(cateObj.tid)) { + let self_fl_def = rule.filter_def[cateObj.tid]; + if (self_fl_def && typeof self_fl_def === "object") { + let fl_def = JSON.parse(JSON.stringify(self_fl_def)); + fl = Object.assign(fl_def, fl) + } + } + } catch (e) { + print(`合并不同分类对应的默认筛选出错:${e.message}`) + } + } + let new_url; + new_url = cheerio.jinja2(url, { + fl: fl, + fyclass: cateObj.tid + }); + url = new_url + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", cateObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "") + } else { + url = url.replaceAll("fypage", cateObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + p = p.trim(); + const MY_CATE = cateObj.tid; + if (p.startsWith("js:")) { + var MY_FL = cateObj.extend; + const TYPE = "cate"; + var input = MY_URL; + const MY_PAGE = cateObj.pg; + var desc = ""; + eval(p.trim().replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let _ps = parseTags.getParse(p[0]); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p[0].startsWith("json:"); + p[0] = p[0].replace(/^(jsp:|json:|jq:)/, ""); + try { + let html = getHtml(MY_URL); + if (html) { + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p[0]); + list.forEach(it => { + let links = p[4].split("+").map(p4 => { + return !rule.detailUrl ? _pd(it, p4, MY_URL) : _pdfh(it, p4) + }); + let link = links.join("$"); + let vod_id = rule.detailUrl ? MY_CATE + "$" + link : link; + let vod_name = _pdfh(it, p[1]).replace(/\n|\t/g, "").trim(); + let vod_pic = _pd(it, p[2], MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + d.push({ + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p[3]).replace(/\n|\t/g, "").trim() + }) + }) + } + } catch (e) { + console.log(e.message) + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + if (d.length > 0) { + print(d.slice(0, 2)) + } + let pagecount = 0; + if (rule.pagecount && typeof rule.pagecount === "object" && rule.pagecount.hasOwnProperty(MY_CATE)) { + print(`MY_CATE:${MY_CATE},pagecount:${JSON.stringify(rule.pagecount)}`); + pagecount = parseInt(rule.pagecount[MY_CATE]) + } + let nodata = { + list: [{ + vod_name: "无数据,防无限请求", + vod_id: "no_data", + vod_remarks: "不要点,会崩的", + vod_pic: "https://ghproxy.net/https://raw.githubusercontent.com/hjdhnx/dr_py/main/404.jpg" + }], + total: 1, + pagecount: 1, + page: 1, + limit: 1 + }; + let vod = d.length < 1 ? JSON.stringify(nodata) : JSON.stringify({ + page: parseInt(cateObj.pg), + pagecount: pagecount || 999, + limit: 20, + total: 999, + list: d + }); + return vod +} + +function searchParse(searchObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let d = []; + if (!searchObj.searchUrl) { + return "{}" + } + if (rule.searchNoPage && Number(searchObj.pg) > 1) { + return "{}" + } + let p = searchObj.搜索 === "*" && rule.一级 ? rule.一级 : searchObj.搜索; + if (!p || typeof p !== "string") { + return "{}" + } + p = p.trim(); + let pp = rule.一级 ? rule.一级.split(";") : []; + let url = searchObj.searchUrl.replaceAll("**", searchObj.wd); + if (searchObj.pg === 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[1].split("]")[0] + } else if (searchObj.pg > 1 && url.includes("[") && url.includes("]") && !url.includes("#")) { + url = url.split("[")[0] + } + if (/fypage/.test(url)) { + if (url.includes("(") && url.includes(")")) { + let url_rep = url.match(/.*?\((.*)\)/)[1]; + let cnt_page = url_rep.replaceAll("fypage", searchObj.pg); + let cnt_pg = eval(cnt_page); + url = url.replaceAll(url_rep, cnt_pg).replaceAll("(", "").replaceAll(")", "") + } else { + url = url.replaceAll("fypage", searchObj.pg) + } + } + MY_URL = url; + console.log(MY_URL); + if (p.startsWith("js:")) { + const TYPE = "search"; + const MY_PAGE = searchObj.pg; + const KEY = searchObj.wd; + var input = MY_URL; + var detailUrl = rule.detailUrl || ""; + eval(p.trim().replace("js:", "")); + d = VODS + } else { + p = p.split(";"); + if (p.length < 5) { + return "{}" + } + let p0 = getPP(p, 0, pp, 0); + let _ps = parseTags.getParse(p0); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + let is_json = p0.startsWith("json:"); + p0 = p0.replace(/^(jsp:|json:|jq:)/, ""); + try { + let req_method = MY_URL.split(";").length > 1 ? MY_URL.split(";")[1].toLowerCase() : "get"; + let html; + if (req_method === "post") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`post=》rurl:${rurl},params:${params}`); + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else if (req_method === "postjson") { + let rurls = MY_URL.split(";")[0].split("#"); + let rurl = rurls[0]; + let params = rurls.length > 1 ? rurls[1] : ""; + print(`postjson-》rurl:${rurl},params:${params}`); + try { + params = JSON.parse(params) + } catch (e) { + params = "{}" + } + let _fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let postData = { + body: params + }; + Object.assign(_fetch_params, postData); + html = post(rurl, _fetch_params) + } else { + html = getHtml(MY_URL) + } + if (html) { + let search_tag = rule.搜索验证标识 || "系统安全验证|输入验证码"; + if (new RegExp(search_tag).test(html)) { + let cookie = verifyCode(MY_URL); + if (cookie) { + console.log(`本次成功过验证,cookie:${cookie}`); + setItem(RULE_CK, cookie) + } else { + console.log(`本次自动过搜索验证失败,cookie:${cookie}`) + } + html = getHtml(MY_URL) + } + if (!html.includes(searchObj.wd)) { + console.log("搜索结果源码未包含关键字,疑似搜索失败,正为您打印结果源码"); + console.log(html) + } + if (is_json) { + html = dealJson(html) + } + let list = _pdfa(html, p0); + let p1 = getPP(p, 1, pp, 1); + let p2 = getPP(p, 2, pp, 2); + let p3 = getPP(p, 3, pp, 3); + let p4 = getPP(p, 4, pp, 4); + let p5 = getPP(p, 5, pp, 5); + list.forEach(it => { + let links = p4.split("+").map(_p4 => { + return !rule.detailUrl ? _pd(it, _p4, MY_URL) : _pdfh(it, _p4) + }); + let link = links.join("$"); + let content; + if (p.length > 5 && p[5]) { + content = _pdfh(it, p5) + } else { + content = "" + } + let vod_id = link; + let vod_name = _pdfh(it, p1).replace(/\n|\t/g, "").trim(); + let vod_pic = _pd(it, p2, MY_URL); + if (rule.二级 === "*") { + vod_id = vod_id + "@@" + vod_name + "@@" + vod_pic + } + let ob = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + vod_remarks: _pdfh(it, p3).replace(/\n|\t/g, "").trim(), + vod_content: content.replace(/\n|\t/g, "").trim() + }; + d.push(ob) + }) + } + } catch (e) { + print(`搜索发生错误:${e.message}`); + return "{}" + } + } + if (rule.图片替换) { + if (rule.图片替换.startsWith("js:")) { + d.forEach(it => { + try { + var input = it.vod_pic; + eval(rule.图片替换.trim().replace("js:", "")); + it.vod_pic = input + } catch (e) { + log(`图片:${it.vod_pic}替换错误:${e.message}`) + } + }) + } else if (rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic.replace(replace_from, replace_to) + } + }) + } + } + if (rule.图片来源) { + d.forEach(it => { + if (it.vod_pic && it.vod_pic.startsWith("http")) { + it.vod_pic = it.vod_pic + rule.图片来源 + } + }) + } + return JSON.stringify({ + page: parseInt(searchObj.pg), + pagecount: 10, + limit: 20, + total: 100, + list: d + }) +} + +function detailParse(detailObj) { + let t1 = (new Date).getTime(); + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + let orId = detailObj.orId; + let vod_name = "片名"; + let vod_pic = ""; + let vod_id = orId; + if (rule.二级 === "*") { + let extra = orId.split("@@"); + vod_name = extra.length > 1 ? extra[1] : vod_name; + vod_pic = extra.length > 2 ? extra[2] : vod_pic + } + let vod = { + vod_id: vod_id, + vod_name: vod_name, + vod_pic: vod_pic, + type_name: "类型", + vod_year: "年份", + vod_area: "地区", + vod_remarks: "更新信息", + vod_actor: "主演", + vod_director: "导演", + vod_content: "简介" + }; + let p = detailObj.二级; + let url = detailObj.url; + let detailUrl = detailObj.detailUrl; + let fyclass = detailObj.fyclass; + let tab_exclude = detailObj.tab_exclude; + let html = detailObj.html || ""; + MY_URL = url; + if (detailObj.二级访问前) { + try { + print(`尝试在二级访问前执行代码:${detailObj.二级访问前}`); + eval(detailObj.二级访问前.trim().replace("js:", "")) + } catch (e) { + print(`二级访问前执行代码出现错误:${e.message}`) + } + } + if (p === "*") { + vod.vod_play_from = "夸克云盘"; + vod.vod_remarks = detailUrl; + vod.vod_actor = "没有二级,只有一级链接直接嗅探播放"; + vod.vod_content = MY_URL; + vod.vod_play_url = "嗅探播放$" + MY_URL.split("@@")[0] + } else if (typeof p === "string" && p.trim().startsWith("js:")) { + const TYPE = "detail"; + var input = MY_URL; + var play_url = ""; + eval(p.trim().replace("js:", "")); + vod = VOD; + console.log(JSON.stringify(vod)) + } else if (p && typeof p === "object") { + let tt1 = (new Date).getTime(); + if (!html) { + html = getHtml(MY_URL) + } + print(`二级${MY_URL}仅获取源码耗时:${(new Date).getTime()-tt1}毫秒`); + let _ps; + if (p.is_json) { + print("二级是json"); + _ps = parseTags.json; + html = dealJson(html) + } else if (p.is_jsp) { + print("二级是jsp"); + _ps = parseTags.jsp + } else if (p.is_jq) { + print("二级是jq"); + _ps = parseTags.jq + } else { + print("二级默认jq"); + _ps = parseTags.jq + } + let tt2 = (new Date).getTime(); + print(`二级${MY_URL}获取并装载源码耗时:${tt2-tt1}毫秒`); + _pdfa = _ps.pdfa; + _pdfh = _ps.pdfh; + _pd = _ps.pd; + if (p.title) { + let p1 = p.title.split(";"); + vod.vod_name = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim(); + let type_name = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").replace(/ /g, "").trim() : ""; + vod.type_name = type_name || vod.type_name + } + if (p.desc) { + try { + let p1 = p.desc.split(";"); + vod.vod_remarks = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim(); + vod.vod_year = p1.length > 1 ? _pdfh(html, p1[1]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_area = p1.length > 2 ? _pdfh(html, p1[2]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_actor = p1.length > 3 ? _pdfh(html, p1[3]).replace(/\n|\t/g, "").trim() : ""; + vod.vod_director = p1.length > 4 ? _pdfh(html, p1[4]).replace(/\n|\t/g, "").trim() : "" + } catch (e) {} + } + if (p.content) { + try { + let p1 = p.content.split(";"); + vod.vod_content = _pdfh(html, p1[0]).replace(/\n|\t/g, "").trim() + } catch (e) {} + } + if (p.img) { + try { + let p1 = p.img.split(";"); + vod.vod_pic = _pd(html, p1[0], MY_URL) + } catch (e) {} + } + let vod_play_from = "$$$"; + let playFrom = []; + if (p.重定向 && p.重定向.startsWith("js:")) { + print("开始执行重定向代码:" + p.重定向); + html = eval(p.重定向.replace("js:", "")) + } + if (p.tabs) { + if (p.tabs.startsWith("js:")) { + print("开始执行tabs代码:" + p.tabs); + var input = MY_URL; + eval(p.tabs.replace("js:", "")); + playFrom = TABS + } else { + let p_tab = p.tabs.split(";")[0]; + let vHeader = _pdfa(html, p_tab); + console.log(vHeader.length); + let tab_text = p.tab_text || "body&&Text"; + let new_map = {}; + for (let v of vHeader) { + let v_title = _pdfh(v, tab_text).trim(); + if (!v_title) { + v_title = "线路空" + } + console.log(v_title); + if (tab_exclude && new RegExp(tab_exclude).test(v_title)) { + continue + } + if (!new_map.hasOwnProperty(v_title)) { + new_map[v_title] = 1 + } else { + new_map[v_title] += 1 + } + if (new_map[v_title] > 1) { + v_title += Number(new_map[v_title] - 1) + } + playFrom.push(v_title) + } + } + console.log(JSON.stringify(playFrom)) + } else { + playFrom = ["夸克云盘"] + } + vod.vod_play_from = playFrom.join(vod_play_from); + let vod_play_url = "$$$"; + let vod_tab_list = []; + if (p.lists) { + if (p.lists.startsWith("js:")) { + print("开始执行lists代码:" + p.lists); + try { + var input = MY_URL; + var play_url = ""; + eval(p.lists.replace("js:", "")); + for (let i in LISTS) { + if (LISTS.hasOwnProperty(i)) { + try { + LISTS[i] = LISTS[i].map(it => it.split("$").slice(0, 2).join("$")) + } catch (e) { + print(`格式化LISTS发生错误:${e.message}`) + } + } + } + vod_play_url = LISTS.map(it => it.join("#")).join(vod_play_url) + } catch (e) { + print(`js执行lists: 发生错误:${e.message}`) + } + } else { + let list_text = p.list_text || "body&&Text"; + let list_url = p.list_url || "a&&href"; + let list_url_prefix = p.list_url_prefix || ""; + let is_tab_js = p.tabs.trim().startsWith("js:"); + for (let i = 0; i < playFrom.length; i++) { + let tab_name = playFrom[i]; + let tab_ext = p.tabs.split(";").length > 1 && !is_tab_js ? p.tabs.split(";")[1] : ""; + let p1 = p.lists.replaceAll("#idv", tab_name).replaceAll("#id", i); + tab_ext = tab_ext.replaceAll("#idv", tab_name).replaceAll("#id", i); + let tabName = tab_ext ? _pdfh(html, tab_ext) : tab_name; + console.log(tabName); + let new_vod_list = []; + let tt1 = (new Date).getTime(); + if (typeof pdfl === "function") { + new_vod_list = pdfl(html, p1, list_text, list_url, MY_URL); + if (list_url_prefix) { + new_vod_list = new_vod_list.map(it => it.split("$")[0] + "$" + list_url_prefix + it.split("$").slice(1).join("$")) + } + } else { + let vodList = []; + try { + vodList = _pdfa(html, p1); + console.log("len(vodList):" + vodList.length) + } catch (e) {} + for (let i = 0; i < vodList.length; i++) { + let it = vodList[i]; + new_vod_list.push(_pdfh(it, list_text).trim() + "$" + list_url_prefix + _pd(it, list_url, MY_URL)) + } + } + if (new_vod_list.length > 0) { + new_vod_list = forceOrder(new_vod_list, "", x => x.split("$")[0]); + console.log(`drpy影响性能代码共计列表数循环次数:${new_vod_list.length},耗时:${(new Date).getTime()-tt1}毫秒`) + } + let vlist = new_vod_list.join("#"); + vod_tab_list.push(vlist) + } + vod_play_url = vod_tab_list.join(vod_play_url) + } + } + vod.vod_play_url = vod_play_url + } + if (rule.图片替换 && rule.图片替换.includes("=>")) { + let replace_from = rule.图片替换.split("=>")[0]; + let replace_to = rule.图片替换.split("=>")[1]; + vod.vod_pic = vod.vod_pic.replace(replace_from, replace_to) + } + if (rule.图片来源 && vod.vod_pic && vod.vod_pic.startsWith("http")) { + vod.vod_pic = vod.vod_pic + rule.图片来源 + } + if (!vod.vod_id || vod_id.includes("$") && vod.vod_id !== vod_id) { + vod.vod_id = vod_id + } + let t2 = (new Date).getTime(); + console.log(`加载二级界面${MY_URL}耗时:${t2-t1}毫秒`); + try { + vod = vodDeal(vod) + } catch (e) { + console.log(`vodDeal发生错误:${e.message}`) + } + return JSON.stringify({ + list: [vod] + }) +} + +function get_tab_index(vod) { + let obj = {}; + vod.vod_play_from.split("$$$").forEach((it, index) => { + obj[it] = index + }); + return obj +} + +function vodDeal(vod) { + let vod_play_from = vod.vod_play_from.split("$$$"); + let vod_play_url = vod.vod_play_url.split("$$$"); + let tab_removed_list = vod_play_from; + let tab_ordered_list = vod_play_from; + let tab_renamed_list = vod_play_from; + let tab_list = vod_play_from; + let play_ordered_list = vod_play_url; + if (rule.tab_remove && rule.tab_remove.length > 0 || rule.tab_order && rule.tab_order.length > 0) { + let tab_index_dict = get_tab_index(vod); + if (rule.tab_remove && rule.tab_remove.length > 0) { + tab_removed_list = vod_play_from.filter(it => !rule.tab_remove.includes(it)); + tab_list = tab_removed_list + } + if (rule.tab_order && rule.tab_order.length > 0) { + let tab_order = rule.tab_order; + tab_ordered_list = tab_removed_list.sort((a, b) => { + return (tab_order.indexOf(a) === -1 ? 9999 : tab_order.indexOf(a)) - (tab_order.indexOf(b) === -1 ? 9999 : tab_order.indexOf(b)) + }); + tab_list = tab_ordered_list + } + play_ordered_list = tab_list.map(it => vod_play_url[tab_index_dict[it]]) + } + if (rule.tab_rename && typeof rule.tab_rename === "object" & Object.keys(rule.tab_rename).length > 0) { + tab_renamed_list = tab_list.map(it => rule.tab_rename[it] || it); + tab_list = tab_renamed_list + } + vod.vod_play_from = tab_list.join("$$$"); + vod.vod_play_url = play_ordered_list.join("$$$"); + return vod +} + +function tellIsJx(url) { + try { + let is_vip = !/\.(m3u8|mp4|m4a)$/.test(url.split("?")[0]) && 是否正版(url); + return is_vip ? 1 : 0 + } catch (e) { + return 1 + } +} + +function playParse(playObj) { + fetch_params = JSON.parse(JSON.stringify(rule_fetch_params)); + MY_URL = playObj.url; + var MY_FLAG = playObj.flag; + if (!/http/.test(MY_URL)) { + try { + MY_URL = base64Decode(MY_URL) + } catch (e) {} + } + MY_URL = decodeURIComponent(MY_URL); + var input = MY_URL; + var flag = MY_FLAG; + let common_play = { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + url: input, + flag: flag, + jx: tellIsJx(input) + }; + let lazy_play; + if (!rule.play_parse || !rule.lazy) { + lazy_play = common_play + } else if (rule.play_parse && rule.lazy && typeof rule.lazy === "string") { + try { + let lazy_code = rule.lazy.trim(); + if (lazy_code.startsWith("js:")) { + lazy_code = lazy_code.replace("js:", "").trim() + } + print("开始执行js免嗅=>" + lazy_code); + eval(lazy_code); + lazy_play = typeof input === "object" ? input : { + parse: SPECIAL_URL.test(input) || /^(push:)/.test(input) ? 0 : 1, + jx: tellIsJx(input), + url: input + } + } catch (e) { + print(`js免嗅错误:${e.message}`); + lazy_play = common_play + } + } else { + lazy_play = common_play + } + if (Array.isArray(rule.play_json) && rule.play_json.length > 0) { + let web_url = lazy_play.url; + for (let pjson of rule.play_json) { + if (pjson.re && (pjson.re === "*" || web_url.match(new RegExp(pjson.re)))) { + if (pjson.json && typeof pjson.json === "object") { + let base_json = pjson.json; + lazy_play = Object.assign(lazy_play, base_json); + break + } + } + } + } else if (rule.play_json && !Array.isArray(rule.play_json)) { + let base_json = { + jx: 1, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } else if (!rule.play_json) { + let base_json = { + jx: 0, + parse: 1 + }; + lazy_play = Object.assign(lazy_play, base_json) + } + console.log(JSON.stringify(lazy_play)); + return JSON.stringify(lazy_play) +} + +function proxyParse(proxyObj) { + var input = proxyObj.params; + if (proxyObj.proxy_rule) { + log("准备执行本地代理规则:\n" + proxyObj.proxy_rule); + try { + eval(proxyObj.proxy_rule); + if (input && input !== proxyObj.params && Array.isArray(input) && input.length >= 3) { + return input + } else { + return [404, "text/plain", "Not Found"] + } + } catch (e) { + return [500, "text/plain", "代理规则错误:" + e.message] + } + } else { + return [404, "text/plain", "Not Found"] + } +} + +function isVideoParse(isVideoObj) { + var input = isVideoObj.url; + if (!isVideoObj.t) { + let re_matcher = new RegExp(isVideoObj.isVideo, "i"); + return re_matcher.test(input) + } else { + try { + eval(isVideoObj.isVideo); + if (typeof input === "boolean") { + return input + } else { + return false + } + } catch (e) { + log(`执行嗅探规则发生错误:${e.message}`); + return false + } + } +} + +function getOriginalJs(js_code) { + let current_match = /var rule|[\u4E00-\u9FA5]+|function|let |var |const |\(|\)|"|'/; + if (current_match.test(js_code)) { + return js_code + } + let rsa_private_key = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs="; + let decode_content = ""; + + function aes_decrypt(data) { + let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A"); + let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A"); + let encrypted = CryptoJS.AES.decrypt({ + ciphertext: CryptoJS.enc.Base64.parse(data) + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }).toString(CryptoJS.enc.Utf8); + return encrypted + } + let error_log = false; + + function logger(text) { + if (error_log) { + log(text) + } + } + let decode_funcs = [text => { + try { + return ungzip(text) + } catch (e) { + logger("非gzip加密"); + return "" + } + }, text => { + try { + return base64Decode(text) + } catch (e) { + logger("非b64加密"); + return "" + } + }, text => { + try { + return aes_decrypt(text) + } catch (e) { + logger("非aes加密"); + return "" + } + }, text => { + try { + return RSA.decode(text, rsa_private_key, null) + } catch (e) { + logger("非rsa加密"); + return "" + } + }]; + let func_index = 0; + while (!current_match.test(decode_content)) { + decode_content = decode_funcs[func_index](js_code); + func_index++; + if (func_index >= decode_funcs.length) { + break + } + } + return decode_content +} + +function runMain(main_func_code, arg) { + let mainFunc = function() { + return "" + }; + try { + eval(main_func_code + "\nmainFunc=main;"); + return mainFunc(arg) + } catch (e) { + log(`执行main_funct发生了错误:${e.message}`); + return "" + } +} + +function init(ext) { + console.log("init"); + rule = {}; + rule_fetch_params = {}; + fetch_params = null; + try { + let muban = 模板.getMubans(); + if (typeof ext == "object") { + rule = ext + } else if (typeof ext == "string") { + let is_file = ext.startsWith("file://"); + if (ext.startsWith("http") || is_file) { + let query = getQuery(ext); + if (is_file) { + ext = ext.split("?")[0] + } + let js = request(ext, { + method: "GET" + }); + if (js) { + js = getOriginalJs(js); + eval("(function(){" + js.replace("var rule", "rule") + "})()") + } + if (query.type === "url" && query.params) { + if (is_file && /^http/.test(query.params)) { + rule.params = query.params + } else { + rule.params = urljoin(ext, query.params) + } + } else if (query.params) { + rule.params = query.params + } + } else { + ext = getOriginalJs(ext); + eval("(function(){" + ext.replace("var rule", "rule") + "})()") + } + } else { + console.log(`规则加载失败,不支持的规则类型:${typeof ext}`); + return + } + rule.host = (rule.host || "").rstrip("/"); + HOST = rule.host; + if (rule.hostJs) { + console.log(`检测到hostJs,准备执行...`); + try { + eval(rule.hostJs); + rule.host = HOST.rstrip("/") + } catch (e) { + console.log(`执行${rule.hostJs}获取host发生错误:${e.message}`) + } + } + if (rule["模板"] === "自动") { + try { + let host_headers = rule["headers"] || {}; + let host_html = getCode(HOST, { + headers: host_headers + }); + let match_muban = ""; + let muban_keys = Object.keys(muban).filter(it => !/默认|短视2|采集1/.test(it)); + for (let muban_key of muban_keys) { + try { + let host_data = JSON.parse(home({}, host_html, muban[muban_key].class_parse)); + if (host_data.class && host_data.class.length > 0) { + match_muban = muban_key; + console.log(`自动匹配模板:【${muban_key}】`); + break + } + } catch (e) { + console.log(`自动匹配模板:【${muban_key}】错误:${e.message}`) + } + } + if (match_muban) { + muban["自动"] = muban[match_muban]; + if (rule["模板修改"] && rule["模板修改"].startsWith("js:")) { + eval(rule["模板修改"].replace("js:", "").trim()) + } + } else { + delete rule["模板"] + } + } catch (e) { + delete rule["模板"] + } + } + if (rule.模板 && muban.hasOwnProperty(rule.模板)) { + print("继承模板:" + rule.模板); + rule = Object.assign(muban[rule.模板], rule) + } + let rule_cate_excludes = (rule.cate_exclude || "").split("|").filter(it => it.trim()); + let rule_tab_excludes = (rule.tab_exclude || "").split("|").filter(it => it.trim()); + rule_cate_excludes = rule_cate_excludes.concat(CATE_EXCLUDE.split("|").filter(it => it.trim())); + rule_tab_excludes = rule_tab_excludes.concat(TAB_EXCLUDE.split("|").filter(it => it.trim())); + rule.cate_exclude = rule_cate_excludes.join("|"); + rule.tab_exclude = rule_tab_excludes.join("|"); + rule.类型 = rule.类型 || "影视"; + rule.url = rule.url || ""; + rule.double = rule.double || false; + rule.homeUrl = rule.homeUrl || ""; + rule.detailUrl = rule.detailUrl || ""; + rule.searchUrl = rule.searchUrl || ""; + rule.homeUrl = rule.host && rule.homeUrl ? urljoin(rule.host, rule.homeUrl) : rule.homeUrl || rule.host; + rule.homeUrl = cheerio.jinja2(rule.homeUrl, { + rule: rule + }); + rule.detailUrl = rule.host && rule.detailUrl ? urljoin(rule.host, rule.detailUrl) : rule.detailUrl; + rule.二级访问前 = rule.二级访问前 || ""; + if (rule.url.includes("[") && rule.url.includes("]")) { + let u1 = rule.url.split("[")[0]; + let u2 = rule.url.split("[")[1].split("]")[0]; + rule.url = rule.host && rule.url ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.url + } else { + rule.url = rule.host && rule.url ? urljoin(rule.host, rule.url) : rule.url + } + if (rule.searchUrl.includes("[") && rule.searchUrl.includes("]") && !rule.searchUrl.includes("#")) { + let u1 = rule.searchUrl.split("[")[0]; + let u2 = rule.searchUrl.split("[")[1].split("]")[0]; + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, u1) + "[" + urljoin(rule.host, u2) + "]" : rule.searchUrl + } else { + rule.searchUrl = rule.host && rule.searchUrl ? urljoin(rule.host, rule.searchUrl) : rule.searchUrl + } + rule.timeout = rule.timeout || 5e3; + rule.encoding = rule.编码 || rule.encoding || "utf-8"; + rule.search_encoding = rule.搜索编码 || rule.search_encoding || ""; + rule.图片来源 = rule.图片来源 || ""; + rule.图片替换 = rule.图片替换 || ""; + rule.play_json = rule.hasOwnProperty("play_json") ? rule.play_json : []; + rule.pagecount = rule.hasOwnProperty("pagecount") ? rule.pagecount : {}; + rule.proxy_rule = rule.hasOwnProperty("proxy_rule") ? rule.proxy_rule : ""; + if (!rule.hasOwnProperty("sniffer")) { + rule.sniffer = false + } + rule.sniffer = rule.hasOwnProperty("sniffer") ? rule.sniffer : ""; + rule.sniffer = !!(rule.sniffer && rule.sniffer !== "0" && rule.sniffer !== "false"); + rule.isVideo = rule.hasOwnProperty("isVideo") ? rule.isVideo : ""; + if (rule.sniffer && !rule.isVideo) { + rule.isVideo = "http((?!http).){12,}?\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)\\?.*|http((?!http).){12,}\\.(m3u8|mp4|flv|avi|mkv|rm|wmv|mpg|m4a|mp3)|http((?!http).)*?video/tos*|http((?!http).)*?obj/tos*" + } + rule.tab_remove = rule.hasOwnProperty("tab_remove") ? rule.tab_remove : []; + rule.tab_order = rule.hasOwnProperty("tab_order") ? rule.tab_order : []; + rule.tab_rename = rule.hasOwnProperty("tab_rename") ? rule.tab_rename : {}; + if (rule.headers && typeof rule.headers === "object") { + try { + let header_keys = Object.keys(rule.headers); + for (let k of header_keys) { + if (k.toLowerCase() === "user-agent") { + let v = rule.headers[k]; + console.log(v); + if (["MOBILE_UA", "PC_UA", "UC_UA", "IOS_UA", "UA"].includes(v)) { + rule.headers[k] = eval(v) + } + } else if (k.toLowerCase() === "cookie") { + let v = rule.headers[k]; + if (v && v.startsWith("http")) { + console.log(v); + try { + v = fetch(v); + console.log(v); + rule.headers[k] = v + } catch (e) { + console.log(`从${v}获取cookie发生错误:${e.message}`) + } + } + } + } + } catch (e) { + console.log(`处理headers发生错误:${e.message}`) + } + } else { + rule.headers = {} + } + oheaders = deepCopy(rule.headers); + rule_fetch_params = { + headers: rule.headers, + timeout: rule.timeout, + encoding: rule.encoding + }; + RKEY = typeof key !== "undefined" && key ? key : "drpy_" + (rule.title || rule.host); + pre(); + init_test() + } catch (e) { + console.log(`init_test发生错误:${e.message}`) + } +} +let homeHtmlCache = undefined; + +function home(filter, home_html, class_parse) { + console.log("home"); + home_html = home_html || ""; + class_parse = class_parse || ""; + if (typeof rule.filter === "string" && rule.filter.trim().length > 0) { + try { + let filter_json = ungzip(rule.filter.trim()); + rule.filter = JSON.parse(filter_json) + } catch (e) { + rule.filter = {} + } + } + let homeObj = { + filter: rule.filter || false, + MY_URL: rule.homeUrl, + class_name: rule.class_name || "", + class_url: rule.class_url || "", + class_parse: class_parse || rule.class_parse || "", + cate_exclude: rule.cate_exclude, + home_html: home_html + }; + return homeParse(homeObj) +} + +function homeVod(params) { + console.log("homeVod"); + let homeVodObj = { + "推荐": rule.推荐, + double: rule.double, + homeUrl: rule.homeUrl, + detailUrl: rule.detailUrl + }; + return homeVodParse(homeVodObj) +} + +function category(tid, pg, filter, extend) { + let cateObj = { + url: rule.url, + "一级": rule.一级, + tid: tid, + pg: parseInt(pg), + filter: filter, + extend: extend + }; + return categoryParse(cateObj) +} + +function detail(vod_url) { + let orId = vod_url; + let fyclass = ""; + log("orId:" + orId); + if (vod_url.indexOf("$") > -1) { + let tmp = vod_url.split("$"); + fyclass = tmp[0]; + vod_url = tmp[1] + } + let detailUrl = vod_url.split("@@")[0]; + let url; + if (!detailUrl.startsWith("http") && !detailUrl.includes("/")) { + url = rule.detailUrl.replaceAll("fyid", detailUrl).replaceAll("fyclass", fyclass) + } else if (detailUrl.includes("/")) { + url = urljoin(rule.homeUrl, detailUrl) + } else { + url = detailUrl + } + let detailObj = { + orId: orId, + url: url, + "二级": rule.二级, + "二级访问前": rule.二级访问前, + detailUrl: detailUrl, + fyclass: fyclass, + tab_exclude: rule.tab_exclude + }; + return detailParse(detailObj) +} + +function play(flag, id, flags) { + let playObj = { + url: id, + flag: flag, + flags: flags + }; + return playParse(playObj) +} + +function search(wd, quick, pg) { + if (rule.search_encoding) { + if (rule.search_encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.search_encoding) + } + } else if (rule.encoding && rule.encoding.toLowerCase() !== "utf-8") { + wd = encodeStr(wd, rule.encoding) + } + let searchObj = { + searchUrl: rule.searchUrl, + "搜索": rule.搜索, + wd: wd, + pg: pg || 1, + quick: quick + }; + return searchParse(searchObj) +} + +function proxy(params) { + if (rule.proxy_rule && rule.proxy_rule.trim()) { + rule.proxy_rule = rule.proxy_rule.trim() + } + if (rule.proxy_rule.startsWith("js:")) { + rule.proxy_rule = rule.proxy_rule.replace("js:", "") + } + let proxyObj = { + params: params, + proxy_rule: rule.proxy_rule + }; + return proxyParse(proxyObj) +} + +function sniffer() { + let enable_sniffer = rule.sniffer || false; + if (enable_sniffer) { + log("开始执行辅助嗅探代理规则...") + } + return enable_sniffer +} + +function isVideo(url) { + let t = 0; + let is_video; + if (rule.isVideo && rule.isVideo.trim()) { + is_video = rule.isVideo.trim() + } + if (is_video.startsWith("js:")) { + is_video = is_video.replace("js:", ""); + t = 1 + } + let isVideoObj = { + url: url, + isVideo: is_video, + t: t + }; + let result = isVideoParse(isVideoObj); + if (result) { + log("成功执行辅助嗅探规则并检测到视频地址:\n" + rule.isVideo) + } + return result +} + +function getRule(key) { + return key ? rule[key] || "" : rule +} + +function deepCopy(_obj) { + return JSON.parse(JSON.stringify(_obj)) +} + +function matchesAll(str, pattern, flatten) { + if (!pattern.global) { + pattern = new RegExp(pattern.source, "g" + (pattern.ignoreCase ? "i" : "") + (pattern.multiline ? "m" : "")) + } + var matches = []; + var match; + while ((match = pattern.exec(str)) !== null) { + matches.push(match) + } + return flatten ? matches.flat() : matches +} + +function stringUtils() { + Object.defineProperties(String.prototype, { + replaceX: { + value: function(regex, replacement) { + let matches = matchesAll(this, regex, true); + if (matches && matches.length > 1) { + const hasCaptureGroup = /\$\d/.test(replacement); + if (hasCaptureGroup) { + return this.replace(regex, m => m.replace(regex, replacement)) + } else { + return this.replace(regex, (m, p1) => m.replace(p1, replacement)) + } + } + return this.replace(regex, replacement) + }, + configurable: true, + enumerable: false, + writable: true + }, + parseX: { + get: function() { + try { + return JSON.parse(this) + } catch (e) { + console.log(e.message); + return this.startsWith("[") ? [] : {} + } + }, + configurable: true, + enumerable: false + } + }) +} + +function cut(text, start, end, method, All) { + let result = ""; + let c = (t, s, e) => { + let result = ""; + let rs = []; + let results = []; + try { + let lr = new RegExp(String.raw`${s}`.toString()); + let rr = new RegExp(String.raw`${e}`.toString()); + const segments = t.split(lr); + if (segments.length < 2) return ""; + let cutSegments = segments.slice(1).map(segment => { + let splitSegment = segment.split(rr); + return splitSegment.length < 2 ? undefined : splitSegment[0] + e + }).filter(f => f); + if (All) { + return `[${cutSegments.join(",")}]` + } else { + return cutSegments[0] + } + } catch (e) { + console.log(`Error cutting text:${e.message}`) + } + return result + }; + result = c(text, start, end); + stringUtils(); + if (method && typeof method === "function") { + result = method(result) + } + return result +} + +function DRPY() { + return { + runMain: runMain, + getRule: getRule, + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + fixAdM3u8Ai: fixAdM3u8Ai + } +} +export default { + runMain: runMain, + getRule: getRule, + init: init, + home: home, + homeVod: homeVod, + category: category, + detail: detail, + play: play, + search: search, + proxy: proxy, + sniffer: sniffer, + isVideo: isVideo, + fixAdM3u8Ai: fixAdM3u8Ai, + DRPY: DRPY +}; \ No newline at end of file diff --git a/xiaosa/JS/uri.min.js b/xiaosa/JS/uri.min.js new file mode 100644 index 00000000..66082b05 --- /dev/null +++ b/xiaosa/JS/uri.min.js @@ -0,0 +1 @@ +(function(global){var re={starts_with_slashes:/^\/+/,ends_with_slashes:/\/+$/,pluses:/\+/g,query_separator:/[&;]/,uri_parser:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*)(?::([^:@]*))?)?@)?(\[[0-9a-fA-F:.]+\]|[^:\/?#]*)(?::(\d+|(?=:)))?(:)?)((((?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/};if(!Array.prototype.forEach){Array.prototype.forEach=function(callback,thisArg){var T,k;if(this==null){throw new TypeError(' this is null or not defined');}var O=Object(this);var len=O.length>>>0;if(typeof callback!=="function"){throw new TypeError(callback+' is not a function');}if(arguments.length>1){T=thisArg}k=0;while(k0){s+='&'}if(param[1]===null){s+=param[0]}else{s+=param[0];s+='=';if(typeof param[1]!=='undefined'){s+=encodeURIComponent(param[1])}}}return s.length>0?'?'+s:s};Uri.prototype.getQueryParamValue=function(key){var param,i,l;for(i=0,l=this.queryPairs.length;i0){this.queryPairs.push([key,val])}return this};Uri.prototype.hasQueryParam=function(key){var i,len=this.queryPairs.length;for(i=0;i=0){this.deleteQueryParam(key,decode(oldVal)).addQueryParam(key,newVal,index)}}else{for(i=0;i { + try { + let api = "" + input.split("?")[0]; + console.log(api); + let response = fetch(api, { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + let bata = JSON.parse(response); + if (bata.url.includes("qq,qiyi,imgo,youku,leshi,bilibili1,m1905")) { + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } else { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + } catch { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + }), + // 疑似t4专用的 + // lazy:'js:input={parse: 1, playUrl: "", jx: 1, url: input.split("?")[0]}', + // 手动调用解析请求json的url,此lazy不方便 + // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', + 推荐: 'json:data;title;cover;comment;cat+ent_id;description', + 一级: 'json:data.movies;title;cover;pubdate;id;description', + 二级: '', + 二级: $js.toString(() => { + let html = JSON.parse(fetch(input, fetch_params)); + let data = html.data; + let tilte = data.title; + let img = data.cdncover; + let vod_type = data.moviecategory.join(","); + let area = data.area.join(","); + let director = data.director.join(","); + let actor = data.actor.join(","); + let content = data.description; + let base_vod = { + vod_id: input, + vod_name: tilte, + type_name: vod_type, + vod_actor: actor, + vod_director: director, + vod_content: content, + vod_remarks: area, + vod_pic: urljoin2(input, img) + }; + let delta = 50; + let vod_play = {}; + let sites = data.playlink_sites; + sites.forEach(function(site) { + let playList = ""; + let vodItems = []; + print(data) + if (data.allupinfo) { + let total = parseInt(data.allupinfo[site]); + print(total) + for (let j = 1; j < total; j += delta) { + let end = Math.min(total, j + delta - 1); + print(end) + let url2 = buildUrl(input, { + start: j, + end: end, + site: site + }); + let vod_data = JSON.parse(fetch(url2), fetch_params).data; + if (vod_data != null) { + if (vod_data.allepidetail) { + vod_data = vod_data.allepidetail[site]; + vod_data.forEach(function(item, index) { + vodItems.push((item.playlink_num || "") + "$" + urlDeal(item.url || "")) + }) + } else { + vod_data = vod_data.defaultepisode; + vod_data.forEach(function(item, index) { + vodItems.push((item.period || "") + (item.name || "") + "$" + urlDeal(item.url) || "") + }) + } + } + } + } else { + let item = data.playlinksdetail[site]; + vodItems.push((item.sort || "") + "$" + urlDeal(item.default_url || "")) + } + if (vodItems.length > 0) { + playList = vodItems.join("#") + } + if (playList.length < 1) { + return + } + vod_play[site] = playList + }); + let tabs = Object.keys(vod_play); + let playUrls = []; + for (let id in tabs) { + print("id:" + id); + playUrls.push(vod_play[tabs[id]]) + } + if (tabs.length > 0) { + let vod_play_from = tabs.join("$$$"); + let vod_play_url = playUrls.join("$$$"); + base_vod.vod_play_from = vod_play_from; + base_vod.vod_play_url = vod_play_url + } + VOD = base_vod; + }), + 搜索: 'json:data.longData.rows;titleTxt||titlealias;cover;cat_name;cat_id+en_id;description', +} \ No newline at end of file diff --git a/xiaosa/JS/优酷弹幕.js b/xiaosa/JS/优酷弹幕.js new file mode 100644 index 00000000..f335b99d --- /dev/null +++ b/xiaosa/JS/优酷弹幕.js @@ -0,0 +1,2299 @@ +var rule = { + title: '优酷[官]', + host: 'https://www.%79%6f%75%6b%75.com', + homeUrl: '', + searchUrl: 'https://search.%79%6f%75%6b%75.com/api/search?pg=fypage&keyword=**', + searchable: 2, + quickSearch: 0, + filterable: 1, + multi: 1, + url: '/category/data?optionRefresh=1&pageNo=fypage¶ms=fyfilter', + filter_url: '{{fl}}', + filter: { + "电视剧": [{ + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "内地剧", + "v": "中国内地" + }, { + "n": "港剧", + "v": "中国香港" + }, { + "n": "台剧", + "v": "中国台湾" + }, { + "n": "韩剧", + "v": "韩国" + }, { + "n": "美剧", + "v": "美国" + }, { + "n": "英剧", + "v": "英国" + }, { + "n": "日剧", + "v": "日本" + }, { + "n": "泰剧", + "v": "泰国" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "青春", + "v": "青春" + }, { + "n": "古装", + "v": "古装" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "都市", + "v": "都市" + }, { + "n": "喜剧", + "v": "喜剧,搞笑" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "军旅", + "v": "军旅" + }, { + "n": "谍战", + "v": "谍战" + }, { + "n": "偶像", + "v": "偶像" + }, { + "n": "警匪", + "v": "警匪" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "穿越", + "v": "穿越" + }, { + "n": "仙侠", + "v": "仙侠" + }, { + "n": "武侠", + "v": "武侠" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "罪案", + "v": "罪案" + }, { + "n": "家庭", + "v": "家庭" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "年代", + "v": "年代" + }, { + "n": "农村", + "v": "农村" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014-2011", + "v": "2011-2014" + }, { + "n": "更早", + "v": "-2010" + }] + }, { + "key": "status", + "name": "全部规格", + "value": [{ + "n": "全部规格", + "v": "" + }, { + "n": "全网独播", + "v": "1" + }, { + "n": "优酷自制", + "v": "2" + }, { + "n": "已完结", + "v": "3" + }, { + "n": "即将上线", + "v": "4" + }, { + "n": "短剧", + "v": "5" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "VIP", + "v": "2" + }, { + "n": "付费", + "v": "1" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "热度最高", + "v": "7" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最多播放", + "v": "2" + }] + }], + "电影": [{ + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "内地", + "v": "中国内地" + }, { + "n": "中国香港", + "v": "中国香港" + }, { + "n": "中国台湾", + "v": "中国台湾" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "印度", + "v": "印度" + }, { + "n": "日韩", + "v": "韩国,日本" + }, { + "n": "泰国", + "v": "泰国" + }, { + "n": "欧洲", + "v": "欧洲" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "喜剧", + "v": "喜剧,搞笑" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "怪兽", + "v": "怪兽" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "武侠", + "v": "武侠" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "警匪", + "v": "警匪" + }, { + "n": "动画", + "v": "动画" + }, { + "n": "惊悚", + "v": "惊悚" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "纪录片", + "v": "纪录片" + }, { + "n": "传记", + "v": "传记" + }, { + "n": "歌舞", + "v": "歌舞" + }, { + "n": "短片", + "v": "短片" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "source", + "name": "全部规格", + "value": [{ + "n": "全部规格", + "v": "" + }, { + "n": "院线", + "v": "1" + }, { + "n": "网络电影", + "v": "0" + }, { + "n": "独播", + "v": "2" + }, { + "n": "高清修复", + "v": "3" + }, { + "n": "1080P", + "v": "4" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014-2010", + "v": "2010-2014" + }, { + "n": "2009-2000", + "v": "2000-2009" + }, { + "n": "90年代", + "v": "1990-1999" + }, { + "n": "80年代", + "v": "1980-1989" + }, { + "n": "70年代", + "v": "1970-1979" + }, { + "n": "更早", + "v": "-1969" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "会员", + "v": "2" + }, { + "n": "点播", + "v": "1" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "热度最高", + "v": "7" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最好评", + "v": "3" + }] + }, { + "key": "tag_label_name", + "name": "为你推荐", + "value": [{ + "n": "为你推荐", + "v": "" + }, { + "n": "高分必看", + "v": "高分必看" + }, { + "n": "卖座电影", + "v": "卖座电影" + }, { + "n": "小说改编", + "v": "小说改编" + }, { + "n": "铁血硬汉", + "v": "铁血硬汉" + }, { + "n": "视效大片", + "v": "视效大片" + }, { + "n": "漫画改编", + "v": "漫画改编" + }, { + "n": "绝地求生", + "v": "绝地求生" + }, { + "n": "真人真事改编", + "v": "真人真事改编" + }, { + "n": "范伟", + "v": "范伟" + }, { + "n": "火爆枪战", + "v": "火爆枪战" + }, { + "n": "影史经典", + "v": "影史经典" + }, { + "n": "拯救世界", + "v": "拯救世界" + }, { + "n": "万茜", + "v": "万茜" + }, { + "n": "马思纯", + "v": "马思纯" + }, { + "n": "王俊凯", + "v": "王俊凯" + }, { + "n": "豪华阵容", + "v": "豪华阵容" + }, { + "n": "李玉", + "v": "李玉" + }, { + "n": "无厘头喜剧", + "v": "无厘头喜剧" + }, { + "n": "超能力", + "v": "超能力" + }, { + "n": "欢喜搭档", + "v": "欢喜搭档" + }] + }], + "综艺": [{ + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "内地", + "v": "中国内地" + }, { + "n": "中国台湾", + "v": "中国台湾" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "英国", + "v": "英国" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "偶像", + "v": "偶像" + }, { + "n": "舞蹈", + "v": "舞蹈" + }, { + "n": "音乐", + "v": "音乐" + }, { + "n": "情感", + "v": "情感" + }, { + "n": "喜剧", + "v": "喜剧,搞笑" + }, { + "n": "体育", + "v": "体育" + }, { + "n": "游戏", + "v": "游戏" + }, { + "n": "相声", + "v": "相声" + }, { + "n": "婚恋", + "v": "婚恋" + }, { + "n": "时尚", + "v": "时尚" + }, { + "n": "晚会", + "v": "晚会" + }, { + "n": "明星访谈", + "v": "明星访谈" + }, { + "n": "亲子", + "v": "亲子" + }, { + "n": "生活", + "v": "生活" + }, { + "n": "文化", + "v": "文化" + }, { + "n": "美食", + "v": "美食" + }, { + "n": "旅游", + "v": "旅游" + }, { + "n": "益智", + "v": "益智" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014-2011", + "v": "2011-2014" + }, { + "n": "更早", + "v": "-2010" + }] + }, { + "key": "status", + "name": "全部规格", + "value": [{ + "n": "全部规格", + "v": "" + }, { + "n": "优酷自制", + "v": "2" + }, { + "n": "优酷独播", + "v": "1" + }, { + "n": "电视综艺", + "v": "6" + }, { + "n": "已完结", + "v": "3" + }, { + "n": "即将上线", + "v": "4" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "VIP", + "v": "2" + }, { + "n": "付费", + "v": "1" + }] + }, { + "key": "sort", + "name": "热度最高", + "value": [{ + "n": "热度最高", + "v": "" + }, { + "n": "最新更新", + "v": "8" + }, { + "n": "最近开播", + "v": "9" + }, { + "n": "最多评论", + "v": "4" + }] + }, { + "key": "tag_label_name", + "name": "为你推荐", + "value": [{ + "n": "为你推荐", + "v": "" + }, { + "n": "舞台竞演", + "v": "舞台竞演" + }, { + "n": "刘雨昕", + "v": "刘雨昕" + }, { + "n": "王一博", + "v": "王一博" + }, { + "n": "韩庚", + "v": "韩庚" + }, { + "n": "李承铉", + "v": "李承铉" + }, { + "n": "户外竞技", + "v": "户外竞技" + }, { + "n": "浙江卫视", + "v": "浙江卫视" + }, { + "n": "东方卫视", + "v": "东方卫视" + }, { + "n": "岳云鹏", + "v": "岳云鹏" + }, { + "n": "王迅", + "v": "王迅" + }, { + "n": "杨迪", + "v": "杨迪" + }, { + "n": "杨超越", + "v": "杨超越" + }, { + "n": "黄明昊", + "v": "黄明昊" + }, { + "n": "郭京飞", + "v": "郭京飞" + }, { + "n": "欧阳娜娜", + "v": "欧阳娜娜" + }, { + "n": "德云社", + "v": "德云社" + }, { + "n": "郑恺", + "v": "郑恺" + }, { + "n": "华少", + "v": "华少" + }, { + "n": "郭德纲", + "v": "郭德纲" + }, { + "n": "贾玲", + "v": "贾玲" + }] + }], + "动漫": [{ + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }, { + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "内地", + "v": "中国内地" + }, { + "n": "日本", + "v": "日本" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "中国台湾", + "v": "中国台湾" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "热血", + "v": "热血,战斗" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "玄幻", + "v": "玄幻" + }, { + "n": "古风", + "v": "历史,古风" + }, { + "n": "恋爱", + "v": "恋爱" + }, { + "n": "青春", + "v": "青春" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "运动", + "v": "社团,运动" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "魔法", + "v": "魔法" + }, { + "n": "日常", + "v": "日常" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "推理", + "v": "推理" + }, { + "n": "都市", + "v": "都市" + }, { + "n": "小说改", + "v": "小说改编" + }, { + "n": "游戏改", + "v": "游戏改编" + }, { + "n": "漫画改", + "v": "漫画改编" + }, { + "n": "动态漫", + "v": "动态漫画" + }, { + "n": "特摄", + "v": "特摄" + }, { + "n": "布袋戏", + "v": "布袋戏" + }] + }, { + "key": "completed", + "name": "连载情况", + "value": [{ + "n": "连载情况", + "v": "" + }, { + "n": "更新中", + "v": "0" + }, { + "n": "已完结", + "v": "1" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "会员", + "v": "2" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "00年代", + "v": "2000-2010" + }, { + "n": "更早", + "v": "-1999" + }] + }, { + "key": "tag_label_name", + "name": "为你推荐", + "value": [{ + "n": "为你推荐", + "v": "" + }, { + "n": "3D动画", + "v": "3D动画" + }, { + "n": "搞笑日常", + "v": "搞笑日常" + }, { + "n": "大男主", + "v": "大男主" + }, { + "n": "高燃", + "v": "高燃" + }, { + "n": "萌系", + "v": "萌系" + }, { + "n": "修真", + "v": "修真" + }, { + "n": "怀旧", + "v": "怀旧" + }, { + "n": "超级英雄", + "v": "超级英雄" + }, { + "n": "水树奈奈", + "v": "水树奈奈" + }, { + "n": "张杰", + "v": "张杰" + }, { + "n": "石田彰", + "v": "石田彰" + }, { + "n": "守护地球", + "v": "守护地球" + }, { + "n": "圆谷", + "v": "圆谷" + }, { + "n": "山新", + "v": "山新" + }, { + "n": "复仇", + "v": "复仇" + }, { + "n": "废柴逆袭", + "v": "废柴逆袭" + }, { + "n": "侦探", + "v": "侦探" + }, { + "n": "无厘头", + "v": "无厘头" + }, { + "n": "青山刚昌", + "v": "青山刚昌" + }, { + "n": "悬疑", + "v": "悬疑" + }] + }], + "少儿": [{ + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "中国", + "v": "中国,香港,台湾" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "英国", + "v": "英国" + }, { + "n": "其他国家", + "v": "其他" + }] + }, { + "key": "show_label_type", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "动画", + "v": "动画" + }, { + "n": "儿歌", + "v": "儿歌" + }, { + "n": "玩具", + "v": "玩具" + }, { + "n": "动画电影", + "v": "电影" + }, { + "n": "绘本故事", + "v": "绘本故事" + }, { + "n": "真人", + "v": "真人" + }, { + "n": "少儿综艺", + "v": "少儿综艺" + }, { + "n": "亲子", + "v": "亲子" + }, { + "n": "探索纪实", + "v": "探索纪实" + }, { + "n": "音频", + "v": "音频" + }] + }, { + "key": "child_tags", + "name": "全部分类", + "value": [{ + "n": "全部分类", + "v": "" + }, { + "n": "益智", + "v": "益智" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "幽默", + "v": "幽默" + }, { + "n": "机甲", + "v": "机甲" + }, { + "n": "公主魔法", + "v": "公主,魔法" + }, { + "n": "交通工具", + "v": "交通工具" + }, { + "n": "恐龙", + "v": "恐龙" + }, { + "n": "动物", + "v": "动物" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "友情", + "v": "友情" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "正义", + "v": "正义" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "童话", + "v": "童话" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "专注力", + "v": "专注力" + }, { + "n": "创造力", + "v": "创造力" + }, { + "n": "想象力", + "v": "想象力" + }, { + "n": "科普", + "v": "科普" + }, { + "n": "情商", + "v": "情商" + }, { + "n": "思维逻辑", + "v": "思维逻辑" + }, { + "n": "兴趣培养", + "v": "兴趣培养" + }, { + "n": "语文", + "v": "语文" + }, { + "n": "英语", + "v": "英语" + }, { + "n": "数学", + "v": "数学" + }, { + "n": "课程辅导", + "v": "课程辅导" + }] + }, { + "key": "age", + "name": "全部年龄", + "value": [{ + "n": "全部年龄", + "v": "" + }, { + "n": "0-2岁", + "v": "0-2" + }, { + "n": "3-4岁", + "v": "3-4" + }, { + "n": "5-6岁", + "v": "5-6" + }, { + "n": "7岁以上", + "v": "7-" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "付费", + "v": "1" + }, { + "n": "VIP", + "v": "2" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最多评论", + "v": "4" + }, { + "n": "最多收藏", + "v": "5" + }] + }], + "纪录片": [{ + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "美食", + "v": "美食" + }, { + "n": "自然", + "v": "自然" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "探险", + "v": "探险" + }, { + "n": "军事", + "v": "军事" + }, { + "n": "人物", + "v": "人物" + }, { + "n": "宇宙", + "v": "宇宙" + }, { + "n": "刑侦", + "v": "刑侦" + }, { + "n": "社会", + "v": "社会" + }, { + "n": "科技", + "v": "科技" + }, { + "n": "旅游", + "v": "旅游" + }] + }, { + "key": "company", + "name": "全部出品", + "value": [{ + "n": "全部出品", + "v": "" + }, { + "n": "BBC", + "v": "bbc,british" + }, { + "n": "央视", + "v": "央视,中央电视台,cctv,中国广播电影电视节目交易中心" + }, { + "n": "国家地理", + "v": "国家地理" + }, { + "n": "Love Nature", + "v": "love nature" + }, { + "n": "LGI", + "v": "looking" + }, { + "n": "A&E", + "v": "ae" + }, { + "n": "OTF", + "v": "fence" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014-2011", + "v": "2011-2014" + }, { + "n": "更早", + "v": "-2010" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "会员", + "v": "2" + }] + }, { + "key": "sort", + "name": "热度最高", + "value": [{ + "n": "热度最高", + "v": "" + }, { + "n": "综合排序", + "v": "0" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最多收藏", + "v": "5" + }] + }], + "文化": [{ + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "谈话", + "v": "谈话" + }, { + "n": "脱口秀", + "v": "脱口秀" + }, { + "n": "访谈", + "v": "访谈" + }, { + "n": "讲座论坛", + "v": "讲座论坛" + }, { + "n": "戏曲曲艺", + "v": "戏曲,曲艺" + }, { + "n": "舞台剧", + "v": "舞台剧" + }, { + "n": "文学", + "v": "文学" + }, { + "n": "国学", + "v": "国学" + }, { + "n": "艺术", + "v": "艺术" + }, { + "n": "培训课程", + "v": "培训课程" + }, { + "n": "有声书", + "v": "有声书" + }] + }, { + "key": "people", + "name": "文化大咖", + "value": [{ + "n": "文化大咖", + "v": "" + }, { + "n": "窦文涛", + "v": "窦文涛" + }, { + "n": "马未都", + "v": "马未都" + }, { + "n": "白岩松", + "v": "白岩松" + }, { + "n": "梅毅", + "v": "梅毅" + }, { + "n": "陈鲁豫", + "v": "陈鲁豫" + }, { + "n": "樊登", + "v": "樊登" + }, { + "n": "罗振宇", + "v": "罗振宇" + }, { + "n": "蒋方舟", + "v": "蒋方舟" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "year", + "name": "全部年份", + "value": [{ + "n": "全部年份", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014-2011", + "v": "2011-2014" + }, { + "n": "更早", + "v": "-2010" + }] + }, { + "key": "pay_type", + "name": "付费类型", + "value": [{ + "n": "付费类型", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "会员", + "v": "2" + }] + }, { + "key": "sort", + "name": "热度最高", + "value": [{ + "n": "热度最高", + "v": "" + }, { + "n": "综合排序", + "v": "0" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最多收藏", + "v": "5" + }] + }], + "亲子": [{ + "key": "qinzi_genre", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "孕产", + "v": "孕产" + }, { + "n": "育儿知识", + "v": "育儿知识,育儿达人,育儿专家,爸爸育儿,隔代育儿,育儿明星" + }, { + "n": "好物种草", + "v": "母婴用品,测评,母婴用品种草" + }, { + "n": "美食", + "v": "儿童美食,辅食,孕期饮食" + }, { + "n": "手工DIY", + "v": "手工diy" + }, { + "n": "教育观念", + "v": "教育观念" + }, { + "n": "亲子综艺", + "v": "亲子综艺" + }, { + "n": "亲子互动", + "v": "亲子旅游,亲子游戏,亲子阅读,玩具,早教,启蒙" + }, { + "n": "萌娃", + "v": "萌娃" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "美妆", + "v": "美妆" + }] + }, { + "key": "pregnancy_stage", + "name": "全部阶段", + "value": [{ + "n": "全部阶段", + "v": "" + }, { + "n": "备孕", + "v": "备孕" + }, { + "n": "孕早期", + "v": "孕早" + }, { + "n": "孕中期", + "v": "孕中" + }, { + "n": "孕晚期", + "v": "孕晚" + }] + }, { + "key": "show_label_baby_age", + "name": "全部分龄", + "value": [{ + "n": "全部分龄", + "v": "" + }, { + "n": "0-1岁", + "v": "0-1" + }, { + "n": "1-3岁", + "v": "1-3" + }, { + "n": "3-6岁", + "v": "3-6" + }, { + "n": "6岁+", + "v": "6-" + }] + }, { + "key": "pay_type", + "name": "全部", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "会员免费", + "v": "2" + }] + }, { + "key": "sort", + "name": "热度最高", + "value": [{ + "n": "热度最高", + "v": "" + }, { + "n": "综合排序", + "v": "0" + }, { + "n": "最新上线", + "v": "1" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最多评论", + "v": "3" + }, { + "n": "最多收藏", + "v": "5" + }] + }], + "教育": [{ + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "公开课", + "v": "公开课" + }, { + "n": "名人名嘴", + "v": "名人名嘴" + }, { + "n": "文化", + "v": "文化" + }, { + "n": "艺术", + "v": "艺术" + }, { + "n": "伦理社会", + "v": "伦理社会" + }, { + "n": "理工", + "v": "理工" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "心理学", + "v": "心理学" + }, { + "n": "经济", + "v": "经济" + }, { + "n": "管理学", + "v": "管理学" + }, { + "n": "外语", + "v": "外语" + }, { + "n": "法律", + "v": "法律" + }, { + "n": "计算机", + "v": "计算机" + }, { + "n": "哲学", + "v": "哲学" + }, { + "n": "职业培训", + "v": "职业培训" + }, { + "n": "家庭教育", + "v": "家庭教育" + }] + }, { + "key": "company", + "name": "全部出品", + "value": [{ + "n": "全部出品", + "v": "" + }, { + "n": "TED", + "v": "ted" + }, { + "n": "耶鲁大学", + "v": "耶鲁大学" + }, { + "n": "哈佛大学", + "v": "哈佛大学" + }, { + "n": "斯坦福大学", + "v": "斯坦福大学" + }, { + "n": "麻省理工学院", + "v": "麻省理工学院" + }] + }, { + "key": "pay_type", + "name": "全部节目", + "value": [{ + "n": "全部节目", + "v": "" + }, { + "n": "免费", + "v": "0" + }, { + "n": "付费", + "v": "1" + }, { + "n": "VIP", + "v": "2" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最多收藏", + "v": "5" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }], + "搞笑": [{ + "key": "division", + "name": "全部专区", + "value": [{ + "n": "全部专区", + "v": "" + }, { + "n": "1080P", + "v": "3" + }, { + "n": "独播", + "v": "6" + }, { + "n": "免费", + "v": "5" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }], + "生活": [{ + "key": "division", + "name": "全部专区", + "value": [{ + "n": "全部专区", + "v": "" + }, { + "n": "1080P", + "v": "3" + }, { + "n": "独播", + "v": "6" + }, { + "n": "VIP", + "v": "4" + }, { + "n": "免费", + "v": "5" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }], + "体育": [{ + "key": "division", + "name": "全部专区", + "value": [{ + "n": "全部专区", + "v": "" + }, { + "n": "1080P", + "v": "3" + }, { + "n": "独播", + "v": "6" + }, { + "n": "VIP", + "v": "4" + }, { + "n": "免费", + "v": "5" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "篮球", + "v": "篮球" + }, { + "n": "足球", + "v": "足球" + }, { + "n": "台球", + "v": "台球" + }, { + "n": "CBA", + "v": "CBA" + }, { + "n": "钓鱼", + "v": "钓鱼" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }], + "音乐": [{ + "key": "division", + "name": "全部专区", + "value": [{ + "n": "全部专区", + "v": "" + }, { + "n": "1080P", + "v": "3" + }, { + "n": "独播", + "v": "6" + }, { + "n": "免费", + "v": "5" + }] + }, { + "key": "main_area", + "name": "全部地区", + "value": [{ + "n": "全部地区", + "v": "" + }, { + "n": "中国", + "v": "中国" + }, { + "n": "中国台湾", + "v": "中国台湾" + }, { + "n": "中国香港", + "v": "中国香港" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "music_show_type", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "演唱会", + "v": "演唱会" + }, { + "n": "live现场", + "v": "live现场" + }, { + "n": "颁奖典礼", + "v": "颁奖典礼" + }, { + "n": "舞蹈", + "v": "舞蹈" + }, { + "n": "影视原声", + "v": "影视原声" + }, { + "n": "音乐达人", + "v": "音乐达人" + }, { + "n": "音乐教学", + "v": "音乐教学" + }, { + "n": "音乐纪录片", + "v": "音乐纪录片" + }, { + "n": "音乐mv", + "v": "音乐mv" + }, { + "n": "音乐自制", + "v": "音乐自制" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }], + "游戏": [{ + "key": "division", + "name": "全部专区", + "value": [{ + "n": "全部专区", + "v": "" + }, { + "n": "1080P", + "v": "3" + }, { + "n": "独播", + "v": "6" + }, { + "n": "VIP", + "v": "4" + }, { + "n": "免费", + "v": "5" + }] + }, { + "key": "game_brand", + "name": "全部节目", + "value": [{ + "n": "全部节目", + "v": "" + }, { + "n": "王者荣耀", + "v": "王者荣耀" + }, { + "n": "和平精英", + "v": "和平精英" + }, { + "n": "绝地求生", + "v": "绝地求生" + }, { + "n": "迷你世界", + "v": "迷你世界" + }, { + "n": "我的世界", + "v": "我的世界" + }, { + "n": "植物大战僵尸", + "v": "植物大战僵尸" + }, { + "n": "方舟生存进化", + "v": "方舟生存进化" + }, { + "n": "第五人格", + "v": "第五人格" + }, { + "n": "猫和老鼠", + "v": "猫和老鼠" + }, { + "n": "香肠派对", + "v": "香肠派对" + }, { + "n": "穿越火线", + "v": "穿越火线" + }, { + "n": "英雄联盟", + "v": "英雄联盟" + }] + }, { + "key": "tags", + "name": "全部类型", + "value": [{ + "n": "全部类型", + "v": "" + }, { + "n": "资讯", + "v": "资讯" + }, { + "n": "解说", + "v": "解说" + }, { + "n": "主播", + "v": "主播" + }, { + "n": "沙盒", + "v": "沙盒" + }, { + "n": "益智", + "v": "益智" + }, { + "n": "生存", + "v": "生存" + }, { + "n": "电子竞技", + "v": "电子竞技" + }, { + "n": "单机主机", + "v": "单机主机" + }, { + "n": "真人秀", + "v": "真人秀" + }, { + "n": "动画", + "v": "动画" + }, { + "n": "盘点", + "v": "盘点" + }, { + "n": "游戏文化", + "v": "游戏文化" + }, { + "n": "游戏节目", + "v": "游戏节目" + }, { + "n": "评测", + "v": "评测" + }, { + "n": "射击", + "v": "射击" + }, { + "n": "策略", + "v": "策略" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "即时战略", + "v": "即时战略" + }, { + "n": "卡牌", + "v": "卡牌" + }, { + "n": "角色扮演", + "v": "角色>扮演" + }] + }, { + "key": "sort", + "name": "综合排序", + "value": [{ + "n": "综合排序", + "v": "" + }, { + "n": "最多播放", + "v": "2" + }, { + "n": "最好评", + "v": "3" + }, { + "n": "最新上线", + "v": "1" + }] + }] + }, + headers: { + 'User-Agent': 'PC_UA', + 'Cookie': 'cna=VvNvGX3e0ywCAavVEXlnA2bg; __ysuid=1626676228345Rl1; __ayft=1652434048647; __arycid=dm-1-00; __arcms=dm-1-00; __ayvstp=85; __arpvid=1667204023100cWWdgM-1667204023112; __ayscnt=10; __aypstp=60; isg=BBwcqxvvk3BxkWQGugbLpUSf7TrOlcC_U7GAj_YdfYfvQbzLHqYGT4Hgp6m5TvgX; tfstk=c3JOByYUH20ilVucLOhh0pCtE40lZfGc-PjLHLLfuX7SWNyAiQvkeMBsIw7PWDC..; l=eBQguS-PjdJFGJT-BOfwourza77OSIRA_uPzaNbMiOCPOb1B5UxfW6yHp4T6C3GVhsGJR3rp2umHBeYBqQd-nxvOF8qmSVDmn', + 'Referer': 'https://www.youku.com', + }, + timeout: 5000, + class_name: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏', + class_url: '电视剧&电影&综艺&动漫&少儿&纪录片&文化&亲子&教育&搞笑&生活&体育&音乐&游戏', + limit: 20, + play_parse: true, + lazy: $js.toString(() => { + try { + let api = "" + input.split("?")[0]; + console.log(api); + let response = fetch(api, { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + let bata = JSON.parse(response); + if (bata.url.includes("http")) { + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } else { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + } catch { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + }), + 一级: $js.toString(() => { + let d = []; + MY_FL.type = MY_CATE; + let fl = stringify(MY_FL); + fl = encodeUrl(fl); + input = input.split("{")[0] + fl; + if (MY_PAGE > 1) { + let old_session = getItem("yk_session_" + MY_CATE, "{}"); + if (MY_PAGE === 2) { + input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session)) + } else { + input = input.replace("optionRefresh=1", "session=" + encodeUrl(old_session)) + } + } + let html = fetch(input, fetch_params); + try { + html = JSON.parse(html); + let lists = html.data.filterData.listData; + let session = html.data.filterData.session; + session = stringify(session); + if (session !== getItem("yk_session_" + MY_CATE, "{}")) { + setItem("yk_session_" + MY_CATE, session) + } + lists.forEach(function(it) { + let vid; + if (it.videoLink.includes("id_")) { + vid = it.videoLink.split("id_")[1].split(".html")[0] + } else { + vid = "msearch:" + } + d.push({ + title: it.title, + img: it.img, + desc: it.summary, + url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + vid, + content: it.subTitle + }) + }) + } catch (e) { + log("一级列表解析发生错误:" + e.message) + } + setResult(d); + }), + 二级: $js.toString(() => { + var d = []; + VOD = {}; + let html = request(input); + let json = JSON.parse(html); + if (/keyword/.test(input)) { + input = "https://search.youku.com/api/search?appScene=show_episode&showIds=" + json.pageComponentList[0].commonData.showId; + json = JSON.parse(fetch(MY_URL, fetch_params)) + } + let video_lists = json.serisesList; + var name = json.sourceName; + if (/优酷/.test(name) && video_lists.length > 0) { + let ourl = "https://v.youku.com/v_show/id_" + video_lists[0].videoId + ".html"; + let _img = video_lists[0].thumbUrl; + let html = fetch(ourl, { + headers: { + Referer: "https://v.youku.com/", + "User-Agent": PC_UA + } + }); + let json = /__INITIAL_DATA__/.test(html) ? html.split("window.__INITIAL_DATA__ =")[1].split(";")[0] : "{}"; + if (json === "{}") { + log("触发了优酷人机验证"); + VOD.vod_remarks = ourl; + VOD.vod_pic = _img; + VOD.vod_name = video_lists[0].title.replace(/(\d+)/g, ""); + VOD.vod_content = "触发了优酷人机验证,本次未获取详情,但不影响播放(" + ourl + ")" + } else { + try { + json = JSON.parse(json); + let data = json.data.data; + let data_extra = data.data.extra; + let img = data_extra.showImgV; + let model = json.data.model; + let m = model.detail.data.nodes[0].nodes[0].nodes[0].data; + let _type = m.showGenre; + let _desc = m.updateInfo || m.subtitle; + let JJ = m.desc; + let _title = m.introTitle; + VOD.vod_pic = img; + VOD.vod_name = _title; + VOD.vod_type = _type; + VOD.vod_remarks = _desc; + VOD.vod_content = JJ + } catch (e) { + log("海报渲染发生错误:" + e.message); + print(json); + VOD.vod_remarks = name + } + } + } + if (!/优酷/.test(name)) { + VOD.vod_content = "非自家播放源,暂无视频简介及海报"; + VOD.vod_remarks = name + } + + function adhead(url) { + return urlencode(url) + } + + play_url = play_url.replace("&play_url=", "&type=json&play_url="); + video_lists.forEach(function(it) { + let url = "https://v.youku.com/v_show/id_" + it.videoId + ".html"; + if (it.thumbUrl) { + d.push({ + desc: it.showVideoStage ? it.showVideoStage.replace("期", "集") : it.displayName, + pic_url: it.thumbUrl, + title: it.title, + url: play_url + adhead(url) + }) + } else if (name !== "优酷") { + d.push({ + title: it.displayName ? it.displayName : it.title, + url: play_url + adhead(it.url) + }) + } + }); + VOD.vod_play_from = name; + VOD.vod_play_url = d.map(function(it) { + return it.title + "$" + it.url + }) + .join("#"); + }), + + 搜索: $js.toString(() => { + var d = []; + let html = request(input); + let json = JSON.parse(html); + json.pageComponentList.forEach(function(it) { + if (it.hasOwnProperty("commonData")) { + it = it.commonData; + d.push({ + title: it.titleDTO.displayName, + img: it.posterDTO.vThumbUrl, + desc: it.stripeBottom, + content: it.updateNotice + " " + it.feature, + url: "https://search.youku.com/api/search?appScene=show_episode&showIds=" + it.showId + "&appCaller=h5" + }) + } + }); + setResult(d) + }), +} \ No newline at end of file diff --git a/xiaosa/JS/剧圈圈.js b/xiaosa/JS/剧圈圈.js new file mode 100644 index 00000000..94036dec --- /dev/null +++ b/xiaosa/JS/剧圈圈.js @@ -0,0 +1,12 @@ +Object.assign(muban.mxpro.二级, { + tab_text: 'div--small&&Text', +}); +var rule = { + 模板: 'mxpro', + title: '剧圈圈', + host: 'https://www.jqqzx.cc/', + url: '/vodshow/id/fyclass/page/fypage.html', + searchUrl: '/vodsearch**/page/fypage.html', + class_parse: '.navbar-items li:gt(2):lt(8);a&&Text;a&&href;.*/(.*?)\.html', + cate_exclude: '今日更新|热榜', +} \ No newline at end of file diff --git a/xiaosa/JS/动漫岛.js b/xiaosa/JS/动漫岛.js new file mode 100644 index 00000000..1ffcc71b --- /dev/null +++ b/xiaosa/JS/动漫岛.js @@ -0,0 +1,1100 @@ +var rule = { + title: '动漫岛', + // host:'http://www.dmd85.com', + // host:'http://www.88dmw.com', + host: 'http://www.dmand5.com', + // url:'/vod-list-id-fyclass-pg-fypage-order--by-{by}-class-{class}-year-{year}-letter--area--lang-.html', + url: '/vod-list-id-fyclass-pg-fypage-order-fyfilter-area--lang-.html', + filterable: 1, //是否启用分类筛选, + filter_url: '-by-{{fl.by}}-class-{{fl.class}}-year-{{fl.year}}-letter-{{fl.letter}}', + filter: { + "1": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "1" + }, { + "n": "热血", + "v": "2" + }, { + "n": "奇幻", + "v": "3" + }, { + "n": "恋爱", + "v": "4" + }, { + "n": "校园", + "v": "5" + }, { + "n": "后宫", + "v": "6" + }, { + "n": "搞笑", + "v": "7" + }, { + "n": "青春", + "v": "8" + }, { + "n": "百合", + "v": "9" + }, { + "n": "科幻", + "v": "14" + }, { + "n": "推理", + "v": "13" + }, { + "n": "魔法", + "v": "12" + }, { + "n": "神魔", + "v": "11" + }, { + "n": "治愈", + "v": "10" + }, { + "n": "竞技", + "v": "59" + }, { + "n": "悬疑", + "v": "60" + }, { + "n": "战争", + "v": "62" + }, { + "n": "萝莉", + "v": "63" + }, { + "n": "魔幻", + "v": "64" + }, { + "n": "战斗", + "v": "65" + }, { + "n": "歌舞", + "v": "98" + }, { + "n": "历史", + "v": "99" + }, { + "n": "励志", + "v": "108" + }, { + "n": "偶像", + "v": "118" + }, { + "n": "职场", + "v": "121" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "更新", + "v": "time" + }, { + "n": "得分", + "v": "score" + }, { + "n": "总排行", + "v": "hits" + }] + }], + "3": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "36" + }, { + "n": "热血", + "v": "37" + }, { + "n": "奇幻", + "v": "38" + }, { + "n": "恋爱", + "v": "39" + }, { + "n": "恋爱", + "v": "40" + }, { + "n": "恋爱", + "v": "40" + }, { + "n": "搞笑", + "v": "42" + }, { + "n": "治愈", + "v": "43" + }, { + "n": "神魔", + "v": "44" + }, { + "n": "魔法", + "v": "45" + }, { + "n": "百合", + "v": "46" + }, { + "n": "推理", + "v": "47" + }, { + "n": "科幻", + "v": "48" + }, { + "n": "竞技", + "v": "49" + }, { + "n": "悬疑", + "v": "66" + }, { + "n": "战争", + "v": "68" + }, { + "n": "萝莉", + "v": "69" + }, { + "n": "魔幻", + "v": "70" + }, { + "n": "战斗", + "v": "71" + }, { + "n": "青春", + "v": "72" + }, { + "n": "历史", + "v": "100" + }, { + "n": "歌舞", + "v": "101" + }, { + "n": "恐怖", + "v": "104" + }, { + "n": "职场", + "v": "107" + }, { + "n": "励志", + "v": "109" + }, { + "n": "偶像", + "v": "119" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "更新", + "v": "time" + }, { + "n": "得分", + "v": "score" + }, { + "n": "总排行", + "v": "hits" + }] + }], + "4": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "50" + }, { + "n": "热血", + "v": "51" + }, { + "n": "武侠", + "v": "52" + }, { + "n": "奇幻", + "v": "53" + }, { + "n": "玄幻", + "v": "54" + }, { + "n": "竞技", + "v": "55" + }, { + "n": "魔幻", + "v": "56" + }, { + "n": "科幻", + "v": "57" + }, { + "n": "恋爱", + "v": "58" + }, { + "n": "历史", + "v": "73" + }, { + "n": "战斗", + "v": "74" + }, { + "n": "搞笑", + "v": "75" + }, { + "n": "神魔", + "v": "76" + }, { + "n": "战争", + "v": "97" + }, { + "n": "古风", + "v": "111" + }, { + "n": "少女", + "v": "112" + }, { + "n": "萝莉", + "v": "113" + }, { + "n": "治愈", + "v": "114" + }, { + "n": "日常", + "v": "115" + }, { + "n": "歌舞", + "v": "116" + }, { + "n": "偶像", + "v": "120" + }, { + "n": "职场", + "v": "123" + }, { + "n": "仙侠", + "v": "125" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "更新", + "v": "time" + }, { + "n": "得分", + "v": "score" + }, { + "n": "总排行", + "v": "hits" + }] + }], + "16": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "77" + }, { + "n": "热血", + "v": "78" + }, { + "n": "奇幻", + "v": "79" + }, { + "n": "恋爱", + "v": "80" + }, { + "n": "校园", + "v": "81" + }, { + "n": "后宫", + "v": "82" + }, { + "n": "搞笑", + "v": "83" + }, { + "n": "青春", + "v": "84" + }, { + "n": "百合", + "v": "85" + }, { + "n": "治愈", + "v": "86" + }, { + "n": "神魔", + "v": "87" + }, { + "n": "魔法", + "v": "88" + }, { + "n": "推理", + "v": "89" + }, { + "n": "科幻", + "v": "90" + }, { + "n": "竞技", + "v": "91" + }, { + "n": "悬疑", + "v": "92" + }, { + "n": "战争", + "v": "93" + }, { + "n": "萝莉", + "v": "94" + }, { + "n": "魔幻", + "v": "95" + }, { + "n": "战斗", + "v": "96" + }, { + "n": "历史", + "v": "102" + }, { + "n": "歌舞", + "v": "103" + }, { + "n": "恐怖", + "v": "105" + }, { + "n": "职场", + "v": "106" + }, { + "n": "励志", + "v": "110" + }, { + "n": "偶像", + "v": "117" + }, { + "n": "职场", + "v": "124" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "更新", + "v": "time" + }, { + "n": "得分", + "v": "score" + }, { + "n": "总排行", + "v": "hits" + }] + }] + }, + searchUrl: '/search-pg-fypage-wd-**.html', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + headers: { + 'User-Agent': 'PC_UA', + }, + class_parse: '.secNacUl li;a&&Text;a&&href;.*/(\\d+)-1.html', + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.c1_l_wap_contact li;*;img&&src;.time:eq(0)&&Text;*', + 一级: '.list3_cn_box .cn_box2;a&&title;.list_pic&&src;.list_20 li:eq(1) span&&Text;a&&href', + 二级: { + "title": "h1&&Text;.o_r_contact&&li:eq(0)&&Text", + "img": ".o_big_img_bg_b img&&src", + "desc": ".o_r_contact&&li:eq(6)&&Text;.o_r_contact&&li:eq(5)&&Text;.o_r_contact&&li:eq(3)&&Text;.o_r_contact&&li:eq(2)&&Text;.o_r_contact&&li:eq(1)&&Text", + "content": ".des_box&&Text", + "tabs": ".from-tabs&&label", + "lists": ".mn_list_li_movie:eq(#id) li" + }, + 搜索: '*', +} \ No newline at end of file diff --git a/xiaosa/JS/动漫巴士.js b/xiaosa/JS/动漫巴士.js new file mode 100644 index 00000000..db8ae7be --- /dev/null +++ b/xiaosa/JS/动漫巴士.js @@ -0,0 +1,64 @@ +var rule = { + author: '小可乐/240526/第一版', + title: '动漫巴士[漫]', + host: 'http://dm84.site', + hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":MOBILE_UA}});let src= jsp.pdfh(html,"ul&&a:eq(0)&&href");print(src);HOST=src', + headers: { + 'User-Agent': 'MOBILE_UA' + }, + 编码: 'utf-8', + timeout: 5000, + + homeUrl: '/', + url: '/show-fyclass--fyfilter-fypage.html', + filter_url: '{{fl.by}}-{{fl.class}}--{{fl.year}}', + detailUrl: '', + searchUrl: '/s-**---------fypage.html', + searchable: 1, + quickSearch: 1, + filterable: 1, + + class_name: '国产动漫&日本动漫&欧美动漫&电影', + class_url: '1&2&3&4', + filter_def: {}, + + proxy_rule: '', + sniffer: 0, + isVideo: '', + play_parse: true, + parse_url: '', + lazy: `js: +let html = request(input); +let kurl = pdfh(html,'body&&iframe').match(/src="(.*?)"/)[1]; +input= kurl +`, + + limit: 9, + double: false, + 推荐: '*', + //列表;标题;图片;描述;链接;详情(可不写) + 一级: '.v_list li;a&&title;a&&data-bg;.desc&&Text;a&&href', + 二级: { + //名称;类型 + "title": "h1&&Text;meta[name*=class]&&content", + //图片 + "img": "img&&src", + //主要描述;年份;地区;演员;导演 + "desc": "meta[name*=update_date]&&content;meta[name*=release_date]&&content;meta[name*=area]&&content;meta[name*=actor]&&content;meta[name*=director]&&content", + //简介 + "content": "p:eq(-2)&&Text", + //线路数组 + "tabs": ".tab_control&&li", + //线路标题 + "tab_text": "body&&Text", + //播放数组 选集列表 + "lists": ".play_list:eq(#id)&&a", + //选集标题 + "list_text": "body&&Text", + //选集链接 + "list_url": "a&&href" + }, + 搜索: '*', + + filter: 'H4sIAAAAAAAAA+2WbUsqQRTH3+/HmNe+0LWn21eJXlgIRU+Q3UBEsLTaCrYtSm9cb2RQ2YOVFUFa9mWcGf0Wjc6cMxPFstDlcgXf7e/39+zo2XPUlEUiZHTMSpGZeJKMksnZWCJBQmQ+NhcXyKt1erQteDk2+1OIsRSZF5quldvZckcLIOmQsqcb9LmurALImPOL5QsqUwAZd3O6TgFmF2+tpy3IJGB2vmvUScDzKmfNxjGcJwHrspVWKQN1EiBrZV55w1WZArynd8Svd+GeEvCzb5VZZoW9XPF97ICp0uPpEDY5GY8t6h6zwlO78Biwx3bYHlCue2n4qPZR00e0j5je1t42fVj7sOEjP9CLS8OPaD9i+mHth00/pP2Q6Qe1H/zYr4mk0S13j9Z2PnVLN1HA0rR4Kdy5Wauxu32VTE0vJfSzvs1RZ10licmFxXjnWGs8ZBH7r+3E+l778AImQkKQnfDbJeq59OYKMgl6Dqv0rYAT2AU877hEf1fgPAlBdoIVa+LdQZ2EIDvBVq95HjMJmN3XWc6BTAK+l8MG9SBTgHUrHsvkoU4CZm6Ze/A8Fei6be5Usa4LmD2U2n9O+MElxMj9re2prY3+z1vr92vlW+e3mT7b9+UW9ee5l+Z54F/Ms/ib0nwt6v8sHfj2POeLdPMc6iQE+eb3nWenyrJrcJ6E/jz3zjxb6XeqCRqqbAwAAA==' +} \ No newline at end of file diff --git a/xiaosa/JS/动画片大全.js b/xiaosa/JS/动画片大全.js new file mode 100644 index 00000000..696e162b --- /dev/null +++ b/xiaosa/JS/动画片大全.js @@ -0,0 +1,28 @@ +var rule = { + title: '动画片大全', + host: 'https://www.dhpdq2.com/', + url: 'https://www.dhpdq2.com/katong/fyclass-fypage/', + searchUrl: '/vodsearch/**----------fypage---/', + class_parse: '.c_class li;a&&Text;a&&href;.*/(.*?)/', + searchable: 2, + quickSearch: 0, + filterable: 0, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + play_parse: true, + lazy: '', + limit: 6, + 推荐: '.stui-vodlist;li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + double: true, + 一级: '.stui-vodlist li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + title: 'h1&&Text;.detail_list&&ul:eq(1)&&li&&a:eq(2)&&Text', + img: '.vodlist_thumb&&data-original', + desc: '.playinfo&&p:eq(0)&&Text;.playinfo&&p:eq(1)&&Text;.playinfo&&p:eq(2)&&Text;.playinfo&&p:eq(3)&&Text', + content: '.content:eq(1)', + tabs: '.relatesdh .title h3', + lists: '.relatesdh:eq(#id) li', + }, + 搜索: '*', +} \ No newline at end of file diff --git a/xiaosa/JS/去看吧.js b/xiaosa/JS/去看吧.js new file mode 100644 index 00000000..81f91214 --- /dev/null +++ b/xiaosa/JS/去看吧.js @@ -0,0 +1,1127 @@ +muban.vfed.二级.title = 'h1&&Text;.fed-col-md3--span:eq(0)&&Text'; +muban.vfed.二级.desc = '.fed-col-md3:eq(3)&&Text;;;.fed-col-md6:eq(0)&&Text;.fed-col-md6--span:eq(1)&&Text'; +var rule = { + title: '去看吧', + 模板: 'vfed', + host: 'https://www.k9dm.com', + // url: '/index.php/vod/show/id/fyclass/page/fypage.html', + url: '/index.php/vod/show/id/fyclassfyfilter.html', + filterable: 1, //是否启用分类筛选, + filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}/page/fypage{{fl.year}}', + filter: { + "33": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "猎奇", + "v": "/class/猎奇" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "伪娘", + "v": "/class/伪娘" + }, { + "n": "美少女", + "v": "/class/美少女" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }, { + "n": "1999", + "v": "/year/1999" + }, { + "n": "1998", + "v": "/year/1998" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "21": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "猎奇", + "v": "/class/猎奇" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "伪娘", + "v": "/class/伪娘" + }, { + "n": "美少女", + "v": "/class/美少女" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "大陆", + "v": "/area/大陆" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "泰国", + "v": "/area/泰国" + }, { + "n": "新加坡", + "v": "/area/新加坡" + }, { + "n": "马来西亚", + "v": "/area/马来西亚" + }, { + "n": "印度", + "v": "/area/印度" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }, { + "n": "加拿大", + "v": "/area/加拿大" + }, { + "n": "西班牙", + "v": "/area/西班牙" + }, { + "n": "俄罗斯", + "v": "/area/俄罗斯" + }, { + "n": "其它", + "v": "/area/其它" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }, { + "n": "1999", + "v": "/year/1999" + }, { + "n": "1998", + "v": "/year/1998" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "50": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "猎奇", + "v": "/class/猎奇" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "伪娘", + "v": "/class/伪娘" + }, { + "n": "美少女", + "v": "/class/美少女" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "大陆", + "v": "/area/大陆" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "泰国", + "v": "/area/泰国" + }, { + "n": "新加坡", + "v": "/area/新加坡" + }, { + "n": "马来西亚", + "v": "/area/马来西亚" + }, { + "n": "印度", + "v": "/area/印度" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }, { + "n": "加拿大", + "v": "/area/加拿大" + }, { + "n": "西班牙", + "v": "/area/西班牙" + }, { + "n": "俄罗斯", + "v": "/area/俄罗斯" + }, { + "n": "其它", + "v": "/area/其它" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }, { + "n": "1999", + "v": "/year/1999" + }, { + "n": "1998", + "v": "/year/1998" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "24": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "猎奇", + "v": "/class/猎奇" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "伪娘", + "v": "/class/伪娘" + }, { + "n": "美少女", + "v": "/class/美少女" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "大陆", + "v": "/area/大陆" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "泰国", + "v": "/area/泰国" + }, { + "n": "新加坡", + "v": "/area/新加坡" + }, { + "n": "马来西亚", + "v": "/area/马来西亚" + }, { + "n": "印度", + "v": "/area/印度" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }, { + "n": "加拿大", + "v": "/area/加拿大" + }, { + "n": "西班牙", + "v": "/area/西班牙" + }, { + "n": "俄罗斯", + "v": "/area/俄罗斯" + }, { + "n": "其它", + "v": "/area/其它" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }, { + "n": "1999", + "v": "/year/1999" + }, { + "n": "1998", + "v": "/year/1998" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "22": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "猎奇", + "v": "/class/猎奇" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "伪娘", + "v": "/class/伪娘" + }, { + "n": "美少女", + "v": "/class/美少女" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "欧美", + "v": "/area/欧美" + }, { + "n": "其他", + "v": "/area/其他" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }, { + "n": "1999", + "v": "/year/1999" + }, { + "n": "1998", + "v": "/year/1998" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }] + }, + class_parse: '.fed-pops-list:eq(0)&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', +} \ No newline at end of file diff --git a/xiaosa/JS/奇米动漫.js b/xiaosa/JS/奇米动漫.js new file mode 100644 index 00000000..9e4e97be --- /dev/null +++ b/xiaosa/JS/奇米动漫.js @@ -0,0 +1,1164 @@ +var rule = { + title: '奇米动漫', + host: 'http://www.qimiqimi.net', + url: '/show/fyclassfyfilter.html', + filterable: 1, //是否启用分类筛选, + filter_url: '{{fl.area}}{{fl.by}}{{fl.class}}{{fl.letter}}/page/fypage{{fl.year}}', + filter: { + "xinfan": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "神魔", + "v": "/class/神魔" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "魔幻", + "v": "/class/魔幻" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "日常", + "v": "/class/日常" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "/area/日本/" + }, { + "n": "大陆", + "v": "/area/中国/" + }, { + "n": "欧美", + "v": "/area/欧美/" + }, { + "n": "韩国", + "v": "/area/韩国/" + }, { + "n": "港台", + "v": "/area/港台/" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "字母", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "riman": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "神魔", + "v": "/class/神魔" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "魔幻", + "v": "/class/魔幻" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "日常", + "v": "/class/日常" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "/area/日本/" + }, { + "n": "大陆", + "v": "/area/中国/" + }, { + "n": "欧美", + "v": "/area/欧美/" + }, { + "n": "韩国", + "v": "/area/韩国/" + }, { + "n": "港台", + "v": "/area/港台/" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "字母", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "guoman": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "神魔", + "v": "/class/神魔" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "魔幻", + "v": "/class/魔幻" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "日常", + "v": "/class/日常" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "/area/日本/" + }, { + "n": "大陆", + "v": "/area/中国/" + }, { + "n": "欧美", + "v": "/area/欧美/" + }, { + "n": "韩国", + "v": "/area/韩国/" + }, { + "n": "港台", + "v": "/area/港台/" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "字母", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "jcdm": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "神魔", + "v": "/class/神魔" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "魔幻", + "v": "/class/魔幻" + }, { + "n": "战斗", + "v": "/class/战斗" + }, { + "n": "日常", + "v": "/class/日常" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "/area/日本/" + }, { + "n": "大陆", + "v": "/area/中国/" + }, { + "n": "欧美", + "v": "/area/欧美/" + }, { + "n": "韩国", + "v": "/area/韩国/" + }, { + "n": "港台", + "v": "/area/港台/" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2007", + "v": "/year/2007" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }, { + "n": "2003", + "v": "/year/2003" + }, { + "n": "2002", + "v": "/year/2002" + }, { + "n": "2001", + "v": "/year/2001" + }, { + "n": "2000", + "v": "/year/2000" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "字母", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }] + }, + searchable: 2, //是否启用全局搜索, + headers: { //网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'PC_UA', + }, + class_parse: '#nav li;a&&Text;a&&href;.*/(\\w+).html', + cate_exclude: '番组专题|最近更新', + play_parse: true, + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + data.vod_play_from += value.player_info.show + '$$$'; + value.urls.forEach((v) => { + data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#'; + }); + data.vod_play_url += '$$$'; + }); + return data; +} +//搜索 +globalThis.ssvod = function(wd) { + var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + keywords: wd, + typepage_id: 1, + } + }); + let html = JSON.parse(html1); + return AES_Decrypt(html.data); +} +//解析 +globalThis.jxx = function(id, url, name, juji) { + /* if("741852963"!=='741852963'){ + return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4'; + }*/ + if (id.startsWith('http')) { + return { + parse: 1, + url: id + url, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + if (id == 0) { + return { + parse: 0, + url: id + url, + jx: 1, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + + let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + parse_api: id, + url: AES_Encrypt(url), + } + }); + let html = AES_Decrypt(JSON.parse(html1).data); + console.log(html); + let decry = html.replace(/\n/g, '').replace(/\\/g, ''); + let matches = decry.match(/"url":"([^"]+)"/); + if (!matches || matches[1] === null) { + matches = decry.match(/"url": "([^"]+)"/); + } + return { + parse: 0, + url: matches[1], + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; +} + +var rule = { + title: '小熊', + host: '', + detailUrl: 'fyid', + searchUrl: '**', + url: 'fyclass', + searchable: 2, + quickSearch: 1, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + play_parse: true, + lazy: $js.toString(() => { + const parts = input.split('~'); + input = jxx(parts[0], parts[1], parts[2], parts[3]); + }), + 推荐: $js.toString(() => { + let data = vod1(0, 0); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 一级: $js.toString(() => { + let data = vod1(input, MY_PAGE); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 二级: $js.toString(() => { + console.log("调试信息2" + input); + let data = vodids(input); + //console.log(data); + VOD = data; + }), + 搜索: $js.toString(() => { + let data = ssvod(input); + let bata = JSON.parse(data).search_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + // console.log(data); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/小虎斑弹幕.js b/xiaosa/JS/小虎斑弹幕.js new file mode 100644 index 00000000..84038398 --- /dev/null +++ b/xiaosa/JS/小虎斑弹幕.js @@ -0,0 +1,45 @@ +var rule = { + title: '弹幕[资]', + host: 'http://gy.xn--yet24tmq1a.xyz/', + homeTid: '', + homeUrl: '/api.php/provide/vod/?ac=detail&t={{rule.homeTid}}', + detailUrl: '/api.php/provide/vod/?ac=detail&ids=fyid', + searchUrl: '/api.php/provide/vod/?ac=detail&wd=**&pg=fypage', + url: '/api.php/provide/vod/?ac=detail&pg=fypage&t=fyclass', + headers: { + 'User-Agent': 'MOBILE_UA', + }, + class_parse: 'json:class;', + timeout: 5000, + filterable: 1, + limit: 20, + multi: 1, + searchable: 2, + play_parse: true, + parse_url: '', + lazy: $js.toString(() => { + let json = request("http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input); + let bata = JSON.parse(json); + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: bata.danmaku + }; + }), + 推荐: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from', + 一级: $js.toString(() => { + let bata = JSON.parse(request(input)).list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }) + }); + setResult(d) + }), + 二级: 'js:\n let html=request(input);\n html=JSON.parse(html);\n let data=html.list;\n VOD=data[0];', + 搜索: 'json:list;vod_name;vod_pic;vod_remarks;vod_id;vod_play_from', +} \ No newline at end of file diff --git a/xiaosa/JS/巨人弹幕.js b/xiaosa/JS/巨人弹幕.js new file mode 100644 index 00000000..141692cb --- /dev/null +++ b/xiaosa/JS/巨人弹幕.js @@ -0,0 +1,210 @@ +globalThis.h_ost = 'http://118.107.41.134:35555/'; +var key = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ=="); +var iv = CryptoJS.enc.Base64.parse("ZGMzMjUwNmQ5YjVjYmY4ZQ=="); +globalThis.AES_Decrypt = function(word) { + try { + var decrypt = CryptoJS.AES.decrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); + const decryptedText = decrypt.toString(CryptoJS.enc.Utf8); + if (!decryptedText) { + throw new Error("解密后的内容为空"); + } + return decryptedText; + } catch (e) { + console.error("解密失败:", e); + return null; + } +}; +globalThis.AES_Encrypt = function(word) { + var encrypted = CryptoJS.AES.encrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); +}; + +globalThis.vod1 = function(t, pg) { + let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', { + body: { + area: '全部', + year: '全部', + type_id: t, + page: pg, + sort: '最新', + lang: '全部', + class: '全部' + }, + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + 'method': 'POST' + }, true); + let html = JSON.parse(html1); + return (AES_Decrypt(html.data)); +} +globalThis.vodids = function(ids) { + let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + vod_id: ids, + } + }); + let html = JSON.parse(html1); + const rdata = JSON.parse(AES_Decrypt(html.data)); + const data = { + vod_id: ids, + vod_name: rdata.vod.vod_name, + vod_remarks: rdata.vod.vod_remarks, + vod_actor: rdata.vod.vod_actor, + vod_director: rdata.vod.vod_director, + vod_content: rdata.vod.vod_content, + vod_play_from: '', + vod_play_url: '' + }; + + rdata.vod_play_list.forEach((value) => { + data.vod_play_from += value.player_info.show + '$$$'; + value.urls.forEach((v) => { + data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#'; + }); + data.vod_play_url += '$$$'; + }); + return data; +} +//搜索 +globalThis.ssvod = function(wd) { + var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + keywords: wd, + typepage_id: 1, + } + }); + let html = JSON.parse(html1); + return AES_Decrypt(html.data); +} +//解析 +globalThis.jxx = function(id, url, name, juji) { + /* if("741852963"!=='741852963'){ + return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4'; + }*/ + //console.log(id); + if (id.startsWith('http')) { + return { + parse: 1, + url: id + url, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + if (id == 0) { + return { + parse: 0, + url: url, + jx: 1, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + + let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + parse_api: id, + url: AES_Encrypt(url), + } + }); + let html = AES_Decrypt(JSON.parse(html1).data); + console.log(html); + let decry = html.replace(/\n/g, '').replace(/\\/g, ''); + let matches = decry.match(/"url":"([^"]+)"/); + if (!matches || matches[1] === null) { + matches = decry.match(/"url": "([^"]+)"/); + } + return { + parse: 0, + url: matches[1], + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; +} + +var rule = { + title: '巨人', + host: '', + detailUrl: 'fyid', + searchUrl: '**', + url: 'fyclass', + searchable: 2, + quickSearch: 1, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + play_parse: true, + lazy: $js.toString(() => { + const parts = input.split('~'); + input = jxx(parts[0], parts[1], parts[2], parts[3]); + }), + 推荐: $js.toString(() => { + let data = vod1(0, 0); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 一级: $js.toString(() => { + let data = vod1(input, MY_PAGE); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 二级: $js.toString(() => { + console.log("调试信息2" + input); + let data = vodids(input); + //console.log(data); + VOD = data; + }), + 搜索: $js.toString(() => { + let data = ssvod(input); + let bata = JSON.parse(data).search_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + // console.log(data); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/异世界.js b/xiaosa/JS/异世界.js new file mode 100644 index 00000000..bf556ee9 --- /dev/null +++ b/xiaosa/JS/异世界.js @@ -0,0 +1,278 @@ +var rule = { + title: '异世界动漫', + host: 'https://www.dmmiku.com/', + homeUrl: '/index.php/vod/show/id/22.html', + // url:'/index.php/vod/show/class/fyclass/id/20/page/fypage.html', + url: '/index.php/vod/show/fyclassfyfilter.html', + filterable: 1, + filter_url: '{{fl.type}}/id/20/page/fypage{{fl.year}}', + filter: { + "area/日本": [{ + "key": "type", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "OVA", + "v": "/class/OVA" + }, { + "n": "剧场版", + "v": "/class/剧场版" + }, { + "n": "无修", + "v": "/class/BD无修" + }, { + "n": "萝莉", + "v": "/class/萝莉" + }, { + "n": "学園", + "v": "/class/学園" + }, { + "n": "后宫", + "v": "/class/后宫" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "神魔", + "v": "/class/神魔" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "治愈", + "v": "/class/治愈" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "百合", + "v": "/class/百合" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "魔法", + "v": "/class/魔法" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "犯罪", + "v": "/class/犯罪" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "耽美", + "v": "/class/耽美" + }, { + "n": "其他", + "v": "/class/其他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }] + }], + "area/中國": [{ + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }] + }] + }, + searchUrl: '/index.php/vod/search/page/fypage/wd/**.html', + searchable: 2, + quickSearch: 0, + headers: { + 'User-Agent': 'MOBILE_UA' + }, + timeout: 5000, //网站的全局请求超时,默认是3000毫秒 + class_name: '日漫&国漫', + class_url: 'area/日本&area/中國', + play_parse: true, + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + TABS.push(pdfh(it, 'a&&alt')) + }); + `, + // "lists": ".content_playlist:not(.list_scroll):eq(#id) a" + "lists": "div.playlist_full:eq(#id) li" + }, + 搜索: 'li.searchlist_item;*;*;*;*', +} \ No newline at end of file diff --git a/xiaosa/JS/思古影视.js b/xiaosa/JS/思古影视.js new file mode 100644 index 00000000..6abbd1d2 --- /dev/null +++ b/xiaosa/JS/思古影视.js @@ -0,0 +1,44 @@ +var rule = { + 类型: '影视', + title: '思古影视', + host: 'https://siguyy.cn', + url: '/show/fyclass--------fypage---/', + searchUrl: 'https://siguyy.cn/search/-------------/?wd=**', + searchable: 2, + quickSearch: 0, + timeout: 5000, + play_parse: true, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + lazy: `js: + if(/\\.(m3u8|mp4)/.test(input)){ + input = {parse:0,url:input} + }else{ + if(rule.parse_url.startsWith('json:')){ + let purl = rule.parse_url.replace('json:','')+input; + let html = request(purl); + input = {parse:0,url:JSON.parse(html).url} + }else{ + input= rule.parse_url+input; + } + `, + headers: { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0", + }, + 推荐: '*', + 一级: '.container .flex.desktop-hover-effect;span&&Text;img&&data-original;p.truncate&&Text;a&&href', + 二级: { + title: '.p-3.mobile&&Text', + img: 'img&&data-original', + desc: '.text-sm.py-1&&Text', + content: '.text-secondary&&Text', + tabs: '.flex.flex-row.gap-1.items-center', + lists: '.flex.flex-column.overflow-auto.no-scrollbar&&li', + tab_text: 'body&&Text', + list_text: 'a&&Text', + list_url: 'a&&href', + }, + double: false, + 搜索: '.col-lg-6.col-md-12.mt-2.mb-2.cursor-pointer;.topic-details-title-sub.text-secondary&&Text;img&&data-original;.topic-details-title&&Text;a&&href', +} \ No newline at end of file diff --git a/xiaosa/JS/怡萱动漫.js b/xiaosa/JS/怡萱动漫.js new file mode 100644 index 00000000..d33b0fbc --- /dev/null +++ b/xiaosa/JS/怡萱动漫.js @@ -0,0 +1,773 @@ +// 发布页 https://acgfans.org/pub.html +var rule = { + title: '怡萱动漫', + // host:'https://www.yxdmlove.com', + host: 'https://acgfans.org/pub.html', + hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,"p:eq(0)&&a&&Text");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值 + // url:'/category.html?channel=17&zhonglei=fyclass&orderby=pubdate&totalresult=2999&pageno=fypage', + url: '/category.html?channel=17&zhonglei=fyclassfyfilter&pageno=fypage', + filterable: 1, //是否启用分类筛选, + filter_url: '&{{fl.by or "orderby=pubdate"}}&{{fl.year}}&{{fl.area}}&{{fl.sta}}&{{fl.class}}', + filter: { + "TV": [{ + "key": "sta", + "name": "进度", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "连载中", + "v": "status=连载中" + }, { + "n": "已完结", + "v": "status=已完结" + }, { + "n": "未播放", + "v": "status=未播放" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "area=日本" + }, { + "n": "中国", + "v": "area=中国" + }, { + "n": "欧美", + "v": "area=欧美" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "year=2025" + }, { + "n": "2024", + "v": "year=2024" + }, { + "n": "2023", + "v": "year=2023" + }, { + "n": "2022", + "v": "year=2022" + }, { + "n": "2021", + "v": "year=2021" + }, { + "n": "2020", + "v": "year=2020" + }, { + "n": "2019", + "v": "year=2019" + }, { + "n": "2018", + "v": "year=2018" + }, { + "n": "2017", + "v": "year=2017" + }, { + "n": "2016", + "v": "year=2016" + }, { + "n": "2015", + "v": "year=2015" + }, { + "n": "2014", + "v": "year=2014" + }, { + "n": "2013", + "v": "year=2013" + }, { + "n": "2012", + "v": "year=2012" + }, { + "n": "2011", + "v": "year=2011" + }, { + "n": "2010", + "v": "year=2010" + }, { + "n": "更早", + "v": "year=2010前" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "jqlx=冒险" + }, { + "n": "热血", + "v": "jqlx=热血" + }, { + "n": "爱情", + "v": "jqlx=爱情" + }, { + "n": "搞笑", + "v": "jqlx=搞笑" + }, { + "n": "后宫", + "v": "jqlx=后宫" + }, { + "n": "校园", + "v": "jqlx=校园" + }, { + "n": "机战", + "v": "jqlx=机战" + }, { + "n": "幻想", + "v": "jqlx=幻想" + }, { + "n": "科幻", + "v": "jqlx=科幻" + }, { + "n": "竞技", + "v": "jqlx=竞技" + }, { + "n": "百合", + "v": "jqlx=百合" + }, { + "n": "耽美", + "v": "jqlx=耽美" + }, { + "n": "悬疑", + "v": "jqlx=悬疑" + }, { + "n": "剧情", + "v": "jqlx=剧情" + }, { + "n": "战争", + "v": "jqlx=战争" + }, { + "n": "恐怖", + "v": "jqlx=恐怖" + }, { + "n": "运动", + "v": "jqlx=运动" + }, { + "n": "动作", + "v": "jqlx=动作" + }, { + "n": "童话", + "v": "jqlx=童话" + }, { + "n": "历史", + "v": "jqlx=历史" + }, { + "n": "真人", + "v": "jqlx=真人" + }, { + "n": "女性向", + "v": "jqlx=女性向" + }, { + "n": "泡面番", + "v": "jqlx=泡面番" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "orderby=pubdate" + }, { + "n": "热度", + "v": "orderby=click" + }] + }], + "剧场版": [{ + "key": "sta", + "name": "进度", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "连载中", + "v": "status=连载中" + }, { + "n": "已完结", + "v": "status=已完结" + }, { + "n": "未播放", + "v": "status=未播放" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "area=日本" + }, { + "n": "中国", + "v": "area=中国" + }, { + "n": "欧美", + "v": "area=欧美" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "year=2025" + }, { + "n": "2024", + "v": "year=2024" + }, { + "n": "2023", + "v": "year=2023" + }, { + "n": "2022", + "v": "year=2022" + }, { + "n": "2021", + "v": "year=2021" + }, { + "n": "2020", + "v": "year=2020" + }, { + "n": "2019", + "v": "year=2019" + }, { + "n": "2018", + "v": "year=2018" + }, { + "n": "2017", + "v": "year=2017" + }, { + "n": "2016", + "v": "year=2016" + }, { + "n": "2015", + "v": "year=2015" + }, { + "n": "2014", + "v": "year=2014" + }, { + "n": "2013", + "v": "year=2013" + }, { + "n": "2012", + "v": "year=2012" + }, { + "n": "2011", + "v": "year=2011" + }, { + "n": "2010", + "v": "year=2010" + }, { + "n": "更早", + "v": "year=2010前" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "jqlx=冒险" + }, { + "n": "热血", + "v": "jqlx=热血" + }, { + "n": "爱情", + "v": "jqlx=爱情" + }, { + "n": "搞笑", + "v": "jqlx=搞笑" + }, { + "n": "后宫", + "v": "jqlx=后宫" + }, { + "n": "校园", + "v": "jqlx=校园" + }, { + "n": "机战", + "v": "jqlx=机战" + }, { + "n": "幻想", + "v": "jqlx=幻想" + }, { + "n": "科幻", + "v": "jqlx=科幻" + }, { + "n": "竞技", + "v": "jqlx=竞技" + }, { + "n": "百合", + "v": "jqlx=百合" + }, { + "n": "耽美", + "v": "jqlx=耽美" + }, { + "n": "悬疑", + "v": "jqlx=悬疑" + }, { + "n": "剧情", + "v": "jqlx=剧情" + }, { + "n": "战争", + "v": "jqlx=战争" + }, { + "n": "恐怖", + "v": "jqlx=恐怖" + }, { + "n": "运动", + "v": "jqlx=运动" + }, { + "n": "动作", + "v": "jqlx=动作" + }, { + "n": "童话", + "v": "jqlx=童话" + }, { + "n": "历史", + "v": "jqlx=历史" + }, { + "n": "真人", + "v": "jqlx=真人" + }, { + "n": "女性向", + "v": "jqlx=女性向" + }, { + "n": "泡面番", + "v": "jqlx=泡面番" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "orderby=pubdate" + }, { + "n": "热度", + "v": "orderby=click" + }] + }], + "OVA": [{ + "key": "sta", + "name": "进度", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "连载中", + "v": "status=连载中" + }, { + "n": "已完结", + "v": "status=已完结" + }, { + "n": "未播放", + "v": "status=未播放" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "area=日本" + }, { + "n": "中国", + "v": "area=中国" + }, { + "n": "欧美", + "v": "area=欧美" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "year=2025" + }, { + "n": "2024", + "v": "year=2024" + }, { + "n": "2023", + "v": "year=2023" + }, { + "n": "2022", + "v": "year=2022" + }, { + "n": "2021", + "v": "year=2021" + }, { + "n": "2020", + "v": "year=2020" + }, { + "n": "2019", + "v": "year=2019" + }, { + "n": "2018", + "v": "year=2018" + }, { + "n": "2017", + "v": "year=2017" + }, { + "n": "2016", + "v": "year=2016" + }, { + "n": "2015", + "v": "year=2015" + }, { + "n": "2014", + "v": "year=2014" + }, { + "n": "2013", + "v": "year=2013" + }, { + "n": "2012", + "v": "year=2012" + }, { + "n": "2011", + "v": "year=2011" + }, { + "n": "2010", + "v": "year=2010" + }, { + "n": "更早", + "v": "year=2010前" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "jqlx=冒险" + }, { + "n": "热血", + "v": "jqlx=热血" + }, { + "n": "爱情", + "v": "jqlx=爱情" + }, { + "n": "搞笑", + "v": "jqlx=搞笑" + }, { + "n": "后宫", + "v": "jqlx=后宫" + }, { + "n": "校园", + "v": "jqlx=校园" + }, { + "n": "机战", + "v": "jqlx=机战" + }, { + "n": "幻想", + "v": "jqlx=幻想" + }, { + "n": "科幻", + "v": "jqlx=科幻" + }, { + "n": "竞技", + "v": "jqlx=竞技" + }, { + "n": "百合", + "v": "jqlx=百合" + }, { + "n": "耽美", + "v": "jqlx=耽美" + }, { + "n": "悬疑", + "v": "jqlx=悬疑" + }, { + "n": "剧情", + "v": "jqlx=剧情" + }, { + "n": "战争", + "v": "jqlx=战争" + }, { + "n": "恐怖", + "v": "jqlx=恐怖" + }, { + "n": "运动", + "v": "jqlx=运动" + }, { + "n": "动作", + "v": "jqlx=动作" + }, { + "n": "童话", + "v": "jqlx=童话" + }, { + "n": "历史", + "v": "jqlx=历史" + }, { + "n": "真人", + "v": "jqlx=真人" + }, { + "n": "女性向", + "v": "jqlx=女性向" + }, { + "n": "泡面番", + "v": "jqlx=泡面番" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "orderby=pubdate" + }, { + "n": "热度", + "v": "orderby=click" + }] + }], + "其他": [{ + "key": "sta", + "name": "进度", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "连载中", + "v": "status=连载中" + }, { + "n": "已完结", + "v": "status=已完结" + }, { + "n": "未播放", + "v": "status=未播放" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "日本", + "v": "area=日本" + }, { + "n": "中国", + "v": "area=中国" + }, { + "n": "欧美", + "v": "area=欧美" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "year=2025" + }, { + "n": "2024", + "v": "year=2024" + }, { + "n": "2023", + "v": "year=2023" + }, { + "n": "2022", + "v": "year=2022" + }, { + "n": "2021", + "v": "year=2021" + }, { + "n": "2020", + "v": "year=2020" + }, { + "n": "2019", + "v": "year=2019" + }, { + "n": "2018", + "v": "year=2018" + }, { + "n": "2017", + "v": "year=2017" + }, { + "n": "2016", + "v": "year=2016" + }, { + "n": "2015", + "v": "year=2015" + }, { + "n": "2014", + "v": "year=2014" + }, { + "n": "2013", + "v": "year=2013" + }, { + "n": "2012", + "v": "year=2012" + }, { + "n": "2011", + "v": "year=2011" + }, { + "n": "2010", + "v": "year=2010" + }, { + "n": "更早", + "v": "year=2010前" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "冒险", + "v": "jqlx=冒险" + }, { + "n": "热血", + "v": "jqlx=热血" + }, { + "n": "爱情", + "v": "jqlx=爱情" + }, { + "n": "搞笑", + "v": "jqlx=搞笑" + }, { + "n": "后宫", + "v": "jqlx=后宫" + }, { + "n": "校园", + "v": "jqlx=校园" + }, { + "n": "机战", + "v": "jqlx=机战" + }, { + "n": "幻想", + "v": "jqlx=幻想" + }, { + "n": "科幻", + "v": "jqlx=科幻" + }, { + "n": "竞技", + "v": "jqlx=竞技" + }, { + "n": "百合", + "v": "jqlx=百合" + }, { + "n": "耽美", + "v": "jqlx=耽美" + }, { + "n": "悬疑", + "v": "jqlx=悬疑" + }, { + "n": "剧情", + "v": "jqlx=剧情" + }, { + "n": "战争", + "v": "jqlx=战争" + }, { + "n": "恐怖", + "v": "jqlx=恐怖" + }, { + "n": "运动", + "v": "jqlx=运动" + }, { + "n": "动作", + "v": "jqlx=动作" + }, { + "n": "童话", + "v": "jqlx=童话" + }, { + "n": "历史", + "v": "jqlx=历史" + }, { + "n": "真人", + "v": "jqlx=真人" + }, { + "n": "女性向", + "v": "jqlx=女性向" + }, { + "n": "泡面番", + "v": "jqlx=泡面番" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "orderby=pubdate" + }, { + "n": "热度", + "v": "orderby=click" + }] + }] + }, + // filter_def:{ + // TV:{by:'orderby=pubdate'}, + // 剧场版:{by:'orderby=pubdate'}, + // OVA:{by:'orderby=pubdate'}, + // 其他:{by:'orderby=pubdate'} + // }, + searchUrl: '/search.html?keyword=**&PageNo=fypage', + searchable: 2, //是否启用全局搜索, + headers: { //网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'PC_UA', + }, + class_name: 'TV&剧场版&OVA&其他', + class_url: 'TV&剧场版&OVA&其他', + play_parse: true, + lazy: '', + limit: 6, + // 推荐:'.dhnew.adj li;*;*;*;*', + 推荐: '.dhnew.adj li;a&&title;img&&src;p:eq(-1)&&Text;a&&href', + // 一级:'.dhnew li;a&&title;img&&src;p:eq(-1)&&Text;a&&href', + 一级: `js: + let d = []; + pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd; + let html = ''; + let totalresult = getItem("totalresult_" + MY_CATE, '') + if (totalresult == '') { + html = request(input); + totalresult = pdfh(html, ".pageinfo&&strong&&Text"); + setItem("totalresult_" + MY_CATE, totalresult) + } + input += '&totalresult=' + getItem("totalresult_" + MY_CATE, ''); + html = request(input); + let list = pdfa(html, ".dhnew&&li"); + list.forEach(it => { + d.push({ + title: pdfh(it, "a&&title"), + desc: pdfh(it, "p:eq(-1)&&Text"), + pic_url: pd(it, "img&&src"), + url: pd(it, "a&&href") + }) + }); + setResult(d) + `, + 二级: { + "title": "h1&&Text;.dhxx p:eq(4)&&Text", + "img": ".anime-img&&img&&src", + "desc": ".info1-left li:eq(1)&&Text;.dhxx p:eq(3)&&Text;.dhxx p:eq(2)&&Text;.info1-left li:eq(0)&&Text;.info1-left li:eq(2)&&Text", + "content": ".info2--strong&&Text", + "tabs": ".ol-select li", + "lists": ".ol-content:eq(#id) li" + }, + // 搜索:'*;*;*;p:eq(3)&&Text;*', + 搜索: '.dhnew li;a&&title;img&&src;p:eq(3)&&Text;a&&href', +} \ No newline at end of file diff --git a/xiaosa/JS/机器人.js b/xiaosa/JS/机器人.js new file mode 100644 index 00000000..2a6787eb --- /dev/null +++ b/xiaosa/JS/机器人.js @@ -0,0 +1,198 @@ +var rule = { + title: '爱看机器人[虫]', + // host:'https://v.ikanbot.com', + host: 'https://v.aikanbot.com', + url: '/hot/index-fyclass-fyfilter-p-fypage.html[/hot/index-fyclass-fyfilter.html]', + //https://www.ikanbot.com/search?q=%E6%96%97%E7%BD%97%E5%A4%A7&p=2 + // searchUrl:'/search?q=**&p=fypage', + searchUrl: '/search?q=**&p=fypage[/search?q=**]', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter_url: '{{fl.tag}}', + 图片来源: '@Referer=https://v.ikanbot.com/@User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36', + filter: { + "movie": [{ + "key": "tag", + "name": "标签", + "value": [{ + "n": "热门", + "v": "热门" + }, { + "n": "最新", + "v": "最新" + }, { + "n": "经典", + "v": "经典" + }, { + "n": "豆瓣高分", + "v": "豆瓣高分" + }, { + "n": "冷门佳片", + "v": "冷门佳片" + }, { + "n": "华语", + "v": "华语" + }, { + "n": "欧美", + "v": "欧美" + }, { + "n": "韩国", + "v": "韩国" + }, { + "n": "日本", + "v": "日本" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "喜剧", + "v": "喜剧" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "豆瓣top250", + "v": "豆瓣top250" + }] + }], + "tv": [{ + "key": "tag", + "name": "标签", + "value": [{ + "n": "热门", + "v": "热门" + }, { + "n": "美剧", + "v": "美剧" + }, { + "n": "英剧", + "v": "英剧" + }, { + "n": "韩剧", + "v": "韩剧" + }, { + "n": "日剧", + "v": "日剧" + }, { + "n": "国产剧", + "v": "国产剧" + }, { + "n": "港剧", + "v": "港剧" + }, { + "n": "日本动画", + "v": "日本动画" + }, { + "n": "综艺", + "v": "综艺" + }, { + "n": "纪录片", + "v": "纪录片" + }] + }] + }, + filter_def: { + movie: { + tag: '热门' + }, + tv: { + tag: '国产剧' + }, + }, + filter获取方法: ` + let value = []; + $('ul').eq(2).find('li').each(function() { + // console.log($(this).text()); + let n = $(this).text().trim(); + value.push({ + 'n': n, 'v': n + }); + }); + // 电影执行: + let data = {'movie': [{'key': 'tag', 'name': '标签', 'value': value}]}; + console.log(JSON.stringify(data)); + + //剧集执行: + let data = {'tv': [{'key': 'tag', 'name': '标签', 'value': value}]}; + console.log(JSON.stringify(data)); + `, + headers: { + 'User-Agent': 'PC_UA', + }, + class_name: '电影&剧集', + class_url: 'movie&tv', + play_parse: true, + double: true, + tab_remove: ['wjm3u8', 'ikm3u8', 'sdm3u8', 'M3U8', 'jinyingm3u8', 'fsm3u8', 'ukm3u8'], //移除某个线路及相关的选集 + tab_order: ['bfzym3u8', '1080zyk', 'kuaikan', 'lzm3u8', 'ffm3u8', 'snm3u8', 'qhm3u8', 'gsm3u8', 'zuidam3u8', 'bjm3u8', 'wolong', 'xlm3u8', 'yhm3u8'], //线路顺序,按里面的顺序优先,没写的依次排后面 + tab_rename: { + 'bfzym3u8': '暴风', + '1080zyk': '优质', + 'kuaikan': '快看', + 'lzm3u8': '量子', + 'ffm3u8': '非凡', + 'snm3u8': '索尼', + 'qhm3u8': '奇虎', + 'haiwaikan': '海外看', + 'gsm3u8': '光速', + 'zuidam3u8': '最大', + 'bjm3u8': '八戒', + 'wolong': '卧龙', + 'xlm3u8': '新浪', + 'yhm3u8': '樱花', + 'tkm3u8': '天空', + 'jsm3u8': '极速', + 'wjm3u8': '无尽', + 'sdm3u8': '闪电', + 'kcm3u8': '快车', + 'jinyingm3u8': '金鹰', + 'fsm3u8': '飞速', + 'tpm3u8': '淘片', + 'lem3u8': '鱼乐', + 'dbm3u8': '百度', + 'tomm3u8': '番茄', + 'ukm3u8': 'U酷', + 'ikm3u8': '爱坤', + 'hnzym3u8': '红牛资源', + 'hnm3u8': '红牛', + '68zy_m3u8': '68', + 'kdm3u8': '酷点', + 'bdxm3u8': '北斗星', + 'hhm3u8': '豪华', + 'kbm3u8': '快播' + }, //线路名替换如:lzm3u8替换为量子资源 + 推荐: '.v-list;div.item;*;*;*;*', //这里可以为空,这样点播不会有内容 + // 一级:'.v-list&&div.item;p&&Text;img&&src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配 + 一级: '.v-list&&div.item;p&&Text;img&&data-src;;a&&href', //一级的内容是推荐或者点播时候的一级匹配 + // 二级:二级, + 二级: 'js:eval(unescape(base64Decode("anM6CiAgICAgICAgcGRmaCA9IGpzcC5wZGZoOwogICAgICAgIGZ1bmN0aW9uIGdldFRva2VuKGh0bWwxKSB7CiAgICAgICAgICAgIGxldCBjdXJyZW50SWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIGxldCBlVG9rZW4gPSBwZGZoKGh0bWwxLCAnI2VfdG9rZW4mJnZhbHVlJyk7CiAgICAgICAgICAgIGlmICghY3VycmVudElkIHx8ICFlVG9rZW4pIHJldHVybiAnJzsKICAgICAgICAgICAgbGV0IGlkTGVuZ3RoID0gY3VycmVudElkLmxlbmd0aDsKICAgICAgICAgICAgbGV0IHN1YklkID0gY3VycmVudElkLnN1YnN0cmluZyhpZExlbmd0aCAtIDQsIGlkTGVuZ3RoKTsKICAgICAgICAgICAgbGV0IGtleXMgPSBbXTsKICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJJZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgbGV0IGN1ckludCA9IHBhcnNlSW50KHN1YklkW2ldKTsKICAgICAgICAgICAgICAgIGxldCBzcGxpdFBvcyA9IGN1ckludCAlIDMgKyAxOwogICAgICAgICAgICAgICAga2V5c1tpXSA9IGVUb2tlbi5zdWJzdHJpbmcoc3BsaXRQb3MsIHNwbGl0UG9zICsgOCk7CiAgICAgICAgICAgICAgICBlVG9rZW4gPSBlVG9rZW4uc3Vic3RyaW5nKHNwbGl0UG9zICsgOCwgZVRva2VuLmxlbmd0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGtleXMuam9pbignJyk7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFZPRD17fTsKICAgICAgICAgICAgbGV0IGh0bWwxID0gcmVxdWVzdChpbnB1dCk7CiAgICAgICAgICAgIFZPRC52b2RfaWQgPSBwZGZoKGh0bWwxLCAnI2N1cnJlbnRfaWQmJnZhbHVlJyk7CiAgICAgICAgICAgIFZPRC52b2RfbmFtZSA9IHBkZmgoaHRtbDEsICdoMiYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3BpYyA9IHBkZmgoaHRtbDEsICcuaXRlbS1yb290JiZpbWcmJmRhdGEtc3JjJyk7CiAgICAgICAgICAgIFZPRC52b2RfYWN0b3IgPSBwZGZoKGh0bWwxLCAnLm1ldGE6ZXEoNCkmJlRleHQnKTsKICAgICAgICAgICAgVk9ELnZvZF9hcmVhID0gcGRmaChodG1sMSwgJy5tZXRhOmVxKDMpJiZUZXh0Jyk7CiAgICAgICAgICAgIFZPRC52b2RfeWVhciA9IHBkZmgoaHRtbDEsICcubWV0YTplcSgyKSYmVGV4dCcpOwogICAgICAgICAgICBWT0Qudm9kX3JlbWFya3MgPSAnJzsKICAgICAgICAgICAgVk9ELnZvZF9kaXJlY3RvciA9ICcnOwogICAgICAgICAgICBWT0Qudm9kX2NvbnRlbnQgPSBwZGZoKGh0bWwxLCAnI2xpbmUtdGlwcyYmVGV4dCcpOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICAgICAgdmFyIHZfdGtzID0gZ2V0VG9rZW4oaHRtbDEpOwogICAgICAgICAgICBsb2coJ3ZfdGtzID09PT4gJyArIHZfdGtzKTsKICAgICAgICAgICAgaW5wdXQgPSBIT1NUICsgJy9hcGkvZ2V0UmVzTj92aWRlb0lkPScgKyBpbnB1dC5zcGxpdCgnLycpLnBvcCgpICsgJyZtdHlwZT0yJnRva2VuPScrdl90a3M7CiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChpbnB1dCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzonTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxM18yXzMgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzEzLjAuMyBNb2JpbGUvMTVFMTQ4IFNhZmFyaS82MDQuMScsCiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiBNWV9VUkwsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBwcmludChodG1sKTsKICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoaHRtbCk7CiAgICAgICAgICAgIGxldCBlcGlzb2RlcyA9IGh0bWwuZGF0YS5saXN0OwogICAgICAgICAgICBsZXQgcGxheU1hcCA9IHt9OwogICAgICAgICAgICBpZiAodHlwZW9mIHBsYXlfdXJsID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdmFyIHBsYXlfdXJsID0gJycKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbWFwID0ge30KICAgICAgICAgICAgbGV0IGFyciA9IFtdCiAgICAgICAgICAgIGxldCBuYW1lID0gewogICAgICAgICAgICAgICAgJ2JmenltM3U4JzogJ+aatOmjjicsCiAgICAgICAgICAgICAgICAnMTA4MHp5ayc6ICfkvJjotKgnLAogICAgICAgICAgICAgICAgJ2t1YWlrYW4nOiAn5b+r55yLJywKICAgICAgICAgICAgICAgICdsem0zdTgnOiAn6YeP5a2QJywKICAgICAgICAgICAgICAgICdmZm0zdTgnOiAn6Z2e5YehJywKICAgICAgICAgICAgICAgICdoYWl3YWlrYW4nOiAn5rW35aSW55yLJywKICAgICAgICAgICAgICAgICdnc20zdTgnOiAn5YWJ6YCfJywKICAgICAgICAgICAgICAgICd6dWlkYW0zdTgnOiAn5pyA5aSnJywKICAgICAgICAgICAgICAgICdiam0zdTgnOiAn5YWr5oiSJywKICAgICAgICAgICAgICAgICdzbm0zdTgnOiAn57Si5bC8JywKICAgICAgICAgICAgICAgICd3b2xvbmcnOiAn5Y2n6b6ZJywKICAgICAgICAgICAgICAgICd4bG0zdTgnOiAn5paw5rWqJywKICAgICAgICAgICAgICAgICd5aG0zdTgnOiAn5qix6IqxJywKICAgICAgICAgICAgICAgICd0a20zdTgnOiAn5aSp56m6JywKICAgICAgICAgICAgICAgICdqc20zdTgnOiAn5p6B6YCfJywKICAgICAgICAgICAgICAgICd3am0zdTgnOiAn5peg5bC9JywKICAgICAgICAgICAgICAgICdzZG0zdTgnOiAn6Zeq55S1JywKICAgICAgICAgICAgICAgICdrY20zdTgnOiAn5b+r6L2mJywKICAgICAgICAgICAgICAgICdqaW55aW5nbTN1OCc6ICfph5HpubAnLAogICAgICAgICAgICAgICAgJ2ZzbTN1OCc6ICfpo57pgJ8nLAogICAgICAgICAgICAgICAgJ3RwbTN1OCc6ICfmt5jniYcnLAogICAgICAgICAgICAgICAgJ2xlbTN1OCc6ICfpsbzkuZAnLAogICAgICAgICAgICAgICAgJ2RibTN1OCc6ICfnmb7luqYnLAogICAgICAgICAgICAgICAgJ3RvbW0zdTgnOiAn55Wq6IyEJywKICAgICAgICAgICAgICAgICd1a20zdTgnOiAnVemFtycsCiAgICAgICAgICAgICAgICAnaWttM3U4JzogJ+eIseWdpCcsCiAgICAgICAgICAgICAgICAnaG56eW0zdTgnOiAn57qi54mb6LWE5rqQJywKICAgICAgICAgICAgICAgICdobm0zdTgnOiAn57qi54mbJywKICAgICAgICAgICAgICAgICc2OHp5X20zdTgnOiAnNjgnLAogICAgICAgICAgICAgICAgJ2tkbTN1OCc6ICfphbfngrknLAogICAgICAgICAgICAgICAgJ2JkeG0zdTgnOiAn5YyX5paX5pifJywKICAgICAgICAgICAgICAgICdxaG0zdTgnOiAn5aWH6JmOJywKICAgICAgICAgICAgICAgICdoaG0zdTgnOiAn6LGq5Y2OJwogICAgICAgICAgICB9OwogICAgICAgICAgICBlcGlzb2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGVwKSB7CiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpTT04ucGFyc2UoZXBbJ3Jlc0RhdGEnXSk7CiAgICAgICAgICAgICAgICBkYXRhLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgICAgIGlmKCFtYXBbdmFsLmZsYWddKXsKICAgICAgICAgICAgICAgICAgICAgICAgbWFwW3ZhbC5mbGFnXSA9IFt2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpXQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFt2YWwuZmxhZ10ucHVzaCh2YWwudXJsLnJlcGxhY2VBbGwoJyMjJywnIycpKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gbWFwKSB7CiAgICAgICAgICAgICAgICBpZiAoJ2JmenltM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMQogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCcxMDgwenlrJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdrdWFpa2FuJyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogMwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdsem0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA0CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2ZmbTN1OCcgPT0ga2V5KSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiBuYW1lW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbWFwW2tleV0sCiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnQ6IDUKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnc25tM3U4JyA9PSBrZXkpIHsKICAgICAgICAgICAgICAgICAgICBhcnIucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYWc6IG5hbWVba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogNgogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdxaG0zdTgnID09IGtleSkgewogICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgZmxhZzogbmFtZVtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IG1hcFtrZXldLAogICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiA3CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICBmbGFnOiAobmFtZVtrZXldKSA/IG5hbWVba2V5XSA6IGtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBtYXBba2V5XSwKICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogOAogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyLnNvcnQoKGEsIGIpID0+IGEuc29ydCAtIGIuc29ydCk7CiAgICAgICAgICAgIGxldCBwbGF5RnJvbSA9IFtdOwogICAgICAgICAgICBsZXQgcGxheUxpc3QgPSBbXTsKICAgICAgICAgICAgYXJyLm1hcCh2YWwgPT4gewogICAgICAgICAgICAgICAgaWYgKCEvdW5kZWZpbmVkLy50ZXN0KHZhbC5mbGFnKSkgewogICAgICAgICAgICAgICAgICAgIHBsYXlGcm9tLnB1c2godmFsLmZsYWcpOwogICAgICAgICAgICAgICAgICAgIHBsYXlMaXN0LnB1c2godmFsLnVybCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIGxldCB2b2RfcGxheV9mcm9tID0gcGxheUZyb20uam9pbignJCQkJyk7CiAgICAgICAgICAgIGxldCB2b2RfcGxheV91cmwgPSBwbGF5TGlzdC5qb2luKCckJCQnKTsKICAgICAgICAgICAgVk9EWyd2b2RfcGxheV9mcm9tJ10gPSB2b2RfcGxheV9mcm9tOwogICAgICAgICAgICBWT0RbJ3ZvZF9wbGF5X3VybCddID0gdm9kX3BsYXlfdXJsOwogICAgICAgICAgICAvLyBsb2coVk9EKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGxvZygn6I635Y+W5LqM57qn6K+m5oOF6aG15Y+R55Sf6ZSZ6K+vOicgKyBlLm1lc3NhZ2UpCiAgICAgICAgfQ==")))', + // 搜索:'#search-result&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href',//第三个是描述,一般显示更新或者完结 + 搜索: '.col-md-8&&.media;h5&&a&&Text;a&&img&&data-src;.label&&Text;a&&href', //第三个是描述,一般显示更新或者完结 + lazy: ` + if(/\\.m3u8$/.test(input)){ + input = { + parse:0, + url:getProxyUrl()+'&url='+input, + jx:0 + } + } + `, + proxy_rule: `js: + let url = input.url; + let m3u8 = fixAdM3u8Ai(url); + input = [200,'application/vnd.apple.mpegurl',m3u8] + ` +} \ No newline at end of file diff --git a/xiaosa/JS/梦米弹幕.js b/xiaosa/JS/梦米弹幕.js new file mode 100644 index 00000000..5b4f15bf --- /dev/null +++ b/xiaosa/JS/梦米弹幕.js @@ -0,0 +1,183 @@ +globalThis.h_ost = 'http://op.ysdqjs.cn/'; + +globalThis.vodlist = function($t, $pg) { + const currentTimestamp = parseInt(Date.now() / 1000, 10); + const url = h_ost + '/v2/home/type_search'; + const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString(); + let html = request(url, { + body: { + sign: hx, + type_id: $t, + page: $pg, + }, + headers: { + 'User-Agent': 'okhttp-okgo/jeasonlzy', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + 'method': 'POST' + }, true); + return JSON.parse(html).data.list; +} + +globalThis.seach = function(wd) { + const currentTimestamp = parseInt(Date.now() / 1000, 10); + const url = h_ost + '/v2/home/search'; + const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString(); + let html = request(url, { + body: { + sign: hx, + keyword: wd, + timestamp: currentTimestamp, + }, + headers: { + 'User-Agent': 'okhttp-okgo/jeasonlzy', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + 'method': 'POST' + }, true); + return JSON.parse(html).data.list; +} +globalThis.vodids = function(ids) { + const currentTimestamp = parseInt(Date.now() / 1000, 10); + const url = h_ost + '/v2/home/vod_details'; + const hx = CryptoJS.MD5('kj5649ertj84ks89r4jh8s45hf84hjfds04k' + currentTimestamp).toString(); + let html = request(url, { + body: { + sign: hx, + vod_id: ids, + timestamp: currentTimestamp, + }, + headers: { + 'User-Agent': 'okhttp-okgo/jeasonlzy', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + 'method': 'POST' + }, true); + const redata = JSON.parse(html); + let vodPlayFrom = ''; + let vodPlayUrl = ''; + redata.data.vod_play_list.forEach((value, key) => { + if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv") || 1) { + vodPlayFrom += `${value.flag}$$$`; + value.urls.forEach(url => { + vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`; + }); + vodPlayUrl += '$$$'; + } + }); + const regeshi = { + vod_id: redata.data.vod_id, + vod_name: redata.data.vod_name, + vod_remarks: `${redata.data.vod_remarks}`, + type_name: redata.data.vod_class, + vod_pic: redata.data.vod_pic, + vod_year: redata.data.vod_year, + vod_area: redata.data.vod_area, + vod_actor: `${redata.data.vod_actor}`, + vod_director: redata.data.vod_director, + vod_content: `${redata.data.vod_content}`, + vod_play_from: vodPlayFrom, + vod_play_url: vodPlayUrl + }; + return regeshi; +} +globalThis.jxx = function(input) { + if ("741852963" !== '741852963') { + return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4'; + } + const parts = input.split('~'); + try { + let response = fetch(parts[0], { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + + if (response.includes("成功") || response.includes("success") || response.includes("nby")) { + let bata = JSON.parse(response); + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963' + } + } else { + input = { + parse: 0, + url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null, + jx: 1, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963' + } + } + } catch { + input = { + parse: 0, + url: '解析失败', + jx: 0, + } + } + return input; +} + +var rule = { + title: '天天', + host: '', + detailUrl: 'fyid', + searchUrl: '**', + url: 'fyclass', + searchable: 2, + quickSearch: 1, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&4&3', + play_parse: true, + lazy: $js.toString(() => { + input = jxx(input); + }), + 推荐: $js.toString(() => { + let bdata = vodlist(1, 1); + console.log(bdata); + bdata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 一级: $js.toString(() => { + let bdata = vodlist(input, MY_PAGE); + console.log(bdata); + bdata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 二级: $js.toString(() => { + console.log("调试信息2" + input); + let data = vodids(input); + //console.log(data); + VOD = (data); + }), + 搜索: $js.toString(() => { + let ddata = seach(input); + ddata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/模板.js b/xiaosa/JS/模板.js new file mode 100644 index 00000000..dacca087 --- /dev/null +++ b/xiaosa/JS/模板.js @@ -0,0 +1,429 @@ +if (typeof Object.assign !== 'function') { + Object.assign = function() { + let target = arguments[0]; + for (let i = 1; i < arguments.length; i++) { + let source = arguments[i]; + for (let key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; +} + +// 通用免嗅探播放 +let common_lazy = `js: + let html = request(input); + let hconf = html.match(/r player_.*?=(.*?) { + try { + let api = "" + input.split("?")[0]; + console.log(api); + let response = fetch(api, { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + let bata = JSON.parse(response); + if (bata.url.includes("qiyi")) { + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } else { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + } catch { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + }), + // play_parse:true, + // 手动调用解析请求json的url,此lazy不方便 + // lazy:'js:input="https://cache.json.icu/home/api?type=ys&uid=292796&key=fnoryABDEFJNPQV269&url="+input.split("?")[0];log(input);let html=JSON.parse(request(input));log(html);input=html.url||input', + // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', + // 一级:'json:.data.list;.name;.imageUrl;.latestOrder;.albumId', + 推荐: '', + // 推荐:'js:let d=[];fetch_params.headers["user-agent"]=PC_UA;pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd;let html=fetch(HOST,fetch_params);let lists=pdfa(html,".qy-mod-li");lists.forEach(function(it){try{let title=pdfh(it,"p.sub&&title");let desc=pdfh(it,".qy-mod-label&&Text");let pic_url=pd(it,"img&&src");d.push({title:title,desc:desc,img:pic_url})}catch(e){}});res=setResult(d);', + 一级: 'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=request(input);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + // 一级:'js:let d=[];if(MY_CATE==="16"){input=input.replace("channel_id=16","channel_id=1").split("three_category_id")[0];input+="three_category_id=27401"}else if(MY_CATE==="5"){input=input.replace("data_type=1","data_type=2")}let html=fetch(input,fetch_params);let json=JSON.parse(html);if(json.code==="A00003"){fetch_params.headers["user-agent"]=PC_UA;json=JSON.parse(fetch(input,fetch_params))}json.data.list.forEach(function(data){if(data.channelId===1){desc=data.hasOwnProperty("score")?data.score+"分\\t":""}else if(data.channelId===2||data.channelId===4){if(data.latestOrder===data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"集全"}else{if(data.videoCount){desc=(data.hasOwnProperty("score")?data.score+"分\\t":"")+data.latestOrder+"/"+data.videoCount+"集"}else{desc="更新至 "+data.latestOrder+"集"}}}else if(data.channelId===6){desc=data.period+"期"}else if(data.channelId===5){desc=data.focus}else{if(data.latestOrder){desc="更新至 第"+data.latestOrder+"期"}else if(data.period){desc=data.period}else{desc=data.focus}}url=MY_CATE+"$"+data.albumId;d.push({url:url,title:data.name,desc:desc,pic_url:data.imageUrl.replace(".jpg","_390_520.jpg?caplist=jpg,webp")})});setResult(d);', + // 一级:'json:.data.list;.name;.imageUrl;.playUrl;.latestOrder', + // 二级:{is_json:1,"title":"data.title;data.moviecategory[0]+data.moviecategory[1]","img":"data.cdncover","desc":"data.area[0];data.director[0]","content":"data.description","tabs":"data.playlink_sites;data.playlinksdetail.#idv.quality","lists":"data.playlinksdetail.#idv.default_url"}, + // 二级:{is_json:1,"title":"data.name+data.subtitle;data.latestOrder","img":"data.imageUrl","desc":"data.categories;data.areas","content":"data.description","tabs":"data.name","lists":"data.playlinksdetail.#idv.default_url"}, + 二级: '', + 二级: 'js:let d=[];let html=request(input);let json=JSON.parse(html).data;VOD={vod_id:"",vod_url:input,vod_name:"",type_name:"",vod_actor:"",vod_year:"",vod_director:"",vod_area:"",vod_content:"",vod_remarks:"",vod_pic:""};VOD.vod_name=json.name;try{if(json.latestOrder){VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+"\\n更新至:第"+json.latestOrder+"集(期)/共"+json.videoCount+"集(期)"}else{VOD.vod_remarks="类型: "+(json.categories[0].name||"")+"\\t"+(json.categories[1].name||"")+"\\t"+(json.categories[2].name||"")+"\\t"+"评分:"+(json.score||"")+json.period}}catch(e){VOD.vod_remarks=json.subtitle}VOD.vod_area=(json.focus||"")+"\\n资费:"+(json.payMark===1?"VIP":"免费")+"\\n地区:"+(json.areas||"");let vsize="579_772";try{vsize=json.imageSize[12]}catch(e){}VOD.vod_pic=json.imageUrl.replace(".jpg","_"+vsize+".jpg?caplist=jpg,webp");VOD.type_name=json.categories.map(function(it){return it.name}).join(",");if(json.people.main_charactor){let vod_actors=[];json.people.main_charactor.forEach(function(it){vod_actors.push(it.name)});VOD.vod_actor=vod_actors.join(",")}VOD.vod_content=json.description;let playlists=[];if(json.channelId===1||json.channelId===5){playlists=[{playUrl:json.playUrl,imageUrl:json.imageUrl,shortTitle:json.shortTitle,focus:json.focus,period:json.period}]}else{if(json.channelId===6){let qs=json.period.split("-")[0];let listUrl="https://pcw-api.iqiyi.com/album/source/svlistinfo?cid=6&sourceid="+json.albumId+"&timelist="+qs;let playData=JSON.parse(request(listUrl)).data[qs];playData.forEach(function(it){playlists.push({playUrl:it.playUrl,imageUrl:it.imageUrl,shortTitle:it.shortTitle,focus:it.focus,period:it.period})})}else{let listUrl="https://pcw-api.iqiyi.com/albums/album/avlistinfo?aid="+json.albumId+"&size=200&page=1";let data=JSON.parse(request(listUrl)).data;let total=data.total;playlists=data.epsodelist;if(total>200){for(let i=2;i200){for(let i=2;i { + // let d = []; + // let data = JSON.parse(request(input)) + // data.forEach(item => { + // item.datas.forEach(it => { + // let id = `http://114.132.55.23/bl/mb/api.php/provide/vod/?ac=videolist&wd=${it.title}&`; + // d.push({ + // url: id, + // title: it.title, + // img: it.pic, + // desc: it.acr, + // }) + // }); + // }); + // setResult(d) + // }), + 一级: $js.toString(() => { + let d = []; + + function Encrypt(plainText) { + let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT"); + let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj"); + // 将文本加密为 AES/CBC/PKCS5Padding 格式 + let encrypted = CryptoJS.AES.encrypt(plainText, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + + // 获取加密结果并转为 Hex 格式 + let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex); + return encryptedHex.toUpperCase(); // 返回大写 Hex 格式 + } + + function Decrypt(word, key, iv) { + let encryptedHexStr = CryptoJS.enc.Hex.parse(word); + + // 使用AES/CBC/PKCS5Padding模式进行解密 + let decrypt = CryptoJS.AES.decrypt({ + ciphertext: encryptedHexStr + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, // 使用CBC模式 + padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充 + }); + + // 将解密后的数据转换为原始文本 + let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); + + // 返回解密后的文本 + return decryptedStr; + } + + function getbody3(key, t) { + var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature) + var signature2 = md5(signature).toUpperCase(); //log(signature2) + var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1'; + return body + } + const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA=="; + + function gethtml(u, body, headers) { + var hd = fetch(u, { + headers: headers, + body: body, + method: 'POST', + rejectCoding: true + }); + var banner = JSON.parse(hd).data; + var response_key = banner.response_key; //log() + var keys = banner.keys; //log(keys) + var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey)); + var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key); + var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv); + var html = Decrypt(response_key, key, iv); + return html + } + + function hqsub(MY_CATE) { + var subs = ["5", "12", "30", "22", ""] + var tids = ["1", "2", "4", "3", "64"] + let index = tids.indexOf(MY_CATE); + if (index !== -1) { + return subs[index]; + } + return ""; // 或者根据需要返回其他值 + } + var headers = { + 'Cache-Control': 'no-cache', + 'Version': '2406025', + 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f', + 'Ver': '1.9.2', + 'Referer': 'https://api.8utdtcq.com', + 'X-Customer-Client-Ip': '127.0.0.1', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.8utdtcq.com', + 'Connection': 'Keep-Alive', + //'Accept-Encoding': 'gzip', + 'User-Agent': 'okhttp/3.12.0' + } + var tid = MY_CATE; + var sub = hqsub(MY_CATE) + var timestamp = new Date().getTime() / 1000; + var t = timestamp.toString().split('.')[0]; + var request_key = JSON.stringify({ + "area": (MY_FL.area || 0).toString(), + "sub": (MY_FL.sub || sub).toString(), + "year": (MY_FL.year || 0).toString(), + "pageSize": "30", + "sort": (MY_FL.sort || "d_id").toString(), + "page": MY_PAGE, + "tid": tid + }); + var request_key2 = Encrypt(request_key); + var body = getbody3(request_key2, t) + var html2 = gethtml("https://api.8utdtcq.com/App/IndexList/indexList", body, headers) + //console.log("tttttlieb=="+html2) + var list = JSON.parse(html2).list; //log(list) + list.forEach(data => { + d.push({ + title: data.vod_name, + desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集', + year: data.vod_scroe, + img: data.vod_pic, + url: `${data.vod_id}/${data.vod_continu}`, + }) + }) + setResult(d) + }), + 二级: $js.toString(() => { + // var d = []; + function Encrypt(plainText) { + let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT"); + let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj"); + // 将文本加密为 AES/CBC/PKCS5Padding 格式 + let encrypted = CryptoJS.AES.encrypt(plainText, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + + // 获取加密结果并转为 Hex 格式 + let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex); + return encryptedHex.toUpperCase(); // 返回大写 Hex 格式 + } + + function Decrypt(word, key, iv) { + let encryptedHexStr = CryptoJS.enc.Hex.parse(word); + + // 使用AES/CBC/PKCS5Padding模式进行解密 + let decrypt = CryptoJS.AES.decrypt({ + ciphertext: encryptedHexStr + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, // 使用CBC模式 + padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充 + }); + + // 将解密后的数据转换为原始文本 + let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); + + // 返回解密后的文本 + return decryptedStr; + } + + function getbody2(key, t) { + var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=Qmxi5ciWXbQzkr7o+SUNiUuQxQEf8/AVyUWY4T/BGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby+7GxXTktzJmxvneOUdYeHi+PZsThlvPI=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature) + var signature2 = md5(signature); //log(signature2) + var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=Qmxi5ciWXbQzkr7o%2BSUNiUuQxQEf8%2FAVyUWY4T%2FBGhcXBIUz4nOyHBGf9A4KbM0iKF3yp9M7WAY0rrs5PzdTAOB45plcS2zZ0wUibcXuGJ29VVGRWKGwE9zu2vLwhfgjTaaDpXo4rby%2B7GxXTktzJmxvneOUdYeHi%2BPZsThlvPI%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1'; //log(body) + return body + } + const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA=="; + + function gethtml(u, body, headers) { + var hd = fetch(u, { + headers: headers, + body: body, + method: 'POST', + rejectCoding: true + }); + var banner = JSON.parse(hd).data; + var response_key = banner.response_key; //log() + var keys = banner.keys; //log(keys) + var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey)); + var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key); + var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv); + var html = Decrypt(response_key, key, iv); + return html + } + const headers = { + 'Cache-Control': 'no-cache', + 'Version': '2406025', + 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f', + 'Ver': '1.9.2', + 'Referer': 'https://api.8utdtcq.com', + 'X-Customer-Client-Ip': '127.0.0.1', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.8utdtcq.com', + 'Connection': 'Keep-Alive', + //'Accept-Encoding': 'gzip', + 'User-Agent': 'okhttp/3.12.0' + } + // var MY_URL = MY_URL.split("##")[1]; //log(MY_URL) + input = input.replace('https://api.8utdtcq.com/', ''); + //console.log("input----===="+input) + + // var vod_continu = input.split("/")[1]; //log(vod_id) + var vod_id = input.split("/")[0]; + //console.log("vod----===="+vod_id) + var timestamp = new Date().getTime() / 1000; + var t = timestamp.toString().split('.')[0]; + var request_key = JSON.stringify({ + "token_id": "393668", + "vod_id": vod_id, + "mobile_time": t, + "token": "1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79" + }); + var request_key2 = Encrypt(request_key); + var body = getbody2(request_key2, t) + var html = gethtml("https://api.8utdtcq.com/App/IndexPlay/playInfo", body, headers) + var data2 = JSON.parse(html).vodInfo; //console.log("hwudwudg-===="+JSON.stringify(data2)) + var request_key3 = JSON.stringify({ + "vurl_cloud_id": "2", + "vod_d_id": vod_id + }); //log(request_key3) + var request_key4 = Encrypt(request_key3); //log(request_key4) + var body2 = getbody2(request_key4, t) + + var html3 = gethtml("https://api.8utdtcq.com/App/Resource/Vurl/show", body2, headers); //log(html3) + + var list = JSON.parse(html3).list; + let nnnmm = []; + list.forEach(item => { + // 获取play对象的所有值 + const playParams = Object.values(item.play); + let lastParam = null; + + // 从数组的最后一个元素开始,向前查找,直到找到一个非空的param值 + for (let i = playParams.length - 1; i >= 0; i--) { + if (playParams[i].param) { + lastParam = playParams[i].param; + break; + } + } + + // 使用正则表达式匹配vurl_id + const vurlIdMatch = lastParam.match(/vurl_id=(\d+)/); + const resolution = lastParam.match(/resolution=(\d+)/); + // 如果匹配成功,将title和vurl_id组合后push到result数组 + if (vurlIdMatch) { + nnnmm.push(`${item.title}$${vod_id}/${vurlIdMatch[1]}?${resolution[1]}`); + } + }); + VOD = { + title: data2.vod_name, + type: data2.videoTag.toString(), + desc: data2.vod_use_content, + vod_actor: data2.vod_actor, + vod_area: data2.vod_area, + vod_director: data2.vod_director, + img: data2.vod_pic, + vod_play_from: '瓜子HD', + vod_play_url: nnnmm.join('#') + } + }), + 搜索: $js.toString(() => { + let d = []; + + function Encrypt(plainText) { + let key = CryptoJS.enc.Utf8.parse("mvXBSW7ekreItNsT"); + let iv = CryptoJS.enc.Utf8.parse("2U3IrJL8szAKp0Fj"); + // 将文本加密为 AES/CBC/PKCS5Padding 格式 + let encrypted = CryptoJS.AES.encrypt(plainText, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + + // 获取加密结果并转为 Hex 格式 + let encryptedHex = encrypted.ciphertext.toString(CryptoJS.enc.Hex); + return encryptedHex.toUpperCase(); // 返回大写 Hex 格式 + } + + function Decrypt(word, key, iv) { + let encryptedHexStr = CryptoJS.enc.Hex.parse(word); + + // 使用AES/CBC/PKCS5Padding模式进行解密 + let decrypt = CryptoJS.AES.decrypt({ + ciphertext: encryptedHexStr + }, key, { + iv: iv, + mode: CryptoJS.mode.CBC, // 使用CBC模式 + padding: CryptoJS.pad.Pkcs7 // 使用PKCS#7填充 + }); + + // 将解密后的数据转换为原始文本 + let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); + + // 返回解密后的文本 + return decryptedStr; + } + + function getbody3(key, t) { + var signature = 'token_id=,token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79,phone_type=1,request_key=' + key + ',app_id=1,time=' + t + ',keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ+IOJyHnHflCj5w/7ESK7FgywMvrgjxbx0GklEFLI4+JshgySe633OIRstuktwdiCy3CT+fLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz/uurUif2OK4=*&zvdvdvddbfikkkumtmdwqppp?|4Y!s!2br'; //log(signature) + var signature2 = md5(signature); //log(signature2) + var body = 'token=1be86e8e18a9fa18b2b8d5432699dad0.ac008ed650fd087bfbecf2fda9d82e9835253ef24843e6b18fcd128b10763497bcf9d53e959f5377cde038c20ccf9d17f604c9b8bb6e61041def86729b2fc7408bd241e23c213ac57f0226ee656e2bb0a583ae0e4f3bf6c6ab6c490c9a6f0d8cdfd366aacf5d83193671a8f77cd1af1ff2e9145de92ec43ec87cf4bdc563f6e919fe32861b0e93b118ec37d8035fbb3c.59dd05c5d9a8ae726528783128218f15fe6f2c0c8145eddab112b374fcfe3d79&token_id=&phone_type=1&time=' + t + '&phone_model=xiaomi-22021211rc&keys=qDpotE2bedimK3QGqlyV5ieXXC3EhaPLQ%2BIOJyHnHflCj5w%2F7ESK7FgywMvrgjxbx0GklEFLI4%2BJshgySe633OIRstuktwdiCy3CT%2BfLSpuxBJDIlfXQDaeH3ig1wiB0JsZ601XHiFweGMu4tZfnSpHg3OnoL6nz%2FuurUif2OK4%3D&request_key=' + key + '&signature=' + signature2 + '&app_id=1&ad_version=1'; + return body + } + const bodykey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGAe6hKrWLi1zQmjTT1ozbE4QdFeJGNxubxld6GrFGximxfMsMB6BpJhpcTouAqywAFppiKetUBBbXwYsYU1wNr648XVmPmCMCy4rY8vdliFnbMUj086DU6Z+/oXBdWU3/b1G0DN3E9wULRSwcKZT3wj/cCI1vsCm3gj2R5SqkA9Y0CAwEAAQKBgAJH+4CxV0/zBVcLiBCHvSANm0l7HetybTh/j2p0Y1sTXro4ALwAaCTUeqdBjWiLSo9lNwDHFyq8zX90+gNxa7c5EqcWV9FmlVXr8VhfBzcZo1nXeNdXFT7tQ2yah/odtdcx+vRMSGJd1t/5k5bDd9wAvYdIDblMAg+wiKKZ5KcdAkEA1cCakEN4NexkF5tHPRrR6XOY/XHfkqXxEhMqmNbB9U34saTJnLWIHC8IXys6Qmzz30TtzCjuOqKRRy+FMM4TdwJBAJQZFPjsGC+RqcG5UvVMiMPhnwe/bXEehShK86yJK/g/UiKrO87h3aEu5gcJqBygTq3BBBoH2md3pr/W+hUMWBsCQQChfhTIrdDinKi6lRxrdBnn0Ohjg2cwuqK5zzU9p/N+S9x7Ck8wUI53DKm8jUJE8WAG7WLj/oCOWEh+ic6NIwTdAkEAj0X8nhx6AXsgCYRql1klbqtVmL8+95KZK7PnLWG/IfjQUy3pPGoSaZ7fdquG8bq8oyf5+dzjE/oTXcByS+6XRQJAP/5ciy1bL3NhUhsaOVy55MHXnPjdcTX0FaLi+ybXZIfIQ2P4rb19mVq1feMbCXhz+L1rG8oat5lYKfpe8k83ZA=="; + + function gethtml(u, body, headers) { + var hd = fetch(u, { + headers: headers, + body: body, + method: 'POST', + rejectCoding: true + }); + var banner = JSON.parse(hd).data; + var response_key = banner.response_key; //log() + //console.log("response_key=="+response_key) + var keys = banner.keys; //log(keys) + var bodykeyiv = JSON.parse(RSA.decode(keys, bodykey)); + //console.log("rsaxxxx=="+JSON.stringify(bodykeyiv)) + var key = CryptoJS.enc.Utf8.parse(bodykeyiv.key); + var iv = CryptoJS.enc.Utf8.parse(bodykeyiv.iv); + var html = Decrypt(response_key, key, iv); + //console.log("nskjsnwkjdnejd===qqxxxq="+JSON.stringify(html)) + return html + } + var timestamp = new Date().getTime() / 1000; + var t = timestamp.toString().split('.')[0]; + var url = input.split("#")[0]; //url + var request_key11 = input.split("#")[1] + + var request_key = JSON.stringify({ + "keywords": request_key11, + "order_val": "1" + }) + //console.log("nskjsnwkjdnejd===qqxxxq=tttt"+request_key) + var request_key2 = Encrypt(request_key); + var body = getbody3(request_key2, t) + var headers = { + 'Cache-Control': 'no-cache', + 'Version': '2406025', + 'PackageName': 'com.uf076bf0c246.qe439f0d5e.m8aaf56b725a.ifeb647346f', + 'Ver': '1.9.2', + 'Referer': 'https://api.8utdtcq.com', + 'X-Customer-Client-Ip': '127.0.0.1', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Host': 'api.8utdtcq.com', + 'Connection': 'Keep-Alive', + 'User-Agent': 'okhttp/3.12.0' + } + var html = gethtml(url, body, headers) + //console.log("nskjsnwkjdnejd===="+html) + + var list = JSON.parse(html).list; //log(list) + //console.log("nskjsnwkjdnejd===qqqqq="+list) + list.forEach(data => { + d.push({ + title: data.vod_name, + desc: data.vod_continu == 0 ? '电影' : '更新至' + data.vod_continu + '集', + content: data.vod_addtime, + img: data.vod_pic, + url: `${data.vod_id}/${data.vod_continu}`, + }) + }) + setResult(d) + }), +} \ No newline at end of file diff --git a/xiaosa/JS/看了么.js b/xiaosa/JS/看了么.js new file mode 100644 index 00000000..f3652037 --- /dev/null +++ b/xiaosa/JS/看了么.js @@ -0,0 +1,890 @@ +var rule = { + title: '看了么', + host: 'https://www.ksksl.com', + // url:'/show/fyclass/page/fypage.html', + url: '/show/fyclassfyfilter.html', + filterable: 1, //是否启用分类筛选, + filter_url: '{{fl.area}}{{fl.by or "/by/time"}}{{fl.class}}/page/fypage{{fl.year}}', + filter: { + "dy": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "中国大陆", + "v": "/area/中国大陆" + }, { + "n": "中国香港", + "v": "/area/中国香港" + }, { + "n": "中国台湾", + "v": "/area/中国台湾" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }] + }, { + "key": "class", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "喜剧", + "v": "/class/喜剧" + }, { + "n": "爱情", + "v": "/class/爱情" + }, { + "n": "恐怖", + "v": "/class/恐怖" + }, { + "n": "动作", + "v": "/class/动作" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "剧情", + "v": "/class/剧情" + }, { + "n": "警匪", + "v": "/class/警匪" + }, { + "n": "犯罪", + "v": "/class/犯罪" + }, { + "n": "动画", + "v": "/class/动画" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "武侠", + "v": "/class/武侠" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "枪战", + "v": "/class/枪战" + }, { + "n": "恐怖", + "v": "/class/恐怖" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "惊悚", + "v": "/class/惊悚" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "文艺", + "v": "/class/文艺" + }, { + "n": "古装", + "v": "/class/古装" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "农村", + "v": "/class/农村" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "tv": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "中国大陆", + "v": "/area/中国大陆" + }, { + "n": "中国香港", + "v": "/area/中国香港" + }, { + "n": "中国台湾", + "v": "/area/中国台湾" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }] + }, { + "key": "class", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "古装", + "v": "/class/古装" + }, { + "n": "言情", + "v": "/class/言情" + }, { + "n": "武侠", + "v": "/class/武侠" + }, { + "n": "偶像", + "v": "/class/美国" + }, { + "n": "家庭", + "v": "/class/家庭" + }, { + "n": "喜剧", + "v": "/class/喜剧" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "军旅", + "v": "/class/军旅" + }, { + "n": "谍战", + "v": "/class/谍战" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "罪案", + "v": "/class/罪案" + }, { + "n": "穿越", + "v": "/class/穿越" + }, { + "n": "宫廷", + "v": "/class/宫廷" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "神话", + "v": "/class/神话" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "年代", + "v": "/class/年代" + }, { + "n": "农村", + "v": "/class/农村" + }, { + "n": "商战", + "v": "/class/商战" + }, { + "n": "剧情", + "v": "/class/剧情" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "网剧", + "v": "/class/网剧" + }, { + "n": "都市", + "v": "/class/都市" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "zy": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "中国大陆", + "v": "/area/中国大陆" + }, { + "n": "中国香港", + "v": "/area/中国香港" + }, { + "n": "中国台湾", + "v": "/area/中国台湾" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }] + }, { + "key": "class", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "表演", + "v": "/class/表演" + }, { + "n": "播报", + "v": "/class/播报" + }, { + "n": "访谈", + "v": "/class/访谈" + }, { + "n": "体验", + "v": "/class/体验" + }, { + "n": "养成", + "v": "/class/养成" + }, { + "n": "游戏", + "v": "/class/游戏" + }, { + "n": "亲子", + "v": "/class/亲子" + }, { + "n": "美食", + "v": "/class/美食" + }, { + "n": "情感", + "v": "/class/情感" + }, { + "n": "选秀", + "v": "/class/选秀" + }, { + "n": "益智", + "v": "/class/益智" + }, { + "n": "晚会", + "v": "/class/晚会" + }, { + "n": "音乐", + "v": "/class/音乐" + }, { + "n": "文化", + "v": "/class/文化" + }, { + "n": "喜剧", + "v": "/class/喜剧" + }, { + "n": "曲艺", + "v": "/class/曲艺" + }, { + "n": "职场", + "v": "/class/职场" + }, { + "n": "脱口秀", + "v": "/class/脱口秀" + }, { + "n": "文艺", + "v": "/class/文艺" + }, { + "n": "竞技", + "v": "/class/竞技" + }, { + "n": "潮流文化", + "v": "/class/潮流文化" + }, { + "n": "体育", + "v": "/class/体育" + }, { + "n": "资讯", + "v": "/class/资讯" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "dm": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "中国大陆", + "v": "/area/中国大陆" + }, { + "n": "中国香港", + "v": "/area/中国香港" + }, { + "n": "中国台湾", + "v": "/area/中国台湾" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "法国", + "v": "/area/法国" + }] + }, { + "key": "class", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "热门", + "v": "/class/热门" + }, { + "n": "搞笑", + "v": "/class/搞笑" + }, { + "n": "番剧", + "v": "/class/番剧" + }, { + "n": "国创", + "v": "/class/国创" + }, { + "n": "大电影", + "v": "/class/大电影" + }, { + "n": "热血", + "v": "/class/热血" + }, { + "n": "催泪", + "v": "/class/催泪" + }, { + "n": "励志", + "v": "/class/励志" + }, { + "n": "机战", + "v": "/class/机战" + }, { + "n": "格斗", + "v": "/class/格斗" + }, { + "n": "恋爱", + "v": "/class/恋爱" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "魔幻", + "v": "/class/魔幻" + }, { + "n": "推理", + "v": "/class/推理" + }, { + "n": "校园", + "v": "/class/校园" + }, { + "n": "日常", + "v": "/class/日常" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "美食", + "v": "/class/美食" + }, { + "n": "武侠", + "v": "/class/武侠" + }, { + "n": "玄幻", + "v": "/class/玄幻" + }, { + "n": "竞技", + "v": "/class/竞技" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "jl": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "中国大陆", + "v": "/area/中国大陆" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "国外", + "v": "/area/国外" + }, { + "n": "其他", + "v": "/area/其他" + }] + }, { + "key": "class", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "社会", + "v": "/class/社会" + }, { + "n": "动物", + "v": "/class/动物" + }, { + "n": "文化", + "v": "/class/文化" + }, { + "n": "自然", + "v": "/class/自然" + }, { + "n": "人文", + "v": "/class/人文" + }, { + "n": "军事", + "v": "/class/军事" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "记录", + "v": "/class/记录" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }] + }, + // searchUrl:'/ch.html?wd=**', + searchUrl: '/ch/page/fypage/wd/**.html', + searchable: 2, + headers: { + 'User-Agent': 'UC_UA' + }, + timeout: 5000, + // class_name: '电影&电视剧&动漫&综艺&纪录片',//静态分类名称拼接 + // class_url: 'dy&tv&dm&zy&jl',//静态分类标识拼接 + class_parse: '.vi-nav.swiper-wrapper&&li:gt(0):lt(6);a&&Text;a&&href;.*/(.*?).html', + play_parse: true, + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + input = "push://" + input; + }), + double: false, + 推荐: '*', + 一级: 'json:data;name;;addtime;url', + 二级: '*', + 搜索: '*', +} \ No newline at end of file diff --git a/xiaosa/JS/碟调影视.js b/xiaosa/JS/碟调影视.js new file mode 100644 index 00000000..659b0010 --- /dev/null +++ b/xiaosa/JS/碟调影视.js @@ -0,0 +1,32 @@ +var rule = { + title: '碟调影视', + host: 'http://www.618648.com', + // homeUrl:'/', + url: '/die-tiao/fyclass-fypage.html', + searchUrl: '/diediaoch/page/fypage/wd/**.html', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + filterable: 0, //是否启用分类筛选, + headers: { //网站的请求头,完整支持所有的,常带ua和cookies + 'User-Agent': 'MOBILE_UA', + // "Cookie": "searchneed=ok" + }, + //class_parse:'.stui-header__menu li.hidden-xs;a&&Text;a&&href;.*/(.*?).html', + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + play_parse: true, + lazy: '', + limit: 8, + 推荐: '.stui-vodlist.clearfix;.stui-vodlist__box;a&&title;a&&data-original;.pic-text&&Text;a&&href', + double: true, // 推荐内容是否双层定位 + 一级: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href', + 二级: { + "title": "h1.title&&Text;.stui-content__detail p:eq(2)&&Text", + "img": ".lazyload&&data-original", + "desc": ".video-info-items:eq(-2)&&Text;.video-info-items:eq(-1)&&Text;.video-info-items:eq(-2)&&Text;.stui-content__detail p:eq(7)&&Text;.stui-content__detail p:eq(6)&&Text", + "content": ".stui-content__detail p:eq(9)&&Text", + "tabs": ".nav.nav-tabs li", + "lists": ".tab-pane.fade:eq(#id)&&ul&&li" + }, + 搜索: '.stui-vodlist.clearfix li;a&&title;a&&data-original;.pic-text&&Text;a&&href', +} \ No newline at end of file diff --git a/xiaosa/JS/磁力熊.js b/xiaosa/JS/磁力熊.js new file mode 100644 index 00000000..ba222806 --- /dev/null +++ b/xiaosa/JS/磁力熊.js @@ -0,0 +1,101 @@ +var rule = { + title:'磁力熊[磁]', + host:'https://www.cilixiong.com', + homeUrl:'/top250/index.html', + // url: '/fyclass/index_(fypage-1).html', + url: '/fyclassfyfilter-(fypage-1).html', + filter_url:'-{{fl.class or "0"}}-{{fl.area or "0"}}', + filter:{ + "1":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}], + "2":[{"key":"class","name":"类型","value":[{"n":"全部","v":"0"},{"n":"剧情","v":"1"},{"n":"喜剧","v":"2"},{"n":"惊悚","v":"3"},{"n":"动作","v":"4"},{"n":"爱情","v":"5"},{"n":"犯罪","v":"6"},{"n":"恐怖","v":"7"},{"n":"冒险","v":"8"},{"n":"悬疑","v":"9"},{"n":"科幻","v":"10"},{"n":"家庭","v":"11"},{"n":"奇幻","v":"12"},{"n":"动画","v":"13"},{"n":"战争","v":"14"},{"n":"历史","v":"15"},{"n":"传记","v":"16"},{"n":"音乐","v":"17"},{"n":"歌舞","v":"18"},{"n":"运动","v":"19"},{"n":"西部","v":"20"},{"n":"灾难","v":"21"},{"n":"古装","v":"22"},{"n":"情色","v":"23"},{"n":"同性","v":"24"},{"n":"儿童","v":"25"},{"n":"纪录片","v":"26"}]},{"key":"area","name":"地区","value":[{"n":"全部","v":"0"},{"n":"大陆","v":"1"},{"n":"香港","v":"2"},{"n":"台湾","v":"3"},{"n":"美国","v":"4"},{"n":"日本","v":"5"},{"n":"韩国","v":"6"},{"n":"英国","v":"7"},{"n":"法国","v":"8"},{"n":"德国","v":"9"},{"n":"印度","v":"10"},{"n":"泰国","v":"11"},{"n":"丹麦","v":"12"},{"n":"瑞典","v":"13"},{"n":"巴西","v":"14"},{"n":"加拿大","v":"15"},{"n":"俄罗斯","v":"16"},{"n":"意大利","v":"17"},{"n":"比利时","v":"18"},{"n":"爱尔兰","v":"19"},{"n":"西班牙","v":"20"},{"n":"澳大利亚","v":"21"},{"n":"波兰","v":"22"},{"n":"土耳其","v":"23"},{"n":"越南","v":"24"}]}] + }, + searchUrl: '/e/search/index.php#classid=1,2&show=title&tempid=1&keyboard=**;post', + searchable:2, + quickSearch:0, + filterable:1, + headers:{ + 'User-Agent': 'MOBILE_UA' + }, + timeout:5000, + class_name:'电影&剧集&豆瓣电影Top250&IMDB Top250&高分悬疑片&高分喜剧片&高分传记片&高分爱情片&高分犯罪片&高分恐怖片&高分冒险片&高分武侠片&高分奇幻片&高分历史片&高分战争片&高分歌舞片&高分灾难片&高分情色片&高分西部片&高分音乐片&高分科幻片&高分动作片&高分动画片&高分纪录片&冷门佳片', + class_url:'1&2&/top250/&/s/imdbtop250/&/s/suspense/&/s/comedy/&/s/biopic/&/s/romance/&/s/crime/&/s/horror/&/s/adventure/&/s/martial/&/s/fantasy/&/s/history/&/s/war/&/s/musical/&/s/disaster/&/s/erotic/&/s/west/&/s/music/&/s/sci-fi/&s/action/&/s/animation/&/s/documentary/&/s/unpopular/', + play_parse:true, + lazy:'', + limit:6, + 推荐: `js: + pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd; + var d = []; + var html = request(input); + var list = pdfa(html, 'body&&.col'); + list.forEach(it => { + d.push({ + title: pdfh(it, 'h2&&Text'), + desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'), + // pic_url: pd(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片 + pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子 + url: pd(it, 'a&&href') + }); + }) + setResult(d); + `, + 一级: `js: + pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd; + var d = []; + if (MY_CATE !== '1' && MY_CATE !== '2') { + let turl = (MY_PAGE === 1)? 'index' : 'index_'+ MY_PAGE; + input = HOST + MY_CATE + turl + '.html'; + } + var html = request(input); + var list = pdfa(html, 'body&&.col'); + list.forEach(it => { + d.push({ + title: pdfh(it, 'h2&&Text'), + desc: pdfh(it, '.me-auto&&Text') + '分 / ' + pdfh(it, '.small&&Text'), + // pic_url: pdfh(it, '.card-img&&style'), // 只有 影视TV&爱佬版 有图片 + pic_url: /!'/.test(pd(it, '.card-img&&style'))?pd(it, '.card-img&&style'):pd(it, '.card-img&&style').replaceAll("'",""), // 兼容 影视TV&爱佬版 以外的其它壳子 + url: pd(it, 'a&&href') + }); + }) + setResult(d); + `, + 二级:{ + title:'h1&&Text;p.mb-2:eq(4)&&Text', + desc:'p.mb-2:eq(1)&&Text;;;p.mb-2:eq(7)&&Text;p.mb-2:eq(5)&&Text', + img:'.rounded-2&&src', + content:'.mv_card_box&&Text', + // tabs:'js:TABS = ["道长磁力"]', + // lists:'.mv_down:eq(#id)&&.border-bottom', + // list_text:'a&&Text', + // list_url:'a&&href', + + tabs:'js:TABS = ["道长磁力","道长在线预览"]', + lists:`js: + log(TABS); + pdfh=jsp.pdfh;pdfa=jsp.pdfa;pd=jsp.pd; + LISTS = []; + var dd=[]; + TABS.forEach(function(tab) { + if (/道长磁力/.test(tab)) { + var d = pdfa(html, '.mv_down&&.border-bottom'); + d = d.map(function(it) { + var title = pdfh(it, 'a&&Text'); + log('title >>>>>>>>>>>>>>>>>>>>>>>>>>' + title); + var burl = pd(it, 'a&&href'); + log('burl >>>>>>>>>>>>>>>>>>>>>>>>>>' + burl); + return title + '$' + burl + }); + LISTS.push(d) + } else if (/道长在线预览/.test(tab)) { + var d = pd(html, 'iframe&&src'); + if (d) { + d=['第一集在线播放预览$' + d] + } else { + d=['没有预览不要点$http://www.sharenice.net/douyin/23852'] + } + LISTS.push(d) + } + }); + `, + }, + 搜索:'.col;h2&&Text;.card-img&&style;.me-auto&&Text;a&&href', +} \ No newline at end of file diff --git a/xiaosa/JS/米兔弹幕.js b/xiaosa/JS/米兔弹幕.js new file mode 100644 index 00000000..31d476aa --- /dev/null +++ b/xiaosa/JS/米兔弹幕.js @@ -0,0 +1,224 @@ +globalThis.h_ost = 'http://mitu.jiajiayoutian.top/'; +var key = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA=="); +var iv = CryptoJS.enc.Base64.parse("ZDAzMmMxMjg3NmJjNjg0OA=="); +globalThis.AES_Decrypt = function(word) { + try { + var decrypt = CryptoJS.AES.decrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); + const decryptedText = decrypt.toString(CryptoJS.enc.Utf8); + if (!decryptedText) { + throw new Error("解密后的内容为空"); + } + return decryptedText; + } catch (e) { + console.error("解密失败:", e); + return null; + } +}; +globalThis.AES_Encrypt = function(word) { + var encrypted = CryptoJS.AES.encrypt(word, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); +}; + +globalThis.vod1 = function(t, pg) { + let html1 = request(h_ost + 'api.php/getappapi.index/typeFilterVodList', { + body: { + area: '全部', + year: '全部', + type_id: t, + page: pg, + sort: '最新', + lang: '全部', + class: '全部' + }, + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + 'method': 'POST' + }, true); + let html = JSON.parse(html1); + return (AES_Decrypt(html.data)); +} +globalThis.vodids = function(ids) { + let html1 = fetch(h_ost + 'api.php/getappapi.index/vodDetail', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + vod_id: ids, + } + }); + let html = JSON.parse(html1); + const rdata = JSON.parse(AES_Decrypt(html.data)); + console.log(rdata); + const data = { + vod_id: ids, + vod_name: rdata.vod.vod_name, + vod_remarks: rdata.vod.vod_remarks, + vod_actor: rdata.vod.vod_actor, + vod_director: rdata.vod.vod_director, + vod_content: rdata.vod.vod_content, + vod_play_from: '', + vod_play_url: '' + }; + + rdata.vod_play_list.forEach((value) => { + data.vod_play_from += value.player_info.show + '$$$'; + value.urls.forEach((v) => { + data.vod_play_url += v.name + '$' + value.player_info.parse + '~' + v.url + '~' + rdata.vod.vod_name + '~' + v.name + '#'; + }); + data.vod_play_url += '$$$'; + }); + return data; +} +//搜索 +globalThis.ssvod = function(wd) { + var html1 = fetch(h_ost + 'api.php/getappapi.index/searchList', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + keywords: wd, + typepage_id: 1, + } + }); + let html = JSON.parse(html1); + return AES_Decrypt(html.data); +} +//解析 +globalThis.jxx = function(id, url, name, juji) { + try { + if (id.includes('xmflv')) { + return { + parse: 1, + url: id + url, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + //log(id); + if (url.includes('m3u8')) { + return { + parse: 0, + url: url, + jx: 1, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + if (id.includes('http')) { + let purl = JSON.parse(request(id + url)).url; + return { + parse: 0, + url: purl, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } + let html1 = request(h_ost + 'api.php/getappapi.index/vodParse', { + method: 'POST', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + }, + body: { + parse_api: id, + url: AES_Encrypt(url), + } + }); + let html = AES_Decrypt(JSON.parse(html1).data); + console.log(html1); + let decry = html.replace(/\n/g, '').replace(/\\/g, ''); + let matches = decry.match(/"url":"([^"]+)"/); + if (!matches || matches[1] === null) { + matches = decry.match(/"url": "([^"]+)"/); + } + return { + parse: 0, + url: matches[1], + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + name + '&js=' + juji + '&key=741852963' + }; + } catch { + return { + parse: 0, + url: '解析失败', + jx: 0 + }; + } +} + +var rule = { + title: '米兔[资]', + host: '', + detailUrl: 'fyid', + searchUrl: '**', + url: 'fyclass', + searchable: 2, + quickSearch: 1, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&3&4', + play_parse: true, + lazy: $js.toString(() => { + const parts = input.split('~'); + input = jxx(parts[0], parts[1], parts[2], parts[3]); + }), + 推荐: $js.toString(() => { + let data = vod1(0, 0); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 一级: $js.toString(() => { + let data = vod1(input, MY_PAGE); + let bata = JSON.parse(data).recommend_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 二级: $js.toString(() => { + console.log("调试信息2" + input); + let data = vodids(input); + //console.log(data); + VOD = data; + }), + 搜索: $js.toString(() => { + let data = ssvod(input); + let bata = JSON.parse(data).search_list; + bata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + // console.log(data); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/素白白.js b/xiaosa/JS/素白白.js new file mode 100644 index 00000000..56b25c7c --- /dev/null +++ b/xiaosa/JS/素白白.js @@ -0,0 +1,743 @@ +// 地址发布页 https://subaibai.vip/ +// 搜索数字验证 +var rule = { + title: '素白白', + // host:'https://www.subaibaiys.com', + host: 'https://subaibai.vip', + hostJs: 'print(HOST);let html=request(HOST,{headers:{"User-Agent":PC_UA}});let src = jsp.pdfh(html,".go:eq(0)&&a&&href");print(src);HOST=src', //网页域名根动态抓取js代码。通过HOST=赋值 + // url:'/fyclass/page/fypage', + url: '/fyclassfyfilter', + filterable: 1, //是否启用分类筛选, + filter_url: '{{fl.area}}{{fl.year}}{{fl.class}}{{fl.cateId}}/page/fypage', + filter: { + "movie_bt": [{ + "key": "cateId", + "name": "分类", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_series/dongmanju", + "n": "动漫剧" + }, { + "v": "/movie_bt_series/dongmandy", + "n": "动漫电影" + }, { + "v": "/movie_bt_series/yindudy", + "n": "印度电影" + }, { + "v": "/movie_bt_series/guochanju", + "n": "国产剧" + }, { + "v": "/movie_bt_series/guochandy", + "n": "国产电影" + }, { + "v": "/movie_bt_series/riju", + "n": "日剧" + }, { + "v": "/movie_bt_series/rihandy", + "n": "日韩电影" + }, { + "v": "/movie_bt_series/oumeiju", + "n": "欧美剧" + }, { + "v": "/movie_bt_series/oumeidy", + "n": "欧美电影" + }, { + "v": "/movie_bt_series/taiju", + "n": "泰剧" + }, { + "v": "/movie_bt_series/thaidy", + "n": "泰国电影" + }, { + "v": "/movie_bt_series/gangju", + "n": "港台剧" + }, { + "v": "/movie_bt_series/gangtaidy", + "n": "港台电影" + }, { + "v": "/movie_bt_series/documentary", + "n": "纪录片" + }, { + "v": "/movie_bt_series/zongyi", + "n": "综艺" + }, { + "v": "/movie_bt_series/hanju", + "n": "韩剧" + }, { + "v": "/movie_bt_series/xianggangdy", + "n": "香港经典电影" + }] + }, { + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_tags/pop-popular", + "n": "POP流行" + }, { + "v": "/movie_bt_tags/biography", + "n": "传记" + }, { + "v": "/movie_bt_tags/child", + "n": "儿童" + }, { + "v": "/movie_bt_tags/adventure", + "n": "冒险" + }, { + "v": "/movie_bt_tags/plot", + "n": "剧情" + }, { + "v": "/movie_bt_tags/action", + "n": "动作" + }, { + "v": "/movie_bt_tags/anime", + "n": "动漫" + }, { + "v": "/movie_bt_tags/animation", + "n": "动画" + }, { + "v": "/movie_bt_tags/history", + "n": "历史" + }, { + "v": "/movie_bt_tags/costume", + "n": "古装" + }, { + "v": "/movie_bt_tags/antiquity", + "n": "古风" + }, { + "v": "/movie_bt_tags/homosexual", + "n": "同性" + }, { + "v": "/movie_bt_tags/comedy", + "n": "喜剧" + }, { + "v": "/movie_bt_tags/fantasy", + "n": "奇幻" + }, { + "v": "/movie_bt_tags/family", + "n": "家庭" + }, { + "v": "/movie_bt_tags/terror", + "n": "恐怖" + }, { + "v": "/movie_bt_tags/suspense", + "n": "悬疑" + }, { + "v": "/movie_bt_tags/erotic", + "n": "情色" + }, { + "v": "/movie_bt_tags/thriller", + "n": "惊悚" + }, { + "v": "/movie_bt_tags/drama", + "n": "戏曲" + }, { + "v": "/movie_bt_tags/war", + "n": "战争" + }, { + "v": "/movie_bt_tags/latin", + "n": "拉丁" + }, { + "v": "/movie_bt_tags/funny", + "n": "搞笑" + }, { + "v": "/movie_bt_tags/campus", + "n": "校园" + }, { + "v": "/movie_bt_tags/song-and-dance", + "n": "歌舞" + }, { + "v": "/movie_bt_tags/martial-arts", + "n": "武侠" + }, { + "v": "/movie_bt_tags/disaster", + "n": "灾难" + }, { + "v": "/movie_bt_tags/love", + "n": "爱情" + }, { + "v": "/movie_bt_tags/crime", + "n": "犯罪" + }, { + "v": "/movie_bt_tags/fancy", + "n": "玄幻" + }, { + "v": "/movie_bt_tags/reality-show", + "n": "真人秀" + }, { + "v": "/movie_bt_tags/short-film", + "n": "短片" + }, { + "v": "/movie_bt_tags/kehuan", + "n": "科幻" + }, { + "v": "/movie_bt_tags/documentary", + "n": "纪录片" + }, { + "v": "/movie_bt_tags/talkshow", + "n": "脱口秀" + }, { + "v": "/movie_bt_tags/stageart", + "n": "舞台艺术" + }, { + "v": "/movie_bt_tags/west", + "n": "西部" + }, { + "v": "/movie_bt_tags/sport", + "n": "运动" + }, { + "v": "/movie_bt_tags/youth", + "n": "青春" + }, { + "v": "/movie_bt_tags/music", + "n": "音乐" + }, { + "v": "/movie_bt_tags/ghost", + "n": "鬼怪" + }, { + "v": "/movie_bt_tags/black-film", + "n": "黑色电影" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/movie_bt_cat/bhutan", + "n": "不丹" + }, { + "v": "/movie_bt_cat/china", + "n": "中国" + }, { + "v": "/movie_bt_cat/china-taiwan", + "n": "中国台湾" + }, { + "v": "/movie_bt_cat/china-mainland", + "n": "中国大陆" + }, { + "v": "/movie_bt_cat/china-hongkong", + "n": "中国香港" + }, { + "v": "/movie_bt_cat/denmark", + "n": "丹麦" + }, { + "v": "/movie_bt_cat/ukraine", + "n": "乌克兰" + }, { + "v": "/movie_bt_cat/uruguay", + "n": "乌拉圭" + }, { + "v": "/movie_bt_cat/israel", + "n": "以色列" + }, { + "v": "/movie_bt_cat/iraq", + "n": "伊拉克" + }, { + "v": "/movie_bt_cat/iran", + "n": "伊朗" + }, { + "v": "/movie_bt_cat/russia", + "n": "俄罗斯" + }, { + "v": "/movie_bt_cat/bulgaria", + "n": "保加利亚" + }, { + "v": "/movie_bt_cat/croatia", + "n": "克罗地亚" + }, { + "v": "/movie_bt_cat/iceland", + "n": "冰岛" + }, { + "v": "/movie_bt_cat/canada", + "n": "加拿大" + }, { + "v": "/movie_bt_cat/hungary", + "n": "匈牙利" + }, { + "v": "/movie_bt_cat/south-africa", + "n": "南非" + }, { + "v": "/movie_bt_cat/botswana", + "n": "博茨瓦纳" + }, { + "v": "/movie_bt_cat/qatar", + "n": "卡塔尔" + }, { + "v": "/movie_bt_cat/luxembourg", + "n": "卢森堡" + }, { + "v": "/movie_bt_cat/india", + "n": "印度" + }, { + "v": "/movie_bt_cat/indonesia", + "n": "印度尼西亚" + }, { + "v": "/movie_bt_cat/kazakhstan", + "n": "哈萨克斯坦" + }, { + "v": "/movie_bt_cat/colombia", + "n": "哥伦比亚" + }, { + "v": "/movie_bt_cat/turkey", + "n": "土耳其" + }, { + "v": "/movie_bt_cat/serbia", + "n": "塞尔维亚" + }, { + "v": "/movie_bt_cat/cyprus", + "n": "塞浦路斯" + }, { + "v": "/movie_bt_cat/mexico", + "n": "墨西哥" + }, { + "v": "/movie_bt_cat/dominica", + "n": "多米尼加" + }, { + "v": "/movie_bt_cat/austria", + "n": "奥地利" + }, { + "v": "/movie_bt_cat/venezuela", + "n": "委内瑞拉" + }, { + "v": "/movie_bt_cat/nigeria", + "n": "尼日利亚" + }, { + "v": "/movie_bt_cat/巴基斯坦", + "n": "巴基斯坦" + }, { + "v": "/movie_bt_cat/paraguay", + "n": "巴拉圭" + }, { + "v": "/movie_bt_cat/brazil", + "n": "巴西" + }, { + "v": "/movie_bt_cat/greece", + "n": "希腊" + }, { + "v": "/movie_bt_cat/germany", + "n": "德国" + }, { + "v": "/movie_bt_cat/italy", + "n": "意大利" + }, { + "v": "/movie_bt_cat/latvia", + "n": "拉脱维亚" + }, { + "v": "/movie_bt_cat/norway", + "n": "挪威" + }, { + "v": "/movie_bt_cat/chech", + "n": "捷克" + }, { + "v": "/movie_bt_cat/摩洛哥", + "n": "摩洛哥" + }, { + "v": "/movie_bt_cat/斯洛伐克", + "n": "斯洛伐克" + }, { + "v": "/movie_bt_cat/slovenia", + "n": "斯洛文尼亚" + }, { + "v": "/movie_bt_cat/singapore", + "n": "新加坡" + }, { + "v": "/movie_bt_cat/zealand", + "n": "新西兰" + }, { + "v": "/movie_bt_cat/japan", + "n": "日本" + }, { + "v": "/movie_bt_cat/chile", + "n": "智利" + }, { + "v": "/movie_bt_cat/north-korea", + "n": "朝鲜" + }, { + "v": "/movie_bt_cat/cambodia", + "n": "柬埔寨" + }, { + "v": "/movie_bt_cat/georgia", + "n": "格鲁吉亚" + }, { + "v": "/movie_bt_cat/belgium", + "n": "比利时" + }, { + "v": "/movie_bt_cat/saudi-arabia", + "n": "沙特阿拉伯" + }, { + "v": "/movie_bt_cat/france", + "n": "法国" + }, { + "v": "/movie_bt_cat/poland", + "n": "波兰" + }, { + "v": "/movie_bt_cat/puertorco", + "n": "波多黎各" + }, { + "v": "/movie_bt_cat/bohei", + "n": "波黑" + }, { + "v": "/movie_bt_cat/thailand", + "n": "泰国" + }, { + "v": "/movie_bt_cat/australia", + "n": "澳大利亚" + }, { + "v": "/movie_bt_cat/ireland", + "n": "爱尔兰" + }, { + "v": "/movie_bt_cat/estonia", + "n": "爱沙尼亚" + }, { + "v": "/movie_bt_cat/sweden", + "n": "瑞典" + }, { + "v": "/movie_bt_cat/switzerland", + "n": "瑞士" + }, { + "v": "/movie_bt_cat/belarus", + "n": "白俄罗斯" + }, { + "v": "/movie_bt_cat/peru", + "n": "秘鲁" + }, { + "v": "/movie_bt_cat/tunisia", + "n": "突尼斯" + }, { + "v": "/movie_bt_cat/lithuania", + "n": "立陶宛" + }, { + "v": "/movie_bt_cat/romania", + "n": "罗马尼亚" + }, { + "v": "/movie_bt_cat/america", + "n": "美国" + }, { + "v": "/movie_bt_cat/finland", + "n": "芬兰" + }, { + "v": "/movie_bt_cat/sovietunion", + "n": "苏联" + }, { + "v": "/movie_bt_cat/england", + "n": "英国" + }, { + "v": "/movie_bt_cat/netherlands", + "n": "荷兰" + }, { + "v": "/movie_bt_cat/philippines", + "n": "菲律宾" + }, { + "v": "/movie_bt_cat/葡萄牙", + "n": "葡萄牙" + }, { + "v": "/movie_bt_cat/west-germany", + "n": "西德" + }, { + "v": "/movie_bt_cat/spain", + "n": "西班牙" + }, { + "v": "/movie_bt_cat/vietnam", + "n": "越南" + }, { + "v": "/movie_bt_cat/argentina", + "n": "阿根廷" + }, { + "v": "/movie_bt_cat/korea", + "n": "韩国" + }, { + "v": "/movie_bt_cat/malaysia", + "n": "马来西亚" + }, { + "v": "/movie_bt_cat/马耳他", + "n": "马耳他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "v": "/year/2024", + "n": "2024" + }, { + "v": "/year/2023", + "n": "2023" + }, { + "v": "/year/2022", + "n": "2022" + }, { + "v": "/year/2021", + "n": "2021" + }, { + "v": "/year/2020", + "n": "2020" + }, { + "v": "/year/2019", + "n": "2019" + }, { + "v": "/year/2018", + "n": "2018" + }, { + "v": "/year/2017", + "n": "2017" + }, { + "v": "/year/2016", + "n": "2016" + }, { + "v": "/year/2015", + "n": "2015" + }, { + "v": "/year/2014", + "n": "2014" + }, { + "v": "/year/2013", + "n": "2013" + }, { + "v": "/year/2012", + "n": "2012" + }, { + "v": "/year/2011", + "n": "2011" + }, { + "v": "/year/2010", + "n": "2010" + }, { + "v": "/year/2009", + "n": "2009" + }, { + "v": "/year/2008", + "n": "2008" + }, { + "v": "/year/2007", + "n": "2007" + }, { + "v": "/year/2006", + "n": "2006" + }, { + "v": "/year/2005", + "n": "2005" + }, { + "v": "/year/2004", + "n": "2004" + }, { + "v": "/year/2003", + "n": "2003" + }, { + "v": "/year/2002", + "n": "2002" + }, { + "v": "/year/2001", + "n": "2001" + }, { + "v": "/year/2000", + "n": "2000" + }, { + "v": "/year/1999", + "n": "1999" + }, { + "v": "/year/1998", + "n": "1998" + }, { + "v": "/year/1997", + "n": "1997" + }, { + "v": "/year/1996", + "n": "1996" + }, { + "v": "/year/1995", + "n": "1995" + }, { + "v": "/year/1994", + "n": "1994" + }, { + "v": "/year/1993", + "n": "1993" + }, { + "v": "/year/1992", + "n": "1992" + }, { + "v": "/year/1991", + "n": "1991" + }, { + "v": "/year/1990", + "n": "1990" + }, { + "v": "/year/1989", + "n": "1989" + }, { + "v": "/year/1988", + "n": "1988" + }, { + "v": "/year/1987", + "n": "1987" + }, { + "v": "/year/1986", + "n": "1986" + }, { + "v": "/year/1985", + "n": "1985" + }, { + "v": "/year/1984", + "n": "1984" + }, { + "v": "/year/1983", + "n": "1983" + }, { + "v": "/year/1982", + "n": "1982" + }, { + "v": "/year/1981", + "n": "1981" + }, { + "v": "/year/1980", + "n": "1980" + }, { + "v": "/year/1979", + "n": "1979" + }, { + "v": "/year/1978", + "n": "1978" + }, { + "v": "/year/1977", + "n": "1977" + }, { + "v": "/year/1976", + "n": "1976" + }, { + "v": "/year/1975", + "n": "1975" + }, { + "v": "/year/1974", + "n": "1974" + }, { + "v": "/year/1973", + "n": "1973" + }, { + "v": "/year/1972", + "n": "1972" + }, { + "v": "/year/1971", + "n": "1971" + }, { + "v": "/year/1970", + "n": "1970" + }, { + "v": "/year/1969", + "n": "1969" + }, { + "v": "/year/1968", + "n": "1968" + }, { + "v": "/year/1967", + "n": "1967" + }, { + "v": "/year/1966", + "n": "1966" + }, { + "v": "/year/1965", + "n": "1965" + }, { + "v": "/year/1964", + "n": "1964" + }, { + "v": "/year/1963", + "n": "1963" + }, { + "v": "/year/1962", + "n": "1962" + }, { + "v": "/year/1960", + "n": "1960" + }, { + "v": "/year/1959", + "n": "1959" + }, { + "v": "/year/1954", + "n": "1954" + }, { + "v": "/year/1952", + "n": "1952" + }, { + "v": "/year/1950", + "n": "1950" + }, { + "v": "/year/1949", + "n": "1949" + }, { + "v": "/year/1948", + "n": "1948" + }, { + "v": "/year/1940", + "n": "1940" + }, { + "v": "/year/1939", + "n": "1939" + }, { + "v": "/year/1925", + "n": "1925" + }] + }] + }, + // searchUrl:'/search?q=**', + searchUrl: '/search?q=**', + searchable: 2, //是否启用全局搜索, + quickSearch: 0, //是否启用快速搜索, + headers: { + 'User-Agent': 'UC_UA', + }, + class_parse: '.navlist&&li;a&&Text;a&&href;.*/([^/]+)', + play_parse: true, + // lazy:'', + lazy: `js: + pdfh = jsp.pdfh; + var html = request(input); + var ohtml = pdfh(html, '.videoplay&&Html'); + var url = pdfh(ohtml, "body&&iframe&&src"); + if (/Cloud/.test(url)) { + var ifrwy = request(url); + let code = ifrwy.match(/var url = '(.*?)'/)[1].split('').reverse().join(''); + let temp = ''; + for (let i = 0x0; i < code.length; i = i + 0x2) { + temp += String.fromCharCode(parseInt(code[i] + code[i + 0x1], 0x10)) + } + input = { + jx: 0, + url: temp.substring(0x0, (temp.length - 0x7) / 0x2) + temp.substring((temp.length - 0x7) / 0x2 + 0x7), + parse: 0 + } + } else if (/decrypted/.test(ohtml)) { + var phtml = pdfh(ohtml, "body&&script:not([src])&&Html"); + eval(getCryptoJS()); + var scrpt = phtml.match(/var.*?\\)\\);/g)[0]; + var data = []; + eval(scrpt.replace(/md5/g, 'CryptoJS').replace('eval', 'data = ')); + input = { + jx: 0, + url: data.match(/url:.*?[\\'\\"](.*?)[\\'\\"]/)[1], + parse: 0 + } + } else { + input + } + `, + limit: 6, + 推荐: '.leibox&&li;*;*;*;*', + // double:true, // 推荐内容是否双层定位 + 一级: '.mrb&&li;img&&alt;img&&data-original;.jidi&&Text;a&&href', + 二级: { + "title": "h1&&Text;.moviedteail_list&&li:eq(0)&&Text", + "img": ".dyimg&&img&&src", + "desc": ".moviedteail_list&&li:eq(-1)&&Text;;;.moviedteail_list&&li:eq(7)&&Text;.moviedteail_list&&li:eq(5)&&Text", + "content": ".yp_context&&p&&Text", + "tabs": ".mi_paly_box .ypxingq_t--span", + "lists": ".paly_list_btn:eq(#id) a" + }, + 搜索: '.search_list&&li;img&&alt;img&&data-original;.nostag&&Text;a&&href', +} \ No newline at end of file diff --git a/xiaosa/JS/腾讯弹幕.js b/xiaosa/JS/腾讯弹幕.js new file mode 100644 index 00000000..a3ebd8aa --- /dev/null +++ b/xiaosa/JS/腾讯弹幕.js @@ -0,0 +1,842 @@ +var rule = { + title: '腾云驾雾[官]', + host: 'https://v.%71%71.com', + // homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=choice&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18', + homeUrl: '/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&listpage=1&offset=0&pagesize=21&iarea=-1&sort=18', + detailUrl: 'https://node.video.%71%71.com/x/api/float_vinfo2?cid=fyid', + searchUrl: '/x/search/?q=**&stag=fypage', + searchUrl: 'https://pbaccess.video.%71%71.com/trpc.videosearch.smartboxServer.HttpRountRecall/Smartbox?query=**&appID=3172&appKey=lGhFIPeD3HsO9xEp&pageNum=(fypage-1)&pageSize=10', + searchable: 2, + filterable: 1, + multi: 1, + // url:'/channel/fyclass?listpage=fypage&channel=fyclass&sort=18&_all=1', + url: '/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=((fypage-1)*21)&pagesize=21&iarea=-1', + // filter_url: 'sort={{fl.sort or 18}}&year={{fl.year}}&pay={{fl.pay}}', + // filter_url: 'sort={{fl.sort or 75}}&year={{fl.year}}&pay={{fl.pay}}', + filter_url: 'sort={{fl.sort or 75}}&iyear={{fl.iyear}}&year={{fl.year}}&itype={{fl.type}}&ifeature={{fl.feature}}&iarea={{fl.area}}&itrailer={{fl.itrailer}}&gender={{fl.sex}}', + // filter: 'H4sIAAAAAAAAA+2UzUrDQBCA32XOEZLUJrGvIj0saaDBNisxBkIJCG3Fi4oepIg3EQoieqiH+vM23Zq+hRuaZLZ4ce9z2/lmd2d2+NgR+H0e+gF0DkdwFGTQgRMeJ2BAxIaSwvrqVnxcyzhlg9PttqjED2c/45cSy8DyIDcavr57q/lBw8XTd/E6qbnT8M3zTFyc72RtC/Jumd+2c8wy7KZ4nxSL5Z9uxHS+Gc+r83sWVp1eVttl4Dluk1h93YubWZVwduplAYuxoFguVp+P/y5om/Z+/YxyqfAW8pbKbeS2yi3kO/ebyE2Fy1nXXBm7DDzknspd5K7KHeSOytvI2+XAugYkKWlD2mhrM+RpSB8OmaNvTsriMEgycofc0XbHZ3HCeUTukDv67vTDQY/MIXO0zelxn5M4JI6mOPkvgswSEpgPAAA=', + filter: { + "choice": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "83" + }, { + "n": "好评", + "v": "81" + }] + }, { + "key": "iyear", + "name": "年代", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }] + }], + "tv": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "79" + }, { + "n": "好评", + "v": "16" + }] + }, { + "key": "feature", + "name": "类型", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "爱情", + "v": "1" + }, { + "n": "古装", + "v": "2" + }, { + "n": "悬疑", + "v": "3" + }, { + "n": "都市", + "v": "4" + }, { + "n": "家庭", + "v": "5" + }, { + "n": "喜剧", + "v": "6" + }, { + "n": "传奇", + "v": "7" + }, { + "n": "武侠", + "v": "8" + }, { + "n": "军旅", + "v": "9" + }, { + "n": "权谋", + "v": "10" + }, { + "n": "革命", + "v": "11" + }, { + "n": "现实", + "v": "13" + }, { + "n": "青春", + "v": "14" + }, { + "n": "猎奇", + "v": "15" + }, { + "n": "科幻", + "v": "16" + }, { + "n": "竞技", + "v": "17" + }, { + "n": "玄幻", + "v": "18" + }] + }, { + "key": "iyear", + "name": "年代", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }] + }], + "movie": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "83" + }, { + "n": "好评", + "v": "81" + }] + }, { + "key": "type", + "name": "类型", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "犯罪", + "v": "4" + }, { + "n": "励志", + "v": "2" + }, { + "n": "喜剧", + "v": "100004" + }, { + "n": "热血", + "v": "100061" + }, { + "n": "悬疑", + "v": "100009" + }, { + "n": "爱情", + "v": "100005" + }, { + "n": "科幻", + "v": "100012" + }, { + "n": "恐怖", + "v": "100010" + }, { + "n": "动画", + "v": "100015" + }, { + "n": "战争", + "v": "100006" + }, { + "n": "家庭", + "v": "100017" + }, { + "n": "剧情", + "v": "100022" + }, { + "n": "奇幻", + "v": "100016" + }, { + "n": "武侠", + "v": "100011" + }, { + "n": "历史", + "v": "100021" + }, { + "n": "老片", + "v": "100013" + }, { + "n": "西部", + "v": "3" + }, { + "n": "记录片", + "v": "100020" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }] + }], + "variety": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "23" + }] + }, { + "key": "iyear", + "name": "年代", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }] + }], + "cartoon": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "83" + }, { + "n": "好评", + "v": "81" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "内地", + "v": "1" + }, { + "n": "日本", + "v": "2" + }, { + "n": "欧美", + "v": "3" + }, { + "n": "其他", + "v": "4" + }] + }, { + "key": "type", + "name": "类型", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "玄幻", + "v": "9" + }, { + "n": "科幻", + "v": "4" + }, { + "n": "武侠", + "v": "13" + }, { + "n": "冒险", + "v": "3" + }, { + "n": "战斗", + "v": "5" + }, { + "n": "搞笑", + "v": "1" + }, { + "n": "恋爱", + "v": "7" + }, { + "n": "魔幻", + "v": "6" + }, { + "n": "竞技", + "v": "20" + }, { + "n": "悬疑", + "v": "17" + }, { + "n": "日常", + "v": "15" + }, { + "n": "校园", + "v": "16" + }, { + "n": "真人", + "v": "18" + }, { + "n": "推理", + "v": "14" + }, { + "n": "历史", + "v": "19" + }, { + "n": "经典", + "v": "3" + }, { + "n": "其他", + "v": "12" + }] + }, { + "key": "iyear", + "name": "年代", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }] + }], + "child": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "76" + }, { + "n": "好评", + "v": "20" + }] + }, { + "key": "sex", + "name": "性别", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "女孩", + "v": "1" + }, { + "n": "男孩", + "v": "2" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "内地", + "v": "3" + }, { + "n": "日本", + "v": "2" + }, { + "n": "其他", + "v": "1" + }] + }, { + "key": "iyear", + "name": "年龄段", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "0-3岁", + "v": "1" + }, { + "n": "4-6岁", + "v": "2" + }, { + "n": "7-9岁", + "v": "3" + }, { + "n": "10岁以上", + "v": "4" + }, { + "n": "全年龄段", + "v": "7" + }] + }], + "doco": [{ + "key": "sort", + "name": "排序", + "value": [{ + "n": "最热", + "v": "75" + }, { + "n": "最新", + "v": "74" + }] + }, { + "key": "itrailer", + "name": "出品方", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "BBC", + "v": "1" + }, { + "n": "国家地理", + "v": "4" + }, { + "n": "HBO", + "v": "3175" + }, { + "n": "NHK", + "v": "2" + }, { + "n": "历史频道", + "v": "7" + }, { + "n": "ITV", + "v": "3530" + }, { + "n": "探索频道", + "v": "3174" + }, { + "n": "ZDF", + "v": "3176" + }, { + "n": "腾讯自制", + "v": "15" + }, { + "n": "合作机构", + "v": "6" + }, { + "n": "其他", + "v": "5" + }] + }, { + "key": "type", + "name": "类型", + "value": [{ + "n": "全部", + "v": "-1" + }, { + "n": "自然", + "v": "4" + }, { + "n": "美食", + "v": "10" + }, { + "n": "社会", + "v": "3" + }, { + "n": "人文", + "v": "6" + }, { + "n": "历史", + "v": "1" + }, { + "n": "军事", + "v": "2" + }, { + "n": "科技", + "v": "8" + }, { + "n": "财经", + "v": "14" + }, { + "n": "探险", + "v": "15" + }, { + "n": "罪案", + "v": "7" + }, { + "n": "竞技", + "v": "12" + }, { + "n": "旅游", + "v": "11" + }] + }] + }, + headers: { + 'User-Agent': 'PC_UA' + }, + timeout: 5000, + // class_parse:'.site_channel a;a&&Text;a&&href;channel/(.*)', + cate_exclude: '会员|游戏|全部', + // class_name: '精选&电视剧&电影&综艺&动漫&少儿&纪录片', + // class_url: 'choice&tv&movie&variety&cartoon&child&doco', + class_name: '精选&电影&电视剧&综艺&动漫&少儿&纪录片', + class_url: 'choice&movie&tv&variety&cartoon&child&doco', + limit: 20, + // play_parse:true, + // 手动调用解析请求json的url,此lazy不方便 + play_parse: true, + lazy: $js.toString(() => { + try { + let api = "" + input.split("?")[0]; + console.log(api); + let response = fetch(api, { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + let bata = JSON.parse(response); + if (bata.url.includes("qq")) { + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } else { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + } catch { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + }), + 推荐: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float', + 一级: '.list_item;img&&alt;img&&src;a&&Text;a&&data-float', + 二级: $js.toString(() => { + VOD = {}; + let d = []; + let video_list = []; + let video_lists = []; + let list = []; + let QZOutputJson; + let html = fetch(input, fetch_params); + let sourceId = /get_playsource/.test(input) ? input.match(/id=(\d*?)&/)[1] : input.split("cid=")[1]; + let cid = sourceId; + let detailUrl = "https://v.%71%71.com/detail/m/" + cid + ".html"; + log("详情页:" + detailUrl); + pdfh = jsp.pdfh; + pd = jsp.pd; + try { + let json = JSON.parse(html); + VOD = { + vod_url: input, + vod_name: json.c.title, + type_name: json.typ.join(","), + vod_actor: json.nam.join(","), + vod_year: json.c.year, + vod_content: json.c.description, + vod_remarks: json.rec, + vod_pic: urljoin2(input, json.c.pic) + } + } catch (e) { + log("解析片名海报等基础信息发生错误:" + e.message) + } + if (/get_playsource/.test(input)) { + eval(html); + let indexList = QZOutputJson.PlaylistItem.indexList; + indexList.forEach(function(it) { + let dataUrl = "https://s.video.qq.com/get_playsource?id=" + sourceId + "&plat=2&type=4&data_type=3&range=" + it + "&video_type=10&plname=qq&otype=json"; + eval(fetch(dataUrl, fetch_params)); + let vdata = QZOutputJson.PlaylistItem.videoPlayList; + vdata.forEach(function(item) { + d.push({ + title: item.title, + pic_url: item.pic, + desc: item.episode_number + "\t\t\t播放量:" + item.thirdLine, + url: item.playUrl + }) + }); + video_lists = video_lists.concat(vdata) + }) + } else { + let json = JSON.parse(html); + video_lists = json.c.video_ids; + let url = "https://v.qq.com/x/cover/" + sourceId + ".html"; + if (video_lists.length === 1) { + let vid = video_lists[0]; + url = "https://v.qq.com/x/cover/" + cid + "/" + vid + ".html"; + d.push({ + title: "在线播放", + url: url + }) + } else if (video_lists.length > 1) { + for (let i = 0; i < video_lists.length; i += 30) { + video_list.push(video_lists.slice(i, i + 30)) + } + video_list.forEach(function(it, idex) { + let o_url = "https://union.video.qq.com/fcgi-bin/data?otype=json&tid=1804&appid=20001238&appkey=6c03bbe9658448a4&union_platform=1&idlist=" + it.join(","); + let o_html = fetch(o_url, fetch_params); + eval(o_html); + QZOutputJson.results.forEach(function(it1) { + it1 = it1.fields; + let url = "https://v.qq.com/x/cover/" + cid + "/" + it1.vid + ".html"; + d.push({ + title: it1.title, + pic_url: it1.pic160x90.replace("/160", ""), + desc: it1.video_checkup_time, + url: url, + type: it1.category_map && it1.category_map.length > 1 ? it1.category_map[1] : "" + }) + }) + }) + } + } + let yg = d.filter(function(it) { + return it.type && it.type !== "正片" + }); + let zp = d.filter(function(it) { + return !(it.type && it.type !== "正片") + }); + VOD.vod_play_from = yg.length < 1 ? "qq" : "qq$$$qq 预告及花絮"; + VOD.vod_play_url = yg.length < 1 ? d.map(function(it) { + return it.title + "$" + it.url + }).join("#") : [zp, yg].map(function(it) { + return it.map(function(its) { + return its.title + "$" + its.url + }).join("#") + }).join("$$$"); + }), + 搜索: $js.toString(() => { + let d = []; + pdfa = jsp.pdfa; + pdfh = jsp.pdfh; + pd = jsp.pd; + let html = request(input); + let baseList = pdfa(html, "body&&.result_item_v"); + log(baseList.length); + baseList.forEach(function(it) { + let longText = pdfh(it, ".result_title&&a&&Text"); + let shortText = pdfh(it, ".type&&Text"); + let fromTag = pdfh(it, ".result_source&&Text"); + let score = pdfh(it, ".figure_info&&Text"); + let content = pdfh(it, ".desc_text&&Text"); + // let url = pdfh(it, ".result_title&&a&&href"); + let url = pdfh(it, "div&&r-data"); + // log(longText); + // log(shortText); + // log('url:'+url); + let img = pd(it, ".figure_pic&&src"); + url = "https://node.video.qq.com/x/api/float_vinfo2?cid=" + url.match(/.*\/(.*?)\.html/)[1]; + log(shortText + "|" + url); + if (fromTag.match(/腾讯/)) { + d.push({ + title: longText.split(shortText)[0], + img: img, + url: url, + content: content, + desc: shortText + " " + score + }) + } + }); + setResult(d); + }), + 搜索: $js.toString(() => { + let d = []; + let html = request(input); + let json = JSON.parse(html); + if (json.data.smartboxItemList.length > 0) { + let cid = json.data.smartboxItemList[0].basicDoc.id; + let url = 'https://node.video.qq.com/x/api/float_vinfo2?cid=' + cid; + let html1 = request(url); + let data = JSON.parse(html1); + + d.push({ + title: data.c.title, + img: data.c.pic, + url: url, + content: data.c.description, + desc: data.rec + }); + } + setResult(d); + }) +} \ No newline at end of file diff --git a/xiaosa/JS/芒果弹幕.js b/xiaosa/JS/芒果弹幕.js new file mode 100644 index 00000000..3f517be0 --- /dev/null +++ b/xiaosa/JS/芒果弹幕.js @@ -0,0 +1,843 @@ +var rule = { + title: '百忙无果[官]', + host: 'https://pianku.api.%6d%67%74%76.com', + homeUrl: '', + // searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/pc/search/v1?q=**&pn=fypage&pc=10', + // 新版接口搜索变成v2并且加了验证,蛋疼 + // searchUrl: 'https://mobileso.bz.mgtv.com/pc/search/v2?allowedRC=1&src=mgtv&did=cf03b959-6945-4cb6-bcb3-88762459354d×tamp=2024-06-21T15%3A52%3A55Z&signVersion=1&signNonce=8dae67a1fafc4bda984ec8deb47666ad&q=**&pn=fypage&pc=10&corr=1&_support=10000000&signature=4e27fddcd2a1a66d6c1764ed6b74bab7', + // 用手机的吧,搞不定这个 + searchUrl: 'https://mobileso.bz.%6d%67%74%76.com/msite/search/v2?q=**&pn=fypage&pc=10', + detailUrl: 'https://pcweb.api.mgtv.com/episode/list?page=1&size=50&video_id=fyid', + searchable: 2, + quickSearch: 0, + filterable: 1, + multi: 1, + // 分类链接fypage参数支持1个()表达式 + // https://www.mgtv.com/lib/3?lastp=list_index&kind=a1&year=all&chargeInfo=a1&sort=c2 + url: '/rider/list/pcweb/v3?platform=pcweb&channelId=fyclass&pn=fypage&pc=80&hudong=1&_support=10000000&kind=a1&area=a1', + filter_url: 'year={{fl.year or "all"}}&sort={{fl.sort or "all"}}&chargeInfo={{fl.chargeInfo or "all"}}', + headers: { + 'User-Agent': 'PC_UA' + }, + timeout: 5000, + class_name: '电视剧&电影&综艺&动漫&纪录片&教育&少儿', + class_url: '2&3&1&50&51&115&10', + filter: { + "1": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }], + "2": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }], + "3": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }], + "50": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }], + "51": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }], + "115": [{ + "key": "chargeInfo", + "name": "付费类型", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "免费", + "v": "b1" + }, { + "n": "vip", + "v": "b2" + }, { + "n": "VIP用券", + "v": "b3" + }, { + "n": "付费点播", + "v": "b4" + }] + }, { + "key": "sort", + "name": "排序", + "value": [{ + "n": "最新", + "v": "c1" + }, { + "n": "最热", + "v": "c2" + }, { + "n": "知乎高分", + "v": "c4" + }] + }, { + "key": "year", + "name": "年代", + "value": [{ + "n": "全部", + "v": "all" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }] + }] + }, + limit: 20, + play_parse: true, + lazy: $js.toString(() => { + try { + let api = "" + input.split("?")[0]; + console.log(api); + let response = fetch(api, { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + let bata = JSON.parse(response); + if (bata.url.includes("mgtv")) { + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } else { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + } catch { + input = { + parse: 0, + url: input.split("?")[0], + jx: 1, + danmaku: "http://103.45.162.207:25252/hbdm.php?key=7894561232&id=" + input.split("?")[0] + }; + } + }), + // 手动调用解析请求json的url,此lazy不方便 + // lazy:'js:print(input);fetch_params.headers["user-agent"]=MOBILE_UA;let html=request(input);let rurl=html.match(/window\\.open\\(\'(.*?)\',/)[1];rurl=urlDeal(rurl);input={parse:1,url:rurl};', + // 推荐:'.list_item;img&&alt;img&&src;a&&Text;a&&data-float', + 一级: 'json:data.hitDocs;title;img;updateInfo||rightCorner.text;playPartId', + // 一级:'json:data.hitDocs;title;img;updateInfo;playPartId', + 二级: $js.toString(() => { + fetch_params.headers.Referer = "https://www.mgtv.com"; + fetch_params.headers["User-Agent"] = MOBILE_UA; + pdfh = jsp.pdfh; + pdfa = jsp.pdfa; + pd = jsp.pd; + VOD = {}; + let d = []; + let html = request(input); + let json = JSON.parse(html); + let host = "https://www.mgtv.com"; + let ourl = json.data.list.length > 0 ? json.data.list[0].url : json.data.series[0].url; + if (!/^http/.test(ourl)) { + ourl = host + ourl + } + fetch_params.headers["User-Agent"] = MOBILE_UA; + html = request(ourl); + if (html.includes("window.location =")) { + print("开始获取ourl"); + ourl = pdfh(html, "meta[http-equiv=refresh]&&content").split("url=")[1]; + print("获取到ourl:" + ourl); + html = request(ourl) + } + try { + let details = pdfh(html, ".m-details&&Html").replace(/h1>/, "h6>").replace(/div/g, "br"); + print(details); + let actor = "", + director = "", + time = ""; + if (/播出时间/.test(details)) { + actor = pdfh(html, "p:eq(5)&&Text").substr(0, 25); + director = pdfh(html, "p:eq(4)&&Text"); + time = pdfh(html, "p:eq(3)&&Text") + } else { + actor = pdfh(html, "p:eq(4)&&Text").substr(0, 25); + director = pdfh(html, "p:eq(3)&&Text"); + time = "已完结" + } + let _img = pd(html, ".video-img&&img&&src"); + let JJ = pdfh(html, ".desc&&Text").split("简介:")[1]; + let _desc = time; + VOD.vod_name = pdfh(html, ".vt-txt&&Text"); + VOD.type_name = pdfh(html, "p:eq(0)&&Text").substr(0, 6); + VOD.vod_area = pdfh(html, "p:eq(1)&&Text"); + VOD.vod_actor = actor; + VOD.vod_director = director; + VOD.vod_remarks = _desc; + VOD.vod_pic = _img; + VOD.vod_content = JJ; + if (!VOD.vod_name) { + VOD.vod_name = VOD.type_name; + } + } catch (e) { + log("获取影片信息发生错误:" + e.message) + } + + function getRjpg(imgUrl, xs) { + xs = xs || 3; + let picSize = /jpg_/.test(imgUrl) ? imgUrl.split("jpg_")[1].split(".")[0] : false; + let rjpg = false; + if (picSize) { + let a = parseInt(picSize.split("x")[0]) * xs; + let b = parseInt(picSize.split("x")[1]) * xs; + rjpg = a + "x" + b + ".jpg" + } + let img = /jpg_/.test(imgUrl) && rjpg ? imgUrl.replace(imgUrl.split("jpg_")[1], rjpg) : imgUrl; + return img + } + + if (json.data.total === 1 && json.data.list.length === 1) { + let data = json.data.list[0]; + let url = "https://www.mgtv.com" + data.url; + d.push({ + title: data.t4, + desc: data.t2, + pic_url: getRjpg(data.img), + url: url + }) + } else if (json.data.list.length > 1) { + for (let i = 1; i <= json.data.total_page; i++) { + if (i > 1) { + json = JSON.parse(fetch(input.replace("page=1", "page=" + i), {})) + } + json.data.list.forEach(function(data) { + let url = "https://www.mgtv.com" + data.url; + if (data.isIntact == "1") { + d.push({ + title: data.t4, + desc: data.t2, + pic_url: getRjpg(data.img), + url: url + }) + } + }) + } + } else { + print(input + "暂无片源") + } + VOD.vod_play_from = "mgtv"; + VOD.vod_play_url = d.map(function(it) { + return it.title + "$" + it.url + }).join("#"); + setResult(d); + }), + + 搜索: $js.toString(() => { + fetch_params.headers.Referer = "https://www.mgtv.com"; + fetch_params.headers["User-Agent"] = MOBILE_UA; + let d = []; + let html = request(input); + let json = JSON.parse(html); + json.data.contents.forEach(function(data) { + if (data.type && data.type == 'media') { + let item = data.data[0]; + let desc = item.desc.join(','); + let fyclass = ''; + if (item.source === "imgo") { + let img = item.img ? item.img : ''; + try { + fyclass = item.rpt.match(/idx=(.*?)&/)[1] + '$'; + } catch (e) { + log(e.message); + fyclass = ''; + } + log(fyclass); + d.push({ + title: item.title.replace(/|<\/B>/g, ''), + img: img, + content: '', + desc: desc, + url: fyclass + item.url.match(/.*\/(.*?)\.html/)[1] + }) + } + } + }); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/花子动漫.js b/xiaosa/JS/花子动漫.js new file mode 100644 index 00000000..f669f440 --- /dev/null +++ b/xiaosa/JS/花子动漫.js @@ -0,0 +1,970 @@ +var rule = { + title: '花子动漫[漫]', + host: 'https://www.huazidm.com', + class_name: 'TV动漫&剧场&特摄', + class_url: '1&2&3', + searchUrl: '/index.php/ajax/suggest?mid=1&wd=**&limit=50', + searchUrl: '/vodsearch/**----------fypage---.html', + searchable: 2, + quickSearch: 0, + headers: { + 'User-Agent': 'MOBILE_UA', + }, + url: '/index.php/api/vod#type=fyclassfyfilter&page=fypage', + filterable: 0, + filter_url: '&class={{fl.class}}&year={{fl.year}}&letter={{fl.letter}}&by={{fl.by}}', + filter: { + "1": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "异世界", + "v": "异世界" + }, { + "n": "百合", + "v": "百合" + }, { + "n": "后宫", + "v": "后宫" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "纯爱", + "v": "纯爱" + }, { + "n": "穿越", + "v": "穿越" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "后宫", + "v": "后宫" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "日常", + "v": "日常" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "恋爱", + "v": "恋爱" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "推理", + "v": "推理" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "音乐", + "v": "音乐" + }, { + "n": "萝莉", + "v": "萝莉" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "惊悚", + "v": "惊悚" + }, { + "n": "泡面番", + "v": "泡面番" + }, { + "n": "游戏改", + "v": "游戏改" + }, { + "n": "小说改", + "v": "小说改" + }, { + "n": "漫画改", + "v": "漫画改" + }, { + "n": "腐", + "v": "腐" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }, { + "n": "1999", + "v": "1999" + }, { + "n": "1998", + "v": "1998" + }, { + "n": "1997", + "v": "1997" + }, { + "n": "1996", + "v": "1996" + }, { + "n": "1995", + "v": "1995" + }, { + "n": "1994", + "v": "1994" + }, { + "n": "1993", + "v": "1993" + }, { + "n": "1992", + "v": "1992" + }, { + "n": "1991", + "v": "1991" + }, { + "n": "1990", + "v": "1990" + }, { + "n": "1989", + "v": "1989" + }, { + "n": "1988", + "v": "1988" + }, { + "n": "1987", + "v": "1987" + }, { + "n": "1986", + "v": "1986" + }, { + "n": "1985", + "v": "1985" + }, { + "n": "1984", + "v": "1984" + }, { + "n": "1983", + "v": "1983" + }, { + "n": "1982", + "v": "1982" + }, { + "n": "1981", + "v": "1981" + }, { + "n": "1980", + "v": "1980" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0-9", + "v": "0-9" + }] + }, { + "key": "by", + "name": "时间", + "value": [{ + "n": "按最新", + "v": "time" + }, { + "n": "按最热", + "v": "hits" + }, { + "n": "按评分", + "v": "score" + }] + }], + "2": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "异世界", + "v": "异世界" + }, { + "n": "百合", + "v": "百合" + }, { + "n": "热血", + "v": "热血" + }, { + "n": "穿越", + "v": "穿越" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "战斗", + "v": "战斗" + }, { + "n": "搞笑", + "v": "搞笑" + }, { + "n": "日常", + "v": "日常" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "治愈", + "v": "治愈" + }, { + "n": "校园", + "v": "校园" + }, { + "n": "恋爱", + "v": "恋爱" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "机战", + "v": "机战" + }, { + "n": "音乐", + "v": "音乐" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }, { + "n": "1999", + "v": "1999" + }, { + "n": "1998", + "v": "1998" + }, { + "n": "1997", + "v": "1997" + }, { + "n": "1996", + "v": "1996" + }, { + "n": "1995", + "v": "1995" + }, { + "n": "1994", + "v": "1994" + }, { + "n": "1993", + "v": "1993" + }, { + "n": "1992", + "v": "1992" + }, { + "n": "1991", + "v": "1991" + }, { + "n": "1990", + "v": "1990" + }, { + "n": "1989", + "v": "1989" + }, { + "n": "1988", + "v": "1988" + }, { + "n": "1987", + "v": "1987" + }, { + "n": "1986", + "v": "1986" + }, { + "n": "1985", + "v": "1985" + }, { + "n": "1984", + "v": "1984" + }, { + "n": "1983", + "v": "1983" + }, { + "n": "1982", + "v": "1982" + }, { + "n": "1981", + "v": "1981" + }, { + "n": "1980", + "v": "1980" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0-9", + "v": "0-9" + }] + }, { + "key": "by", + "name": "时间", + "value": [{ + "n": "按最新", + "v": "time" + }, { + "n": "按最热", + "v": "hits" + }, { + "n": "按评分", + "v": "score" + }] + }], + "3": [{ + "key": "class", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "科幻", + "v": "科幻" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "2011", + "v": "2011" + }, { + "n": "2010", + "v": "2010" + }, { + "n": "2009", + "v": "2009" + }, { + "n": "2008", + "v": "2008" + }, { + "n": "2007", + "v": "2007" + }, { + "n": "2006", + "v": "2006" + }, { + "n": "2005", + "v": "2005" + }, { + "n": "2004", + "v": "2004" + }, { + "n": "2003", + "v": "2003" + }, { + "n": "2002", + "v": "2002" + }, { + "n": "2001", + "v": "2001" + }, { + "n": "2000", + "v": "2000" + }, { + "n": "1999", + "v": "1999" + }, { + "n": "1998", + "v": "1998" + }, { + "n": "1997", + "v": "1997" + }, { + "n": "1996", + "v": "1996" + }, { + "n": "1995", + "v": "1995" + }, { + "n": "1994", + "v": "1994" + }, { + "n": "1993", + "v": "1993" + }, { + "n": "1992", + "v": "1992" + }, { + "n": "1991", + "v": "1991" + }, { + "n": "1990", + "v": "1990" + }, { + "n": "1989", + "v": "1989" + }, { + "n": "1988", + "v": "1988" + }, { + "n": "1987", + "v": "1987" + }, { + "n": "1986", + "v": "1986" + }, { + "n": "1985", + "v": "1985" + }, { + "n": "1984", + "v": "1984" + }, { + "n": "1983", + "v": "1983" + }, { + "n": "1982", + "v": "1982" + }, { + "n": "1981", + "v": "1981" + }, { + "n": "1980", + "v": "1980" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "A" + }, { + "n": "B", + "v": "B" + }, { + "n": "C", + "v": "C" + }, { + "n": "D", + "v": "D" + }, { + "n": "E", + "v": "E" + }, { + "n": "F", + "v": "F" + }, { + "n": "G", + "v": "G" + }, { + "n": "H", + "v": "H" + }, { + "n": "I", + "v": "I" + }, { + "n": "J", + "v": "J" + }, { + "n": "K", + "v": "K" + }, { + "n": "L", + "v": "L" + }, { + "n": "M", + "v": "M" + }, { + "n": "N", + "v": "N" + }, { + "n": "O", + "v": "O" + }, { + "n": "P", + "v": "P" + }, { + "n": "Q", + "v": "Q" + }, { + "n": "R", + "v": "R" + }, { + "n": "S", + "v": "S" + }, { + "n": "T", + "v": "T" + }, { + "n": "U", + "v": "U" + }, { + "n": "V", + "v": "V" + }, { + "n": "W", + "v": "W" + }, { + "n": "X", + "v": "X" + }, { + "n": "Y", + "v": "Y" + }, { + "n": "Z", + "v": "Z" + }, { + "n": "0-9", + "v": "0-9" + }] + }, { + "key": "by", + "name": "时间", + "value": [{ + "n": "按最新", + "v": "time" + }, { + "n": "按最热", + "v": "hits" + }, { + "n": "按评分", + "v": "score" + }] + }] + }, + filter_def: {}, + detailUrl: '/voddetail/fyid.html', + play_parse: true, + sniffer: 1, + is_video: 'obj/tos|bd.xhscdn|/ugc/', + lazy: $js.toString(() => { + input = { + parse: 1, + url: input, + //js:'try{let urls=Array.from(document.querySelectorAll("iframe")).filter(x=>x.src.includes("?url="));if(urls){location.href=urls[0].src}}catch{}document.querySelector("button").click()', + js: 'try{location.href=document.querySelector("#playleft iframe").src}catch{}document.querySelector("button.swal-button--confirm").click()', + parse_extra: '&is_pc=1&custom_regex=' + rule.is_video, + } + }), + limit: 6, + 推荐: '.list-vod.flex .public-list-box;a&&title;.lazy&&data-original;.public-list-prb&&Text;a&&href', + 一级: $js.toString(() => { + let body = input.split("#")[1]; + let t = Math.round(new Date / 1e3).toString(); + let key = md5("DS" + t + "DCC147D11943AF75"); + let url = input.split("#")[0]; + body = body + "&time=" + t + "&key=" + key; + print(body); + fetch_params.body = body; + let html = post(url, fetch_params); + let data = JSON.parse(html); + VODS = data.list.map(function(it) { + it.vod_pic = urljoin2(input.split("/i")[0], it.vod_pic); + return it + }); + }), + 二级: { + title: '.slide-info-title&&Text;.slide-info:eq(3)--strong&&Text', + img: '.detail-pic&&data-original', + desc: '.fraction&&Text;.slide-info-remarks:eq(1)&&Text;.slide-info-remarks:eq(2)&&Text;.slide-info:eq(2)--strong&&Text;.slide-info:eq(1)--strong&&Text', + content: '#height_limit&&Text', + tabs: '.anthology.wow.fadeInUp.animated&&.swiper-wrapper&&a', + tab_text: '.swiper-slide&&Text', + lists: '.anthology-list-box:eq(#id) li', + }, + 搜索: 'json:list;name;pic;;id', + 搜索: $js.toString(() => { + let html = fetch(input); + let list = pdfa(html, ".public-list-box"); + VODS = list.map(x => { + return { + vod_name: pdfh(x, ".thumb-txt&&Text"), + vod_pic: pdfh(x, ".lazy&&data-src"), + vod_remarks: pdfh(x, ".public-list-prb&&Text"), + vod_content: pdfh(x, ".thumb-blurb&&Text"), + vod_id: pdfh(x, "a&&href") + } + }); + }), + 图片替换: '&=>&' +} \ No newline at end of file diff --git a/xiaosa/JS/茶杯狐.js b/xiaosa/JS/茶杯狐.js new file mode 100644 index 00000000..17c76eb5 --- /dev/null +++ b/xiaosa/JS/茶杯狐.js @@ -0,0 +1,1512 @@ +/** + * 原创诺临风 + * 原创时间:2024-05-07 + * 转载请不要删除此版权声明 + */ + + +var rule = { + title: "新茶杯狐", + host: "https://www.cbhfox.com/", + url: "/chbys/fyfilter.html", + searchable: 2, + quickSearch: 0, + filterable: 1, + detailUrl: "/cbhtv/fyid.html", + homeUrl: "/label/hot.html", + filter_url: "{{fl.cateId}}{{fl.area}}{{fl.by}}{{fl.class}}{{fl.lang}}{{fl.letter}}/page/fypage{{fl.year}}", + filter: { + "dianying": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "喜剧", + "v": "/class/喜剧" + }, { + "n": "爱情", + "v": "/class/爱情" + }, { + "n": "恐怖", + "v": "/class/恐怖" + }, { + "n": "动作", + "v": "/class/动作" + }, { + "n": "科幻", + "v": "/class/科幻" + }, { + "n": "剧情", + "v": "/class/剧情" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "警匪", + "v": "/class/警匪" + }, { + "n": "犯罪", + "v": "/class/犯罪" + }, { + "n": "动画", + "v": "/class/动画" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "武侠", + "v": "/class/武侠" + }, { + "n": "冒险", + "v": "/class/冒险" + }, { + "n": "枪战", + "v": "/class/枪战" + }, { + "n": "恐怖", + "v": "/class/恐怖" + }, { + "n": "悬疑", + "v": "/class/悬疑" + }, { + "n": "惊悚", + "v": "/class/惊悚" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "青春", + "v": "/class/青春" + }, { + "n": "文艺", + "v": "/class/文艺" + }, { + "n": "微电影", + "v": "/class/微电影" + }, { + "n": "古装", + "v": "/class/古装" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "运动", + "v": "/class/运动" + }, { + "n": "农村", + "v": "/class/农村" + }, { + "n": "儿童", + "v": "/class/儿童" + }, { + "n": "网络电影", + "v": "/class/网络电影" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "大陆", + "v": "/area/中国大陆" + }, { + "n": "香港", + "v": "/area/中国香港" + }, { + "n": "台湾", + "v": "/area/中国台湾" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "德国", + "v": "/area/德国" + }, { + "n": "泰国", + "v": "/area/泰国" + }, { + "n": "印度", + "v": "/area/印度" + }, { + "n": "法国", + "v": "/area/法国" + }, { + "n": "意大利", + "v": "/area/意大利" + }, { + "n": "西班牙", + "v": "/area/西班牙" + }, { + "n": "加拿大", + "v": "/area/加拿大" + }, { + "n": "其他", + "v": "/area/其他" + }] + }, { + "key": "lang", + "name": "语言", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "国语", + "v": "/lang/国语" + }, { + "n": "英语", + "v": "/lang/英语" + }, { + "n": "粤语", + "v": "/lang/粤语" + }, { + "n": "闽南语", + "v": "/lang/闽南语" + }, { + "n": "韩语", + "v": "/lang/韩语" + }, { + "n": "日语", + "v": "/lang/日语" + }, { + "n": "法语", + "v": "/lang/法语" + }, { + "n": "德语", + "v": "/lang/德语" + }, { + "n": "其它", + "v": "/lang/其它" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "dianshiju": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "古装", + "v": "/class/古装" + }, { + "n": "战争", + "v": "/class/战争" + }, { + "n": "青春偶像", + "v": "/class/青春偶像" + }, { + "n": "喜剧", + "v": "/class/喜剧" + }, { + "n": "家庭", + "v": "/class/家庭" + }, { + "n": "犯罪", + "v": "/class/犯罪" + }, { + "n": "动作", + "v": "/class/动作" + }, { + "n": "奇幻", + "v": "/class/奇幻" + }, { + "n": "剧情", + "v": "/class/剧情" + }, { + "n": "历史", + "v": "/class/历史" + }, { + "n": "经典", + "v": "/class/经典" + }, { + "n": "乡村", + "v": "/class/乡村" + }, { + "n": "情景", + "v": "/class/情景" + }, { + "n": "商战", + "v": "/class/商战" + }, { + "n": "网剧", + "v": "/class/网剧" + }, { + "n": "其他", + "v": "/class/其他" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "内地", + "v": "/area/内地" + }, { + "n": "韩国", + "v": "/area/韩国" + }, { + "n": "香港", + "v": "/area/香港" + }, { + "n": "台湾", + "v": "/area/台湾" + }, { + "n": "日本", + "v": "/area/日本" + }, { + "n": "美国", + "v": "/area/美国" + }, { + "n": "泰国", + "v": "/area/泰国" + }, { + "n": "英国", + "v": "/area/英国" + }, { + "n": "新加坡", + "v": "/area/新加坡" + }, { + "n": "其他", + "v": "/area/其他" + }] + }, { + "key": "lang", + "name": "语言", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "国语", + "v": "/lang/国语" + }, { + "n": "英语", + "v": "/lang/英语" + }, { + "n": "粤语", + "v": "/lang/粤语" + }, { + "n": "闽南语", + "v": "/lang/闽南语" + }, { + "n": "韩语", + "v": "/lang/韩语" + }, { + "n": "日语", + "v": "/lang/日语" + }, { + "n": "其它", + "v": "/lang/其它" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "zongyi": [{ + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "3" + }, { + "n": "选秀", + "v": "/class/选秀" + }, { + "n": "情感", + "v": "/class/情感" + }, { + "n": "访谈", + "v": "/class/访谈" + }, { + "n": "播报", + "v": "/class/播报" + }, { + "n": "旅游", + "v": "/class/旅游" + }, { + "n": "音乐", + "v": "/class/音乐" + }, { + "n": "美食", + "v": "/class/美食" + }, { + "n": "纪实", + "v": "/class/纪实" + }, { + "n": "曲艺", + "v": "/class/曲艺" + }, { + "n": "生活", + "v": "/class/生活" + }, { + "n": "游戏互动", + "v": "/class/游戏互动" + }, { + "n": "财经", + "v": "/class/财经" + }, { + "n": "求职", + "v": "/class/求职" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "内地", + "v": "/area/内地" + }, { + "n": "港台", + "v": "/area/港台" + }, { + "n": "日韩", + "v": "/area/日韩" + }, { + "n": "欧美", + "v": "/area/欧美" + }] + }, { + "key": "lang", + "name": "语言", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "国语", + "v": "/lang/国语" + }, { + "n": "英语", + "v": "/lang/英语" + }, { + "n": "粤语", + "v": "/lang/粤语" + }, { + "n": "闽南语", + "v": "/lang/闽南语" + }, { + "n": "韩语", + "v": "/lang/韩语" + }, { + "n": "日语", + "v": "/lang/日语" + }, { + "n": "其它", + "v": "/lang/其它" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "dongmna": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "内地", + "v": "/area/内地" + }, { + "n": "港台", + "v": "/area/港台" + }, { + "n": "日韩", + "v": "/area/日韩" + }, { + "n": "欧美", + "v": "/area/欧美" + }] + }, { + "key": "lang", + "name": "语言", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "国语", + "v": "/lang/国语" + }, { + "n": "英语", + "v": "/lang/英语" + }, { + "n": "粤语", + "v": "/lang/粤语" + }, { + "n": "闽南语", + "v": "/lang/闽南语" + }, { + "n": "韩语", + "v": "/lang/韩语" + }, { + "n": "日语", + "v": "/lang/日语" + }, { + "n": "其它", + "v": "/lang/其它" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }], + "jilupian": [{ + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "内地", + "v": "/area/内地" + }, { + "n": "港台", + "v": "/area/港台" + }, { + "n": "日韩", + "v": "/area/日韩" + }, { + "n": "欧美", + "v": "/area/欧美" + }] + }, { + "key": "lang", + "name": "语言", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "国语", + "v": "/lang/国语" + }, { + "n": "英语", + "v": "/lang/英语" + }, { + "n": "粤语", + "v": "/lang/粤语" + }, { + "n": "闽南语", + "v": "/lang/闽南语" + }, { + "n": "韩语", + "v": "/lang/韩语" + }, { + "n": "日语", + "v": "/lang/日语" + }, { + "n": "其它", + "v": "/lang/其它" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "2014", + "v": "/year/2014" + }, { + "n": "2013", + "v": "/year/2013" + }, { + "n": "2012", + "v": "/year/2012" + }, { + "n": "2011", + "v": "/year/2011" + }, { + "n": "2010", + "v": "/year/2010" + }, { + "n": "2009", + "v": "/year/2009" + }, { + "n": "2008", + "v": "/year/2008" + }, { + "n": "2006", + "v": "/year/2006" + }, { + "n": "2005", + "v": "/year/2005" + }, { + "n": "2004", + "v": "/year/2004" + }] + }, { + "key": "letter", + "name": "字母", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "A", + "v": "/letter/A" + }, { + "n": "B", + "v": "/letter/B" + }, { + "n": "C", + "v": "/letter/C" + }, { + "n": "D", + "v": "/letter/D" + }, { + "n": "E", + "v": "/letter/E" + }, { + "n": "F", + "v": "/letter/F" + }, { + "n": "G", + "v": "/letter/G" + }, { + "n": "H", + "v": "/letter/H" + }, { + "n": "I", + "v": "/letter/I" + }, { + "n": "J", + "v": "/letter/J" + }, { + "n": "K", + "v": "/letter/K" + }, { + "n": "L", + "v": "/letter/L" + }, { + "n": "M", + "v": "/letter/M" + }, { + "n": "N", + "v": "/letter/N" + }, { + "n": "O", + "v": "/letter/O" + }, { + "n": "P", + "v": "/letter/P" + }, { + "n": "Q", + "v": "/letter/Q" + }, { + "n": "R", + "v": "/letter/R" + }, { + "n": "S", + "v": "/letter/S" + }, { + "n": "T", + "v": "/letter/T" + }, { + "n": "U", + "v": "/letter/U" + }, { + "n": "V", + "v": "/letter/V" + }, { + "n": "W", + "v": "/letter/W" + }, { + "n": "X", + "v": "/letter/X" + }, { + "n": "Y", + "v": "/letter/Y" + }, { + "n": "Z", + "v": "/letter/Z" + }, { + "n": "0-9", + "v": "/letter/0-9" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "/by/time" + }, { + "n": "人气", + "v": "/by/hits" + }, { + "n": "评分", + "v": "/by/score" + }] + }] + }, + filter_def: { + dianying: { + cateId: "dianying" + }, + dianshiju: { + cateId: "dianshiju" + }, + zongyi: { + cateId: "zongyi" + }, + dongmna: { + cateId: "dongmna" + }, + jilupian: { + cateId: "jilupian" + }, + }, + class_name: "电影&剧集&动漫&综艺&记录片", + class_url: "dianying&dianshiju&dongmna&zongyi&jilupian", + headers: { + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/" + }, + play_parse: true, + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } + return array; + } + const shuffledArray = shuffleArray(items); + shuffledArray.forEach(it => { + d.push({ + url:pdfh(it,"div.module-card-item-title&&a&&href"), + title:pdfh(it,"div.module-card-item-title&&a&&Text"), + img:pdfh(it,"div.module-item-pic&&img&&data-original"), + desc:pdfh(it,"div.module-card-item-class&&Text") + "/" + pdfh(it,"div.module-item-note&&Text") + }) + }); + setResult(d); + `, + 一级: `js: + var d = []; + pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd; + var html = request(input); + let items = pdfa(html, "a.module-item"); + items.forEach(it => { + d.push({ + url:pdfh(it,"a&&href"), + title:pdfh(it,"a&&title"), + img:pdfh(it,"div.module-item-pic&&img&&data-original"), + desc:pdfh(it,"div.module-item-note&&Text") + }) + }); + setResult(d) + `, + 二级: $js.toString(() => { + VOD = {}; + let html = request(input); + VOD.vod_name = pdfh(html, "h1&&Text"); + VOD.vod_pic = pd(html, ".module-item-pic&&img&&data-original"); + VOD.vod_year = pdfh(html, ".module-info-tag-link:eq(0)&&Text"); + VOD.vod_area = pdfh(html, ".module-info-tag-link:eq(1)&&Text"); + VOD.type_name = pdfh(html, ".module-info-tag-link:eq(2)&&Text"); + VOD.vod_actor = pdfh(html, ".module-info-item-content:eq(1)&&Text"); + VOD.vod_director = pdfh(html, ".module-info-item-content:eq(0)&&Text"); + VOD.vod_remarks = "不信广告就你赢了"; + VOD.vod_content = pdfh(html, ".module-info-introduction-content&&Text"); + if (typeof play_url === "undefined") { + var play_url = "" + } + let playFrom = []; + let playUrl = []; + let tabs = pdfa(html, "div.module-tab-item"); + tabs.forEach((it, index) => { + playFrom.push('諾临風-' + pdfh(it, 'span&&Text') + "[" + pdfh(it, 'small&&Text') + "]"); + let playTag = "div.module-play-list:eq(" + index + ") a"; + let tags = pdfa(html, playTag); + let mapUrl = tags.map((tag) => { + let title = pdfh(tag, "a&&Text").trim(); + let purl = pd(tag, "a&&href"); + return title + "$" + play_url + urlencode(purl); + }); + playUrl.push(mapUrl.join("#")) + }); + VOD.vod_play_from = playFrom.join("$$$"); + VOD.vod_play_url = playUrl.join("$$$"); + }), + double: false, + searchUrl: "/index.php/vod/search/wd/**.html", + 搜索: `js: + var d = []; + pdfh = jsp.pdfh;pdfa = jsp.pdfa;pd = jsp.pd; + var html = request(input); + let list = pdfa(html, "div.module-item"); + list.forEach(it => { + d.push({ + title: pdfh(it, "div.module-card-item-title&&Text"), + desc: pdfh(it, "div.module-item-note&&Text"), + pic_url: pdfh(it, "div.module-item-pic&&img&&data-original"), + url: pdfh(it, "div.module-card-item-title&&a&&href") + }) + }); + setResult(d) + ` +}; \ No newline at end of file diff --git a/xiaosa/JS/路漫漫.js b/xiaosa/JS/路漫漫.js new file mode 100644 index 00000000..d781efa5 --- /dev/null +++ b/xiaosa/JS/路漫漫.js @@ -0,0 +1,549 @@ +var rule = { + title: "路漫漫", + host: "http://www.lmm36.com", + url: "/vod/show/id/fyclassfyfilter.html", + searchUrl: '/vod/search/page/fypage/wd/**.html', + searchable: 2, + quickSearch: 0, + filterable: 1, + filter: { + "3": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }], + "4": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }], + "5": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }], + "6": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }], + "7": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }], + "8": [{ + "key": "年代", + "name": "年代", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "/year/2025" + }, { + "n": "2024", + "v": "/year/2024" + }, { + "n": "2023", + "v": "/year/2023" + }, { + "n": "2022", + "v": "/year/2022" + }, { + "n": "2021", + "v": "/year/2021" + }, { + "n": "2020", + "v": "/year/2020" + }, { + "n": "2019", + "v": "/year/2019" + }, { + "n": "2018", + "v": "/year/2018" + }, { + "n": "2017", + "v": "/year/2017" + }, { + "n": "2016", + "v": "/year/2016" + }, { + "n": "2015", + "v": "/year/2015" + }, { + "n": "更早", + "v": "/year/2014-1980" + }] + }, { + "key": "排序", + "name": "排序", + "value": [{ + "n": "最近更新", + "v": "/by/time" + }, { + "n": "最高人气", + "v": "/by/hits" + }, { + "n": "最高评分", + "v": "/by/score" + }, { + "n": "最多点赞", + "v": "/by/up" + }] + }] + }, + filter_url: "{{fl.排序}}{{fl.年代}}/page/fypage", + filter_def: "", + headers: { + "User-Agent": "MOBILE_UA" + }, + timeout: 5000, + class_name: "日本动漫&国产动漫&欧美动漫&日本动画电影&国产动画电影&欧美动画电影", + class_url: "6&7&8&3&4&5", + class_parse: "", + cate_exclude: "", + play_parse: true, + lazy: $js.toString(() => { + function getDAesString(token) { + eval(getCryptoJS()); + var key = CryptoJS.enc.Utf8.parse("ejjooopppqqqrwww"); + + var iv = CryptoJS.enc.Utf8.parse("1348987635684651"); + + var token = CryptoJS.AES.decrypt(token, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7, + }); + + return token.toString(CryptoJS.enc.Utf8); + } + + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + if (value.flag.includes("nby") || value.flag.includes("mgtv") || value.flag.includes("qq") || value.flag.includes("qiyi") || value.flag.includes("mgtv")) { + vodPlayFrom += `${value.flag}$$$`; + value.urls.forEach(url => { + vodPlayUrl += `${url.name}$${value.parse_urls[0]}${url.url}~${url.name}#`; + }); + vodPlayUrl += '$$$'; + } + }); + const regeshi = { + vod_id: redata.data.vod_id, + vod_name: redata.data.vod_name, + vod_remarks: `${redata.data.vod_remarks}`, + type_name: redata.data.vod_class, + vod_pic: redata.data.vod_pic, + vod_year: redata.data.vod_year, + vod_area: redata.data.vod_area, + vod_actor: `${redata.data.vod_actor}`, + vod_director: redata.data.vod_director, + vod_content: `${redata.data.vod_content}`, + vod_play_from: vodPlayFrom, + vod_play_url: vodPlayUrl + }; + return regeshi; +} +globalThis.jxx = function(input) { + if ("741852963" !== '741852963') { + return 'https://s0.mall.tcl.com/group1/M00/00/89/CvoGBGdcOPaAAUxvADwZniVV2bc476.mp4'; + } + const parts = input.split('~'); + try { + let response = fetch(parts[0], { + method: 'get', + headers: { + 'User-Agent': 'okhttp/3.14.9', + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); + + if (response.includes("成功") || response.includes("success") || response.includes("nby")) { + let bata = JSON.parse(response); + input = { + parse: 0, + url: bata.url, + jx: 0, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963' + } + } else { + input = { + parse: 0, + url: parts[0].includes('url=') ? parts[0].slice(parts[0].indexOf('url=') + 4) : null, + jx: 1, + danmaku: 'http://103.45.162.207:25252/hbdm.php?key=7894561232&id=' + '&jm=' + VOD.vod_name + '&js=' + parts[1] + '&key=741852963' + } + } + } catch { + input = { + parse: 0, + url: '解析失败', + jx: 0, + } + } + return input; +} + +var rule = { + title: '追剧', + host: '', + detailUrl: 'fyid', + searchUrl: '**', + url: 'fyclass', + searchable: 2, + quickSearch: 1, + filterable: 0, + class_name: '电影&电视剧&综艺&动漫', + class_url: '1&2&4&3', + play_parse: true, + lazy: $js.toString(() => { + input = jxx(input); + }), + 推荐: $js.toString(() => { + let bdata = vodlist(0, 1); + console.log(bdata); + bdata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 一级: $js.toString(() => { + let bdata = vodlist(input, MY_PAGE); + console.log(bdata); + bdata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), + 二级: $js.toString(() => { + console.log("调试信息2" + input); + let data = vodids(input); + //console.log(data); + VOD = (data); + }), + 搜索: $js.toString(() => { + let ddata = seach(input); + ddata.forEach(it => { + d.push({ + url: it.vod_id, + title: it.vod_name, + img: it.vod_pic, + desc: it.vod_remarks + }); + }); + setResult(d); + }), +} \ No newline at end of file diff --git a/xiaosa/JS/追剧迷.js b/xiaosa/JS/追剧迷.js new file mode 100644 index 00000000..3031e38f --- /dev/null +++ b/xiaosa/JS/追剧迷.js @@ -0,0 +1,37 @@ +var rule = { + title: '追剧迷', + 模板: 'vfed', + host: 'https://www.zhuijumi.cc', + // url:'/videotype/fyclass-fypage.html', + url: '/mp4type/fyclass-fypage.html', + searchUrl: '/mp4search/-.html?wd=**', + class_parse: '.fed-part-tips li;a&&Text;a&&href;.*/(.*?).html', + cate_exclude: '更多|申请', + lazy: `js: + var html = JSON.parse(request(input).match(/r player_.*?=(.*?) { + function getClasses(item) { + let classes = []; + if (item.class_name && item.class_url) { + if (!/&|电影|电视剧|综艺|动漫[\u4E00-\u9FA5]+/.test(item.class_name)) { + try { + item.class_name = ungzip(item.class_name) + } catch (e) { + log(`不识别的class_name导致gzip解码失败:${e}`) + return classes + } + } + let names = item.class_name.split('&'); + let urls = item.class_url.split('&'); + let cnt = Math.min(names.length, urls.length); + for (let i = 0; i < cnt; i++) { + classes.push({ + 'type_id': urls[i], + 'type_name': names[i] + }); + } + } + return classes + } + if (typeof(batchFetch) === 'function') { + rule.search_limit = 16; + log('当前程序支持批量请求[batchFetch],搜索限制已设置为16'); + } + let _url = rule.params; + log(`传入参数:${_url}`); + if (_url && typeof(_url) === 'string' && /^(http|file)/.test(_url)) { + if (_url.includes('$')) { + let _url_params = _url.split('$'); + _url = _url_params[0]; + rule.search_match = !!(_url_params[1]); + if (_url_params.length > 2) { + rule.search_pic = !!(_url_params[2]); + } + } + let html = request(_url); + let json = JSON.parse(html); + let _classes = []; + rule.filter = {}; + rule.filter_def = {}; + json.forEach(it => { + let _obj = { + type_name: it.name, + type_id: it.url, + parse_url: it.parse_url || '', + searchable: it.searchable !== 0, + api: it.api || '', + cate_exclude: it.cate_exclude || '', + cate_excludes: it.cate_excludes || [], + }; + _classes.push(_obj); + try { + let json1 = []; + if (it.class_name && it.class_url) { + json1 = getClasses(it); + } else { + json1 = JSON.parse(request(urljoin(_obj.type_id, _obj.api || rule.classUrl))).class; + } + if (_obj.cate_excludes && Array.isArray(_obj.cate_excludes) && _obj.cate_excludes.length > 0) { + json1 = json1.filter(cl => !_obj.cate_excludes.includes(cl.type_name)); + } else if (_obj.cate_exclude) { + json1 = json1.filter(cl => !new RegExp(_obj.cate_exclude, 'i').test(cl.type_name)); + } + rule.filter[_obj.type_id] = [{ + "key": "类型", + "name": "类型", + "value": json1.map(i => { + return { + "n": i.type_name, + 'v': i.type_id + } + }) + }]; + if (json1.length > 0) { + rule.filter_def[it.url] = { + "类型": json1[0].type_id + }; + } + } catch (e) { + rule.filter[it.url] = [{ + "key": "类型", + "name": "类型", + "value": [{ + "n": "全部", + "v": "" + }] + }]; + } + }); + rule.classes = _classes; + } + }), + class_parse: $js.toString(() => { + input = rule.classes; + }), + 推荐: $js.toString(() => { + VODS = []; + if (rule.classes) { + let randomClass = getRandomItem(rule.classes); + let _url = urljoin(randomClass.type_id, input); + if (randomClass.api) { + _url = _url.replace('/api.php/provide/vod/', randomClass.api) + } + try { + let html = request(_url, { + timeout: rule.timeout + }); + let json = JSON.parse(html); + VODS = json.list; + VODS.forEach(it => { + it.vod_id = randomClass.type_id + '$' + it.vod_id; + it.vod_remarks = it.vod_remarks + '|' + randomClass.type_name; + }); + } catch (e) {} + } + }), + 一级: $js.toString(() => { + VODS = []; + if (rule.classes) { + let _url = urljoin(MY_CATE, input); + let current_vod = rule.classes.find(item => item.type_id === MY_CATE); + if (current_vod && current_vod.api) { + _url = _url.replace('/api.php/provide/vod/', current_vod.api) + } + let html = request(_url); + let json = JSON.parse(html); + VODS = json.list; + VODS.forEach(it => { + it.vod_id = MY_CATE + '$' + it.vod_id + }); + } + }), + 二级: $js.toString(() => { + VOD = {}; + if (orId === 'update_info') { + VOD = { + vod_content: rule.update_info.trim(), + vod_name: '更新日志', + type_name: '更新日志', + vod_pic: 'https://resource-cdn.tuxiaobei.com/video/FtWhs2mewX_7nEuE51_k6zvg6awl.png', + vod_remarks: `版本:${rule.version}`, + vod_play_from: '道长在线', + vod_play_url: '随机小视频$http://api.yujn.cn/api/zzxjj.php', + }; + } else { + if (rule.classes) { + let _url = urljoin(fyclass, input); + let current_vod = rule.classes.find(item => item.type_id === fyclass); + if (current_vod && current_vod.api) { + _url = _url.replace('/api.php/provide/vod/', current_vod.api) + } + let html = request(_url); + let json = JSON.parse(html); + let data = json.list; + VOD = data[0]; + if (current_vod && current_vod.type_name) { + VOD.vod_play_from = VOD.vod_play_from.split('$$$').map(it => current_vod.type_name + '|' + it).join('$$$') + } + } + } + }), + 搜索: $js.toString(() => { + VODS = []; + if (rule.classes) { + let canSearch = rule.classes.filter(it => it.searchable); + let page = Number(MY_PAGE); + page = (MY_PAGE - 1) % Math.ceil(canSearch.length / rule.search_limit) + 1; + let truePage = Math.ceil(MY_PAGE / Math.ceil(canSearch.length / rule.search_limit)); + if (rule.search_limit) { + let start = (page - 1) * rule.search_limit; + let end = page * rule.search_limit; + let t1 = new Date().getTime(); + let searchMode = typeof(batchFetch) === 'function' ? '批量' : '单个'; + log('start:' + start); + log('end:' + end); + log('搜索模式:' + searchMode); + log('精准搜索:' + rule.search_match); + log('强制获取图片:' + rule.search_pic); + if (start < canSearch.length) { + let search_classes = canSearch.slice(start, end); + let urls = []; + search_classes.forEach(it => { + let _url = urljoin(it.type_id, input); + if (it.api) { + _url = _url.replace('/api.php/provide/vod/', it.api) + } + _url = _url.replace("#TruePage#", "" + truePage); + urls.push(_url); + }); + let results_list = []; + let results = []; + if (typeof(batchFetch) === 'function') { + let reqUrls = urls.map(it => { + return { + url: it, + options: { + timeout: rule.timeout + } + } + }); + let rets = batchFetch(reqUrls); + let detailUrls = []; + let detailUrlCount = 0; + rets.forEach((ret, idx) => { + let it = search_classes[idx]; + if (ret) { + try { + let json = JSON.parse(ret); + let data = json.list; + data.forEach(i => { + i.site_name = it.type_name; + i.vod_id = it.type_id + '$' + i.vod_id; + i.vod_remarks = i.vod_remarks + '|' + it.type_name; + }); + if (rule.search_match) { + data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name)) + } + if (data.length > 0) { + if (rule.search_pic && !data[0].vod_pic) { + log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`); + let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(','); + detailUrls.push(detailUrl); + results_list.push({ + data: data, + has_pic: false, + detailUrlCount: detailUrlCount + }); + detailUrlCount++; + } else { + results_list.push({ + data: data, + has_pic: true + }); + } + } + } catch (e) { + log(`请求:${it.type_id}发生错误:${e.message}`) + } + } + }); + let reqUrls2 = detailUrls.map(it => { + return { + url: it, + options: { + timeout: rule.timeout + } + } + }); + let rets2 = reqUrls2.length > 0 ? batchFetch(reqUrls2) : []; + for (let k = 0; k < results_list.length; k++) { + let result_data = results_list[k].data; + if (!results_list[k].has_pic) { + try { + let detailJson = JSON.parse(rets2[results_list[k].detailUrlCount]); + log('二级数据列表元素数:' + detailJson.list.length); + result_data.forEach((d, _seq) => { + let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]); + if (detailVodPic) { + Object.assign(d, { + vod_pic: detailVodPic.vod_pic + }); + } + }); + } catch (e) { + log(`强制获取网站${result_data[0].site_name}的搜索图片失败:${e.message}`); + } + } + results = results.concat(result_data); + } + } else { + urls.forEach((_url, idx) => { + let it = search_classes[idx]; + try { + let html = request(_url); + let json = JSON.parse(html); + let data = json.list; + data.forEach(i => { + i.vod_id = it.type_id + '$' + i.vod_id; + i.vod_remarks = i.vod_remarks + '|' + it.type_name; + }); + if (rule.search_match) { + data = data.filter(item => item.vod_name && (new RegExp(KEY, 'i')).test(item.vod_name)) + } + if (data.length > 0) { + if (rule.search_pic && !data[0].vod_pic) { + log(`当前搜索站点【${it.type_name}】没图片,尝试访问二级去获取图片`); + let detailUrl = urls[idx].split('wd=')[0] + 'ac=detail&ids=' + data.map(k => k.vod_id.split('$')[1]).join(','); + try { + let detailJson = JSON.parse(request(detailUrl)); + log('二级数据列表元素数:' + detailJson.list.length); + data.forEach((d, _seq) => { + let detailVodPic = detailJson.list.find(vod => vod.vod_id.toString() === d.vod_id.split('$')[1]); + if (detailVodPic) { + Object.assign(d, { + vod_pic: detailVodPic.vod_pic + }); + } + }); + } catch (e) { + log(`强制获取网站${it.type_id}的搜索图片失败:${e.message}`); + } + } + results = results.concat(data); + } + results = results.concat(data); + } catch (e) { + log(`请求:${it.type_id}发生错误:${e.message}`) + } + }); + } + VODS = results; + let t2 = new Date().getTime(); + log(`${searchMode}搜索:${urls.length}个站耗时:${(Number(t2) - Number(t1))}ms`) + } + } + } + }), + lazy: $js.toString(() => { + let parse_url = ''; + if (flag && flag.includes('|')) { + let type_name = flag.split('|')[0]; + let current_vod = rule.classes.find(item => item.type_name === type_name); + if (current_vod && current_vod.parse_url) { + parse_url = current_vod.parse_url + } + } + if (/\.(m3u8|mp4)/.test(input)) { + input = { + parse: 0, + url: input + } + } else { + if (parse_url.startsWith('json:')) { + let purl = parse_url.replace('json:', '') + input; + let html = request(purl); + input = { + parse: 0, + url: JSON.parse(html).url + } + } else { + input = parse_url + input; + } + } + }), +} \ No newline at end of file diff --git a/xiaosa/JS/魔力高清.js b/xiaosa/JS/魔力高清.js new file mode 100644 index 00000000..105a6a3b --- /dev/null +++ b/xiaosa/JS/魔力高清.js @@ -0,0 +1,598 @@ +// 网址发布页 https://molicp.com +muban.首图.二级.title = '.text-fff--font&&Text;.data--span:eq(0)&&Text'; +muban.首图.二级.desc = '#rating&&Text;;;.data--span:eq(1)&&Text;.data--span:eq(2)&&Text'; +muban.首图.二级.content = '.desc&&Text'; +var rule = { + title: 'HDmoli', + 模板: '首图', + host: 'https://www.hdmoli.pro', + // url:'/mlist/fyclass-fypage.html', + url: '/search.php?page=fypage&searchtype=5&tid=fyfilter', + filterable: 1, //是否启用分类筛选, + filter_url: '{{fl.cateId}}&jq={{fl.class}}&area={{fl.area}}&year={{fl.year}}&state={{fl.state}}&order={{fl.by}}', + filter: { + "1": [{ + "key": "cateId", + "name": "类型", + "value": [{ + "n": "全部", + "v": "1" + }, { + "n": "动作", + "v": "5" + }, { + "n": "爱情", + "v": "6" + }, { + "n": "科幻", + "v": "7" + }, { + "n": "恐怖", + "v": "8" + }, { + "n": "战争", + "v": "9" + }, { + "n": "喜剧", + "v": "10" + }, { + "n": "纪录片", + "v": "11" + }, { + "n": "剧情", + "v": "12" + }, { + "n": "犯罪", + "v": "30" + }, { + "n": "动画", + "v": "32" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "家庭", + "v": "家庭" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "惊悚", + "v": "惊悚" + }, { + "n": "音乐", + "v": "音乐" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "喜剧", + "v": "喜剧" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "韩国", + "v": "韩国" + }, { + "n": "英国", + "v": "英国" + }, { + "n": "日本", + "v": "日本" + }, { + "n": "泰国", + "v": "泰国" + }, { + "n": "中国", + "v": "中国" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "more", + "v": "more" + }] + }, { + "key": "state", + "name": "状态", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "完结", + "v": "w" + }, { + "n": "连载中", + "v": "l" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "time" + }, { + "n": "评分", + "v": "douban" + }] + }], + "2": [{ + "key": "cateId", + "name": "类型", + "value": [{ + "n": "全部", + "v": "2" + }, { + "n": "美剧", + "v": "15" + }, { + "n": "韩剧", + "v": "16" + }, { + "n": "日剧", + "v": "13" + }, { + "n": "英剧", + "v": "34" + }, { + "n": "中国", + "v": "14" + }, { + "n": "泰剧", + "v": "29" + }, { + "n": "综艺", + "v": "39" + }, { + "n": "其他", + "v": "38" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "家庭", + "v": "家庭" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "惊悚", + "v": "惊悚" + }, { + "n": "音乐", + "v": "音乐" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "喜剧", + "v": "喜剧" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "韩国", + "v": "韩国" + }, { + "n": "英国", + "v": "英国" + }, { + "n": "日本", + "v": "日本" + }, { + "n": "泰国", + "v": "泰国" + }, { + "n": "中国", + "v": "中国" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "more", + "v": "more" + }] + }, { + "key": "state", + "name": "状态", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "完结", + "v": "w" + }, { + "n": "连载中", + "v": "l" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "time" + }, { + "n": "评分", + "v": "douban" + }] + }], + "41": [{ + "key": "cateId", + "name": "类型", + "value": [{ + "n": "全部", + "v": "41" + }, { + "n": "日本", + "v": "42" + }, { + "n": "其他", + "v": "43" + }] + }, { + "key": "class", + "name": "剧情", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "战争", + "v": "战争" + }, { + "n": "恐怖", + "v": "恐怖" + }, { + "n": "剧情", + "v": "剧情" + }, { + "n": "爱情", + "v": "爱情" + }, { + "n": "家庭", + "v": "家庭" + }, { + "n": "励志", + "v": "励志" + }, { + "n": "悬疑", + "v": "悬疑" + }, { + "n": "动作", + "v": "动作" + }, { + "n": "奇幻", + "v": "奇幻" + }, { + "n": "冒险", + "v": "冒险" + }, { + "n": "历史", + "v": "历史" + }, { + "n": "惊悚", + "v": "惊悚" + }, { + "n": "音乐", + "v": "音乐" + }, { + "n": "科幻", + "v": "科幻" + }, { + "n": "犯罪", + "v": "犯罪" + }, { + "n": "运动", + "v": "运动" + }, { + "n": "喜剧", + "v": "喜剧" + }] + }, { + "key": "area", + "name": "地区", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "美国", + "v": "美国" + }, { + "n": "韩国", + "v": "韩国" + }, { + "n": "英国", + "v": "英国" + }, { + "n": "日本", + "v": "日本" + }, { + "n": "泰国", + "v": "泰国" + }, { + "n": "中国", + "v": "中国" + }, { + "n": "其他", + "v": "其他" + }] + }, { + "key": "year", + "name": "年份", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "2025", + "v": "2025" + }, { + "n": "2024", + "v": "2024" + }, { + "n": "2023", + "v": "2023" + }, { + "n": "2022", + "v": "2022" + }, { + "n": "2021", + "v": "2021" + }, { + "n": "2020", + "v": "2020" + }, { + "n": "2019", + "v": "2019" + }, { + "n": "2018", + "v": "2018" + }, { + "n": "2017", + "v": "2017" + }, { + "n": "2016", + "v": "2016" + }, { + "n": "2015", + "v": "2015" + }, { + "n": "2014", + "v": "2014" + }, { + "n": "2013", + "v": "2013" + }, { + "n": "2012", + "v": "2012" + }, { + "n": "more", + "v": "more" + }] + }, { + "key": "state", + "name": "状态", + "value": [{ + "n": "全部", + "v": "" + }, { + "n": "完结", + "v": "w" + }, { + "n": "连载中", + "v": "l" + }] + }, { + "key": "by", + "name": "排序", + "value": [{ + "n": "时间", + "v": "time" + }, { + "n": "评分", + "v": "douban" + }] + }] + }, + filter_def: { + 1: { + cateId: '1', + by: 'time' + }, + 2: { + cateId: '2', + by: 'time' + }, + 41: { + cateId: '41', + by: 'time' + } + }, + searchUrl: '/search.php?page=fypage&searchword=**&searchtype=', + class_parse: '.myui-header__menu li;a&&Text;a&&href;.*/index(\\d+).html', +} \ No newline at end of file diff --git a/xiaosa/JSON/alist.json b/xiaosa/JSON/alist.json new file mode 100644 index 00000000..8f6631e7 --- /dev/null +++ b/xiaosa/JSON/alist.json @@ -0,0 +1,21 @@ +{ + "vodPic": "https://rogsoft.ddnsto.com/softcenter/softcenter/res/icon-alist.png", + "drives": [ + { + "name": "小雅", + "server": "http://alist.xiaoya.pro" + }, + { + "name": "触光", + "server": "https://pan.ichuguang.com" + }, + { + "name": "魔都云", + "server": "https://cdn.modupan.com" + }, + { + "name": "七米蓝", + "server": "https://al.chirmyram.com" + } + ] +} \ No newline at end of file diff --git a/xiaosa/JSON/webdav.json b/xiaosa/JSON/webdav.json new file mode 100644 index 00000000..a1a19255 --- /dev/null +++ b/xiaosa/JSON/webdav.json @@ -0,0 +1,16 @@ +{ + "drives": [ + { + "name": "七米藍", + "server": "https://al.chirmyram.com/dav", + "user": "alist", + "pass": "alist" + }, + { + "name": "影視庫", + "server": "https://esir.eu.org/dav", + "user": "alist", + "pass": "alist" + } + ] +} \ No newline at end of file diff --git a/xiaosa/JSON/哔哩合集.json b/xiaosa/JSON/哔哩合集.json new file mode 100644 index 00000000..b3aec1f8 --- /dev/null +++ b/xiaosa/JSON/哔哩合集.json @@ -0,0 +1,5310 @@ +{ + "class": [ + { + "type_name": "沙雕动漫", + "type_id": "一口气沙雕动漫" + }, + { + "type_name": "纪录片", + "type_id": "纪录片超清" + }, + { + "type_name": "演唱会", + "type_id": "演唱会超清" + }, + { + "type_name": "美食", + "type_id": "美食超清" + }, + { + "type_name": "食谱", + "type_id": "食谱" + }, + { + "type_name": "体育", + "type_id": "体育超清" + }, + { + "type_name": "球星", + "type_id": "球星" + }, + { + "type_name": "旅游", + "type_id": "旅游" + }, + { + "type_name": "风景", + "type_id": "风景4K" + }, + { + "type_name": "说案", + "type_id": "说案" + }, + { + "type_name": "知名UP主", + "type_id": "知名UP主" + }, + { + "type_name": "探索发现", + "type_id": "探索发现超清" + }, + { + "type_name": "鬼畜", + "type_id": "鬼畜" + }, + { + "type_name": "搞笑", + "type_id": "搞笑超清" + }, + { + "type_name": "儿童", + "type_id": "儿童超清" + }, + { + "type_name": "动物世界", + "type_id": "动物世界超清" + }, + { + "type_name": "相声小品", + "type_id": "相声小品超清" + }, + { + "type_name": "戏曲", + "type_id": "戏曲" + }, + { + "type_name": "解说", + "type_id": "解说" + }, + { + "type_name": "演讲", + "type_id": "演讲" + }, + { + "type_name": "小姐姐", + "type_id": "小姐姐超清" + }, + { + "type_name": "荒野求生", + "type_id": "荒野求生超清" + }, + { + "type_name": "健身", + "type_id": "健身" + }, + { + "type_name": "帕梅拉", + "type_id": "帕梅拉" + }, + { + "type_name": "太极拳", + "type_id": "太极拳" + }, + { + "type_name": "广场舞", + "type_id": "广场舞" + }, + { + "type_name": "舞蹈", + "type_id": "舞蹈" + }, + { + "type_name": "音乐", + "type_id": "音乐" + }, + { + "type_name": "歌曲", + "type_id": "歌曲" + }, + { + "type_name": "MV", + "type_id": "MV4K" + }, + { + "type_name": "舞曲", + "type_id": "舞曲超清" + }, + { + "type_name": "4K", + "type_id": "4K" + }, + { + "type_name": "电影", + "type_id": "电影" + }, + { + "type_name": "电视剧", + "type_id": "电视剧" + }, + { + "type_name": "白噪音", + "type_id": "白噪音超清" + }, + { + "type_name": "考公考证", + "type_id": "考公考证" + }, + { + "type_name": "平面设计教学", + "type_id": "平面设计教学" + }, + { + "type_name": "软件教程", + "type_id": "软件教程" + }, + { + "type_name": "Windows", + "type_id": "Windows" + } + ], + "filters": { + "考公考证": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "演唱会超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "演唱会超清" + }, + { + "n": "A阿杜", + "v": "阿杜演唱会超清" + }, + { + "n": "A阿黛尔", + "v": "阿黛尔演唱会超清" + }, + { + "n": "BBeyond", + "v": "Beyond演唱会超清" + }, + { + "n": "BBy2", + "v": "By2演唱会超清" + }, + { + "n": "BBIGBANG", + "v": "BIGBANG演唱会超清" + }, + { + "n": "B布兰妮", + "v": "布兰妮演唱会超清" + }, + { + "n": "B坂井泉水", + "v": "坂井泉水演唱会超清" + }, + { + "n": "C陈奕迅", + "v": "陈奕迅演唱会超清" + }, + { + "n": "C蔡依林", + "v": "蔡依林演唱会超清" + }, + { + "n": "C初音未来", + "v": "初音未来演唱会超清" + }, + { + "n": "C蔡健雅", + "v": "蔡健雅演唱会超清" + }, + { + "n": "C陈小春", + "v": "陈小春演唱会超清" + }, + { + "n": "C草蜢", + "v": "草蜢演唱会超清" + }, + { + "n": "C陈慧娴", + "v": "陈慧娴演唱会超清" + }, + { + "n": "C崔健", + "v": "崔健演唱会超清" + }, + { + "n": "C仓木麻衣", + "v": "仓木麻衣演唱会超清" + }, + { + "n": "D戴荃", + "v": "戴荃演唱会超清" + }, + { + "n": "D动力火车", + "v": "动力火车演唱会超清" + }, + { + "n": "D邓丽君", + "v": "邓丽君演唱会超清" + }, + { + "n": "D丁当", + "v": "丁当演唱会超清" + }, + { + "n": "D刀郎", + "v": "刀郎演唱会超清" + }, + { + "n": "D邓紫棋", + "v": "邓紫棋演唱会超清" + }, + { + "n": "D戴佩妮", + "v": "戴佩妮演唱会超清" + }, + { + "n": "D邓丽君", + "v": "邓丽君演唱会超清" + }, + { + "n": "F飞儿乐队", + "v": "飞儿乐队演唱会超清" + }, + { + "n": "F费玉清", + "v": "费玉清演唱会超清" + }, + { + "n": "F费翔", + "v": "费翔演唱会超清" + }, + { + "n": "F方大同", + "v": "方大同演唱会超清" + }, + { + "n": "F房东的猫", + "v": "房东的猫演唱会超清" + }, + { + "n": "F凤飞飞", + "v": "凤飞飞演唱会超清" + }, + { + "n": "F凤凰传奇", + "v": "凤凰传奇演唱会超清" + }, + { + "n": "G郭采洁", + "v": "郭采洁演唱会超清" + }, + { + "n": "G光良", + "v": "光良演唱会超清" + }, + { + "n": "G郭静", + "v": "郭静演唱会超清" + }, + { + "n": "G郭富城", + "v": "郭富城演唱会超清" + }, + { + "n": "H胡彦斌", + "v": "胡彦斌演唱会超清" + }, + { + "n": "H胡夏", + "v": "胡夏演唱会超清" + }, + { + "n": "H韩红", + "v": "韩红演唱会超清" + }, + { + "n": "H黄品源", + "v": "黄品源演唱会超清" + }, + { + "n": "H黄小琥", + "v": "黄小琥演唱会超清" + }, + { + "n": "H花儿乐队", + "v": "花儿乐队演唱会超清" + }, + { + "n": "H黄家强", + "v": "黄家强演唱会超清" + }, + { + "n": "H后街男孩", + "v": "后街男孩演唱会超清" + }, + { + "n": "J经典老歌", + "v": "经典老歌演唱会超清" + }, + { + "n": "J贾斯丁比伯", + "v": "贾斯丁比伯演唱会超清" + }, + { + "n": "J金池", + "v": "金池演唱会超清" + }, + { + "n": "J金志文", + "v": "金志文演唱会超清" + }, + { + "n": "J焦迈奇", + "v": "焦迈奇演唱会超清" + }, + { + "n": "K筷子兄弟", + "v": "筷子兄弟演唱会超清" + }, + { + "n": "L李玟", + "v": "李玟演唱会超清" + }, + { + "n": "L林忆莲", + "v": "林忆莲演唱会超清" + }, + { + "n": "L李克勤", + "v": "李克勤演唱会超清" + }, + { + "n": "L刘宪华", + "v": "刘宪华演唱会超清" + }, + { + "n": "L李圣杰", + "v": "李圣杰演唱会超清" + }, + { + "n": "L林宥嘉", + "v": "林宥嘉演唱会超清" + }, + { + "n": "L梁静茹", + "v": "梁静茹演唱会超清" + }, + { + "n": "L李健", + "v": "李健演唱会超清" + }, + { + "n": "L林俊杰", + "v": "林俊杰演唱会超清" + }, + { + "n": "L李玉刚", + "v": "李玉刚演唱会超清" + }, + { + "n": "L林志炫", + "v": "林志炫演唱会超清" + }, + { + "n": "L李荣浩", + "v": "李荣浩演唱会超清" + }, + { + "n": "L李宇春", + "v": "李宇春演唱会超清" + }, + { + "n": "L洛天依", + "v": "洛天依演唱会超清" + }, + { + "n": "L林子祥", + "v": "林子祥演唱会超清" + }, + { + "n": "L李宗盛", + "v": "李宗盛演唱会超清" + }, + { + "n": "L黎明", + "v": "黎明演唱会超清" + }, + { + "n": "L刘德华", + "v": "刘德华演唱会超清" + }, + { + "n": "L罗大佑", + "v": "罗大佑演唱会超清" + }, + { + "n": "L林肯公园", + "v": "林肯公园演唱会超清" + }, + { + "n": "LLadyGaga", + "v": "LadyGaga演唱会超清" + }, + { + "n": "L旅行团乐队", + "v": "旅行团乐队演唱会超清" + }, + { + "n": "M莫文蔚", + "v": "莫文蔚演唱会超清" + }, + { + "n": "M毛不易", + "v": "毛不易演唱会超清" + }, + { + "n": "M梅艳芳", + "v": "梅艳芳演唱会超清" + }, + { + "n": "M迈克尔杰克逊", + "v": "迈克尔杰克逊演唱会超清" + }, + { + "n": "N南拳妈妈", + "v": "南拳妈妈演唱会超清" + }, + { + "n": "P朴树", + "v": "朴树演唱会超清" + }, + { + "n": "Q齐秦", + "v": "齐秦演唱会超清" + }, + { + "n": "Q青鸟飞鱼", + "v": "青鸟飞鱼演唱会超清" + }, + { + "n": "R容祖儿", + "v": "容祖儿演唱会超清" + }, + { + "n": "R任贤齐", + "v": "任贤齐演唱会超清" + }, + { + "n": "S水木年华", + "v": "水木年华演唱会超清" + }, + { + "n": "S孙燕姿", + "v": "孙燕姿演唱会超清" + }, + { + "n": "S苏打绿", + "v": "苏打绿演唱会超清" + }, + { + "n": "SSHE", + "v": "SHE演唱会超清" + }, + { + "n": "S孙楠", + "v": "孙楠演唱会超清" + }, + { + "n": "T陶喆", + "v": "陶喆演唱会超清" + }, + { + "n": "T谭咏麟", + "v": "谭咏麟演唱会超清" + }, + { + "n": "T田馥甄", + "v": "田馥甄演唱会超清" + }, + { + "n": "T谭维维", + "v": "谭维维演唱会超清" + }, + { + "n": "T逃跑计划", + "v": "逃跑计划演唱会超清" + }, + { + "n": "T田震", + "v": "田震演唱会超清" + }, + { + "n": "T谭晶", + "v": "谭晶演唱会超清" + }, + { + "n": "T屠洪刚", + "v": "屠洪刚演唱会超清" + }, + { + "n": "T泰勒·斯威夫特", + "v": "泰勒·斯威夫特演唱会超清" + }, + { + "n": "W王力宏", + "v": "王力宏演唱会超清" + }, + { + "n": "W王杰", + "v": "王杰演唱会超清" + }, + { + "n": "W吴克群", + "v": "吴克群演唱会超清" + }, + { + "n": "W王心凌", + "v": "王心凌演唱会超清" + }, + { + "n": "W王靖雯", + "v": "好声音王靖雯演唱会超清" + }, + { + "n": "W汪峰", + "v": "汪峰演唱会超清" + }, + { + "n": "W伍佰", + "v": "伍佰演唱会超清" + }, + { + "n": "W王菲", + "v": "王菲演唱会超清" + }, + { + "n": "W五月天", + "v": "五月天演唱会超清" + }, + { + "n": "W汪苏泷", + "v": "汪苏泷演唱会超清" + }, + { + "n": "X徐佳莹", + "v": "徐佳莹演唱会超清" + }, + { + "n": "X弦子", + "v": "弦子演唱会超清" + }, + { + "n": "X萧亚轩", + "v": "萧亚轩演唱会超清" + }, + { + "n": "X许巍", + "v": "许巍演唱会超清" + }, + { + "n": "X薛之谦", + "v": "薛之谦演唱会超清" + }, + { + "n": "X许嵩", + "v": "许嵩演唱会超清" + }, + { + "n": "X小虎队", + "v": "小虎队演唱会超清" + }, + { + "n": "X萧敬腾", + "v": "萧敬腾演唱会超清" + }, + { + "n": "X谢霆锋", + "v": "谢霆锋演唱会超清" + }, + { + "n": "X徐小凤", + "v": "徐小凤演唱会超清" + }, + { + "n": "X信乐队", + "v": "信乐队演唱会超清" + }, + { + "n": "Y夜愿乐队", + "v": "夜愿乐队演唱会超清" + }, + { + "n": "Y羽泉", + "v": "羽泉演唱会超清" + }, + { + "n": "Y郁可唯", + "v": "郁可唯演唱会超清" + }, + { + "n": "Y叶倩文", + "v": "叶倩文演唱会超清" + }, + { + "n": "Y杨坤", + "v": "杨坤演唱会超清" + }, + { + "n": "Y庾澄庆", + "v": "庾澄庆演唱会超清" + }, + { + "n": "Y尤长靖", + "v": "尤长靖演唱会超清" + }, + { + "n": "Y易烊千玺", + "v": "易烊千玺演唱会超清" + }, + { + "n": "Y袁娅维", + "v": "袁娅维演唱会超清" + }, + { + "n": "Y杨丞琳", + "v": "杨丞琳演唱会超清" + }, + { + "n": "Y杨千嬅", + "v": "杨千嬅演唱会超清" + }, + { + "n": "Y杨宗纬", + "v": "杨宗纬演唱会超清" + }, + { + "n": "Z郑秀文", + "v": "郑秀文演唱会超清" + }, + { + "n": "Z周杰伦", + "v": "周杰伦演唱会超清" + }, + { + "n": "Z张学友", + "v": "张学友演唱会超清" + }, + { + "n": "Z张信哲", + "v": "张信哲演唱会超清" + }, + { + "n": "Z张宇", + "v": "张宇演唱会超清" + }, + { + "n": "Z周华健", + "v": "周华健演唱会超清" + }, + { + "n": "Z张韶涵", + "v": "张韶涵演唱会超清" + }, + { + "n": "Z周深", + "v": "周深演唱会超清" + }, + { + "n": "Z纵贯线", + "v": "纵贯线演唱会超清" + }, + { + "n": "Z赵雷", + "v": "赵雷演唱会超清" + }, + { + "n": "Z周传雄", + "v": "周传雄演唱会超清" + }, + { + "n": "Z张国荣", + "v": "张国荣演唱会超清" + }, + { + "n": "Z周慧敏", + "v": "周慧敏演唱会超清" + }, + { + "n": "Z张惠妹", + "v": "张惠妹演唱会超清" + }, + { + "n": "Z周笔畅", + "v": "周笔畅演唱会超清" + }, + { + "n": "Z郑中基", + "v": "郑中基演唱会超清" + }, + { + "n": "Z张艺兴", + "v": "张艺兴演唱会超清" + }, + { + "n": "Z张震岳", + "v": "张震岳演唱会超清" + }, + { + "n": "Z张雨生", + "v": "张雨生演唱会超清" + }, + { + "n": "Z郑智化", + "v": "郑智化演唱会超清" + }, + { + "n": "Z卓依婷", + "v": "卓依婷演唱会超清" + }, + { + "n": "Z中岛美雪", + "v": "中岛美雪演唱会超清" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "探索发现超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "电影": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "鬼畜": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "一口气沙雕动漫": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "说案": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "说案" + }, + { + "n": "汤圆", + "v": "汤圆说案" + }, + { + "n": "唐唐", + "v": "唐唐说案" + }, + { + "n": "罗翔", + "v": "罗翔说刑法" + }, + { + "n": "何家弘", + "v": "何家弘说案" + }, + { + "n": "韩诺", + "v": "韩诺说案" + }, + { + "n": "老V", + "v": "老V说案" + }, + { + "n": "禁播档案‼️", + "v": "禁播档案" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "演讲": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "全部演讲4K" + }, + { + "n": "A艾跃进", + "v": "艾跃进演讲4K" + }, + { + "n": "C超级演说家", + "v": "超级演说家4K" + }, + { + "n": "D电影", + "v": "电影演讲4K" + }, + { + "n": "D典籍里的中国", + "v": "典籍里的中国4K" + }, + { + "n": "G感动中国", + "v": "感动中国4K" + }, + { + "n": "G郭继承", + "v": "郭继承演讲4K" + }, + { + "n": "H华春莹", + "v": "华春莹演讲4K" + }, + { + "n": "L雷军", + "v": "雷军演讲4K" + }, + { + "n": "L罗翔", + "v": "罗翔演讲4K" + }, + { + "n": "R任正非", + "v": "任正非演讲4K" + }, + { + "n": "TED", + "v": "TED演讲4K" + }, + { + "n": "W汪文斌", + "v": "汪文斌演讲4K" + }, + { + "n": "Y一刻", + "v": "一刻演讲4K" + }, + { + "n": "Z赵立坚", + "v": "赵立坚演讲4K" + }, + { + "n": "Z郑强", + "v": "郑强演讲4K" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "解说": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "解说" + }, + { + "n": "电影", + "v": "电影解说" + }, + { + "n": "电视", + "v": "电视解说" + }, + { + "n": "历史", + "v": "历史解说" + }, + { + "n": "动漫", + "v": "动漫解说" + }, + { + "n": "小说", + "v": "小说解说" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "风景4K": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "风景4K" + }, + { + "n": "A澳门", + "v": "澳门风景4K" + }, + { + "n": "A安徽", + "v": "安徽风景4K" + }, + { + "n": "B布达拉宫", + "v": "布达拉宫风景4K" + }, + { + "n": "B北京", + "v": "北京风景4K" + }, + { + "n": "C重庆", + "v": "重庆风景4K" + }, + { + "n": "C草原", + "v": "草原风景4K" + }, + { + "n": "D大海", + "v": "大海风景4K" + }, + { + "n": "F福建", + "v": "福建风景4K" + }, + { + "n": "G广东", + "v": "广东风景4K" + }, + { + "n": "G广西", + "v": "广西风景4K" + }, + { + "n": "G贵州", + "v": "贵州风景4K" + }, + { + "n": "G甘肃", + "v": "甘肃风景4K" + }, + { + "n": "H海南", + "v": "海南风景4K" + }, + { + "n": "H河北", + "v": "河北风景4K" + }, + { + "n": "H河南", + "v": "河南风景4K" + }, + { + "n": "H湖北", + "v": "湖北风景4K" + }, + { + "n": "H湖南", + "v": "湖南风景4K" + }, + { + "n": "H黑龙江", + "v": "黑龙江风景4K" + }, + { + "n": "J吉林", + "v": "吉林风景4K" + }, + { + "n": "J江苏", + "v": "江苏风景4K" + }, + { + "n": "J江西", + "v": "江西风景4K" + }, + { + "n": "L辽宁", + "v": "辽宁风景4K" + }, + { + "n": "M民宿", + "v": "民宿风景4K" + }, + { + "n": "N内蒙古", + "v": "内蒙古风景4K" + }, + { + "n": "N宁夏", + "v": "宁夏风景4K" + }, + { + "n": "Q青海", + "v": "青海风景4K" + }, + { + "n": "S上海", + "v": "上海风景4K" + }, + { + "n": "S陕西", + "v": "陕西风景4K" + }, + { + "n": "S四川", + "v": "四川风景4K" + }, + { + "n": "S山西", + "v": "山西风景4K" + }, + { + "n": "S山东", + "v": "山东风景4K" + }, + { + "n": "T天津", + "v": "天津风景4K" + }, + { + "n": "T台湾", + "v": "台湾风景4K" + }, + { + "n": "T天空", + "v": "天空风景4K" + }, + { + "n": "X西湖", + "v": "西湖风景4K" + }, + { + "n": "X西藏", + "v": "西藏风景4K" + }, + { + "n": "X新疆", + "v": "新疆风景4K" + }, + { + "n": "X香港", + "v": "香港风景4K" + }, + { + "n": "Y云南", + "v": "云南风景4K" + }, + { + "n": "Z浙江", + "v": "浙江风景4K" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "MV4K": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "MV4K" + }, + { + "n": "A阿杜", + "v": "阿杜MV4K" + }, + { + "n": "A阿黛尔", + "v": "阿黛尔MV4K" + }, + { + "n": "BBeyond", + "v": "BeyondMV4K" + }, + { + "n": "BBy2", + "v": "By2MV4K" + }, + { + "n": "BBIGBANG", + "v": "BIGBANGMV4K" + }, + { + "n": "B布兰妮", + "v": "布兰妮MV4K" + }, + { + "n": "C陈奕迅", + "v": "陈奕迅MV4K" + }, + { + "n": "C蔡依林", + "v": "蔡依林MV4K" + }, + { + "n": "C初音未来", + "v": "初音未来MV4K" + }, + { + "n": "C蔡健雅", + "v": "蔡健雅MV4K" + }, + { + "n": "C陈小春", + "v": "陈小春MV4K" + }, + { + "n": "C草蜢", + "v": "草蜢MV4K" + }, + { + "n": "C陈慧娴", + "v": "陈慧娴MV4K" + }, + { + "n": "C崔健", + "v": "崔健MV4K" + }, + { + "n": "C仓木麻衣", + "v": "仓木麻衣MV4K" + }, + { + "n": "D戴荃", + "v": "戴荃MV4K" + }, + { + "n": "D动力火车", + "v": "动力火车MV4K" + }, + { + "n": "D邓丽君", + "v": "邓丽君MV4K" + }, + { + "n": "D丁当", + "v": "丁当MV4K" + }, + { + "n": "D刀郎", + "v": "刀郎MV4K" + }, + { + "n": "D邓紫棋", + "v": "邓紫棋MV4K" + }, + { + "n": "D戴佩妮", + "v": "戴佩妮MV4K" + }, + { + "n": "D邓丽君", + "v": "邓丽君MV4K" + }, + { + "n": "F飞儿乐队", + "v": "飞儿乐队MV4K" + }, + { + "n": "F费玉清", + "v": "费玉清MV4K" + }, + { + "n": "F费翔", + "v": "费翔MV4K" + }, + { + "n": "F方大同", + "v": "方大同MV4K" + }, + { + "n": "F房东的猫", + "v": "房东的猫MV4K" + }, + { + "n": "F凤飞飞", + "v": "凤飞飞MV4K" + }, + { + "n": "F凤凰传奇", + "v": "凤凰传奇MV4K" + }, + { + "n": "G古风歌曲", + "v": "古风歌曲4K" + }, + { + "n": "G国乐大典", + "v": "国乐大典4K" + }, + { + "n": "G郭采洁", + "v": "郭采洁MV4K" + }, + { + "n": "G光良", + "v": "光良MV4K" + }, + { + "n": "G郭静", + "v": "郭静MV4K" + }, + { + "n": "G郭富城", + "v": "郭富城MV4K" + }, + { + "n": "H胡彦斌", + "v": "胡彦斌MV4K" + }, + { + "n": "H胡夏", + "v": "胡夏MV4K" + }, + { + "n": "H韩红", + "v": "韩红MV4K" + }, + { + "n": "H黄品源", + "v": "黄品源MV4K" + }, + { + "n": "H黄小琥", + "v": "黄小琥MV4K" + }, + { + "n": "H花儿乐队", + "v": "花儿乐队MV4K" + }, + { + "n": "H黄家强", + "v": "黄家强MV4K" + }, + { + "n": "H后街男孩", + "v": "后街男孩MV4K" + }, + { + "n": "J经典老歌", + "v": "经典老歌4K" + }, + { + "n": "J贾斯丁比伯", + "v": "贾斯丁比伯MV4K" + }, + { + "n": "J金池", + "v": "金池MV4K" + }, + { + "n": "J金志文", + "v": "金志文MV4K" + }, + { + "n": "J焦迈奇", + "v": "焦迈奇MV4K" + }, + { + "n": "K筷子兄弟", + "v": "筷子兄弟MV4K" + }, + { + "n": "L李玟", + "v": "李玟MV4K" + }, + { + "n": "L林忆莲", + "v": "林忆莲MV4K" + }, + { + "n": "L李克勤", + "v": "李克勤MV4K" + }, + { + "n": "L刘宪华", + "v": "刘宪华MV4K" + }, + { + "n": "L李圣杰", + "v": "李圣杰MV4K" + }, + { + "n": "L林宥嘉", + "v": "林宥嘉MV4K" + }, + { + "n": "L梁静茹", + "v": "梁静茹MV4K" + }, + { + "n": "L李健", + "v": "李健MV4K" + }, + { + "n": "L林俊杰", + "v": "林俊杰MV4K" + }, + { + "n": "L李玉刚", + "v": "李玉刚MV4K" + }, + { + "n": "L林志炫", + "v": "林志炫MV4K" + }, + { + "n": "L李荣浩", + "v": "李荣浩MV4K" + }, + { + "n": "L李宇春", + "v": "李宇春MV4K" + }, + { + "n": "L洛天依", + "v": "洛天依MV4K" + }, + { + "n": "L林子祥", + "v": "林子祥MV4K" + }, + { + "n": "L李宗盛", + "v": "李宗盛MV4K" + }, + { + "n": "L黎明", + "v": "黎明MV4K" + }, + { + "n": "L刘德华", + "v": "刘德华MV4K" + }, + { + "n": "L罗大佑", + "v": "罗大佑MV4K" + }, + { + "n": "L林肯公园", + "v": "林肯公园MV4K" + }, + { + "n": "LLadyGaga", + "v": "LadyGagaMV4K" + }, + { + "n": "L旅行团乐队", + "v": "旅行团乐队MV4K" + }, + { + "n": "M莫文蔚", + "v": "莫文蔚MV4K" + }, + { + "n": "M毛不易", + "v": "毛不易MV4K" + }, + { + "n": "M梅艳芳", + "v": "梅艳芳MV4K" + }, + { + "n": "M迈克尔杰克逊", + "v": "迈克尔杰克逊MV4K" + }, + { + "n": "N南拳妈妈", + "v": "南拳妈妈MV4K" + }, + { + "n": "P朴树", + "v": "朴树MV4K" + }, + { + "n": "Q齐秦", + "v": "齐秦MV4K" + }, + { + "n": "Q青鸟飞鱼", + "v": "青鸟飞鱼MV4K" + }, + { + "n": "R容祖儿", + "v": "容祖儿MV4K" + }, + { + "n": "R热歌", + "v": "热歌MV4K" + }, + { + "n": "R任贤齐", + "v": "任贤齐MV4K" + }, + { + "n": "S水木年华", + "v": "水木年华MV4K" + }, + { + "n": "S孙燕姿", + "v": "孙燕姿MV4K" + }, + { + "n": "S苏打绿", + "v": "苏打绿MV4K" + }, + { + "n": "SSHE", + "v": "SHEMV4K" + }, + { + "n": "S孙楠", + "v": "孙楠MV4K" + }, + { + "n": "T陶喆", + "v": "陶喆MV4K" + }, + { + "n": "T谭咏麟", + "v": "谭咏麟MV4K" + }, + { + "n": "T田馥甄", + "v": "田馥甄MV4K" + }, + { + "n": "T谭维维", + "v": "谭维维MV4K" + }, + { + "n": "T逃跑计划", + "v": "逃跑计划MV4K" + }, + { + "n": "T田震", + "v": "田震MV4K" + }, + { + "n": "T谭晶", + "v": "谭晶MV4K" + }, + { + "n": "T屠洪刚", + "v": "屠洪刚MV4K" + }, + { + "n": "T泰勒·斯威夫特", + "v": "泰勒·斯威夫特MV4K" + }, + { + "n": "W王力宏", + "v": "王力宏MV4K" + }, + { + "n": "W王杰", + "v": "王杰MV4K" + }, + { + "n": "W吴克群", + "v": "吴克群MV4K" + }, + { + "n": "W王心凌", + "v": "王心凌MV4K" + }, + { + "n": "W汪峰", + "v": "汪峰MV4K" + }, + { + "n": "W伍佰", + "v": "伍佰MV4K" + }, + { + "n": "W王菲", + "v": "王菲MV4K" + }, + { + "n": "W五月天", + "v": "五月天MV4K" + }, + { + "n": "W汪苏泷", + "v": "汪苏泷MV4K" + }, + { + "n": "X徐佳莹", + "v": "徐佳莹MV4K" + }, + { + "n": "X弦子", + "v": "弦子MV4K" + }, + { + "n": "X萧亚轩", + "v": "萧亚轩MV4K" + }, + { + "n": "X许巍", + "v": "许巍MV4K" + }, + { + "n": "X薛之谦", + "v": "薛之谦MV4K" + }, + { + "n": "X许嵩", + "v": "许嵩MV4K" + }, + { + "n": "X小虎队", + "v": "小虎队MV4K" + }, + { + "n": "X萧敬腾", + "v": "萧敬腾MV4K" + }, + { + "n": "X谢霆锋", + "v": "谢霆锋MV4K" + }, + { + "n": "X徐小凤", + "v": "徐小凤MV4K" + }, + { + "n": "X信乐队", + "v": "信乐队MV4K" + }, + { + "n": "Y夜愿乐队", + "v": "夜愿乐队MV4K" + }, + { + "n": "Y原创音乐", + "v": "原创音乐MV4K" + }, + { + "n": "Y羽泉", + "v": "羽泉MV4K" + }, + { + "n": "Y粤语", + "v": "粤语MV4K" + }, + { + "n": "Y郁可唯", + "v": "郁可唯MV4K" + }, + { + "n": "Y叶倩文", + "v": "叶倩文MV4K" + }, + { + "n": "Y杨坤", + "v": "杨坤MV4K" + }, + { + "n": "Y庾澄庆", + "v": "庾澄庆MV4K" + }, + { + "n": "Y尤长靖", + "v": "尤长靖MV4K" + }, + { + "n": "Y易烊千玺", + "v": "易烊千玺MV4K" + }, + { + "n": "Y袁娅维", + "v": "袁娅维MV4K" + }, + { + "n": "Y杨丞琳", + "v": "杨丞琳MV4K" + }, + { + "n": "Y杨千嬅", + "v": "杨千嬅MV4K" + }, + { + "n": "Y杨宗纬", + "v": "杨宗纬MV4K" + }, + { + "n": "Z周杰伦", + "v": "周杰伦MV4K" + }, + { + "n": "Z张学友", + "v": "张学友MV4K" + }, + { + "n": "Z张信哲", + "v": "张信哲MV4K" + }, + { + "n": "Z张宇", + "v": "张宇MV4K" + }, + { + "n": "Z周华健", + "v": "周华健MV4K" + }, + { + "n": "Z张韶涵", + "v": "张韶涵MV4K" + }, + { + "n": "Z周深", + "v": "周深MV4K" + }, + { + "n": "Z纵贯线", + "v": "纵贯线MV4K" + }, + { + "n": "Z赵雷", + "v": "赵雷MV4K" + }, + { + "n": "Z周传雄", + "v": "周传雄MV4K" + }, + { + "n": "Z张国荣", + "v": "张国荣MV4K" + }, + { + "n": "Z周慧敏", + "v": "周慧敏MV4K" + }, + { + "n": "Z张惠妹", + "v": "张惠妹MV4K" + }, + { + "n": "Z周笔畅", + "v": "周笔畅MV4K" + }, + { + "n": "Z郑中基", + "v": "郑中基MV4K" + }, + { + "n": "Z张艺兴", + "v": "张艺兴MV4K" + }, + { + "n": "Z张震岳", + "v": "张震岳MV4K" + }, + { + "n": "Z中国好声音", + "v": "中国好声音MV4K" + }, + { + "n": "Z张雨生", + "v": "张雨生MV4K" + }, + { + "n": "Z郑智化", + "v": "郑智化MV4K" + }, + { + "n": "Z卓依婷", + "v": "卓依婷MV4K" + }, + { + "n": "Z中岛美雪", + "v": "中岛美雪MV4K" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "帕梅拉": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "帕梅拉" + }, + { + "n": "瘦腿", + "v": "帕梅拉瘦腿" + }, + { + "n": "腹部", + "v": "帕梅拉腹部" + }, + { + "n": "手臂", + "v": "帕梅拉手臂" + }, + { + "n": "热身", + "v": "帕梅拉热身" + }, + { + "n": "舞蹈", + "v": "帕梅拉舞蹈" + }, + { + "n": "燃脂", + "v": "帕梅拉燃脂" + }, + { + "n": "有氧", + "v": "帕梅拉有氧" + }, + { + "n": "拉伸", + "v": "帕梅拉拉伸" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "知名UP主": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "知名UP主" + }, + { + "n": "菠萝赛东", + "v": "菠萝赛东" + }, + { + "n": "冯提莫", + "v": "冯提莫" + }, + { + "n": "林延秋", + "v": "林延秋" + }, + { + "n": "-LKs-", + "v": "-LKs-" + }, + { + "n": "小约翰可汗", + "v": "小约翰可汗" + }, + { + "n": "low馆长", + "v": "low馆长" + }, + { + "n": "自说自话的总裁", + "v": "自说自话的总裁" + }, + { + "n": "所长林超", + "v": "所长林超" + }, + { + "n": "世界未解之谜M", + "v": "世界未解之谜M" + }, + { + "n": "李永乐老师官方", + "v": "李永乐老师官方" + }, + { + "n": "罗兹", + "v": "罗兹" + }, + { + "n": "回到2049", + "v": "回到2049" + }, + { + "n": "二次元的中科院物理所", + "v": "二次元的中科院物理所" + }, + { + "n": "毕导THU", + "v": "毕导THU" + }, + { + "n": "罗翔讲刑法", + "v": "罗翔讲刑法" + }, + { + "n": "戴博士实验室", + "v": "戴博士实验室" + }, + { + "n": "芳斯塔芙", + "v": "芳斯塔芙" + }, + { + "n": "参赛者网", + "v": "参赛者网" + }, + { + "n": "三维地图看世界", + "v": "三维地图看世界" + }, + { + "n": "有机社会", + "v": "有机社会" + }, + { + "n": "乌鸦校尉CaptainWuya", + "v": "乌鸦校尉CaptainWuya" + }, + { + "n": "果壳", + "v": "果壳" + }, + { + "n": "严伯钧", + "v": "严伯钧" + }, + { + "n": "是你们的康康", + "v": "是你们的康康" + }, + { + "n": "老爸评测", + "v": "老爸评测" + }, + { + "n": "硬核的半佛仙人", + "v": "硬核的半佛仙人" + }, + { + "n": "盗月社食遇记", + "v": "盗月社食遇记" + }, + { + "n": "我是郭杰瑞", + "v": "我是郭杰瑞" + }, + { + "n": "无穷小亮的科普日常", + "v": "无穷小亮的科普日常" + }, + { + "n": "papi酱", + "v": "papi酱" + }, + { + "n": "老番茄", + "v": "老番茄" + }, + { + "n": "绵羊料理", + "v": "绵羊料理" + }, + { + "n": "老师好我叫何同学", + "v": "老师好我叫何同学" + }, + { + "n": "敬汉卿", + "v": "敬汉卿" + }, + { + "n": "周六野Zoey", + "v": "周六野Zoey" + }, + { + "n": "木鱼水心", + "v": "木鱼水心" + }, + { + "n": "凉风Kaze", + "v": "凉风Kaze" + }, + { + "n": "小潮院长", + "v": "小潮院长" + }, + { + "n": "中国BOY超级大猩猩", + "v": "中国BOY超级大猩猩" + }, + { + "n": "李子柒", + "v": "李子柒" + }, + { + "n": "敖厂长", + "v": "敖厂长" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "太极拳": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "太极拳" + }, + { + "n": "邱慧芳", + "v": "太极拳邱慧芳" + }, + { + "n": "陈氏", + "v": "太极拳陈氏" + }, + { + "n": "武当", + "v": "太极拳武当" + }, + { + "n": "二十四式", + "v": "太极拳二十四式" + }, + { + "n": "三十六式", + "v": "太极拳三十六式" + }, + { + "n": "五禽戏", + "v": "五禽戏" + }, + { + "n": "八段锦", + "v": "八段锦" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "舞蹈": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "舞蹈" + }, + { + "n": "宅舞", + "v": "宅舞" + }, + { + "n": "街舞", + "v": "街舞" + }, + { + "n": "中国舞", + "v": "中国舞" + }, + { + "n": "广场舞", + "v": "广场舞" + }, + { + "n": "交谊舞", + "v": "交谊舞" + }, + { + "n": "教程", + "v": "舞蹈教程" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "音乐": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "音乐" + }, + { + "n": "钢琴曲", + "v": "钢琴曲" + }, + { + "n": "协奏曲", + "v": "协奏曲r" + }, + { + "n": "中国古风音乐", + "v": "中国古风音乐" + }, + { + "n": "背景音乐", + "v": "背景音乐" + }, + { + "n": "助眠音乐r", + "v": "助眠音乐" + }, + { + "n": "胎教音乐", + "v": "胎教音乐" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "歌曲": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "歌曲" + }, + { + "n": "香港歌曲", + "v": "香港歌曲" + }, + { + "n": "台湾歌曲", + "v": "台湾歌曲" + }, + { + "n": "内地歌曲", + "v": "内地歌曲" + }, + { + "n": "英文歌曲", + "v": "英文歌曲" + }, + { + "n": "日文歌曲", + "v": "日文歌曲" + }, + { + "n": "小语种歌曲", + "v": "小语种歌曲" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "平面设计教学": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "平面设计教学" + }, + { + "n": "Adobe Photoshop", + "v": "Adobe Photoshop教程" + }, + { + "n": "Adobe Illustrator", + "v": "Adobe Illustrator教程" + }, + { + "n": "CorelDRAW", + "v": "CorelDRAW教程" + }, + { + "n": "Adobe InDesign", + "v": "Adobe InDesign教程" + }, + { + "n": "Adobe Pagermaker", + "v": "Adobe Pagermaker教程" + }, + { + "n": "SAI", + "v": "SAI教程" + }, + { + "n": "Adobe Bridge", + "v": "Adobe Bridge教程" + }, + { + "n": "Adobe Pagermaker", + "v": "Adobe Pagermake教程r" + }, + { + "n": "3D Studio Max", + "v": "3D Studio Max教程" + }, + { + "n": "PR", + "v": "PR教程" + }, + { + "n": "AE", + "v": "AE教程" + }, + { + "n": "CINEMA 4D", + "v": "CINEMA 4D教程" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "软件教程": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "软件教程" + }, + { + "n": "MT管理器", + "v": "MT管理器" + }, + { + "n": "NP管理器", + "v": "NP管理器" + }, + { + "n": "mixplorer", + "v": "mixplorer" + }, + { + "n": "脱壳", + "v": "脱壳" + }, + { + "n": "爬虫", + "v": "爬虫" + }, + { + "n": "json&jar", + "v": "json&jar" + }, + { + "n": "网盘挂载", + "v": "网盘挂载" + }, + { + "n": "alist+WebDav", + "v": "alist+WebDav" + }, + { + "n": "TVBox修改", + "v": "TVBox修改教程" + }, + { + "n": "EXCEL", + "v": "EXCEL教程" + }, + { + "n": "Git入门到精通", + "v": "Git入门到精通" + }, + { + "n": "java", + "v": "java教程" + }, + { + "n": "phyton", + "v": "phyton教程" + }, + { + "n": "xml", + "v": "xml教程" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "Windows": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "小姐姐超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "广场舞超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "舞曲超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "白噪音超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "搞笑超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "体育超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "4K": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "足球比赛合集超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "篮球超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "动物世界超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "儿童超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "荒野求生超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "纪录片超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "食谱": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "食谱" + }, + { + "n": "川菜食谱", + "v": "川菜食谱" + }, + { + "n": "豫菜食谱", + "v": "豫菜食谱" + }, + { + "n": "淮扬菜食谱", + "v": "淮扬菜食谱" + }, + { + "n": "湘菜食谱", + "v": "湘菜食谱" + }, + { + "n": "鲁菜食谱", + "v": "鲁菜食谱" + }, + { + "n": "粤菜食谱", + "v": "粤菜食谱" + }, + { + "n": "潮菜食谱", + "v": "潮菜食谱" + }, + { + "n": "浙菜食谱", + "v": "浙菜食谱" + }, + { + "n": "徽菜食谱", + "v": "徽菜食谱" + }, + { + "n": "闽菜食谱", + "v": "闽菜食谱" + }, + { + "n": "苏菜食谱", + "v": "苏菜食谱" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "健身": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "健身" + }, + { + "n": "瘦腿", + "v": "瘦腿" + }, + { + "n": "腹部", + "v": "腹部" + }, + { + "n": "手臂", + "v": "手臂" + }, + { + "n": "热身", + "v": "热身" + }, + { + "n": "帕梅拉", + "v": "帕梅拉" + }, + { + "n": "燃脂", + "v": "燃脂" + }, + { + "n": "有氧", + "v": "有氧" + }, + { + "n": "拉伸", + "v": "拉伸" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "窗白噪音": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "美食超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "美食超清" + }, + { + "n": "舌尖上的中国", + "v": "舌尖上的中国超清" + }, + { + "n": "老字号", + "v": "老字号美食超清" + }, + { + "n": "家常菜", + "v": "家常菜美食超清" + }, + { + "n": "香港美食探店", + "v": "香港美食探店超清" + }, + { + "n": "澳门美食探店", + "v": "澳门美食探店超清" + }, + { + "n": "上海美食探店", + "v": "上海美食探店超清" + }, + { + "n": "北京美食探店", + "v": "北京美食探店超清" + }, + { + "n": "重庆美食探店", + "v": "重庆美食探店超清" + }, + { + "n": "南京美食探店", + "v": "南京美食探店超清" + }, + { + "n": "广州美食探店", + "v": "广州美食探店超清" + }, + { + "n": "杭州美食探店", + "v": "杭州美食探店超清" + }, + { + "n": "成都美食探店", + "v": "成都美食探店超清" + }, + { + "n": "苏州美食探店", + "v": "苏州美食探店超清" + }, + { + "n": "武汉美食探店", + "v": "武汉美食探店超清" + }, + { + "n": "台湾美食探店", + "v": "台湾美食探店超清" + }, + { + "n": "川菜", + "v": "川菜美食超清" + }, + { + "n": "豫菜", + "v": "豫菜美食超清" + }, + { + "n": "淮扬菜", + "v": "淮扬菜美食超清" + }, + { + "n": "湘菜", + "v": "湘菜美食超清" + }, + { + "n": "鲁菜", + "v": "鲁菜美食超清" + }, + { + "n": "粤菜", + "v": "粤菜美食超清" + }, + { + "n": "潮菜", + "v": "潮菜美食超清" + }, + { + "n": "浙菜", + "v": "浙菜美食超清" + }, + { + "n": "徽菜", + "v": "徽菜美食超清" + }, + { + "n": "闽菜", + "v": "闽菜美食超清" + }, + { + "n": "东北菜", + "v": "东北菜美食超清" + }, + { + "n": "客家菜", + "v": "客家菜美食超清" + }, + { + "n": "苏菜", + "v": "苏菜美食超清" + }, + { + "n": "火锅", + "v": "火锅" + }, + { + "n": "面食", + "v": "面食" + }, + { + "n": "炒菜", + "v": "炒菜" + }, + { + "n": "点心", + "v": "点心" + }, + { + "n": "日料", + "v": "日料" + }, + { + "n": "小吃", + "v": "小吃" + }, + { + "n": "素食", + "v": "素食" + }, + { + "n": "蒸菜", + "v": "蒸菜" + }, + { + "n": "凉菜", + "v": "凉菜" + }, + { + "n": "早餐", + "v": "早餐" + }, + { + "n": "披萨", + "v": "披萨" + }, + { + "n": "烤鱼", + "v": "烤鱼" + }, + { + "n": "海鲜", + "v": "海鲜美食超清" + }, + { + "n": "汉堡", + "v": "汉堡" + }, + { + "n": "韩国菜", + "v": "韩国菜" + }, + { + "n": "泰国菜", + "v": "泰国菜" + }, + { + "n": "穆斯林菜", + "v": "穆斯林菜" + }, + { + "n": "法国菜", + "v": "法国菜" + }, + { + "n": "意大利菜", + "v": "意大利菜" + }, + { + "n": "西班牙菜", + "v": "西班牙菜" + }, + { + "n": "土耳其菜", + "v": "土耳其菜系" + }, + { + "n": "阿拉伯菜", + "v": "阿拉伯菜" + }, + { + "n": "德国菜", + "v": "德国菜" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "广场舞": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "球星": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "球星" + }, + { + "n": "梅西", + "v": "梅西" + }, + { + "n": "C罗", + "v": "C罗" + }, + { + "n": "天下足球", + "v": "天下足球" + }, + { + "n": "罗纳尔多", + "v": "罗纳尔多" + }, + { + "n": "亨利", + "v": "亨利" + }, + { + "n": "小罗", + "v": "小罗" + }, + { + "n": "齐达内", + "v": "齐达内" + }, + { + "n": "贝克汉姆", + "v": "贝克汉姆" + }, + { + "n": "内马尔", + "v": "内马尔" + }, + { + "n": "德布劳内", + "v": "德布劳内" + }, + { + "n": "欧冠", + "v": "欧冠" + }, + { + "n": "世界杯", + "v": "世界杯" + }, + { + "n": "西甲", + "v": "西甲" + }, + { + "n": "英超", + "v": "英超" + }, + { + "n": "意甲", + "v": "意甲" + }, + { + "n": "德甲", + "v": "德甲" + }, + { + "n": "国米", + "v": "国米" + }, + { + "n": "皇马", + "v": "皇马" + }, + { + "n": "巴萨", + "v": "巴萨" + }, + { + "n": "巴黎圣日耳曼", + "v": "巴黎圣日耳曼" + }, + { + "n": "曼联", + "v": "曼联" + }, + { + "n": "曼城", + "v": "曼城" + }, + { + "n": "NBA", + "v": "NBA" + }, + { + "n": "詹姆斯", + "v": "詹姆斯" + }, + { + "n": "库里", + "v": "库里" + }, + { + "n": "杜兰特", + "v": "杜兰特" + }, + { + "n": "UFC", + "v": "UFC" + }, + { + "n": "斯诺克", + "v": "斯诺克" + }, + { + "n": "网球", + "v": "网球" + }, + { + "n": "F1", + "v": "F1" + }, + { + "n": "高尔夫", + "v": "高尔夫" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "电视剧": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "相声小品超清": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "相声小品" + }, + { + "n": "单口相声", + "v": "单口相声" + }, + { + "n": "群口相声", + "v": "群口相声" + }, + { + "n": "德云社", + "v": "德云社" + }, + { + "n": "青曲社", + "v": "青曲社" + }, + { + "n": "郭德纲", + "v": "郭德纲" + }, + { + "n": "岳云鹏", + "v": "岳云鹏" + }, + { + "n": "曹云金", + "v": "曹云金" + }, + { + "n": "评书", + "v": "评书" + }, + { + "n": "小曲", + "v": "小曲" + }, + { + "n": "二人转", + "v": "二人转" + }, + { + "n": "春晚小品", + "v": "春晚小品" + }, + { + "n": "赵本山", + "v": "赵本山" + }, + { + "n": "陈佩斯", + "v": "陈佩斯" + }, + { + "n": "冯巩", + "v": "冯巩" + }, + { + "n": "宋小宝", + "v": "宋小宝" + }, + { + "n": "赵丽蓉", + "v": "赵丽蓉" + }, + { + "n": "郭达", + "v": "郭达" + }, + { + "n": "潘长江", + "v": "潘长江" + }, + { + "n": "郭冬临", + "v": "郭冬临" + }, + { + "n": "严顺开", + "v": "严顺开" + }, + { + "n": "文松", + "v": "文松" + }, + { + "n": "开心麻花", + "v": "开心麻花" + }, + { + "n": "屌丝男士", + "v": "屌丝男士" + }, + { + "n": "喜剧综艺", + "v": "喜剧综艺" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "戏曲": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "戏曲" + }, + { + "n": "京剧", + "v": "京剧" + }, + { + "n": "越剧", + "v": "越剧" + }, + { + "n": "黄梅戏", + "v": "黄梅戏" + }, + { + "n": "评剧", + "v": "评剧" + }, + { + "n": "豫剧", + "v": "豫剧" + }, + { + "n": "昆曲", + "v": "昆曲" + }, + { + "n": "高腔", + "v": "高腔" + }, + { + "n": "梆子腔", + "v": "梆子腔" + }, + { + "n": "河北梆子", + "v": "河北梆子" + }, + { + "n": "晋剧", + "v": "晋剧" + }, + { + "n": "蒲剧", + "v": "蒲剧" + }, + { + "n": "雁剧", + "v": "雁剧" + }, + { + "n": "上党梆子", + "v": "上党梆子" + }, + { + "n": "秦腔", + "v": "秦腔" + }, + { + "n": "武安平调", + "v": "武安平调" + }, + { + "n": "二人台", + "v": "二人台" + }, + { + "n": "吉剧", + "v": "吉剧" + }, + { + "n": "龙江剧", + "v": "龙江剧" + }, + { + "n": "越调", + "v": "越调" + }, + { + "n": "河南曲剧", + "v": "河南曲剧" + }, + { + "n": "山东梆子", + "v": "山东梆子" + }, + { + "n": "淮剧", + "v": "淮剧" + }, + { + "n": "沪剧", + "v": "沪剧" + }, + { + "n": "滑稽戏", + "v": "滑稽戏" + }, + { + "n": "婺剧", + "v": "婺剧" + }, + { + "n": "绍剧", + "v": "绍剧" + }, + { + "n": "徽剧", + "v": "徽剧" + }, + { + "n": "闽剧", + "v": "闽剧" + }, + { + "n": "莆仙戏", + "v": "莆仙戏" + }, + { + "n": "梨园戏", + "v": "梨园戏" + }, + { + "n": "高甲戏", + "v": "高甲戏" + }, + { + "n": "赣剧", + "v": "赣剧" + }, + { + "n": "采茶戏", + "v": "采茶戏" + }, + { + "n": "汉剧", + "v": "汉剧" + }, + { + "n": "湘剧", + "v": "湘剧" + }, + { + "n": "祁剧", + "v": "祁剧" + }, + { + "n": "湖南花鼓戏", + "v": "湖南花鼓戏" + }, + { + "n": "粤剧", + "v": "粤剧" + }, + { + "n": "潮剧", + "v": "潮剧" + }, + { + "n": "桂剧", + "v": "桂剧" + }, + { + "n": "彩调", + "v": "彩调" + }, + { + "n": "壮剧", + "v": "壮剧" + }, + { + "n": "川剧", + "v": "川剧" + }, + { + "n": "黔剧", + "v": "黔剧" + }, + { + "n": "滇剧", + "v": "滇剧" + }, + { + "n": "傣剧", + "v": "傣剧" + }, + { + "n": "藏剧", + "v": "藏剧" + }, + { + "n": "皮影戏", + "v": "皮影戏" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "旅游": [ + { + "key": "order", + "name": "排序", + "value": [ + { + "n": "综合排序", + "v": "0" + }, + { + "n": "最多点击", + "v": "click" + }, + { + "n": "最新发布", + "v": "pubdate" + }, + { + "n": "最多弹幕", + "v": "dm" + }, + { + "n": "最多收藏", + "v": "stow" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ], + "游泳": [ + { + "key": "tid", + "name": "分类", + "value": [ + { + "n": "全部", + "v": "泳姿" + }, + { + "n": "蝶泳", + "v": "蝶泳" + }, + { + "n": "仰泳", + "v": "仰泳" + }, + { + "n": "蛙泳", + "v": "蛙泳" + }, + { + "n": "自由泳", + "v": "自由泳" + } + ] + }, + { + "key": "duration", + "name": "时长", + "value": [ + { + "n": "全部", + "v": "0" + }, + { + "n": "60分钟以上", + "v": "4" + }, + { + "n": "30~60分钟", + "v": "3" + }, + { + "n": "10~30分钟", + "v": "2" + }, + { + "n": "10分钟以下", + "v": "1" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/xiaosa/JSON/采集静态.json b/xiaosa/JSON/采集静态.json new file mode 100644 index 00000000..3bfedc32 --- /dev/null +++ b/xiaosa/JSON/采集静态.json @@ -0,0 +1,141 @@ +[ + { + "name": "360资源", + "url": "https://360zy.com", + "parse_url": "", + "cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育|爽文短剧", + "class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N9tAvomhRaFHoqcKpYrUd7VEQtCD6rYGAzee6iYYi/8s0kmZl7h/fPFO+RqKa8SKgdIV7chZ0j6qzZ/ReR+4p7Frc7dYLgCVAwUQ9r4t09M9+AIp/eippY22OtAN7Zkb5l3S+S25D7xiSP6j5yNWLXFGi2UemaWBzxslcTwZ/COKCX5yfETIcZY/i8u9A84akidykWUJr2LOoeoIkR88CHYZyU4y1Qu5TjEijfUjwAmiVaD+/DxNTN2K2E/sOQTWKg8x9dBkDHTE9Hl5EcWdqfenY3ewTDUIl4BCDiYWOjtzFTy9MB/NGBuBy5ZyKe7uqDTba0a/F9gURYSXPdWI1Z0FGzw456GSkW0sT0aiDx6rPTtFGP6O2kbvimEhdHu0SKESl/VPAhcKzKgJTwKOc+a7+rDarteHJQyZYl5sk/IOiszA8CAAA=", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&45&46&47&48&49&50&51&52&53" + }, + { + "name": "豪华资源", + "url": "https://hhzyapi.com", + "parse_url": "", + "cate_exclude": "电视剧|电影|综艺|动漫|短剧|伦理片", + "class_name": "H4sIALGjdWYC/zVPWw6CMBC8Tc/pI6D1w0eCKErCj1ofKBBjokg5DbsLt7Bdy1dnZrezMxS8WuWDVIKCF+hCYKqonluhO0X4zhglF/vg5sjskuIzt6ipTrT0SU4EzM6Nji2iaYFjj7UwNkusqRV8vhbhcImDkKdSuT2cbptSWtQ+ctBr54fVTYDvQcynjEABWzTvO+y1WzCRME578o/+J/StWlkKWOT4qdnhoLrId7L5Z0r1xLRc5D1hE0doWHe7mkOOUgpXXGaWkb5yyOPE1aLkbk78ALNMUSlMAQAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&30&31&32&33&34&35&36&37&38" + }, + { + "name": "速播资源", + "url": "https://subocaiji.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|动漫|综艺|短剧|伦理片", + "class_name": "H4sIALGjdWYC/zWPWw6CMBBFd9N1+ohKNVGMiBpI+FHrAyJISHiV1bQzsAuZgl/39LY9k0En0zJh6GStWGoumF4/oH4zrOqWlwzLl5ZH5CvqlfSJ0EpgvjAk9rqoiMA6q5Kbd1yMtzC1YeKazvX7erT0dhyG6qvoLsPQXQxFQ9QFTwpsthSQf6BJDZ1uJtKYQtV3tJckVPLQzr5t5qlyw1QeaU+OG/Q/wA//h1CQctwtiHrJD0Ycn8r6AAAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27" + }, + { + "name": "红牛资源", + "url": "https://www.hongniuzy2.com", + "parse_url": "", + "cate_exclude": "电影|连续剧|综艺|动漫|纪录片|伦理片|体育赛事|短剧", + "class_name": "H4sIALGjdWYC/y2PXQ6CMBCEb9Nz+hOVaqIYFU0g8qRV1AgSEikUL9Pu1lvorj7Nl5nNZBbXlTOF8K89NjcnlcCm9VILNz1BeyGxJkE5ES5KvjERBgUMR0xq6eqGCPoh9CK+k+qfQrCzWrIXG6sVtcPzDl3JtD2wXBV2cyK3yKHu2Ctzknd65kE6c2bDNbwJf4tte8RwTLY1Kz94+Cq2eiYwpS8+mOVyptYAAAA=", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&29&30" + }, + { + "name": "新浪资源", + "url": "https://api.xinlangapi.com", + "parse_url": "", + "api": "/xinlangapi.php/provide/vod/from/xlm3u8/", + "cate_exclude": "电影|电视剧|动漫|综艺|纪录片|伦理片|体育|短剧", + "class_name": "H4sIALGjdWYC/0WOXQ6CMBCEb9Nz+hOR+qAYETUh4UWtikaQkEihPU27W24hXU18msk3m53BuLaqZBjXTgSWC2YXF+hyhm3nuGQob1Ztkc89Nyr1DsMSpjNyYm2b1jsI90ZyuuPil8I4glFCLEkHTO4o+gP1wPsJuqLGVQGNJnYXqJf/Ffgd12dXSncnkqrwYrozRoH/adTGTV4Ms8fAP2ziC/TQAAAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24" + }, + { + "name": "黑木耳资源", + "url": "https://www.heimuer.tv", + "parse_url": "", + "cate_exclude": "^电影$|^电视剧$|^综艺$|^动漫$|^短剧$", + "class_name": "H4sIALGjdWYC/0WSbXKCQAyGb8M5UQcRqgU7DFal2mllKBa/pqNjQexl2M1yi7LZpP2175PNJnkDEJ1FfbIgOqtsKLzMEv6HvH1aUN2UV1pdRA4c8Fwdb+oE1fCpneeowrG0M1Rx0qWiSl3xXWkle6G0Y4wt66bMdHV5PeijXedIsxSPfgHxFJ8MfNlfaAW9e7u4oxqdaATwD1BvUWVTatKNBVEF5GK9w3pfR3QS4CGLDO6PqOJjmxd45VyaKsbYbqxGK+w9em5KD6tXgXCuqOopVAlV7x6J/eDfD61IWwqOBNrYsuabWSqTggHHYMBJujl5zTgPQ7BR7w55UfNQ9h4IWnuo3nbs0mzNAKQrddpymjuBaE0gNpOmcjkt/1EXnyFKxP6V026lsv+ahmOxf+EbY5uammWaf8T4IzDOCeiDUxouiIGdcyZWN/ALQpTFCIwCAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63" + }, + { + "name": "暴风资源", + "url": "https://bfzyapi.com", + "parse_url": "", + "cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|演员|新闻资讯", + "class_name": "H4sIALGjdWYC/zWRa3aCMBCFd5N1+kIFj1VOLdbq0Z6iBq0VrI8qGN1MMhN20WSAP8x34c7NZMDRWYkDuh2mvEiKGVEwUy63BPUh1AJLyH11y4i6B2g65HN5SdB9l6lLX9OtEm9Ew7bep5b0c47Zj3EzNRUy5ZZgx/HxYilfT+AaEy02xkC+QQK3B/nGK5jtiM5/ahkQHZPK50Vw/6ZZimTStslmlaI4qRTmpEFSiSKxEJjdtUvjqiXPJ+1Clw2VoNxKUG4pTAiOivXQQjUPdXxi+VdL+Z59LcWrbvzq81SmPaYvRxw2GcZ7KsK3BYJYx6lyegwXdllmDOVELO/0cbSAxDc3ZLh56ounbieZhQxfElN0VDM/wWysr8UOuwICc4PVEeo9qGU6rLN8vFWbD1xn5snyplDXhm75cJqbnqUOHZlN5OPzH964N6gIAgAA", + "class_url": "20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&65&66&67&68&69&70&71&72" + }, + { + "name": "量子资源", + "url": "https://cj.lziapi.com", + "parse_url": "", + "cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片|电影解说|体育|演员|新闻资讯", + "class_name": "H4sIALGjdWYC/zWR607DMAyF3ybPCbuxDom1Yms3UTEJtmWI0bSMAr1kvEzspG9B46S/8h3b8XEcvSpBFjq4Y+bvWTcfEHCmm9YEtY3B4oTtuyclU6I47Yss6XmB4ykRj6BqLOFtiDcx1QXcZ3G+UXVAsSepam49uuMWfwXR7q0PW8Iz19cHSybLQa7pxjLH6krZ5IDpmaj8gX1MdMn9XdjzbjtzkzPbeZkPIjn0FoMgCy/8NPRGXzYIN4kX1G0QztsJ1R51OKMF0BoNfzXiiyn5aEafzHxfdDhmWmR0yMgeGAsjapjeM2xXEG36QN4ljSknJhNDGyfgVKgqdHnWvUwgWpDVzn7SP/ilxw64AQAA", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46" + }, + { + "name": "非凡资源", + "url": "http://cj.ffzyapi.com", + "parse_url": "", + "cate_exclude": "电影片|连续剧|动漫片|综艺片|伦理片", + "class_name": "H4sIAFhXhmYC/zWQWw6CMBBFd8M6NUakfggmChKJ/ADViFpiiPIobqadwi6kQ/k7d153ZtShlLxQZGP1v4tqHpJQSzVtT2odk9srtHdDgkdIfjQWaVJOAas1Et3LqtEESw8WPtYRarLgnERNMHbmoqbaY8hC+L6Q4tsY1gQ5Vd1OU/9kkh+xw2VQdZgNUohypPIjEx/pzUyvTOgQ2tPmlp7sslkE6WgxC7QwwmyDN5qyWUybGIHTZjF5T0K0mfJsfECsP/cHYziM500BAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36" + }, + { + "name": "索尼资源", + "url": "https://suoniapi.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|体育赛事|预告片|影视解说|爽文短剧|伦理|港台三级|两性课堂|写真热舞", + "class_name": "H4sIAFlXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70" + }, + { + "name": "快车资源", + "url": "https://caiji.kczyapi.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|预告片|伦理|影视解说|体育赛事|港台三级|两性课堂|写真热舞", + "class_name": "H4sIAFZXhmYC/z1RbXaCMBC8TU7QW/RSip/oq8orxVp56hNoaqtFq1gFopfJZsMtGhLor93Z3czuTNBNgB0IuomkXbApwSyXdkpg8CHyrzJw5qPdI+D5ql1m2D+IVkdn1IFrVmaiORENT8/ZtOqK/itPbV2bM57Skl1sKd5GZVYsN7owjXS4xGWA8V6jow6YfgJ70VTJL4SenghpMetWR6rHiqYGimK8r4HeU2sx640i86YG5px/regaNZqqnjG7K5C74B54/kY4e5bWj0zmPB0SjL9x0iLyfCxDsW6DM9BEXizjFDpDokxWBksayPikHGTC6+FyVyri+TtOutVOfrExNeaoo01HRnfhXeuxaST8bQX4JRQNKuMbrCwC3Rn6S2ztZH9BHh7RfKzwbQhqKRAdi7UjmkP1hcrrJ8m26hRjfCiDDs9m/LYicD3xLMDNXZ4HRLYdcVoIa4ueQ3C0V52ixeBikcJKxH5s9vwBtOQp10cCAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&23&25&26&27&28&29&30&31&39&44&45&47&48&49&50&51&52&53&54&55&56&57&58&59&60&61&62&63&64&65&66&67&68&69&70" + }, + { + "name": "️极速资源", + "url": "https://jszyapi.com", + "parse_url": "", + "cate_exclude": "电视剧|电影|动漫|综艺|短剧|伦理片", + "api": "/api.php/provide/vod/at/json/", + "class_name": "H4sIAGJXhmYC/zVP0W7CMBD7m3znYKIQkICKUsaoxMsgsBUooEpQmn5N7i79iyVH+hTbsXw2JaVVEUglKClBXwXmipqpF9r9Gh8XRtujf3C1Y3bM8V54ZOo9zSOSQwHjg9GZRzS64ueAtTRzJtZUDM+XR9ib40fKv1IFH46+TCU9sucC9DLkYf0nIBpAxqecQAlHmMcJNjoYXCXM8o68q78JvWorKwGzAp8Nl9UL27/ZcmOqiYAf1a6j4HEhbmFH3ORZ0RFODIR6TfvdcON+TmnMy8YX0r/ceDcMG2l7cvf+AYiMpdZZAQAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&20&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38" + }, + { + "name": "光速资源", + "url": "https://api.guangsuapi.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|记录片|伦理片|体育赛事|短剧", + "class_name": "H4sIAFVXhmYC/y2Oaw6CMBCEb9Nz+ohINVGMiBpJ+KNW4gskJPJoT9PulltIF3/Nl5nJ7GJYGpkzDEsrPMMFw6a1vGZmcYP27kTLGPmcmSjuY0fo5zCdEYmNqRpKufh7MA5gFBH5B11zSs+iO9I6PASqFdH3Dapw1CWpk+EiDv/A/kLeOoNKUb3InNhXZuTOber2ioFHJLd28rHlSddLhsmz7/0A4RcQUdYAAAA=", + "class_url": "1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&23&24&25&30&31" + }, + { + "name": "卧龙资源", + "url": "https://collect.wolongzy.cc", + "parse_url": "", + "cate_exclude": "电影片|连续剧|综艺片|动漫片|伦理片|电影解说|体育|短剧", + "class_name": "H4sIAFZXhmYC/1WR0VLCQAxF/6bfqXQsbB9omYEq2JEHKqtQ2iIC0nbxZ5pk+Qt303VG307uZnJvsjQ9gtqTGHr6+4WaHQjpUdNqUVsNwjdst446lTIlqWmyRKM9+g9McgKXxhLex3iXcJ+Q7hVHT10tWHtWXS2tx209x6+SafluZEuYS7qOLUFU4eXK2uMrpjnT8QxZYkkXFagZ+y53LhxNmz8GHPt3niv6Qa4w1lHV7+kCuAIyeZsHrsBD9S+ak4lvpuVKl58e+iEOFuxdnKDu80SZXvHqMA4g+uAjDHJKJhw6LEltmMqCYt/r2jXFAf/B6WAFs5Yx/QEG4wmPmwEAAA==", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&22&23&24&25&26&27&30&31&32&33&37&38&39&42&43&44&45&46&48&49&51&54" + }, + { + "name": "天空资源", + "url": "https://m3u8.tiankongapi.com", + "parse_url": "", + "cate_exclude": "电影|连续剧|动漫|综艺|伦理片|电影解说|体育赛事|短剧", + "api": "/api.php/provide/vod/from/tkm3u8/", + "class_name": "H4sIAFdXhmYC/zVQW3LCMAy8jc/JYygknSllCqGUTPkoYAphEqCB4uD0Mrbk3KK2Yn95V9autMJpqeWJodhrOcNoyMzfJ1ZHHXEGGcf6xaFmu4Df3CEd75RMXR+OTtAfEOITfa8cgu4rdBKHbK//hdG7EhHVktSWCcU7nJIC4xzlnmpLqQSnaatvS/w0eBwYVg8TCabXvFk8eeL2GReBzDdWFAitHTTjAu41ebX+raMVQJoF0ub0pLzpdRLIpfCbWIF7kK5l+JfJf5jeDH1u7NbNR01pexkmE8ozuKqKbqHkm+mdTblU4pnhyt32H73g+qZ2AQAA", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&44" + }, + { + "name": "百度云资源", + "url": "https://api.apibdzy.com", + "parse_url": "", + "cate_exclude": "电影|电视剧|综艺|动漫|伦理片|纪录片|体育赛事|资讯", + "class_name": "H4sIAFdXhmYC/zVP7W7CMAx8mzzn1vGVTgKqla4TSEgTLMAQLaBMkDZ9msRO32KNm/67O9t3Z0yl1VeGqXRiYrlgWNWOK2bjA9S/zNQ/uJwgn3rB6A2hbNMteoSzK7yNCYnEPiuP4HUJLxntcRGmMMuN4qTtRPtFOfAooLl71G6PJHzuKV+drF6RZ1ygPoVsTCvsq9pFCc+GLs4Cm7lHdvxnqoy0e0kC5YRfOucuYyCPonMYCDkML6+1USI83t8MpA8KJDpjlvhabSShXIRaRn+46Obk2qh35uTIXQrWjwKBfA75NpD2e2ST+B8HkFGOfQEAAA==", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&36&37&38&39" + }, + { + "name": "无尽资源", + "url": "https://api.wujinapi.me", + "parse_url": "", + "cate_exclude": "电影|连续剧|综艺|动漫|伦理片|体育赛事|影视解说|短剧|预告片|资讯|公告|头条|港台三级|韩国伦理|西方伦理|日本伦理|两性课堂|写真热舞", + "class_name": "H4sIAFhXhmYC/zVRWVbCQBC8zZxTwxp8CnliFI2AEhzUaIIQhSxwmeklt3Ayk/xVdVe/7qqmaQrlVvB5TvkXuFJQXrCbCRhtsPgUnHb5O66ZKgNyBwL8QKtqRMMtdnoGSQ+OeY3wcoIXvtG5suni8EFlrqk9lSqT9ZLqbYaHuEYwTvB4MotPN1pgar0IvJGAcI/PL0IVbzTpmz3ZB5R3NaoW740W79cYRAalfxD6Zj6U1azfGNECrW6JXjpOWhJJvbP1a2+zru1MS4ysJU5EvmfMjDY0NaZpFFP5YWrrQRNE5aSYjMmGi7ukPkuVt+z8cPqksitB8TdNOkK3WfZZrjjeC1qYD9gj24XWVUOKKUy3qngU/Lurx6vXrk7KpGyG1MGlTDbx2OAEr8/oHxti42qIOoR4ITk+wdIR0J9RsKDOFw/nAgMXVu0JsN5Vrx5eXumP639dcxnR0ITPXQ/3c5uJgONe5St6P/Ov/t045FVP5TN1Wgq6SXSn6pRwcP4BxMt0fHACAAA=", + "class_url": "1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42&43&44&45&46&47&48&49&50&51&52&53&54&55&56&57&58&59" + } +] \ No newline at end of file diff --git a/xiaosa/PY/猎手影视.py b/xiaosa/PY/猎手影视.py new file mode 100644 index 00000000..1a6a4d76 --- /dev/null +++ b/xiaosa/PY/猎手影视.py @@ -0,0 +1,279 @@ +# coding=utf-8 +# !/usr/bin/python +# by嗷呜(finally) +import sys +import os +sys.path.append("..") +import re +import hashlib +import hmac +import random +import string +from Crypto.Util.Padding import unpad +from concurrent.futures import ThreadPoolExecutor +from Crypto.PublicKey import RSA +from Crypto.Cipher import PKCS1_v1_5, AES +from base64 import b64encode, b64decode +import json +import time +from base.spider import Spider + +class Spider(Spider): + + def getName(self): + return "电影猎手" + + def init(self, extend=""): + self.device = self.device_id() + self.host = self.gethost() + pass + + def isVideoFormat(self, url): + pass + + def manualVideoCheck(self): + pass + + def action(self, action): + pass + + def destroy(self): + pass + + t = str(int(time.time())) + + def homeContent(self, filter): + result = {} + filters = {} + classes = [] + bba = self.url() + data = self.fetch(f"{self.host}/api/v1/app/config?pack={bba[0]}&signature={bba[1]}", headers=self.header()).text + data1 = self.aes(data) + dy = {"class":"类型","area":"地区","lang":"语言","year":"年份","letter":"字母","by":"排序","sort":"排序"} + data1['data']['movie_screen']['sort'].pop(0) + for item in data1['data']['movie_screen']['sort']: + item['n'] = item.pop('name') + item['v'] = item.pop('value') + for item in data1['data']['movie_screen']['filter']: + has_non_empty_field = False + classes.append({"type_name": item["name"], "type_id": str(item["id"])}) + for key in dy: + if key in item and item[key]: + has_non_empty_field = True + break + if has_non_empty_field: + filters[str(item["id"])] = [] + filters[str(item["id"])].append( + {"key": 'sort', "name": '排序', "value": data1['data']['movie_screen']['sort']}) + for dkey in item: + if dkey in dy and item[dkey]: + item[dkey].pop(0) + value_array = [ + {"n": value.strip(), "v": value.strip()} + for value in item[dkey] + if value.strip() != "" + ] + filters[str(item["id"])].append( + {"key": dkey, "name": dy[dkey], "value": value_array} + ) + result["class"] = classes + result["filters"] = filters + return result + + def homeVideoContent(self): + bba = self.url() + url = f'{self.host}/api/v1/movie/index_recommend?pack={bba[0]}&signature={bba[1]}' + data = self.fetch(url, headers=self.header()).json() + videos = [] + for item in data['data']: + if len(item['list']) > 0: + for it in item['list']: + try: + videos.append(self.voides(it)) + except Exception as e: + continue + result = {"list": videos} + return result + + def categoryContent(self, tid, pg, filter, extend): + body = {"type_id": tid, "sort": extend.get("sort", "by_default"), "class": extend.get("class", "类型"), + "area": extend.get("area", "地区"), "year": extend.get("year", "年份"), "page": str(pg), + "pageSize": "21"} + result = {} + list = [] + bba = self.url(body) + url = f"{self.host}/api/v1/movie/screen/list?pack={bba[0]}&signature={bba[1]}" + data = self.fetch(url, headers=self.header()).json()['data']['list'] + for item in data: + list.append(self.voides(item)) + result["list"] = list + result["page"] = pg + result["pagecount"] = 9999 + result["limit"] = 90 + result["total"] = 999999 + return result + + def detailContent(self, ids): + body = {"id": ids[0]} + bba = self.url(body) + url = f'{self.host}/api/v1/movie/detail?pack={bba[0]}&signature={bba[1]}' + data = self.fetch(url, headers=self.header()).json()['data'] + video = {'vod_name': data.get('name'),'type_name': data.get('type_name'),'vod_year': data.get('year'),'vod_area': data.get('area'),'vod_remarks': data.get('dynami'),'vod_content': data.get('content')} + play = [] + names = [] + tasks = [] + for itt in data["play_from"]: + name = itt["name"] + a = [] + if len(itt["list"]) > 0: + names.append(name) + play.append(self.playeach(itt['list'])) + else: + tasks.append({"movie_id": ids[0], "from_code": itt["code"]}) + names.append(name) + if tasks: + with ThreadPoolExecutor(max_workers=len(tasks)) as executor: + results = executor.map(self.playlist, tasks) + for result in results: + if result: + play.append(result) + else: + play.append("") + video["vod_play_from"] = "$$$".join(names) + video["vod_play_url"] = "$$$".join(play) + result = {"list": [video]} + return result + + def searchContent(self, key, quick, pg=1): + body = {"keyword": key, "sort": "", "type_id": "0", "page": str(pg), "pageSize": "10", + "res_type": "by_movie_name"} + bba = self.url(body) + url = f"{self.host}/api/v1/movie/search?pack={bba[0]}&signature={bba[1]}" + data = self.fetch(url, headers=self.header()).json()['data'].get('list') + videos = [] + for it in data: + try: + videos.append(self.voides(it)) + except Exception as e: + continue + result = {"list": videos, "page": pg} + return result + + def playerContent(self, flag, id, vipFlags): + url = id + if "m3u8" not in url and "mp4" not in url: + try: + add = id.split('|||') + data = {"from_code": add[0], "play_url": add[1], "episode_id": add[2], "type": "play"} + bba = self.url(data) + data2 = self.fetch(f"{self.host}/api/v1/movie_addr/parse_url?pack={bba[0]}&signature={bba[1]}", + headers=self.header()).json()['data'] + url = data2.get('play_url') or data2.get('download_url') + try: + url1 = self.fetch(url, headers=self.header(), allow_redirects=False).headers['Location'] + if url1 and "http" in url1: + url = url1 + except: + pass + except Exception as e: + pass + if '.jpg' in url or '.jpeg' in url or '.png' in url: + url = self.getProxyUrl() + "&url=" + b64encode(url.encode('utf-8')).decode('utf-8') + "&type=m3u8" + result = {} + result["parse"] = 0 + result["url"] = url + result["header"] = {'user-agent': 'okhttp/4.9.2'} + return result + + def localProxy(self, param): + url = b64decode(param["url"]).decode('utf-8') + durl = url[:url.rfind('/')] + data = self.fetch(url, headers=self.header()).content.decode("utf-8") + lines = data.strip().split('\n') + for index, string in enumerate(lines): + # if 'URI="' in string and 'http' not in string: + # lines[index] = index + # 暂时预留,貌似用不到 + if '#EXT' not in string and 'http' not in string: + lines[index] = durl + ('' if string.startswith('/') else '/') + string + data = '\n'.join(lines) + return [200, "application/vnd.apple.mpegur", data] + + def device_id(self): + characters = string.ascii_lowercase + string.digits + random_string = ''.join(random.choices(characters, k=32)) + return random_string + + def gethost(self): + headers = { + 'User-Agent': 'okhttp/4.9.2', + 'Connection': 'Keep-Alive', + } + response = self.fetch('https://app-site.ecoliving168.com/domain_v5.json', headers=headers).json() + url = response['api_service'].replace('/api/', '') + return url + + def header(self): + headers = { + 'User-Agent': 'Android', + 'Accept': 'application/prs.55App.v2+json', + 'timestamp': self.t, + 'x-client-setting': '{"pure-mode":1}', + 'x-client-uuid': '{"device_id":' + self.device + '}, "type":1,"brand":"Redmi", "model":"M2012K10C", "system_version":30, "sdk_version":"3.1.0.7"}', + 'x-client-version': '3096 ' + } + return headers + + def url(self, id=None): + if not id: + id = {} + id["timestamp"] = self.t + public_key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA02F/kPg5A2NX4qZ5JSns+bjhVMCC6JbTiTKpbgNgiXU+Kkorg6Dj76gS68gB8llhbUKCXjIdygnHPrxVHWfzmzisq9P9awmXBkCk74Skglx2LKHa/mNz9ivg6YzQ5pQFUEWS0DfomGBXVtqvBlOXMCRxp69oWaMsnfjnBV+0J7vHbXzUIkqBLdXSNfM9Ag5qdRDrJC3CqB65EJ3ARWVzZTTcXSdMW9i3qzEZPawPNPe5yPYbMZIoXLcrqvEZnRK1oak67/ihf7iwPJqdc+68ZYEmmdqwunOvRdjq89fQMVelmqcRD9RYe08v+xDxG9Co9z7hcXGTsUquMxkh29uNawIDAQAB' + encrypted_text = json.dumps(id) + public_key = RSA.import_key(b64decode(public_key)) + cipher = PKCS1_v1_5.new(public_key) + encrypted_message = cipher.encrypt(encrypted_text.encode('utf-8')) + encrypted_message_base64 = b64encode(encrypted_message).decode('utf-8') + result = encrypted_message_base64.replace('+', '-').replace('/', '_').replace('=', '') + key = '635a580fcb5dc6e60caa39c31a7bde48' + sign = hmac.new(key.encode(), result.encode(), hashlib.md5).hexdigest() + return result, sign + + def playlist(self, body): + try: + bba = self.url(body) + url = f'{self.host}/api/v1/movie_addr/list?pack={bba[0]}&signature={bba[1]}' + data = self.fetch(url, headers=self.header()).json()['data'] + return self.playeach(data) + except Exception: + return [] + + def playeach(self,data): + play_urls = [] + for it in data: + if re.search(r"mp4|m3u8", it["play_url"]): + play_urls.append(f"{it['episode_name']}${it['play_url']}") + else: + play_urls.append( + f"{it['episode_name']}${it['from_code']}|||{it['play_url']}|||{it['episode_id']}" + ) + return '#'.join(play_urls) + + def voides(self, item): + if item['name'] or item['title']: + voide = { + "vod_id": item.get('id') or item.get('click'), + 'vod_name': item.get('name') or item.get('title'), + 'vod_pic': item.get('cover') or item.get('image'), + 'vod_year': item.get('year') or item.get('label'), + 'vod_remarks': item.get('dynamic') or item.get('sub_title') + } + return voide + + def aes(self, text): + text = text.replace('-', '+').replace('_', '/') + '==' + key = b"e6d5de5fcc51f53d" + iv = b"2f13eef7dfc6c613" + cipher = AES.new(key, AES.MODE_CBC, iv) + pt = unpad(cipher.decrypt(b64decode(text)), AES.block_size).decode("utf-8") + return json.loads(pt) diff --git a/xiaosa/XBPQ/修罗影视.json b/xiaosa/XBPQ/修罗影视.json new file mode 100644 index 00000000..88d0f732 --- /dev/null +++ b/xiaosa/XBPQ/修罗影视.json @@ -0,0 +1,35 @@ +{ + "站名": "修罗影视", + "请求头": "User-Agent@Mozilla/5.0 (Linux;; Android 12;; PEHM00 Build/SKQ1.210216.001;; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.108 Mobile Safari/537.36", + "编码": "UTF-8", + "图片代理": "0", + "直接播放": "0", + "主页url": "http://v.xlys.ltd.ua", + "分类url": "http://v.xlys.ltd.ua/s/{cateId}/{catePg}", + "分类": "动作$dongzuo#爱情$aiqing#喜剧$xiju#科幻$kehuan#恐怖$kongbu#战争$zhanzheng#武侠$wuxia#魔幻$mohuan#剧情$juqing#动画$donghua#惊悚$jingsong#灾难$zainan#悬疑$xuanyi#警匪$jingfei#文艺$wenyi#青春$qingchun#冒险$maoxian#犯罪$fanzui#纪录$jilu#古装$guzhuang#奇幻$qihuan#国语$guoyu#综艺$zongyi#历史$lishi#运动$yundong#原创压制$yuanchuang#美剧$meiju#韩剧$hanju#国产电视剧$guoju#日剧$riju#英剧$yingju#德剧$deju#俄剧$eju#巴剧$baju#加剧$jiaju#西剧$spanish#意大利剧$yidaliju#泰剧$taiju#港台剧$gangtaiju#法剧$faju#澳剧$aoju", + "数组": "card-link&&/h3>", + "标题": "&&<", + "图片": "src=\"&&\"", + "副标题": "red-fg\">&&<", + "链接": "href=\"&&\"", + "影片年代": "上映日期:&&

", + "影片地区": "地区:&&

", + "影片类型": "类型:&&

", + "状态": "豆瓣 :&&", + "导演": "导演:&&

", + "主演": "主演:&&", + "线路数组": "download-list\">&&", + "线路标题": "磁力", + "播放二次截取": "", + "播放数组": "&&", + "倒序": "0", + "播放列表": "", + "播放标题": ">&&<", + "播放链接": "", + "解析": "", + "跳转播放链接": "", + "跳转解析": "", + "搜索请求头": "User-Agent$MOBILE_UA", + "搜索url": "http://v.xlys.ltd.ua/search/{wd}/{pg}" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/可可影视.json b/xiaosa/XBPQ/可可影视.json new file mode 100644 index 00000000..5d7c98f3 --- /dev/null +++ b/xiaosa/XBPQ/可可影视.json @@ -0,0 +1,8 @@ +{ + "简介": "detail-content\" style=*>&&", + "数组": "stui-vodlist__box\">&&", + "副标题": "pic-text text-right\">&&", + "播放列表": "", + "分类url": "https://www.kmxibanyayu.com/vs/{cateId}-{area}--{class}-----{catePg}---{year}.html", + "分类": "短剧$duanju#电视剧$dianshiju#电影$dianying#动漫$dongman#综艺$zongyi" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/吉吉短剧.json b/xiaosa/XBPQ/吉吉短剧.json new file mode 100644 index 00000000..c3420937 --- /dev/null +++ b/xiaosa/XBPQ/吉吉短剧.json @@ -0,0 +1,4 @@ +{ + "分类": "短剧$1#电视剧$2", + "分类url": "https://www.jjduanju.com/sort/{cateId}/page/{catePg}.html" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/哆啦新番社.json b/xiaosa/XBPQ/哆啦新番社.json new file mode 100644 index 00000000..66177661 --- /dev/null +++ b/xiaosa/XBPQ/哆啦新番社.json @@ -0,0 +1,18 @@ +{ + "请求头": "User-Agent$MOBILE_UA", + "编码": "UTF-8", + "主页url": "https://dora.xiaoxinbk.com/", + "数组": "class=\"card-img-bili\"&&", + "标题": "alt=\"&&\"", + "图片": "data-url=\"&&\"", + "链接": "href=\"&&\"", + "线路标题": "mt-0\">&&", + "播放数组": "class=\"card-body button-list\"&&", + "播放列表": "", + "播放链接": "href=\"&&\"", + "播放标题": ">&&&&", + "简介": "◎简*介

&&

", + "导演": "◎导*演&&
", + "主演": "◎主*演&&
", + "影片年代": "◎上映 日期&&
", + "影片地区": "◎产*地&&
", + "线路数组": "entry-content u-text-format u-clearfix&&\"content-template", + "线路标题": "磁力", + "播放数组": "entry-content u-text-format u-clearfix&&\"content-template", + "播放列表": "

&&

[包含:magnet]", + "播放链接": "*\">&&", + "分类": "4K蓝光原盘$4kuhd#4K电影$4kmovie#4K剧集$4ktv#杜比视界$dolbyvision#4K纪录片$4kdocu#4K演示片$4kdemo/4ktv-4ktv#杜比演示片$4kdemo/dolbydomo#DTS演示片$4kdemo/dtsdomo#8K演示片$4kdemo/8kdemo#蓝光电影$bluraymovie/bluray-movie#蓝光剧集$bluraymovie/bluraytv#3D蓝光$bluraymovie/3dmovie#蓝光纪录片$bluraymovie/documentary#蓝光演唱会$bluraymovie/audiotest", + "分类url": "https://www.bugutv.org/{cateId}/page/{catePg}" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/樱花影视.json b/xiaosa/XBPQ/樱花影视.json new file mode 100644 index 00000000..2ca57751 --- /dev/null +++ b/xiaosa/XBPQ/樱花影视.json @@ -0,0 +1,5 @@ +{ + "线路标题": "

&&

", + "分类url": "https://yinghuadm.fun/vodshow/{cateId}-{area}--{class}-----{catePg}---{year}.html", + "分类": "电影$1#剧集$2#综艺$3#动漫$4" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/永乐影视.json b/xiaosa/XBPQ/永乐影视.json new file mode 100644 index 00000000..44f77060 --- /dev/null +++ b/xiaosa/XBPQ/永乐影视.json @@ -0,0 +1,7 @@ +{ + "请求头": "User-Agent$MOBILE_UA", + "编码": "UTF-8", + "分类": "电影$1#电视剧$2#综艺$3#动漫$4", + "类型": "动作片$6#喜剧片$7#爱情片$8#科幻片$9#奇幻片$10#恐怖片$11#剧情片$12#战争片$20#动画片$26#悬疑片$22#冒险片$23#犯罪片$24#惊悚片$45#歌舞片$46#灾难片$47#网络片$48||国产剧$13#港台剧$14#日剧$15#韩剧$33#欧美剧$16#泰剧$34#新马剧$35#其他剧$25||内地综艺$27#港台综艺$28#日本综艺$29#韩国综艺$36#欧美综艺$30#新马泰综艺$37#其他综艺$38||国产动漫$31#日本动漫$32#韩国动漫$39#港台动漫$40#新马泰动漫$41#欧美动漫$42#其他动漫$43", + "分类url": "https://www.ylys.tv/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/流光影视.json b/xiaosa/XBPQ/流光影视.json new file mode 100644 index 00000000..f6ebcb20 --- /dev/null +++ b/xiaosa/XBPQ/流光影视.json @@ -0,0 +1,17 @@ +{ + "首页": "0", + "播放链接前缀": "https://www.gyf.lol", + "数组": "public-list-box&&", + "图片": "data-src=\"&&\"", + "标题": "title=\"&&\"", + "副标题": "class=\"public-prt hide ol2\">&&", + "链接": "href=\"&&\"", + "线路数组": "swiper-slide&&", + "线路标题": "&&", + "播放列表": "", + "播放标题": "html\">&&", + "播放链接": "href=\"&&\"", + "分类url": "https://www.gyf.lol/index.php/vod/show/area/{area}/by/{by}/class/{class}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html", + "分类": "电影$1#剧集$2#综艺$3#动漫$4#短剧$21#少儿$22" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/海纳影视.json b/xiaosa/XBPQ/海纳影视.json new file mode 100644 index 00000000..4b90fecb --- /dev/null +++ b/xiaosa/XBPQ/海纳影视.json @@ -0,0 +1,6 @@ +{ + "简介": "简介:&&", + "数组": "row\">&&", + "分类url": "https://www.hainatv.net/index.php/vod/show/area/{area}/id/{cateId}/lang/{lang}/page/{catePg}/year/{year}.html", + "分类": "电影$1#电视剧$2#综艺$3#动漫$4#短剧$59" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/爱我短剧.json b/xiaosa/XBPQ/爱我短剧.json new file mode 100644 index 00000000..cf3bd09c --- /dev/null +++ b/xiaosa/XBPQ/爱我短剧.json @@ -0,0 +1,25 @@ +{ + "请求头": "User-Agent$MOBILE_UA", + "主页url": "https://www.aiwodj.com", + "数组": "lazy lazyloaded&&>]", + "图片": "data-src=\"&&\"", + "标题": "title=\"&&\"", + "链接": "href=\"&&\"", + "副标题": "+module-item-caption\">&&&&", + "播放列表": "", + "播放标题": "span>&&", + "播放链接": "href=\"&&\"", + "跳转播放链接": "urlDecode(var player_*\"url\":\"&&\")", + "搜索url": "https://www.aiwodj.com/vodsearch/{wd}----------{pg}---.html", + "搜索数组": "lazy lazyload&&>]", + "搜索图片": "data-src=\"&&\"", + "搜索标题": "+title=\"&&\"", + "搜索链接": "href=\"&&\"", + "分类url": "https://www.aiwodj.com/vodshow/{cateId}--{by}-{class}-{lang}----{catePg}---{year}.html", + "分类": "穿越&战神&重生&爱情&萌娃&神医&古代&玄幻&言情", + "分类值": "fenle&fenlei2&fenlei3&fenlei4&guda&shenyi&gudai&xuanhuan&yanqing" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/皮皮虾.json b/xiaosa/XBPQ/皮皮虾.json new file mode 100644 index 00000000..8735b915 --- /dev/null +++ b/xiaosa/XBPQ/皮皮虾.json @@ -0,0 +1,6 @@ +{ + "首页": "0", + "线路标题": "module-tab-value\">&&", + "分类url": "http://www.ppxys.vip/s/{cateId}/area/{area}/by/{by}/class/{class}/lang/{lang}/letter/{letter}/page/{catePg}/year/{year}.html", + "分类": "剧集$1#电影$2#动漫番剧$3" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/短剧网.json b/xiaosa/XBPQ/短剧网.json new file mode 100644 index 00000000..1d5f5a75 --- /dev/null +++ b/xiaosa/XBPQ/短剧网.json @@ -0,0 +1,4 @@ +{ + "分类": "短剧$duanju#电影$dianying#电视剧$dianshiju#动漫$dongman#综艺$zongyi", + "分类url": "https://www.duanjuwang.cc/vodtype/{cateId}/page/{catePg}.html" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/雪糕影视.json b/xiaosa/XBPQ/雪糕影视.json new file mode 100644 index 00000000..d90a276d --- /dev/null +++ b/xiaosa/XBPQ/雪糕影视.json @@ -0,0 +1,5 @@ +{ + "分类": "电影$1#剧集$2#综艺$3#动漫$4", + "类型": "动作片$1#喜剧片$2#爱情片$21#海外动漫$3#科幻片$4#恐怖片$5#剧情片$6#战争片$7#纪录片$8#其他$9", + "分类url": "https://www.xgitv.com/vshow/{cateId}-----------.html" +} \ No newline at end of file diff --git a/xiaosa/XBPQ/面包影视.json b/xiaosa/XBPQ/面包影视.json new file mode 100644 index 00000000..d9433726 --- /dev/null +++ b/xiaosa/XBPQ/面包影视.json @@ -0,0 +1,7 @@ +{ + "请求头": "User-Agent$MOBILE_UA", + "编码": "UTF-8", + "分类url": "https://v.aiwule.com/vodshow/{cateId}-{area}-{by}-{class}-{lang}-{letter}---{catePg}---{year}.html", + "分类": "电影$20#电视剧$21#动漫$23#综艺$22#短剧$47", + "简介": "简介:&&" +} \ No newline at end of file diff --git a/xiaosa/XYQHiker/BT天堂.json b/xiaosa/XYQHiker/BT天堂.json new file mode 100644 index 00000000..b49de57c --- /dev/null +++ b/xiaosa/XYQHiker/BT天堂.json @@ -0,0 +1,71 @@ +{ + "规则名": "BT天堂", + "规则作者": "", + "请求头参数": "PC_UA", + "网页编码格式": "UTF-8", + "图片是否需要代理": "0", + "是否开启获取首页数据": "1", + "首页推荐链接": "https://www.bttt11.com", + "首页列表数组规则": "body&&.ul-imgtxt1", + "首页片单列表数组规则": "li", + "首页片单是否Jsoup写法": "1", + "首页片单标题": "h3&&Text", + "首页片单链接": "a&&href", + "首页片单图片": "img&&src", + "首页片单副标题": "span,-1&&Text", + "首页片单链接加前缀": "https://www.bttt11.com", + "首页片单链接加后缀": "", + "分类起始页码": "0", + "分类链接": "https://www.bttt11.com/html/{cateId}-{catePg}.html", + //"分类链接": "https://www.clgod.xyz/list/{catePg}-{cateId}-0-0.html", + "分类名称": "欧美电影&日韩电影&港台电影&大陆电影&亚太电影&欧美剧&日韩剧&港台剧&国产剧&亚太剧&动漫&综艺&纪录片", + "分类名称替换词": "1&2&3&4&5&6&7&8&9&10&11&12&13", + //"分类名称": "电影&动作&灵异&奇幻&宗教&励志&犯罪&功夫&喜剧&黑色&幽默&爱情&香港&纪录片&灾难&亲情&暴力&僵尸&丧尸&悬疑&人性&惊悚&血腥&武侠&剧情&历史&战争&经典&漫画&改编&恐怖&穿越&青春&黑帮&文艺&浪漫&同志&冒险&动画&演唱会", + //"分类名称替换词": "0&1&2&3&4&5&6&7&8&10&11&12&1315&16&17&18&19&20&21&22&23&24&25&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42", + "筛选数据": {}, + "分类截取模式": "1", + "分类列表数组规则": ".ul-imgtxt2&&li", + "分类片单是否Jsoup写法": "1", + "分类片单标题": "h3&&Text", + "分类片单链接": "a&&href", + "分类片单图片": "img&&src", + "分类片单副标题": "span,-1--a&&Text!更新时间:", + "分类片单链接加前缀": "https://www.bttt11.com", + "分类片单链接加后缀": "", + "搜索请求头参数": "User-Agent$PC_UA", + "搜索链接": "https://www.bttt11.com/e/search/;post", + "POST请求数据": "show=title,newstext&keyboard={wd}&searchtype=影视搜索", + "搜索截取模式": "1", + "搜索列表数组规则": ".ul-imgtxt2&&li", + "搜索片单是否Jsoup写法": "1", + "搜索片单图片": "img&&src", + "搜索片单标题": "h3&&Text", + "搜索片单链接": "a&&href", + "搜索片单副标题": "span,-1--a&&Text!更新时间:", + "搜索片单链接加前缀": "https://www.bttt11.com", + "搜索片单链接加后缀": "", + "链接是否直接播放": "0", + "直接播放链接加前缀": "", + "直接播放链接加后缀": "", + "直接播放直链视频请求头": "", + "详情是否Jsoup写法": "0", + "类型详情": "

◎类  别&&

", + "年代详情": "

◎年  代&&

", + "地区详情": "

◎产  地&&

", + "演员详情": "", + "简介详情": "", + "线路列表数组规则": "", + "线路标题": "", + "播放列表数组规则": "body&&.container", + "选集列表数组规则": "a[href^=magnet]||a[href^=ed2K]", + "选集标题链接是否Jsoup写法": "1", + "选集标题": "Text", + "选集链接": "a&&href", + "是否反转选集序列": "0", + "选集链接加前缀": "", + "选集链接加后缀": "", + "分析MacPlayer": "0", + "是否开启手动嗅探": "0", + "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv", + "手动嗅探视频链接过滤词": ".html" +} \ No newline at end of file diff --git a/xiaosa/XYQHiker/电影港.json b/xiaosa/XYQHiker/电影港.json new file mode 100644 index 00000000..85fda74f --- /dev/null +++ b/xiaosa/XYQHiker/电影港.json @@ -0,0 +1,131 @@ +//写法思路来海阔视界,xpath筛选。本人是海阔用户,所以搬了海阔的jsoup写法过来。2022年9月17日 +//jsoup规则写法请查阅海阔视界或者海阔影视相关教程。不支持js写法 +//本文档为完整模板,请不要去无中生有添加多余的键值参数。 +{ + //规则名 + "title": "电影港", + //作者 + "author": "香雅情", + //请求头UA,键名$键值,每一组用#分开,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA + //多个请求头参数写法示例,"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok",每一组用#分开。 + //习惯查看手机源码写建议用手机版UA,习惯查看PC版源码写建议用电脑版UA + "Headers":"PC_UA", + //网页编码格式默认UTF-8编码,UTF-8,GBK,GB2312 + "Coding_format":"gb2312", + //图片是否需要代理 + "PicNeedProxy":"0", + //是否开启获取首页数据,0关闭,1开启 + "homeContent":"0", + //分类链接起始页码,禁止负数和含小数点。 + "firstpage": "1", + //分类链接,{cateId}是分类,{catePg}是页码,第一页没有页码的可以这样写 第二页链接[firstPage=第一页的链接] + "class_url": "https://www.dygang.tv/{cateId}/index_{catePg}.htm[firstPage=https://www.dygang.cc/{cateId}/index.htm]", + //分类名,分类1&分类2&分类3 + "class_name": "最新电影&经典高清&国配电影&经典港片&国剧&日韩剧&美剧&综艺&动漫&纪录片&高清原盘&4K高清区&3D电影&电影专题", + //分类名替换词,替换词1&替换词2&替换词3,替换词包含英文&的用两个中文&&代替,示例:&&id=0&&&id=1 + "class_value": "ys&bd&gy&gp&dsj&dsj1&yx&zy&dmq&jilupian&1080p&4K&3d&dyzt", + //筛选数据,json格式,参考xpath的筛选写法 + "filterdata":{}, + + //分类页面截取数据模式,0为json,其它数字为普通网页。 + "cat_mode": "1", + //分类列表数组定位,最多支持3层,能力有限,不是所有页面都能支持 + "cat_arr_rule": "body&&table[width=388]", + //分类片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法 + "cat_is_jsoup":"1", + //分类片单标题 + "cat_title": "img&&alt", + //分类片单链接 + "cat_url": "a&&href", + //分类片单图片,支持自定义图片链接 + "cat_pic": "img&&src", + //分类片单副标题 + "cat_subtitle":"[align=center]&&Text", + //分类片单链接补前缀 + "cat_prefix": "https://www.dygang.tv", + //分类片单链接补后缀 + "cat_suffix": "", + + //搜索请求头参数,不填则默认okhttp/3.12.11,可填MOBILE_UA或PC_UA使用内置的手机版或电脑版UA + //多个请求头参数写法示例,键名$键值,每一组用#分开。"User-Agent$PC_UA#Referer$http://ww.baidu.com#Cookie$ser=ok"。 + "SHeaders":"User-Agent$PC_UA#Content-Type$charset=gb2312", + //搜索链接,搜索关键字用{wd}表示,post请求的最后面加;post + //POST链接示例 http://www.lezhutv.com/index.php?m=vod-search;post + "search_url": "https://www.dygang.tv/e/search/index123.php;post", + //POST搜索body,填写搜索关键字的键值,一般常见的是searchword和wd,不是POST搜索的可留空或删除。 + "sea_PtBody":"keyboard={wd}&submit=搜+索&show=title,smalltext&tempid=1&tbname=article", + + //搜索截取模式,0为json搜索,只支持列表在list数组里的,其它数字为网页截取。 + "search_mode": "1", + //搜索列表数组定位,不填默认内置list,最多支持3层,能力有限,不是所有页面都能支持。 + "sea_arr_rule": "body&&table[width=388]", + //搜索片单信息jsoup与xb截取写法切换,只作用于html网页,1为jsoup写法(默认),0为xb写法 + "sea_is_jsoup":"1", + //搜索片单图片,支持自定义图片链接 + "sea_pic": "img&&src", + //搜索片单标题 + "sea_title": "img&&alt", + //搜索片单链接 + "sea_url": "a&&href", + //搜索片单副标题 + "sea_subtitle":"", + //搜索片单链接补前缀 + "search_prefix": "https://www.dygang.tv", + //搜索片单链接补后缀,这个一般json搜索的需要 + "search_suffix": "", + + //片单链接是否直接播放,0否,1分类片单链接直接播放,2详情选集链接直接播放。 + //设置成直接播放后,后面3个参数请注意该留空的请务必留空。 + "force_play": "0", + //直接播放链接补前缀 + "play_prefix": "", + //直接播放链接补后缀,设置为#isVideo=true#可强制识别为视频链接 + "play_suffix": "", + //直接播放链接设置请求头,只对直链视频有效,每一组用#分开 + "play_header": "", + + //项目信息jsoup与xb截取写法切换,1为jsoup写法(默认),0为xb写法 + "proj_is_jsoup":"0", + //类型数据,截取前缀&&截取后缀 + "proj_cate": "", + //年代数据,截取前缀&&截取后缀 + "proj_year": "", + //地区数据,截取前缀&&截取后缀 + "proj_area": "", + //演员数据,截取前缀&&截取后缀 + "proj_actor": "演  员&&var player_aaaa={"flag":"play","encrypt这种源码的链接解析 + //如果网页源码里没有这种请设置为0 + "Anal_MacPlayer":"0", + //是否开启手动嗅探,只对网页嗅探有效,0否,1是 + "ManualSniffer":"0", + //手动嗅探视频链接关键字,每个用#隔开 + "VideoFormat":".mp4#.m3u8#.flv", + //手动嗅探视频链接过滤关键词,每个用#隔开 + "VideoFilter":".html#=http" +} \ No newline at end of file diff --git a/xiaosa/XYQHiker/电影牛.json b/xiaosa/XYQHiker/电影牛.json new file mode 100644 index 00000000..36b24cba --- /dev/null +++ b/xiaosa/XYQHiker/电影牛.json @@ -0,0 +1,71 @@ +{ + "规则名": "电影牛影院", + "规则作者": "香雅情", + "请求头参数": "手机", + "网页编码格式": "UTF-8", + "图片是否需要代理": "1", + "是否开启获取首页数据": "1", + "首页推荐链接": "https://www.dianyingn.cc", + "首页列表数组规则": "body&&.fed-list-info:has(.fed-list-remarks)", + "首页片单列表数组规则": "li", + "首页片单是否Jsoup写法": "1", + "首页片单标题": ".fed-list-title&&Text", + "首页片单链接": "a&&href", + "首页片单图片": ".fed-list-pics&&data-original", + "首页片单副标题": ".fed-list-remarks&&Text", + "首页片单链接加前缀": "https://www.dianyingn.cc", + "首页片单链接加后缀": "", + "分类起始页码": "1", + "分类链接": "https://www.dianyingn.cc/vodtype/{cateId}-{catePg}.html", + "分类名称": "电影&电视剧&综艺&动漫", + "分类名称替换词": "dianying&dianshiju&zongyi&dongman", + "筛选数据": "ext", + "筛选子分类名称": "动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片||国产剧&港台剧&日韩剧&欧美剧", + "筛选子分类替换词": "dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian||guochanju&gangtaiju&rihanju&oumeiju", + + "分类截取模式": "1", + "分类列表数组规则": "body&&.fed-list-item:has(.fed-list-remarks)", + "分类片单是否Jsoup写法": "1", + "分类片单标题": ".fed-list-title&&Text", + "分类片单链接": "a&&href", + "分类片单图片": ".fed-list-pics&&data-original", + "分类片单副标题": ".fed-list-remarks&&Text", + "分类片单链接加前缀": "https://www.dianyingn.cc", + "分类片单链接加后缀": "", + "搜索请求头参数": "手机", + "搜索链接": "https://www.dianyingn.cc/index.php/ajax/suggest.html?mid=1&wd={wd}", + "POST请求数据": "", + "搜索截取模式": "0", + "搜索列表数组规则": "list", + "搜索片单是否Jsoup写法": "1", + "搜索片单图片": "pic", + "搜索片单标题": "name", + "搜索片单链接": "id", + "搜索片单副标题": "", + "搜索片单链接加前缀": "https://www.dianyingn.cc/voddetail/", + "搜索片单链接加后缀": ".html", + "链接是否直接播放": "0", + "直接播放链接加前缀": "https://live.52sf.ga/huya/", + "直接播放链接加后缀": "#isVideo=true#", + "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online", + "详情是否Jsoup写法": "0", + "类型详情": "", + "年代详情": "", + "地区详情": "", + "演员详情": "主演:&&", + "简介详情": "简介:&&", + "线路列表数组规则": ".fed-tabs-item&&ul&&li", + "线路标题": "Text", + "播放列表数组规则": "body&&.fed-play-item", + "选集列表数组规则": ".fed-btns-info", + "选集标题链接是否Jsoup写法": "1", + "选集标题": "a&&Text", + "选集链接": "a&&href", + "是否反转选集序列": "0", + "选集链接加前缀": "https://www.dianyingn.cc", + "选集链接加后缀": "", + "分析MacPlayer": "0", + "是否开启手动嗅探": "0", + "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv", + "手动嗅探视频链接过滤词": ".html#=http" +} \ No newline at end of file diff --git a/xiaosa/XYQHiker/短剧屋.json b/xiaosa/XYQHiker/短剧屋.json new file mode 100644 index 00000000..0a1bf24c --- /dev/null +++ b/xiaosa/XYQHiker/短剧屋.json @@ -0,0 +1,81 @@ +{ + "规则名": "短剧屋", + "规则作者": "", + "请求头参数": "手机", + "网页编码格式": "UTF-8", + "图片是否需要代理": "0", + "是否开启获取首页数据": "1", + "首页推荐链接": "http://www.metaysw.com", + "首页列表数组规则": "body&&.vod-vodlist", + "首页片单列表数组规则": "li", + "首页片单是否Jsoup写法": "1", + "分类起始页码": "1", + "分类链接": "http://www.metaysw.com/type/{cateId}-{catePg}.html", + "分类名称": "短剧", + "分类名称替换词": "lianxuju", + "筛选数据": {}, + //"筛选数据": "ext", + //{cateId} + "筛选子分类名称": "", + "筛选子分类替换词": "", + //{class} + "筛选类型名称": "", + "筛选类型替换词": "*", + //{area} + "筛选地区名称": "", + "筛选地区替换词": "*", + //{year} + "筛选年份名称": "", + "筛选年份替换词": "*", + //{lang} + "筛选语言名称": "", + "筛选语言替换词": "*", + //{by} + "筛选排序名称": "时间&人气&评分", + "筛选排序替换词": "time&hits&score", + "分类截取模式": "1", + "分类列表数组规则": ".vod-vodlist&&li", + "分类片单是否Jsoup写法": "1", + "分类片单标题": ".vod-vodlist__title&&Text", + "分类片单链接": "a&&href", + "分类片单图片": ".lazyload&&data-original", + "分类片单副标题": ".pic-text&&Text", + "分类片单链接加前缀": "http://www.metaysw.com", + "分类片单链接加后缀": "", + "搜索请求头参数": "User-Agent$手机", + "搜索链接": "http://www.metaysw.com/search/page/{SearchPg}/wd/{wd}.html", + "POST请求数据": "", + "搜索截取模式": "1", + "搜索列表数组规则": ".vod-vodlist&&li", + "搜索片单是否Jsoup写法": "1", + "搜索片单图片": ".lazyload&&data-original", + "搜索片单标题": ".vod-vodlist__title&&Text", + "搜索片单链接": "a&&href", + "搜索片单副标题": ".pic-text&&Text", + "搜索片单链接加前缀": "http://www.metaysw.com", + "搜索片单链接加后缀": "", + "链接是否直接播放": "0", + "直接播放链接加前缀": "https://live.52sf.ga/huya/", + "直接播放链接加后缀": "#isVideo=true#", + "直接播放直链视频请求头": "authority$ku.peizq.online#Referer$https://play.peizq.online", + "详情是否Jsoup写法": "1", + "类型详情": "", + "年代详情": "", + "地区详情": "", + "演员详情": ".vod-content__detail&&p,2&&Text!主演:", + "简介详情": "", + "线路列表数组规则": ".dropdown-menu&&li", + "线路标题": "a&&Text", + "播放列表数组规则": "body&&.vod-content__playlist", + "选集列表数组规则": "li", + "选集标题链接是否Jsoup写法": "1", + "选集标题": "a&&Text", + "选集链接": "a&&href", + "是否反转选集序列": "0", + "选集链接加前缀": "http://www.metaysw.com", + "选集链接加后缀": "", + "分析MacPlayer": "0", + "是否开启手动嗅探": "0", + "手动嗅探视频链接关键词": ".mp4#.m3u8#.flv#video/tos", + "手动嗅探视频链接过滤词": ".html#=http" +} \ No newline at end of file diff --git a/xiaosa/api.json b/xiaosa/api.json new file mode 100644 index 00000000..dbbe65d2 --- /dev/null +++ b/xiaosa/api.json @@ -0,0 +1,2372 @@ +{ + "spider": "./spider.jar", + "wallpaper": "http://bobohome.ignorelist.com:20247/bing", + "logo": "http://127.0.0.1:9978/file/TVBox/logo.png", + "sites": [ + { + "key": "豆瓣", + "name": "豆瓣|首页", + "type": 3, + "api": "csp_Douban", + "searchable": 0 + }, + { + "key": "预告", + "name": "新片|预告", + "type": 3, + "api": "csp_YGP", + "searchable": 0 + }, + { + "key": "本地", + "name": "本地|视频", + "type": 3, + "api": "csp_LocalFile" + }, + { + "key": "配置中心", + "name": "配置|中心", + "type": 3, + "api": "csp_Config", + "searchable": 0, + "changeable": 0, + "indexs": 0, + "style": { + "type": "rect", + "ratio": 1.597 + } + }, + { + "key": "影视配置", + "name": "影视|配置", + "type": 3, + "api": "csp_Wexconfig", + "searchable": 0, + "changeable": 0, + "indexs": 0, + "style": { + "type": "rect", + "ratio": 1.597 + }, + "jar": "./wex.jar" + }, + { + "key": "厂长弹幕", + "name": "厂长|弹幕", + "type": 3, + "api": "csp_Czzy", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "天天弹幕", + "name": "天天|弹幕", + "type": 3, + "api": "csp_TianTian", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true, + "site": "aHR0cDovL29wLnlzZHFqcy5jbg==" + } + }, + { + "key": "热播弹幕", + "name": "热播|弹幕", + "type": 3, + "api": "csp_TianTian", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true, + "site": "aHR0cDovL3YucmJvdHYuY24=" + } + }, + { + "key": "浪酷弹幕", + "name": "浪酷|弹幕", + "type": 3, + "api": "csp_TianTian", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true, + "site": "aHR0cDovL3YubGt1eXMuY24=" + } + }, + { + "key": "文才弹幕", + "name": "文才|弹幕", + "type": 3, + "api": "csp_Jpys", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "哔哩弹幕", + "name": "哔哩|弹幕", + "type": 3, + "api": "csp_Bilimd", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "style": { + "type": "rect", + "ratio": 1.597 + }, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/bilibili.txt" + }, + "timeout": 10 + }, + { + "key": "哔哩合集", + "name": "哔哩合集|弹幕", + "type": 3, + "api": "csp_Bili", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "style": { + "type": "rect", + "ratio": 1.597 + }, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/bilibili.txt", + "json": "./JSON/哔哩合集.json" + }, + "timeout": 10 + }, + { + "key": "立播弹幕", + "name": "立播|弹幕", + "type": 3, + "api": "csp_Libvio", + "searchable": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://www.libvio.cc", + "danmu": true + } + }, + { + "key": "腾讯弹幕", + "name": "腾讯|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/腾讯弹幕.js" + }, + { + "key": "优酷弹幕", + "name": "优酷|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/优酷弹幕.js" + }, + { + "key": "芒果弹幕", + "name": "芒果|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/芒果弹幕.js" + }, + { + "key": "爱奇艺弹幕", + "name": "爱奇艺|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/爱奇艺弹幕.js" + }, + { + "key": "米兔弹幕", + "name": "米兔|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/米兔弹幕.js" + }, + { + "key": "小熊弹幕", + "name": "小熊|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/小熊弹幕.js" + }, + { + "key": "巨人弹幕", + "name": "巨人|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/巨人弹幕.js" + }, + { + "key": "追剧弹幕", + "name": "追剧|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/追剧弹幕.js" + }, + { + "key": "梦米弹幕", + "name": "梦米|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/梦米弹幕.js" + }, + { + "key": "小虎斑弹幕", + "name": "小虎斑|弹幕", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/小虎斑弹幕.js" + }, + { + "key": "三六零弹幕", + "name": "三六零|弹幕", + "type": 3, + "api": "csp_Sp360", + "searchable": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "机器人弹幕", + "name": "机器人|弹幕", + "type": 3, + "api": "csp_Ikanbot", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "小苹果弹幕", + "name": "小苹果|弹幕", + "type": 3, + "api": "csp_Xpg", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "danmu": true + } + }, + { + "key": "玩偶弹幕", + "name": "玩偶|4K弹幕", + "type": 3, + "api": "csp_Wogg", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "wogg": true, + "danmu": true + } + }, + { + "key": "夸克闪电弹幕", + "name": "闪电|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://shandian.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克欧歌弹幕", + "name": "欧哥|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://ouge.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克小米弹幕", + "name": "小米|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://xiaomi.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克多多弹幕", + "name": "多多|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://duoduo.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克蜡笔弹幕", + "name": "蜡笔|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://labi.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克至臻弹幕", + "name": "至臻|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://zhizhen.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克木偶弹幕", + "name": "木偶|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "http://muou.6qu.top", + "danmu": true + } + }, + { + "key": "夸克六趣弹幕", + "name": "六趣|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://liuqu.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克虎斑弹幕", + "name": "虎斑|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://huban.banye.tech:7086", + "danmu": true + } + }, + { + "key": "夸克下饭弹幕", + "name": "下饭|4K弹幕", + "type": 3, + "api": "csp_Wobg", + "quickSearch": 1, + "changeable": 1, + "filterable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "site": "https://xiafan.banye.tech:7086", + "danmu": true + } + }, + { + "key": "雷鲸", + "name": "雷鲸|4K", + "type": 3, + "api": "csp_Wexleijing", + "searchable": 1, + "changeable": 1, + "jar": "./wex.jar" + }, + { + "key": "天翼", + "name": "天翼|4K", + "type": 3, + "api": "csp_Wextyso", + "searchable": 1, + "changeable": 0, + "jar": "./wex.jar" + }, + { + "key": "盘他", + "name": "盘他|4K‍", + "type": 3, + "api": "csp_WexYDpanta", + "searchable": 1, + "changeable": 1, + "jar": "./wex.jar" + }, + { + "key": "Emby", + "name": "Emby|4K", + "type": 3, + "api": "csp_Wexemby", + "searchable": 1, + "changeable": 1, + "jar": "./wex.jar" + }, + { + "key": "星芽短剧", + "name": "星芽|短剧", + "type": 3, + "api": "csp_AppXY", + "searchable": 1, + "quickSearch": 0, + "filterable": 0 + }, + { + "key": "河马短剧", + "name": "河马|短剧", + "type": 3, + "api": "csp_AppHMDJ", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "KhY021WelCEl+6MsvwnzaPussky/EAoc9z7C4keyHaEQ+sKbXhMKd83VjTL7Ls6+m7XDIcGdziOxPv79y/h4QCvmOEJmZ1VD6dopzAVxkFzEFw==" + }, + { + "key": "吉吉短剧", + "name": "吉吉|短剧", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/吉吉短剧.json" + }, + { + "key": "爱我短剧", + "name": "爱我|短剧", + "type": 3, + "api": "csp_XBPQ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XBPQ/爱我短剧.json" + }, + { + "key": "短剧网", + "name": "短剧网|短剧", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/短剧网.json" + }, + { + "key": "短剧屋", + "name": "短剧屋|短剧", + "type": 3, + "api": "csp_XYQHiker", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XYQHiker/短剧屋.json" + }, + { + "key": "韩小圈", + "name": "韩小圈|APP", + "type": 3, + "api": "csp_HanXiaoQuan", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "酷影视", + "name": "酷影视|APP", + "type": 3, + "api": "csp_AppYsV2", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://www.tvkuys.xyz/api.php/app/" + }, + { + "key": "HG影视", + "name": "HG影视|APP", + "type": 3, + "api": "csp_AppYsV2", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://cs.hgyx.vip/api2/api.php/app/" + }, + { + "key": "猎手影视", + "name": "猎手|APP", + "type": 3, + "api": "./PY/猎手影视.py", + "searchable": 1, + "changeable": 1, + "quickSearch": 1, + "filterable": 1, + "playerType": 2 + }, + { + "key": "巧技", + "name": "巧技|APP", + "type": 3, + "api": "csp_qiao2", + "playerType": 2, + "ext": "https://fs-im-kefu.7moor-fs1.com/ly/4d2c3f00-7d4c-11e5-af15-41bf63ae4ea0/1740038979341/cksp.txt" + }, + { + "key": "木头", + "name": "木头|APP", + "type": 3, + "api": "csp_Shark", + "playerType": 1, + "ext": "saHR0cDovL21pdG8ubWlub3R2LmNuL3xhYXNzZGR3d3h4bGxzeDF4fGJic3NxZGJic3NsbDI1c3g=" + }, + { + "key": "永夜", + "name": "永夜|App", + "type": 3, + "api": "csp_Muou", + "playerType": 2, + "ext": "caHR0cDovL2FwcC55aXlpNTIxLnRvcHxZSVlJ5b2x6KeGfDQuMS44" + }, + { + "key": "星河", + "name": "星河|APP", + "type": 3, + "api": "csp_Muou", + "playerType": 2, + "ext": "caHR0cHM6Ly9odC5tb3liay5jbnzphZLlrqLlvbHop4Z8NC4xLjg=" + }, + { + "key": "二三", + "name": "二三|App", + "type": 3, + "api": "csp_Muou", + "playerType": 2, + "ext": "caHR0cHM6Ly8xMjN5c3cuY29tfDIz5b2x6KeGfDQuMS44" + }, + { + "key": "时常", + "name": "时常|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 1, + "ext": "jaHR0cHM6Ly9zYzEwODAudG9wfGU1OWQ0NGIyZWVmMDNiYTJ8ZTU5ZDQ0YjJlZWYwM2JhMnwxMzQ=" + }, + { + "key": "雨滴", + "name": "雨滴|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 1, + "ext": "jaHR0cDovL2M4dzJvdjd1NXdnMnoxbzhwMjFjLmFsaXl1bmNzLmNsaWNrfGs5bzNwMmM4YjdtM3owbzh8azlvM3AyYzhiN20zejBvOHwxMDA=" + }, + { + "key": "现代", + "name": "现代|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 1, + "ext": "caHR0cHM6Ly94ZHlzLnZpcC9nZXRhcHAudHh0fHN6ZGp3ZGFwcHdjbm1kaGJ8c3pkandkYXBwd2NubWRoYnwxMTQ=" + }, + { + "key": "玉米", + "name": "玉米|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 1, + "ext": "jaHR0cDovL3NkeXMudXMvc2QudHh0fDdmOWI0OWRhZjkyOGNjZTd8N2Y5YjQ5ZGFmOTI4Y2NlN3w0NDI=" + }, + { + "key": "优质", + "name": "优质|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 1, + "ext": "jaHR0cDovL2R5eXp0dmFwcGFwaWdvb2RneC42OC5neS9jaXdrMjh2dTM4aW84L2FwaXVybC50eHR8ZHl5enR2YXBpYXBweXlkc3xkeXl6dHZhcGlhcHB5eWRzfDEwMA==" + }, + { + "key": "木叶", + "name": "木叶|APP", + "type": 3, + "api": "csp_Xdai", + "playerType": 2, + "ext": "saHR0cDovL3d3dy56amMuYXBwfGFiNGU5YTQyMTY3NWYxNGJ8YWI0ZTlhNDIxNjc1ZjE0Ynw0NDI=" + }, + { + "key": "蝴蝶", + "name": "蝴蝶|APP", + "type": 3, + "api": "csp_Hudie", + "playerType": 2, + "ext": "eaHR0cHM6Ly9kLmRjbW92aWUudG9w" + }, + { + "key": "蚂蚁", + "name": "蚂蚁|APP", + "type": 3, + "api": "csp_Mayiys", + "searchable": 1, + "quickSearch": 1, + "filterable": 0, + "playerType": 1, + "ext": "jaHR0cDovL3BhbmRvd24ucHJvL3R2Ym94L21heWkudHh0" + }, + { + "key": "快看", + "name": "快看|APP", + "type": 3, + "api": "csp_AppYsV2", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1, + "ext": "http://kkwk123.top/api.php/app/" + }, + { + "key": "站长影视", + "name": "站长|APP", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvCnF9SwoPCmcOtw5jDj8Orw6ZValLCmMOtw6fDqsOswrRiX8KdacOcw57CrMKxw6DCqmbCnmPDpsKow6XCsMKywpRhYMKUwqfDl8Ozw7LDtGVewpPCn8Omwq3Cr8KvwrJsX8KRwqDDosKhw6rDocOqVVxSecOnw5zDrsOQw6nCpcKUUmrCm8KVwqbCm8OuwpzCoFJqwpvDjuWHv+mFoeaQn+WQllzlhpzkvYflkbDCreW/q+iov+i2vua7g+esicKNUsKlwpXCu8Oew61+wpXCqVLCs8KVw57DssOzwq3CpMKmwpHDqcOcw5vDqcOqwqzCqcKUwqPCm8KfwpzCusOfwqZ5wqZSwrPClcOew7LDs8KtwqTCpsKRw6nDnMObw6nDqsKswqnClMKjwpvDsA==" + }, + { + "key": "多多影视", + "name": "多多|APP", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCocKbwqTCpMKgwrPCosKpwqvCq2ReaWnCp8KswrLCp8KuamppacKywqzCqcOaw6rCnF7CpMKow63CmsKmwpnCocKGwpnCpMKVw47DpcOmwqDCtFNXV1zCmcKaw4PDp8OjwqfCh8KfwqLDncKawrTCmcKhwpzCnsKZwqTDj8KkwqvCssKhX1BXwqTDosOjwqHCs8KaWsKL5Ya16YSY5pCe5ZGWwqblh6XkvpHlkKpq5b6h6Ke26La95ryD562Tw5bCoV9QV3HDnsOmw4XDnsOzWmpQV8OewqfCsMKqw51qwpNgwpXDn8Kjw5zCr8OdwpdhV1zCmcKawrvDnsOtfMKmV2rCmcKaw5/CrcKwZMKTZ8KTwqnDmMOgwqnDnGnCk8KUYcKgwp/CmsKgw57CmMKTwqLCqcOpw6fDhcOew7NaalBXw7LDlMOpw7DDm8KhwpdgYcKrwqnCocO2" + }, + { + "key": "悠悠影视", + "name": "悠悠|APP", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCoVpcUFfDgsOhw6PDrcORwqLCosKUV8KzwpPCocOiw6jCnMKkwoZhwqrCrMKhwqXCmlrCpMKZwqDCoMKtwprCoMOV5Ya46YSY5o+V5ZCTwqXlh5/kvpHlkbDCtOW+pOintui1tOa7gOetksOQwqHCpcKaWnHClcKjw4TDmMOzwqDCtFNXdMKow7DCvMOtw63DrMKXwofCksKJw6nDlcOmw7DDqFpcUFfCusOYw63DgsOwWmpQV8K9w6vDscOCw63Cp8KiwpTCh8Obw4zDqsObw6bCqsKeV1zCmcKaw43DosOuwpjChcKiwpzCoMKtwprCoMOiwqfCpMKgasKowqLCq8KuwrBhYmJlwqfCpsKqwqfCsGhqZWXCr8KpwqnDmsOqwpxewqDCmMOpwprCpsKZwqHCl8KVwpPCosOyw6PDrsOEw5/CrFdqUMKgw6zDm8Oow7HClMKewpdgwqrCpcKwwqDDtw==" + }, + { + "key": "良人影视", + "name": "良人|APP", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCocKbwqTCpMKgw6zCrcKpwqjDpsKcwpHCnsKXw6vDmMOowqbCq2ZhZ2fCqsKqwrDCscKsYcKTwp/Co8Knw5TDqsKmw6HCqMKRwp7Cl8Ozw5vDqcOuwqjCoMKpwqHCk8Olw6LDr8OdwqjClsKfwp1fw6XDnMObw6fDocKlwpXCnl7DrcOrw67CoMKmU1fCg8KZw63DmMOPw6vDplpqUFfCoMKfwprCoMOuwpzCoFdqwpnCmsOV5Ye+6YWi5o+Y5ZCTXOWGnOS+kOWRqsK05b+q6KmA6LW35ruA56yJwo3CoMKfwprCoMK7wpjCo3vClcOywprCtMKZwqF3ZsKhZ8Ohw53DnMKxwrF5emBpwr/CqsKxwqDCplNXccKVw6zCvMOwwqDCtFNXdGbDqsKqw6LDo8Oca2d2esKpwqzDgMKwwrFaXFBXw53DmMOdw6vDs8KjwqR7wpXDssKawrTCmcKhwqzCkcKfwqfDmsOhw6HCqcKrZWZXwq0=" + }, + { + "key": "云播影视", + "name": "云播|APP", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TCmsK8w5rDrcKYwoPCmcKkw57CmsK0wpnCoVpcUFfDjMOcw67DnsOPwqXCnFdqwpnCmsOiw63DrsKjal9fw6DDmMOuw5rDqsKjXsKkwqbDssOVw5vDqcOqYcKTwp/CncKow5TDqsOiwqjCo8KYwqBXwqXCk8Khw4LDqMKcwqTCh8Kfw6vDl8KhwrPCmlrCmcKewpnDrcOJwqvCqsKzWlxQV8Otw5zDqsKgwrRTV8KL5Ya16YWh5pCY5ZGdwqXlh6bkvYrlkKdq5b6h6Ki/6La35ryK562Sw5daXFBXwrrDmMOtw4TDn8KsV2pQwqDDoMOjw5zDpWVkZWjDpsOcw53DpMKsZ2VoV8KlwpPCocK6w5/CpnnCplfCs8KTwqHDpsOjwpbCm2Jkwq7Cq8Onw6LDncKeYmRlwrHCmsKmwpnCocKbwpXCkcKUw57DpcOtwqDCtFPCq1fCpcOsw5jDrMKmw5vCmsKVwp7CpMKgwq3CmsKgw4fCosKqwpnCnMOlw5TCqcKuwqhjUFjCh8Oiw6HDnsOow7HCplB+woTCmcKkwqrCp8KqblDCh8KZw6fCqcKuwrTCmsKrZmRZwpnCtMOqw6nDpsKYwofClcKSw4TDnMOuwqjCr2ZnXmPCr8KTwqLDhMOCwod9fFzCmcOfw6PDpMOfU3fClcKTw6TDosKjwpnCvcKbwqLCn8Kdw57CosKrwqrCrGFgXmDCp8KjwprDjMObwpnCkcKiwpnCqMKowq3CsMKoZmZXXMKZwprDm8Olw6bCosKnc8Kiw6jDpsOtw4nDrMKiwqTCn8KTw6jDn8OMw57DnsKcwqLClcKTw63DpsKhwrPCmsKHwqLCpcKVw7bCn8KawqDDnsKYwpPCosKpw6nDp8OFw57Ds1pqUFfDssOUw6nDsMObwqHCl2BhwqvCqcKhw7Y=" + }, + { + "key": "洽洽影视", + "name": "洽洽|APP", + "type": 3, + "api": "csp_AppGZ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "KhY021WelCEl+6MsvwnzaPussky6FQJcpCjT9V7/D61ft9vQAhNEPOYSMZVJSODd/JOOSOwUzim+9qfvgpNz7SvUPpAkXAweyrp76WY8s5EBwW7DBMY=" + }, + { + "key": "忍者影视", + "name": "忍者|APP", + "type": 3, + "api": "csp_AppRZ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "KhY021WelCEl+6MsvwnzaLK5sgGhHBhBszPP7EvqSfdVqJTIDGrV0xPZiB/0I8O9mrMKS+cdzxqKP83dFJJyyyb8D0J0ZVtM/ds4xb/4dA==" + }, + { + "key": "移动", + "name": "移动|APP", + "type": 3, + "api": "csp_YD", + "searchable": 1, + "quickSearch": 1 + }, + { + "key": "小米尘落", + "name": "尘落|APP", + "type": 3, + "api": "csp_Wetv", + "searchable": 1, + "quickSearch": 1 + }, + { + "key": "小米眼镜", + "name": "眼镜|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_AppYanjing" + }, + { + "key": "小米米兔", + "name": "米兔|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_MiTuApp" + }, + { + "key": "小米麻花", + "name": "麻花|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_MaHuaApp" + }, + { + "key": "小米电影", + "name": "电影|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_MovieApp" + }, + { + "key": "小米兄弟", + "name": "兄弟|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_XiongDiApp" + }, + { + "key": "小米小猫", + "name": "小猫|APP", + "type": 3, + "searchable": 1, + "quickSearch": 1, + "api": "csp_XiaoMaoApp" + }, + { + "key": "西瓜视频", + "name": "西瓜|视频", + "type": 3, + "api": "csp_AmuXiguaV2", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "changeable": 0, + "style": { + "type": "rect", + "ratio": 1.597 + } + }, + { + "key": "采集之王", + "name": "采集|合集", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/采集之王.js?type=url¶ms=../JSON/采集静态.json$1$1" + }, + { + "key": "爱看机器人", + "name": "爱看|影视", + "type": 3, + "api": "csp_IkanBot", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "农民影视", + "name": "农民|影视", + "type": 3, + "api": "csp_Wwys", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://m.wwgz.cn" + }, + { + "key": "低端影视", + "name": "低端|影视", + "type": 3, + "api": "csp_Ddys", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "快看影视", + "name": "快看|影视", + "type": 3, + "api": "csp_Kuaikan", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "饭团影视", + "name": "饭团|影视", + "type": 3, + "api": "csp_Fantuan", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "来看影视", + "name": "来看|影视", + "type": 3, + "api": "csp_Lkdy", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "樱花影视", + "name": "樱花|影视", + "type": 3, + "api": "csp_Lggys", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "看客影视", + "name": "看客|影视", + "type": 3, + "api": "csp_Kanke", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "全网影视", + "name": "全网|影视", + "type": 3, + "api": "csp_Quanwk", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://www.91qkw.com" + }, + { + "key": "奇优影视", + "name": "奇优|影视", + "type": 3, + "api": "csp_Qiyou", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "http://www.dyxz2.com/" + }, + { + "key": "骚火影视", + "name": "骚火|影视", + "type": 3, + "api": "csp_SaoHuo", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "瓜子影视", + "name": "瓜子|影视", + "type": 3, + "api": "csp_Gz360", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "可可影视", + "name": "可可|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/可可影视.json" + }, + { + "key": "海纳影视", + "name": "海纳|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/海纳影视.json" + }, + { + "key": "面包影视", + "name": "面包|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/面包影视.json" + }, + { + "key": "永乐影视", + "name": "永乐|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/永乐影视.json" + }, + { + "key": "雪糕影视", + "name": "雪糕|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/雪糕影视.json" + }, + { + "key": "流光影视", + "name": "流光|影视", + "type": 3, + "api": "csp_XBPQ", + "ext": "./XBPQ/流光影视.json" + }, + { + "key": "金牌影视", + "name": "金牌|影视", + "type": 3, + "api": "csp_WebJP", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "KhY021WelCEl+6MsvwnzaPusskysEhxc/i3d/FHwReBTtZTeDEVZJbQKKez3K+OxlrjAIMdUpAUxP8fGystYn0Hss098UFVR69Qm2ARgmeZN86q8Ww==" + }, + { + "key": "耐看影视", + "name": "耐看|影视", + "type": 3, + "api": "csp_WebNK", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "w7TClcONw6LDrsKYwoXCosKcwpvCrcKcw6HDrsKnwqDCo2rCqMKiw7HDsMOxYcKewpvClMOvw5fCqMOmw59VXFLCpMOiw6PCnMKzwpzCjuWGtemEmOaPleWRnMKf5Yem5L6Q5ZGxbeW+oeintui1tOa8ieetjMOXwpvDtw==" + }, + { + "key": "真心影视", + "name": "真心|影视", + "type": 3, + "api": "csp_WebGZ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "思古影视", + "name": "思古|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/思古影视.js" + }, + { + "key": "魔力高清", + "name": "魔力|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/魔力高清.js" + }, + { + "key": "碟调影视", + "name": "碟调|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/碟调影视.js" + }, + { + "key": "电影牛", + "name": "电影牛|影视", + "type": 3, + "api": "csp_XYQHiker", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XYQHiker/电影牛.json" + }, + { + "key": "素白白", + "name": "素白白|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/素白白.js" + }, + { + "key": "剧圈圈", + "name": "剧圈圈|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/剧圈圈.js" + }, + { + "key": "追剧迷", + "name": "追剧迷|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/追剧迷.js" + }, + { + "key": "看了么", + "name": "看了么|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/看了么.js" + }, + { + "key": "茶杯狐", + "name": "茶杯狐|影视", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/茶杯狐.js" + }, + { + "key": "1905", + "name": "1905|影视", + "type": 3, + "api": "csp_Web1905", + "searchable": 1, + "quickSearch": 0, + "filterable": 0 + }, + { + "key": "红牛资源", + "name": "红牛|采集", + "type": 1, + "api": "https://www.hongniuzy2.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "爱情片", + "科幻片", + "恐怖片", + "剧情片", + "战争片", + "国产剧", + "港澳剧", + "日剧", + "欧美剧", + "台湾剧", + "泰剧", + "韩剧", + "纪录片", + "动漫电影" + ] + }, + { + "key": "光速资源", + "name": "光速|采集", + "type": 1, + "api": "http://api.guangsuapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "爱情片", + "科幻片", + "剧情片", + "恐怖片", + "战争片", + "动漫电影", + "大陆剧", + "欧美剧", + "港澳剧", + "韩剧", + "日剧", + "台湾剧", + "泰剧", + "综艺", + "动漫", + "记录片" + ] + }, + { + "key": "极速资源", + "name": "极速|采集", + "type": 1, + "api": "https://jszyapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "日剧", + "马泰剧", + "内地剧", + "欧美剧", + "香港剧", + "韩剧", + "台湾剧", + "恐怖片", + "动画片", + "剧情片", + "战争片", + "动作片", + "记录片", + "爱情片", + "喜剧片", + "科幻片", + "灾难片", + "悬疑片", + "犯罪片", + "中国动漫", + "日本动漫", + "欧美动漫" + ] + }, + { + "key": "快车资源", + "name": "快车|采集", + "type": 1, + "api": "https://caiji.kczyapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "爱情片", + "科幻片", + "恐怖片", + "战争片", + "剧情片", + "动画片", + "纪录片", + "国产剧", + "香港剧", + "台湾剧", + "欧美剧", + "韩国剧", + "日本剧", + "泰国剧", + "海外剧", + "国产动漫", + "日本动漫", + "欧美动漫", + "大陆综艺", + "日韩综艺", + "港台综艺", + "欧美综艺" + ] + }, + { + "key": "索尼资源", + "name": "索尼|采集", + "type": 1, + "api": "https://suoniapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "爱情片", + "科幻片", + "恐怖片", + "剧情片", + "战争片", + "纪录片", + "动画片", + "国产剧", + "欧美剧", + "韩剧", + "日剧", + "港剧", + "台剧", + "泰剧", + "海外剧", + "大陆综艺", + "日韩综艺", + "港台综艺", + "欧美综艺", + "国产动漫", + "日韩动漫", + "欧美动漫", + "港台动漫", + "海外动漫" + ] + }, + { + "key": "量子资源", + "name": "量子|采集", + "type": 1, + "api": "https://cj.lziapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "科幻片", + "恐怖片", + "爱情片", + "剧情片", + "战争片", + "记录片", + "国产剧", + "欧美剧", + "香港剧", + "韩国剧", + "台湾剧", + "日本剧", + "海外剧", + "泰国剧", + "国产动漫", + "日韩动漫", + "欧美动漫", + "港台动漫", + "海外动漫", + "大陆综艺", + "港台综艺", + "日韩综艺", + "欧美综艺" + ] + }, + { + "key": "非凡资源", + "name": "非凡|采集", + "type": 1, + "api": "http://cj.ffzyapi.com/api.php/provide/vod/", + "searchable": 1, + "changeable": 1, + "categories": [ + "动作片", + "喜剧片", + "科幻片", + "恐怖片", + "爱情片", + "剧情片", + "战争片", + "记录片", + "国产剧", + "欧美剧", + "香港剧", + "韩国剧", + "台湾剧", + "日本剧", + "海外剧", + "泰国剧", + "国产动漫", + "日韩动漫", + "欧美动漫", + "港台动漫", + "海外动漫", + "大陆综艺", + "港台综艺", + "日韩综艺", + "欧美综艺" + ] + }, + { + "key": "哆啦新番社", + "name": "哆啦|新番社", + "type": 3, + "api": "csp_XBPQ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "style": { + "type": "list" + }, + "ext": "./XBPQ/哆啦新番社.json" + }, + { + "key": "56动漫", + "name": "56|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/56动漫.js" + }, + { + "key": "NT动漫", + "name": "NT|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/NT动漫.js" + }, + { + "key": "Anime1", + "name": "Anime1|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/Anime1.js" + }, + { + "key": "DFun动漫", + "name": "DFun|动漫", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvDosKnwqTCoMKjwrPCosKpw6PDsmFlZsKlw7HDnMKow5zDqcKgX8Kpwp3Cp8Onw7LDrcKcX1LCg8KZw63DmMOPw6vDplVqUlLCpcKVw67DosOqVWpSwovlh77phZvmkJ/lkZzCpuWGn+S9h+WQp2rlv6roqLnotr7mvInnrZPCkFJcUsK6w5jDrcOEw5/CrFJqUsOsw5TCr8Odwq7CpmXCkWbCrcOXwq/DqsOxaWFSXMKbwrTDn8Osw4PCqVJqUsOsw5TCr8Odwq7CpmXCkWbCrcOXwq/DqsOxaWFSwq0=" + }, + { + "key": "曼波动漫", + "name": "曼波|动漫", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvCnF9SwoPCmcOtw5jDj8Orw6ZValLCmMOtw6fDqsOswrRiX8KRwqDDqcKhw6nDpsOpwpnCpcKeYcKnw6fDqcOpwqnClMKgwplew6nDm8OqwpvCplXCpMKZwqDCm8KtwpzDlOWHv+mEm+aPleWQk1zlh6XkvorlkbHCs+W/q+inuei1tOa7gOesicOWwpXCpsKbwrvCmMKje8KVw7LClcK0wpvCsGnClMKTY8KpwqzDncObw5/CmMKTwpFkwq7Cp8KcwqXCnHTClcKjecOvwpXCtMKbwrBpwpTCk2PCqcKsw53Dm8OfwpjCk8KRZMKuwqfCnMO2" + }, + { + "key": "稀饭动漫", + "name": "稀饭|动漫", + "type": 3, + "api": "csp_AppGetApp", + "searchable": 1, + "quickSearch": 0, + "filterable": 0, + "ext": "w7TClcK8w5rDrcKYwoPCmcKkw57ClcK0wpvDosKnwqTCoMKjwrPCosKpw7HDoMKUwqDCoF3CqsKmwqrCrsKtbGBgZsKuwqHDncOow61hwpHCoF3DoMOow5vDp8Ohwq3CmMKfwqXCp8Ogw7PDqsOdwp/Cn8KlwpTCp8OWw6nDpsKpwprClcKkwpHDqcOjwqjDrcOywqdSXFLDgsOhw6PDrcORwqLCosKUUsKzwpXCnMKlwpzCp8KZwqBSwrPClcOV5Ye+6YWi5o+Y5ZCTXOWGnOS+kOWRqsK05b+q6KmA6LW35ruA56yJwo3Cm8KfwpzCusOfwqZ7wpXCqcKbwq3CnMKqw7PCjWLCg8Kgw6fCrMOlw6vDqMKtwoZ7wp/CvMKVwqbCm8K7wpjCo3nCpsKbwq3CnMKqw7PCjWLCg8Kgw6fCrMOlw6vDqMKtwoZ7wp/CvMKVwqbCm8ONwpzCpMKVwoXDq8OfwpzCs8KcVcKt" + }, + { + "key": "动画片", + "name": "动画片|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/动画片大全.js" + }, + { + "key": "路漫漫", + "name": "路漫漫|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/路漫漫.js" + }, + { + "key": "动漫岛", + "name": "动漫岛|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/动漫岛.js" + }, + { + "key": "去看吧", + "name": "去看吧|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/去看吧.js" + }, + { + "key": "爱弹幕", + "name": "爱弹幕|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/爱弹幕.js" + }, + { + "key": "异世界", + "name": "异世界|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/异世界.js" + }, + { + "key": "好看动漫", + "name": "好看|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/好看动漫.js" + }, + { + "key": "奇米动漫", + "name": "奇米|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/奇米动漫.js" + }, + { + "key": "怡萱动漫", + "name": "怡萱|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/怡萱动漫.js" + }, + { + "key": "花子动漫", + "name": "花子|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/花子动漫.js" + }, + { + "key": "动漫巴士", + "name": "巴士|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/动漫巴士.js" + }, + { + "key": "樱花动漫", + "name": "樱花|动漫", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/樱花动漫.js" + }, + { + "key": "搜索弹幕", + "name": "搜索|弹幕", + "type": 3, + "api": "csp_PanSearch", + "searchable": 1, + "filterable": 0, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "danmu": true + } + }, + { + "key": "易搜弹幕", + "name": "易搜|弹幕", + "type": 3, + "api": "csp_YiSo", + "searchable": 1, + "filterable": 0, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "danmu": true, + "cookie": "satoken=0eedba28-be8a-4f01-81af-2d8d44808ecf" + } + }, + { + "key": "云盘弹幕", + "name": "云盘|弹幕", + "type": 3, + "api": "csp_Yunpan4k", + "searchable": 1, + "filterable": 0, + "changeable": 1, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "danmu": true + } + }, + { + "key": "夸搜弹幕", + "name": "夸搜|弹幕", + "type": 3, + "api": "csp_Qkso", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "danmu": true + } + }, + { + "key": "小纸条弹幕", + "name": "小纸条|弹幕", + "type": 3, + "api": "csp_XiaoZhiTiao", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "danmu": true + } + }, + { + "key": "夸克趣盘搜弹幕", + "name": "趣盘搜|弹幕", + "type": 3, + "api": "csp_QuPanSou", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "changeable": 1, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "danmu": true + } + }, + { + "key": "夸克短剧弹幕", + "name": "夸克短剧|弹幕", + "type": 3, + "api": "csp_Qkdj", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "danmu": true + } + }, + { + "key": "荐片", + "name": "荐片|磁力", + "type": 3, + "api": "csp_Jianpian", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "playerType": 1, + "ext": { + "danmu": true + } + }, + { + "key": "修罗影视", + "name": "修罗|磁力", + "type": 3, + "api": "csp_XBPQ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XBPQ/修罗影视.json" + }, + { + "key": "80S", + "name": "80S|磁力", + "type": 3, + "api": "csp_BLSGod", + "playerType": 1, + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "New6v", + "name": "New6V|磁力", + "type": 3, + "api": "csp_New6v", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "https://www.xb6v.com" + }, + { + "key": "SeedHub", + "name": "SeedHub|磁力", + "type": 3, + "api": "csp_SeedHub", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "磁力熊", + "name": "磁力熊|磁力", + "type": 3, + "api": "./JS/drpy2.min.js", + "ext": "./JS/磁力熊.js" + }, + { + "key": "美剧迷", + "name": "美剧迷|磁力", + "type": 3, + "api": "csp_MeijuMi", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "迅雷吧", + "name": "迅雷吧|磁力", + "type": 3, + "api": "csp_Xunlei8", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "电影港", + "name": "电影港|磁力", + "type": 3, + "api": "csp_XYQHiker", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XYQHiker/电影港.json" + }, + { + "key": "布谷TV", + "name": "布谷TV|磁力", + "type": 3, + "api": "csp_XBPQ", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XBPQ/布谷TV.json" + }, + { + "key": "BT天堂", + "name": "BT天堂|磁力", + "type": 3, + "api": "csp_XYQHiker", + "searchable": 1, + "quickSearch": 1, + "filterable": 1, + "ext": "./XYQHiker/BT天堂.json" + }, + { + "key": "Mp4电影", + "name": "Mp4电影|磁力", + "type": 3, + "api": "csp_Mp4Mov", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "酷吧电影", + "name": "酷吧电影|磁力", + "type": 3, + "api": "csp_KubaCL", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "美剧天堂", + "name": "美剧天堂|磁力", + "type": 3, + "api": "csp_MeijuTT", + "searchable": 1, + "quickSearch": 1, + "filterable": 1 + }, + { + "key": "我的阿里", + "name": "我的|阿里", + "type": 3, + "api": "csp_MyAli", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt" + }, + "style": { + "type": "list" + } + }, + { + "key": "我的夸克", + "name": "我的|夸克", + "type": 3, + "api": "csp_MyQuark", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt" + }, + "style": { + "type": "list" + } + }, + { + "key": "我的UC", + "name": "我的|UC", + "type": 3, + "api": "csp_MyUc", + "searchable": 0, + "quickSearch": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt" + }, + "style": { + "type": "list" + } + }, + { + "key": "阿里合集", + "name": "阿里|合集", + "type": 3, + "api": "csp_AliShare", + "searchable": 1, + "changeable": 0, + "filterable": 0, + "indexs": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "share": "./JS/alishare.txt" + }, + "style": { + "type": "list" + } + }, + { + "key": "短剧合集", + "name": "短剧|合集", + "type": 3, + "api": "./JS/quark.min.js", + "ext": "./JS/短剧合集.js", + "style": { + "type": "list" + } + }, + { + "key": "AList", + "name": "AList|合集", + "type": 3, + "api": "csp_AList", + "searchable": 1, + "filterable": 1, + "changeable": 0, + "style": { + "type": "list" + }, + "ext": "./JSON/alist.json" + }, + { + "key": "网络直播", + "name": "网络|直播", + "type": 3, + "api": "csp_Living", + "searchable": 1 + }, + { + "key": "版本信息", + "name": "版本|信息", + "type": 3, + "api": "csp_Market", + "searchable": 0, + "changeable": 0, + "indexs": 0, + "ext": "https://9877.kstore.space/Market/market.json" + }, + { + "key": "push_agent", + "name": "手机|推送", + "type": 3, + "api": "csp_Push", + "searchable": 0, + "filterable": 0, + "changeable": 0, + "ext": { + "token": "http://127.0.0.1:9978/file/TVBox/token.txt", + "cookie": "http://127.0.0.1:9978/file/TVBox/quark.txt", + "uc_cookie": "http://127.0.0.1:9978/file/TVBox/uc.txt", + "danmu": true + } + } + ], + "parses": [ + { + "name": "臻享", + "type": "1", + "url": "https://zy.qiaoji8.com/gouzi.php?url=", + "ext": { + "flag": [ + "qq", + "腾讯", + "qiyi", + "爱奇艺", + "奇艺", + "youku", + "优酷", + "sohu", + "搜狐", + "letv", + "乐视", + "mgtv", + "芒果", + "tnmb", + "seven", + "bilibili", + "1905" + ], + "header": { + "User-Agent": "okhttp/4.9.1" + } + } + }, + { + "name": "优选", + "type": 1, + "url": "http://1.94.221.189:88/algorithm.php?url=", + "ext": { + "flag": [ + "qq", + "腾讯", + "qiyi", + "爱奇艺", + "奇艺", + "youku", + "优酷", + "sohu", + "搜狐", + "letv", + "乐视", + "mgtv", + "芒果", + "tnmb", + "seven", + "bilibili", + "1905" + ], + "header": { + "User-Agent": "okhttp/4.9.1" + } + } + }, + { + "name": "至臻", + "type": 1, + "url": "http://yunhai.qijiyun.vip/home/api?type=ys&uid=177259&key=dijnouxKNOQSTUWXY5&url=", + "ext": { + "flag": [ + "qq", + "腾讯", + "qiyi", + "爱奇艺", + "奇艺", + "youku", + "优酷", + "sohu", + "搜狐", + "letv", + "乐视", + "mgtv", + "芒果", + "tnmb", + "seven", + "bilibili", + "1905" + ], + "header": { + "User-Agent": "okhttp/4.9.1" + } + } + }, + { + "name": "无双", + "type": 1, + "url": "http://1.94.221.189:88/algorithm.php?url=", + "ext": { + "flag": [ + "hgvip" + ], + "header": { + "User-Agent": "okhttp/4.9.1" + } + } + }, + { + "name": "线路1", + "type": 0, + "url": "https://www.8090g.cn/?url=" + }, + { + "name": "线路2", + "type": 0, + "url": "https://jx.m3u8.tv/jiexi/?url=" + }, + { + "name": "线路3", + "type": 0, + "url": "https://www.ckplayer.vip/jiexi/?url=" + }, + { + "name": "线路4", + "type": 0, + "url": "https://yparse.ik9.cc/index.php?url=" + }, + { + "name": "线路5", + "type": 0, + "url": "https://bd.jx.cn/?url=" + }, + { + "name": "线路6", + "type": 0, + "url": "https://jx.yparse.com/index.php?url=" + }, + { + "name": "线路7", + "type": 0, + "url": "https://jx.hls.one/?url=" + }, + { + "name": "线路8", + "type": 0, + "url": "https://pl.a6club.com/player/analysis.php?v=" + }, + { + "name": "线路9", + "type": 0, + "url": "https://jx.2s0.cn/player/?url=" + }, + { + "name": "线路10", + "type": 0, + "url": "https://jx.nnxv.cn/tv.php?url=" + } + ], + "rules": [ + { + "name": "农民", + "hosts": [ + "toutiaovod.com" + ], + "regex": [ + "video/tos/cn" + ] + }, + { + "name": "火山", + "hosts": [ + "huoshan.com" + ], + "regex": [ + "item_id=" + ] + }, + { + "name": "抖音", + "hosts": [ + "douyin.com" + ], + "regex": [ + "is_play_url=" + ] + }, + { + "name": "饭团点击", + "hosts": [ + "dadagui", + "freeok", + "dadagui" + ], + "script": [ + "document.querySelector(\"#playleft iframe\").contentWindow.document.querySelector(\"#start\").click();" + ] + }, + { + "name": "毛驴点击", + "hosts": [ + "www.maolvys.com" + ], + "script": [ + "document.getElementsByClassName('swal-button swal-button--confirm')[0].click()" + ] + } + ], + "doh": [ + { + "name": "Google", + "url": "https://dns.google/dns-query", + "ips": [ + "8.8.4.4", + "8.8.8.8" + ] + }, + { + "name": "Cloudflare", + "url": "https://cloudflare-dns.com/dns-query", + "ips": [ + "1.1.1.1", + "1.0.0.1", + "2606:4700:4700::1111", + "2606:4700:4700::1001" + ] + }, + { + "name": "AdGuard", + "url": "https://dns.adguard.com/dns-query", + "ips": [ + "94.140.14.140", + "94.140.14.141" + ] + }, + { + "name": "DNSWatch", + "url": "https://resolver2.dns.watch/dns-query", + "ips": [ + "84.200.69.80", + "84.200.70.40" + ] + }, + { + "name": "Quad9", + "url": "https://dns.quad9.net/dns-quer", + "ips": [ + "9.9.9.9", + "149.112.112.112" + ] + } + ], + "lives": [ + { + "name": "ITV", + "type": 0, + "url": "./ITV.txt", + "epg": "http://epg.51zmt.top:8000/e.xml", + "ua": "okhttp/3.15,AptvPlayer/1.4.0", + "timeout": 3, + "playerType": 2 + }, + { + "name": "肥羊直播", + "type": 3, + "api": "csp_Feiyang", + "url": "https://9877.kstore.space/Live/live.m3u", + "timeout": 10, + "ua": "okhttp/3.15", + "catchup": { + "type": "append", + "source": "?livemode=4&starttime=${(b)yyyyMMdd'T'HHmm}00.00Z&endtime=${(e)yyyyMMdd'T'HHmm}00.00Z" + } + }, + { + "name": "AI直播", + "type": 0, + "url": "https://wget.la/https://raw.githubusercontent.com/PizazzGY/TV/master/output/user_result.txt", + "epg": "http://cdn.1678520.xyz/epg/?ch={name}&date={date}", + "playerType": 2, + "timeout": 10 + }, + { + "name": "虎牙一起看", + "type": 3, + "api": "csp_Feiyang", + "url": "https://9877.kstore.space/Live/huyayqk.m3u", + "timeout": 10, + "ua": "okhttp/3.15" + }, + { + "name": "斗鱼一起看", + "type": 3, + "api": "csp_Feiyang", + "url": "https://9877.kstore.space/Live/douyuyqk.m3u", + "timeout": 10, + "ua": "okhttp/3.15" + }, + { + "name": "YY轮播", + "type": 3, + "api": "csp_Feiyang", + "url": "https://9877.kstore.space/Live/yylunbo.m3u", + "timeout": 10, + "ua": "okhttp/3.15" + }, + { + "name": "电视Live", + "type": 0, + "url": "http://127.0.0.1:9978/proxy?do=live&u=Gather", + "playerType": 2, + "timeout": 10 + }, + { + "name": "网络Live", + "type": 0, + "url": "http://127.0.0.1:9978/proxy?do=live&url=https://tv.iill.top/m3u/Live", + "playerType": 2, + "timeout": 10 + }, + { + "name": "范明明", + "type": 0, + "url": "https://live.fanmingming.cn/tv/m3u/ipv6.m3u", + "playerType": 2, + "timeout": 10 + }, + { + "name": "APTV", + "type": 0, + "url": "https://wget.la/https://github.com/Kimentanm/aptv/raw/master/m3u/iptv.m3u", + "epg": "http://epg.51zmt.top:8000/api/diyp/?ch={name}&date={date}", + "logo": "https://epg.iill.top/logo/{name}.png", + "ua": "okhttp/3.15,AptvPlayer/1.4.0", + "timeout": 10, + "playerType": 2 + } + ], + "hosts": [ + "cache.ott.ystenlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", + "cache.ott.bestlive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", + "cache.ott.wasulive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", + "cache.ott.fifalive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com", + "cache.ott.hnbblive.itv.cmvideo.cn=base-v4-free-mghy.e.cdn.chinamobile.com" + ], + "flags": [ + "youku", + "优酷", + "优 酷", + "优酷视频", + "qq", + "腾讯", + "腾 讯", + "腾讯视频", + "iqiyi", + "qiyi", + "奇艺", + "爱奇艺", + "爱 奇 艺", + "m1905", + "xigua", + "letv", + "leshi", + "乐视", + "乐 视", + "sohu", + "搜狐", + "搜 狐", + "搜狐视频", + "tudou", + "pptv", + "mgtv", + "芒果", + "imgo", + "芒果TV", + "芒 果 T V", + "bilibili", + "哔 哩", + "哔 哩 哔 哩" + ], + "ijk": [ + { + "group": "软解码", + "options": [ + { + "category": 4, + "name": "opensles", + "value": "0" + }, + { + "category": 4, + "name": "overlay-format", + "value": "842225234" + }, + { + "category": 4, + "name": "framedrop", + "value": "1" + }, + { + "category": 4, + "name": "soundtouch", + "value": "1" + }, + { + "category": 4, + "name": "start-on-prepared", + "value": "1" + }, + { + "category": 1, + "name": "http-detect-range-support", + "value": "0" + }, + { + "category": 1, + "name": "fflags", + "value": "fastseek" + }, + { + "category": 2, + "name": "skip_loop_filter", + "value": "48" + }, + { + "category": 4, + "name": "reconnect", + "value": "1" + }, + { + "category": 4, + "name": "enable-accurate-seek", + "value": "0" + }, + { + "category": 4, + "name": "mediacodec", + "value": "0" + }, + { + "category": 4, + "name": "mediacodec-auto-rotate", + "value": "0" + }, + { + "category": 4, + "name": "mediacodec-handle-resolution-change", + "value": "0" + }, + { + "category": 4, + "name": "mediacodec-hevc", + "value": "0" + }, + { + "category": 1, + "name": "dns_cache_timeout", + "value": "600000000" + } + ] + }, + { + "group": "硬解码", + "options": [ + { + "category": 4, + "name": "opensles", + "value": "0" + }, + { + "category": 4, + "name": "overlay-format", + "value": "842225234" + }, + { + "category": 4, + "name": "framedrop", + "value": "1" + }, + { + "category": 4, + "name": "soundtouch", + "value": "1" + }, + { + "category": 4, + "name": "start-on-prepared", + "value": "1" + }, + { + "category": 1, + "name": "http-detect-range-support", + "value": "0" + }, + { + "category": 1, + "name": "fflags", + "value": "fastseek" + }, + { + "category": 2, + "name": "skip_loop_filter", + "value": "48" + }, + { + "category": 4, + "name": "reconnect", + "value": "1" + }, + { + "category": 4, + "name": "enable-accurate-seek", + "value": "0" + }, + { + "category": 4, + "name": "mediacodec", + "value": "1" + }, + { + "category": 4, + "name": "mediacodec-auto-rotate", + "value": "1" + }, + { + "category": 4, + "name": "mediacodec-handle-resolution-change", + "value": "1" + }, + { + "category": 4, + "name": "mediacodec-hevc", + "value": "1" + }, + { + "category": 1, + "name": "dns_cache_timeout", + "value": "600000000" + } + ] + } + ], + "ads": [ + "static-mozai.4gtv.tv" + ] +} \ No newline at end of file diff --git a/xiaosa/spider.jar b/xiaosa/spider.jar new file mode 100644 index 0000000000000000000000000000000000000000..4134e13d042ecac245df78399b8d3e456ba83c37 GIT binary patch literal 2032015 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

{t6Yq`w@C@!21EsA2b-qcE`+H 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ℑS)zY6TFRD7mKdZl$sV1KCB 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

`%iN0?3PU*2y>nPrCG5b8a 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
^a;CM7AJFaCHfr|In(i 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≻ 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

    -*<|)=dtA*9q%C-7g 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

    hPRdMU<Ax>;_Ss;`V184H-07LJI#XE@;>| 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 z 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/NA}M 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%0D>E4wi`o(4%A4zlAQH>Ra79ZIh8|KJgk`Q9 zTeltExU)5r9&PF4QL?_`zo0k=c(TDY6~t~pV`Kir-MkO{WQG4D-zoa1PuR`FI@;t* zG$t0ORwNfLPjJ2egWbaOWRG%qGSxxasKj1^Sz$jWz{?9QlNb6TM;OUTqysMAx3rswUV8T!8Z zcPFmMoWFPh>}$!dYVam2xY#<`v(j4L-t6uIhLtirE5!_jV_34`SdIAU0gqvg1#F8J zDTxf7S_;XxHFYxy-au~pcP#q?Dd zr~i>Sz*S4Xp`eS1+{vym+^~qqolJhqos7O|)tB}MOXU&V>+zH);!>01MQ;#~s%q&s zi}m4JyTh*F8?7*ZSMhg*zvH}?uI1my0{Qj~y$2%8Hd#1wvyyf%zOV}TC>wNrGp&AK z)sarxqqK@polY;^hT6mSTqxAOge%C8m(z`C-ljJ`tC!=-ZIZow*+F~J`63zT{(<8lFy^Vj%Z`HD8E^HAl9+b8HkDS^k(7CH;JB}@gR-tne)zN&fWBR z4!YD^H2TjqDC}n9Yy>v9TyIM54SLyD2F=~eBna!vAdJtIPK06blUhCS54@2IMvP1S zb29TdY~69COv`#Dvqj&3a$Td%2x@e6itL!aj)QBM;;6P?lgE zrcNBe8**<7<@|?TvQ+0y8hB-(7@v+;!{94jJa69TJ*cfXvQ_`%s77i)j32kf9VJF% z&5!U5b*tr!C4D9D^UIW^$yOdoOAB+hs&P)I6F8oJ{3)+m#ob70CEhNpek8h<#j6<8x}1!lLxU8s_@I=!U*US57F?t&Tkw#r>FEvD63R}!95r|V9HxK97V zGs6X}*)oFrxzL}^3-iw`ahWm6|1tWn7%KU*gTibZEctuT-&yA0G$hPeF+a_v(+n4u zA+<_YBJrNP~_46 zaVYTTkrFR^g{M8pr_l*eIDKQ$(#x+*`4zm$3#=GUP`VvS+DGUYo5HvRsq|l)!U|0l zp}!1zwYj5qgu?mqF6m~rgOe;Pt#FzwL&`#Tk{#%6#1-w=L<^_Mb#^|}<@H)gW+KQT zGS@Pe_ez&Zr4-JWxo#hq%ZrYgT9oQNo$pETeBtbfD>><{9g9#5 z(;N}HuO`3W9fY39p`zlraZve6M*;d*vj-f5Ej;a8UP zO_n^_TL_b)NNtFNobyQ(s8^lJ4LDqbA?mow0nZy_n)CP9b9b-IV$n{(ghcyw4b=oUv%( zYI`vOBt;>h!LyWNUT=B%fjy-zgvl zZy~RP(k*09@U89_%hRnfDsL;3nToqeQ-Gu&XYsvc3y$%S8s|saSXa9V>)VW{s^8^A zc*>B7T%W_f92D;AK@rp;xqrzEZ4>UOM;pT25%-NH87E2HnWjc3 zMXyF0ZO0?4*3}s&P4AMs!Koq_%c+i*^_5d&uqK~Zu5k^gmQDnh^KH#eq!o|tT3yP1 zJXwUCdeWG38T)S`JqLm;GW~kcnLs74{a66JcsmP-m1g64+ll~t|sBiG>adU92)ylJV`Rw zV{JK42m7%FBH``A8SYb`zoiV)RQ{H_al83j-pIG{w>-^tvLwiU{GH}oj^+Ga$KQ+j zyOFkwSu3r ziKtYNMG=tx&pG$LnKx;xeE;9~@2{D6?|pZBcRBZ*bI-!hlpEov<67PD4}_R*LFi}s zj@1TZi#p?f$lRT{fBrYki&x90N3Ut76q-RX~Q2QvSjjRbag8fTng)AYo1oouRA&j#J z$T}HupO4PDjY5AgFN`y=)?`6gBhy9e!+EZitd}1jwqquAhw*dip|*&tJ{pQk3&($8 z{7*^@6?L)||D_(^a9G0RY+kXy0_jU~zLM4vji>bpu*ojl)Cq&ak_AhC2d)kVi+dfD-5r2FdS{>@Wq%e677TJJC)+kC+Xz+-soMF zCsD_Fo{!12_o{0gvYXb#0z9w+H7N~X!~01LtWqvqCc>=PWm`8$|ZeD z9BI1z<==|Q=X(?{du+Us;bW#2V8k$L$tQ#`?(L?r=a$%NUW06H*fpe7ZEPlQ2`z=^5G%IH-!k^vXaWC+j)s(& z@gA?;88N!Gk?Whn>^Vw3Ux|^AF1c?xUqbGoXE-ePkPORxCc_to@_Z{4-n$%j5|VGp z;d(kbw}#4hgz}{;`O=i{x_qdN>&oX}Rs0cCJ~uldYlu>_0oU7fgqY{ZJ#*FndMj#vgub>=3BOku zKX2tZ)4vnSC+AOw<^0L;g`xCsg~EH6!vy^+=^ddwTMLyu=}I0$&XrtWqs8+28aF=~ zBL*EalbzsE%Xk0kI1h1Jwo-g7hdtuygyrPJo*u$YcMBJRnp-~aP0yuPxi2s)i zog(5_cTp%q8pH9;Ju)06y|Aei7S5S`daWb=IZ~)ROBc9~oTV+yE0-r2@x?`A4&OCx ziBWidIqW0^%QaG%(ni(u81=kVJ@;_s^FtMX(!_d_SMw;nsnUF^JNdytkS3DXKqdSi zg-UpRcP0F6ks#8Wq?wW&ah#+`KC@lQKMU03$T7~y+f>$G< z1?BSJ@$eZ1QfcUT1!u|ob0JfY5YN-e zQGbXEBQ8?^mI@<2UEe++!-!$j{~uKrXRUs=O<~6)n3#XPtS&H`HIZuXZA7=|KVN*m9wxHL?X@f-95AnyIs2yAy3+)?xz=K&1SvAoFELuf66K!Fwqtz9yqtgSeBgtRZ zgP64JP5fodzltoqlN8i}#jq4qRwL;(fC2pLH#9gAY3}C@NuNKNl(f2|WE<*8wjtVu zUvtrP5&Qad5kG&raMvOgvTnN2ZYYT4ZBW|qj@E8Sxo(3wtFI#cnR}PG)udBOnna#u zkJ#&+8XFw124~YlikLhJw+)b1semgA(t=kqo1ges&>P5Vb;?qD)Qy=Y?2$;pNUE`k zWSHLr^(HlvO7V^QU&$U=Bkj$u0jG(u*6$UHsYH+uAFi7hYHN?}e$){60Y>nH>mSX^1{$=J?*Kv7Il}}d6 zM?&TC`vQGnvJIx|YM&TQNU;hWeR~_t56z~~-bLE z&s1{vSyC7D8MZBPjNvp8PWA=EX(X=4``|RwDyq+tJu(qhbQ#$mW7 zt}l>ZYvQImt+ZDDSccoPv^tEpFz+zq5dP4{;Tarm4Z?bE^bXr%$6zsMug zbS7axt=x}Cl|_%hCu;EJS8@7W{PODx#PcbA7r(rX_(%^h{Cf~$@u4_jE#GJ8erKis z@xl0Z{Wk~A>i%EFx5cvmP22Zh!~W00{u5UMTepSKNY?rfvj1mc|KlwXSPmhpA{C#m zB*(SSfIUHIU&giY+e!(-27FX|tzmzGzqEueX@mTV#V^J_z$@BapU!A>>cXZV=j&*ygL{UJB#P>4Emv zEWO-I){hceTfwQ*pgkhFfD!5MG=20kT9F%YM|=x+#Kp4jeXezq*0`hz+`+(tBEI&7;@YBtlpcP5Z5*F_;;zaB}gmg7S@$-Yk?sJxeJMtWI| zg3|y>y32_cb!d&7mA8W4vde5;u?=wVsyYmKU%*@pGT%Q9O#}cz?j*Iu73lo;0a_ro)omTQ$8upz-JYLE9K8JG>6uZ=rp}=~yuq2POo_r=+XYtBBfUURSoH>n1 zj~o@>^DMHx+CbjNFoi;nCAqlEA=WV5kOHTHY^1iy+()>&(@4G<*juD}6Qnr0EQxKj z4!7E}#FZ{t>4a?)DpFar_e<5AB$@_OWrA*#);t1Jmp1AJ*5BR+w&%1_dt?C@anH^ekWhm*$1yvUmmg}0`hjCMv4!Ef z6Q3x1(MGoX$uBeZZX)@9%Hk@(ci89}- z9EQ&~@QGEx>zW4h5Z7F%NnG>wDCIZHcR>g9edDt{+eyMQG|wA?DVTN}sJl#~^!Pj4 zs@|S`=2zQ)GS4eR<`+j_!??6TU-6VKOt}YoS%XA?^gEE0xRkEKWP4Y$dxi0BUQ4_3 z&G|9LkSV>xeh%Y9EE^@M*Uz!Fq%UTN%q9sLvQHzX6iBSxIC=urm`Em+B#VR+DVz-` z*KTjc8e2eV3y`mOP2Jfet+H%~wW@r&znf~q%2^NJ zrA4VqI!petB!P%uQ3&EgbZ;D&vS%`maMRopjcWcgJL<_2)sw1wHlmfr0(_xp9v^(G zL7EdoboR<`Fh(>(Q&KO+?bGN)eJ+@-1eJe=`C1F1Jt14($}KMo%F|rwexDkHRPH@5 zk{=jATsFlLnTw^&Wza%&ODv&L8x{FqYU5ItC~e$f8;eyNl(LmeC0JvDWR3i%>{LxE zEUVJ4kzGwCO~P7+j?|^g9<%HwsEN~kVFlMjEFeDE5jyt`k1Yxfsc|BRJ&XJW8=IKR zI%MGrj!4^D$C+;2?iWTkuizn)moU6Y?%w>GP0(&jA2^#J_rT`KGq1l0*F+r0V-2Rb zvFwe9*A!!}N;{R)NL%VEsL^EFS7ciH_+>GYSujuFFEZJ7-LZIjr46NN8WHwLb|^wv z)wN`UDN>B2*zyngVlPaI1mXA=BfibwMMUmkKg}yFHzJ%3{7q+DF0PNppandQyr4F# zXt_ZRR{rivZN*4apcQ2flSN_7zlPUY0+hW7bKovJ2pgL_@^=!YcHFXA49`|A%Q08M z|DZ;ziB*k5`od)-twOWg4NJC>EXAVB$p%APSZ-ten`Nn@GmC*#(HP0OXw@=C1TBfu zAZZNJ#`x*Pur@|aSunXOfUYr;p1O(cCQ4ngZhS7p=T|`58`VgsS|fR^%H8?BteYWi z=tSv0Qv;>1_#XyoP}3+!S#oTMS5CL)Mr}=iw09X*Sld|dG4XX#*C8Cf!Ev1$M?hCL zu)|Wpc*yc)?&AFXFT;o#HA1#7kt&FC8rNjHraz5hJF|D$Jl@`Aec`B7+1}-1Y40*Z zbuBi-wk`RFu)J3KU`LiM;on%cgnwn(vI@7GqbysVw@sCEx?yY^!8aOzDL2r>=hZ>F z(7XcG)Xe&i07YHeY-~2%cxk<~*{HEC3lmD0Nt=yvh66U|iyLmNCdM|7TwrcNj@f+f@Y#L{L9*^o2Tz$Dagn2^Nv%Idt5tDG{a`$dNI={L- zq_;KV#Py2a*6wA!t+C$E$8WG{Js!7gNqArAI@y4`W3xA+$Ms4*x%)OBgJ%kB1>9R* zS6rCa1@mYodulDwDHK~VatG&H|^$>rZ8cSyuV+s8@q??Z~ z3iFm}!de~`kzHCz7u$Yijol^j!t#v}uQk?Gd^;kn+nDAk^a-qEqpc`7d)W4P<>exD zn<8y%<%l}ay9PN-w?NtMcq{v8n%%mxw_)*^PS!O(#hp<4Bj_TQZl~IAfLK(-Ryae^ zGS@U(7_@*&TY3GD4GE->$b8S{7*1-Ry4||?S7IQ7xxEMe#DCkPiP@}x+?vf@GmqR8$RgKB#5M@KS%Ke~U5?m|Wg})9#n0!3dL~2w| zPF3Y)&5UVWg_uNS(PD%%NTG!^aSxDirU6IttYV-$J0|@eWy6}Z1ZOb+Vw^RbX6f5}#cQOrgzgCCDI*87;z0W`%|65wjrd z%>~5NCX@8i%5{}7QP`I)oZHCiE_kA_Nd%Hy2v=$umUKnQ-j{?cM>rJj8Wi^15oI$u z68LiLVxCyM>^D=!X+$etqzDeJBpm_r0cDr|Oz>lxqjY_7kF0Qrj#02F9>{YSZi)tJ zF)H~e+YTCFzaI%G{fT(Ebqt#xV4Hfly9$*Yd6lC!lw(RrBD&fN_Q%yHLrTOeQ0L)< z)Vuu%lx(+@icYcjDug-`;{46RQXnBtio=`BVd}vZ%*B!r=R%@(-XWYnA1UEEF6o^; zBvfEd?fMYBu^HYB!}vVkWq30K=a66wze9XD#_w(j;7zW&l+5KdW4?F*ab9F;afCRd z65{M3=`QwAvcX|m=@!}#I`+CI_3t#C&;1{1I7hoalZG?7pg`J8+G!ZZ=jZYHtlAg% z>m>7BId=dv}d3%uDcO9G)N|izW#Bp@Bi9$!R1`<&ii7lx_}&55=$FRH#sCC5%5ap%UK* z~g%9}ATj&74z49#+f^UfrAyrelN%m!Ljwj3UA?6+ucTmK?IKkKLaVq{t`kjUZAmcMqt?jOXWEL|4O|C(F>uqA@l>=6)uXub1}Y)QHdXb@t$)0CB%J% zJ}HRfNnn>TS+du*Jx-g3vBmS^^N%9V1XAlJLLx;+;+K>Hj#mb8nZg>RCU+yt57g(t zCdRJJqp7VCS{moz($RXhBX$eY&NnYTToaKy5NErdt>JjNc0E(GGJT1pt+O{RT@5Se z+_;n1~jXzf~)HkMwEXZg~#zteX)8?`B9-^ zPF?0~yc#isGk>p@&VF56*}En_Ps=?sb4CT0EJr?Eh4H&$kS>ylxu<^BRsK5TPuWVDdxYG1P&-@$N&O$uS>g1WchWfkEtmKTtBFr5aGvod1!Ugf4F^kL(}{pS*TB8J)d;#(<=!guY*U@W$@Idafyw-BJD6T#$-sS5qBM zElDIKrT6F)BK)OLhtIz@7S)+*E>S*>gBrxkXLJ=KbS4|tx>0YZSr;9h?J%- z*CEE5bY7>9pwX|(I?bflbwbveKoU^7Hm8N2qgkhwo{sIbQNE|a$x^;8f3 z_7?DF$lb#dO8T&VEkdh*XtWE6*FbYUmu9LK*CT5tdKfEeUt=8P6)tf~XzhC@?)pHJ z9)BMNuQQYq>;$5RSV~;lfz2gd-oLN#{?mCsCzRBD>=q>)f3gh6zq<=r|-LP=mXUR2d8_7wM zWt}f%it%GI3TM`xb^|g-A5xgJGZmRlq2FKJ&f|GU1iY^N5z@cJL73-=0TID`1VgW< zd@N-b8H^x>c`oQqC#|>F`HXskWm;;qh)I`S`T&aVAE@XFWtAiU z)T!)6_nxxXTgl0Ki#e|}7vXo3t0muMcvWv;Yc`3he55(}r0%-DSCvY>bg$l-FI|y* zxX1Aca>&trOUF~qmDt3iZ0)E-8lG%h+~ea+4D+yWSpEmLSf8rUnSfX*uwWeLklYgoXNC; zWZpN`3Zj)HTOd17Z4uc5^OjA@Z(pyV3wu!}3X3r_{6e-JU1jZQ0{>3s-!BH%n>0UN zjWftSzdS_M+)R>F%sa)rA$y?PK`4z@c7{$E{C4Uc$=o}-4`f-)iA=^Zzu?mZ?@qs# z_6voaNEi6~VycR>B@_zduJu2(HGbce;5fa70jkv zyB)#3E(5#_bMI`YTY7e+w7?Fil$DgYRinhMbctK#c7j_i0%^5mp8&VQTK#<`Uey%F zkRr2qFCDpKoQg{2ca&R1BtEqqS6s$Nd@2(0DYq~sJ~blcbbN`y3-j?nR;n7G;;&^~ z>UzX?>V^JdUKlUsh1ppU{-RDXd8?V3f_R9Al;u>M*J-uj^wfbfy&jz21|Z+;&Wv`% zk-Cub>;}Cq4)#*V!j;uP7*Ge;$I<$#=oL%*{W+G4o&i2I?)fW5BWe%gnWjI2HT{lDz1dgsX5iK4=L>MG zT)<~Bh79t2DRrucI8G89v7XXdud%e>YdT`8m|qw_#J<16eJfr|5^c2udK1CBpX8hz z>G3b_q}KL0psW{&<77dmUBfZRv;*s%9n624J{DnETk74wJ)PNp$RKQ%-M%=-69^P7)ovb0|Z;Cp)@T z7_rcfJyaNXL&rjy+syY*MEuiYz3yWOR`a;d2y{}F&1$DZgAA_HLdHf4%rZ&F(T@@j zmHO{!82gP~r@oARk0bVinhM98c3USn9dug%BO+spkImKuj?u}_;7QBK zThkfK$m=B8VANTz=^(bjs0Ui^2-(Pr;hJUhNfx+EhwKrD*O0tPyDqbOvqv0;c}RxwEA&RmLHRL)j&5KzGTXdlDmb_Y{6}R^=|(oVp(DK~lEU49u!Q0< zDYKqEX4!J0qwt+wPcj%0rXL&#!bpKLZe>we*D^%U>RBDBuEWT#R0nzR9WF@P6)8g-EM1_yAv$@xQjYJIDbL3-?zspPUExX?SxJ$l0w}p% zI~KJ=b?JH*JU2i40N2A_(~bTYmOa7rOM<^&W4RT(9QLPprjx~0+zsG&6K<+cHo%#Q zr|1+Loc<{2d4#G1cuLMqv6j6PX$EJo1)O1$C~gBMnggeR&=q&P{V?LCwyaU_))`Ov z5$OYX#1$*HF9$KXc0f$|Xh8HmkrOi)cZz;s*iEh2QyqOWaQns-ZeQEonTIuZVaus` zINNyM^hIThIg(hODSH~}55eOfA%q((^HdlU%7wl3$iDb965!V-pz3S;)Yk^}huXFg z4|!>)x$UXg({Uvf6h~->kaw!kKSVhHF~aR95pEyQNq2VPbA)u50E&Ds?HJ}u^!QX`gEb|1z~)GEj)-V9K2l%6&aj-AL)Bs)a?uq z{%m2Xe`2Y}u+$;{w$vxnoC1B{0I!K|_;1+$%R1~(4gKT$6~f&kN7xc$^dcjXL?AH` zzAcS}Y8u$Sug`W>pT#e9Rrl^(xpFDZ>LYI54tm=j?rmhdQS4vN@2MWLK++$|Ij%ST z&v0+3HT#6{np88W59tfac1osjd^X!Dc{6PP563xDnOD7?ZF)VcxCBB!eY(@nT%!I2 z#+LKjfS)S#i@I%G2hVh=dpV`q^T{;(YI~aRBzP5{wvEc#w>WzLcIO4}mOeKkvA{Tx z6?`SnF%{dK8bcg3UpTaUV$J3gs#HF)WPG2h6Kgjfd-~=B`IOpq+^JRgm#3BwB!h=^ zXx1?c;Lo9Npinm~g#_1(@qU6lJA_ShyAUFFW9|`)@=A&3px;}zQBBnEeK_s~y=4A8 zpIvyCJc_$lQSCX$&C&@mDFa0}%`ntueo(9&)+S|;g7H(7D*=i==Tsm)jsjxKH&nQ1 z!ssq!`f$hL>Eje*2yYQPeb-Bg_?1)hr$1yDk$Txuu(z!*6jJ)U0k+G(X`Ck~LWz zyA+O{i(}VH)@F~^D4pE4ESKLACzx%`w9%O?tx$KyT%F3Z>?DTumK4`T@ptJR z*2nc|uH_7A!5Y!@**16${i}!;`CWH#qg-VD#U-7pM4+>zRp+cL=lsE>pzd-`#I`1a zSL5u0@Ol{g5%y@nfz#ZNXAO<(An^BhNlP+Le=F+-I&LS9!PODR?&4G5 zF4+^i;YdBf);9eF?WbSTI>hg!HBufw{8skF#CERSGcC+r56Q9GI6%C$madhQkrTj{R! zL9VMua{(1hZJv@t>W14~t!~)@?-oVfFH4Qk_;_>s8|c>Ipuk@%Qd~XYH}H4`P=dxP z)n6GSHRIjz$A9wbl)Yh^oLXm$J0Cqs}vm|bfc%j z6`4v@yjiVrDy=(LG)}LWT6tefKGwP`bt5)mN(qFy%DR{{!IV2N7_0Cu4DUeNZK1Ja zm=f$phAqdNJi8N!qqATewIjJRJv_66#$*`m^TV?{foAvK|H15T>Fd+z?3ZoSY@?@L zD|8#Nmrn=8@ST}U$PtL_Iv!U< zT5ABx^_y6?wQM`QlJKK4ZM{Q}p>~~L$79n^_!QYx<=8wN*?x&(cf(4?{Sn6K4z{)p zTYD%c`Zrpl|FFu}%q2=emLj}tNBt!pOQ;6xuNmD!(@ zkm0L=$F$Z8?(67tLp;-G#&J&lMqXKJ2X@01A6Ii)$LFVL2-_-=XaC;IksRf&)ZvgFWk-bZ3=P77Ilh- z&O&9}ZLk+RR)f;f4UfCz0~NJHx8scsX$Qhd+7%>sgwS&zI7NGWNtW}DU@xvQXgsLb z4H2SgcPYb|VZF%uRgzXI^bzN-yWm*l7f`~eq8>rq&3n(Q^;0URMo)rSgx7``ONDIa)h(bM>D(Lq)7vXjd6QU+jZ8Kkk28s|k%)Ln6WRM_9rS zK1%S2_#YBoTvfNK_YH%`iRPWkET$F)yD#U_Xy6g}Hjn$gJWm%^k9%`y+~-(q|ApEZ zzutp!KWqo%UJ8x-zM*m7gYGWmccy5}=Y+<5R@Io#lw)qlG4J3p_i*eOIuh2UzSyfF z%PEFqZz1Z9g`K-sE#L@Qa_~FCNyWfXDUH{i;{yacvyEizP|ZK{`VKVP4BSW3IB5 z!o5~KCg_j!7On;VE?yZ|DJtLe>hh(BfOeUhU9(8K!Lm2zuz4GoRkm8JLF-ZuH*k0Z ztWH19e7HgL9PkY4P2YCCl=4VHdf?5V#P8~Zcg)KSzChZzG{{l_eFOI2A6cD#YDqxH zq-QiX2vU4^mWd!lcG9y>*(y&B8?uaP-8yj7mJGxc&_I-858yi3eJ zJ^BduLf%@_@2WC%U7dY!30aT$Pr~#u53RD4o~W8@|8H{V)=L~9v;t_wI`iayl&98- zkbrXTAZI9t|8(d*LU#WzD&DWKGQu>1a?KIW=igIZrc!TkUQ+#7_tlANtR<)~z*@#( zEB<*BbNHW>!E<>VjV#h$MAzaTzDR4)oJk0m>Lc>@tpRH#iv)=-c{U>*?zCVn?kv#l z*;otW8xh1Xy5?fda%8kNM;oHi`w+{9G3cH3NMX_by|`BXl-NFRm|6-x+U0$J{SIr-jC)tv`-2A2fz9|%?N$7S!i;I<*yb6t5KjvBaiM?0xNndU zV1C)pc zr-{#&yC3PDKPc#-c!U1yL#WCFyuhU5G$9{qR0~7YugmkruZMsvzshtK+T@UtcI`#``v-TOXCF)DI zAYlnZR%&_vJKXA2HM`?)i~XkUXStA-GflV1@eX+cEOS`5JGUgRZmNiCq@6XTd_#Bz z^Dv8QS4{!Ri_Yvq}qt==T_uOH0q&I32umXx=hNledZDJZngg)O$N(W+`s z%9WMGIUxCyAF!8`l|U9PzQ!vn32ubW*5&G4tymKhNusb{9DSp@C7GhE3XPX0VF?j~ z+M*j)CsGUkCW-~}6vJ9AV-9(h8*zGVL>pi^5{i3tPlowft^`Zd>LGib{vNz0ND5>} zYeN6mYrn`HU!?h0wyN z4{0-r$ZCcbE2{OAOo9^g5e7+_kr}*-s$@nCDKkPfd&Y>S8D*IfZeuYNwS@tmYGlkl z$j?WNalYh2)dS@U_hK;Ai`sH8{7E~@7nT|E?2$;s7D;&%`i9gQwu5}~9&`oxzm(tP z*U>GmF!ttq+Zo`;13&4Np5m#lO=Jz-;FKnr!#vKL-=g*lo_YNrmd-Q+?s zZGp&~=KB$mfr4*{OmA_~+7C36&2=;ZW4*h_8xtf|O)=7S+d}q%&i+Ib5h+=+f-&N` zJX<32(@C^HR)7~Fy$Cu{k1k7V-C5oRD}u4BDV_bXrgTA&PH=F z-?jT4gKVT-fI0r4k?nfA$KgAHKib#&?^0`v&c<0Y*KF65&(aI}9;taIzsH27*c0l_ zpn<#Fc(M@0gWH?~&;F;jC1Um!j*N1zN!}H)g^b@B&XqA&Kw*9gLTM)M_V1Q+C&Iah zv8`YP!e`~%Jr#b~W5F5ONF(By86bO`L!ak#iLZ=zR zIFm!OHKA>q<`^^Bj_L$MXczT3NCgG4H5i*#j-7|G>E+m|80#&^PU89|M1*#V44FdH zio&=XDS2sevT;7?n#t87@xDfeYj@*%tY`p8%t=Bx3EjxISU1ER1;-f&MG|M?r#8`@ z6V-Yz%=nuftoC8;9ec-XeNcPN7J3}}Wfg__j~)?;6ouV2O(Z0j!9L7B%3fptN?CeH z2>sK7Fm%lO_a0#xMG=`ijch?M4^8H=3APd3`3}jxS#EJiYboDo*E6UTW`=CddPElA<9O3S1qDJ+9 zf$U*TxraiRHRVzgQ=AY;ZDJdP++It}O|;u`HQ5jz(X^4l(d)=0Jz@T6z_S*bh9%6W zi}*zB(l0L54NvI%+Fn0-Fc$h=wzq(N86POj>w$84M+mcRB8OHBbBax&jP8(c$;lM1 zQ1Ybl`Yl|;21{CzbgXC5>cr8F$@b-`!$3uJ@FPdVSRl6bfUt? z99!OQo=AQy7{eUqIC&#*YDumq%eP&RQQRGbAgrKQ{cydM3he{-6lg3!oB*-nL08hM zZY|>r{#A%e)VfR~(UV)U=`L|lwy5wqwWlL9k0c)Mk3u>cYUCuH7Wp(nJn17DH;q=k z^Bco*oS#MlsZY)!PXn0}Sg(s5#;&TzjGKsLZD#?= z3r>@MKs03`oUP^Wh5eA}Gf2nWkp6H9JIQ6pvRWhP^#+U>TBKaB9NUKBhVaS88Zp=CE-#%pP^KWOL-Vd zBcAwG7{Qhq9$iaToO0}WI@n+NqsUq~(!&doa`;@kC1=ti49?R)<<|1`3m}j&RB4%u zG%d4vIh6~jvwRL$!wlMCD*}Fxx>c3(#4QkhH_n<8!)k*hCc}Af&DTkIqAvjd{-8Ch zvPSfoITOz~e>z*T$6Q3|cf(oRD6f;mQtgSV^=xZS0#{^BnpUE=vz16YhsUhN)$JZH zlJS6BPV#8X)xsxCu}XtO!U)N=S{dB!SL;XP?q0>(Qxc*E{yiRvRs0I@>239aKSZ3Q z{!h#CkwE@v8RG@Jvp;3R4ff!3axioYCVkWuwL;LBvZoT+dfU!h@3TP9AZ&XBj4m@7!_hM#ax!Z&-{eLw!L4@SXY3?PjdKn5{@dc*)45Cdpb@@d$v zJ?I!|Zk=vyGZKSAT&7<3jI8JOVanH>dDH{Cg`S5q*cieYDq|t^_j`m9Lwv4#S|FEB zvwLZ7yE{FBbMyRs zUx(}$Qh6DumIJ?*xJGP=v@8Q2K+3W#L1M`;_%8%KrSoNFb|TIet%9WI={cOkC9uWN zHLupI(*|-4`8E54*D&)W+yR@AQnvTCDz?!^T#a}APq_UrgR+fgk3^-9)k|1@Xc`o8 z^;YDRMr`RZ^-8WVsW$-+HP1+ZoVtXO1KjY(?phfw!52Z*NJZG#%Hs{}-=iFp-2@i`Tk&>&#yr z9Ps@U{abOL>`Sw;f#Joe;6~e`67GKo{JGScNEobl{~YF@l^7n^dM`o<6c2bM4ICqd{wko74G1y>d)CC$MKPQ@*P9%jZr#`NB?XT)*!GA(@wWhFr%a zm+R?<72DK`Mk@4nTdF{2t}SD?#Q)kD;#antGDO(KVRqT(U7cs=7w^LJ zA@!_u){dOQeZ3>lR>bfAF3-+{ap{RAk5%c`QOe`YSG|LO?;*XkZKRv#KdWkw4o2A? zF@B%_Sb&WUYpoz*m`=804`|?8y+BruHNn(9OgW`QcO#nrMrE~CXnk3i!F35PnF*CV zkW*?yDF>^%n6AA?XwNeLAjdFXhL0c%Ow7~UJD6>jw~et)4x!Ii`VTd+o$&Uo{-VOx z!kQzd-?p=S!jkqh4g``N9I-4rNSD0468OJWyu4_*M+W!dZ`vT?lg2qc3>_}WsBv9FVsYAhE0~7nJ`I_@yAf;7`C%GtKK$u&SBTpN22tb07T$c&CMI>AeV6 zE8xlU0t~m(``^KCt<>)8@by+&AAf|W@VPJi1@>zL*cI330`1o9g}dR;PhI?ZfPQ}F z;Lq(8x{-d)jN;D~6uLGFPiNp~li|r)cmn@VhQ}wvt&`#52H4aHS2e=7C&Pa?!urYZ z4*~Z#!QTbEE#S`r-VpG*fQNkez7LnTz}gnL#)n_Dz|UIX(Mj<2Hh6IoJk$oaPJ%14 zaA_94I|(kH1b@lG*^}VYcKEOzK4^!VJK^I_c%uvM>w-;Pa9tO?+y&p9Oun&p!Jp@c z@aMH6{#;(bpF3yc&!hC>e){>8qMIpn>n^zNDmJ5Lv)xo_84B1_Q@dVUwhSc_x3(dr|4tWM}FqmfgN~>HY-QBjoX%QfjP(RT@D^6hTO2k8~0wV!NRT ziB67qRt=llnxbq)O=TYq7VZ`K?<%%8CoO5a%Ab9WTe|&iE$oYiY|@XFI^)g6MUC80 z6n0`jIB!fA(cgE9*uIv1H%Y!(bkg0qt$b%dR_uq3UWAX*>xsMt^MUh}<5}t7AvSW(Td64pqL_jeZ!IzVwA&4 z;thQh!)|hQT3?#v=k-L58%1L}>u)B@k|W<(vTJ}nNGa~faO6+hs=0YxP~o=Lm-%_C z(q|sR()-x!UhJ3u3$g-5^Y$`(FT=ArC9M*@gYm&s0@_ou))bETd+ar1R~q5exjaJe z@C=k=6wRvD&(-V za2Qe2p4RQ>s8q6%=uoPSwGNy-b(|GQTlxK<(0DuSL{sb^Sh9mkYm`?}8q&7+Q?@G- zpU)B&kzgMZUt9Wf_Q`t^#%Y9zr@3b7@oar{)97?lKHKOi)46unblvJcNS_z)1YzaJ zgL{H`{ikbOIxDU6uIkmLjpWk$SIJkYS<$qiy>;OFKWbj)_8EuJvr|}!_L*}VfV_%T zWQS8>S(1xEr@5Pp`1(@J#pM@xk(qNXIOIEj)M{LzNso5Tq~~v#h6&fe8=8{1+qiGk>wIvZjP{J>N^NtKtQe zZ7MS_pceeQ{$19K}{&WiM+jrkn7S)Gn=gS<{P{OZh9olx^4tX+N}<>+h~w zYtl;CiunDwUi`M5ueu-)m&JC82BdT!zs~13(zlQevP#dB-b0WJGIfA`9?y`QEm{4Cn|5uQplgT(}% zQ*jgQhkV^`p|%oG+K97|*sF^7T{l>vo9-&lTG3>Gp3Srd9s<8N5vO{Ki8kp42FoVO zem>~dbVD&1(J^IlBs{+1*2%Z)rk>#RqBYQ*C|xe+_71jXq~<@AR*Vx&5b--YDdi?k zp;O@C_#oXN#_tN!W5rm62*Abk^MYZ8Y;e+ZWobb?-6!pHwjd^KDvPwo8+7m4jPUIIcA=lzC5(3w z8`x4H%b6h$cDAJSXy<*dAfkt}C%mXrECartJ??BA9c263(?G;F3@HBr7@vso zQYen&9y=ox$FnW=V7?MhVEj*oAkNmi4KL>Fo+vfTwLOJxgMVU)#7Txo{?rnw*DR54 zj5syqH*!JNVZ8a}Jl!Y>!y9mFN!w?u>D1A4U(2b-Z?UhPHWVLa9O7)AzXL&emc{Ts zAmSQ(E4VMPhB~hp+XcpY509@m%3Q?gFj?ZxUQ0ekqk~Zs90R{5`V)o7=_|I`NS!>xQv7PTnn zD5lJ^a85JD*dz$+Z@xJCBmT{od7^%%`u*?u_XGZYp`43)a;iml1jG%w8@5D*=G0rD z9i_+9;6xihdZ#^W8~cW{$fw8!?c}qLO6pcA{hB8Er{^u}B|Ogj4Pp z0r2-&1;-sizUyd}2>ZXg=w9GtZ2t>~1eR3uSo-RS43#o})`GMPO&M}nW1d^Ii*_wS zrmu4kPU5&pqtjklXPZX*iDPc8>Rr3AA7KH>q_uwjiu4cw zHIR_D#jrP|_iZ1%$lH!fm#J{+&I@trU}s!9FW}PM-WBH3_3AYd>JPyFcwU}?&wKDW zjOX9Ec#b~CcB

    96s0L6Dx%8Am#i%KIcLmSa^y)7{QKklUc;kJB5yr(Ad{v4{s4|P}tun2^Zy~l;v{61_$^_9(mU-cJwmR|lE(lB3!_L#&2 zVzBhG*E9hi<_V(3;{I_WCT*t3T4ORNmVJP8`b)=^jQLrDnK!YIu8pGtaT8A`csvwu zh0^7(F|TSC(p_W~cCsn`kz?H0!ee$ThRMgwrqP%tea%dXk$wFeu_iZ`yU8>2ceNvK z5;IHRk#*tDwyCa(wri`nv&C_^u5%Oww={_{tdV{qem9n$630`jBk);<*lGOp#qmDK zjxK%{A7n`&9yh=~xRwsZ=kCfE%C+OxR2Ki1cKk^@A)C_(s!l{mjXNd#XYE*c3|qS? z8njl*{dt_P775pr2t#!R2>}i!IwQSVay%8!(PlrdgFyb)>brv!!b(y&r@Idb{h?N2 z#JdSnMfzOnxdF#EODov;X;GLDwhGJaq4xtNmw6u@xR-JUS(aI@W%G!?n$oE6fv?3cao?{{y<3g@GYK7h8!wDlcA=pm z#r`ySbqh_+BCgJL`a(-Hy?$Z6B|{5@^>-O62`gf7Xoav&m!Xq{<+V|WZRS}gWMvpJ zU+XMehH+0@C#iHCEoU5mi>wVC&Xc8bQ`6Nq;0^w)Yx=ip_ggIpYb`inc>OHjPp&7Zv{6QSR8K+SsbVInj}FWnooK|-YD66jG;{@ zn7oVbCQHu|mt%0ElBzI;m2RD7T8L@PkNR<8;+Yo77KMGVLq4b$u5p=>?OfNmRotBFI`GVqI zRox-WTVTq+ve(x-BG{A0(zDfGjRtkeA=*l|1ex2jmCvfR3wtbAw>uR-WyM%_W_%e^ zzdiA-CgEQBxXyhc9+>2T_A|%%sl2dHFNkPrP{f`niuh>*gT^56YH+1*n#UNYuUBc3 z5B8X{j7jvx#wr;d>6iWvRffV>EA37Suja7y-+Un7H&Aaqr|9es<#BT4IN|zquVi~4 zPx3hVJWg~IL*sN7uYKa~t3KdrzN2&H{v+|>9(g9*!SW@wK_4)j4Elg!C+I_RD2cP5 z^acrfCt>OHuOfar0f;+jcliw>ISqH(&kD33U*+5GQF+@Pahc<%CEX;+Cz8h3(qCGL z#b$V)%6q1Bb>i35@LqLvkNb?U(paNUj@MA1b-63E>~RWrCCQ3ga#!w;u!JaO5s|y{ zDBf$hD=o4v%Dd9SU1{U4bZ}Q5+!;S$oy1iSW?U6_WdwI+J>5lBjcQcx%1e1vM}twd zXjBj8U8xZjt=lIDcOstSHRZqac}-ZKFpjdnyjO@;e78#6g{ayQB$i8Q@=_&t?Ul?C zIu&sVxofXyTmtt{Ozv74KMqO)`x!eLpTzT!yH^6;u8rZYjmuqoJ98{>-r{oC z-fl`y*CD=fv)r|plkXtrIEuL3wReHk=@D_cYwrqZAeILUD4|j;9dIw z=cKp?mG}}+zU25+zm|G)c&QfmZcOgoz1VJn+`G#O>ha#CP2VHA$aF1-C1ko-alE`nhK+UVY_06#d)#2}De|r-%{XETO1A1yt186KTK z=@iyKA>{Y%S%TY$6+2Edl*VjbMCGbrzurg?^1Xa4@C--Zl}lr|*EPA&gVJ`z41Xm@?48Y|oh^66-^ez(|75*A3*;v9Z{Qkh=*_;#$gmJZYX{Y{YH! zR6LPMYgi(YrqO#eLGq+}LfWeLw@|$zEq4FCQ&Ax>6(exY3 zWqZ+2an1`sc_nZ}{0a7Wwb@xU=c@}lXE^aX`br!n!jh$@yV7b~`EL=rSrEqN0*wN} znMw0$#*>V_^g_%Ta^$@AVR)8vIt1y$y~mj4gkd!GLjHa)fX~bW`=O<{S;`jdETaI` z_c`+STVd%7T$S%8UERSJD12s2aZ{YlH!F>Of>^fHvDO*3M}z#z=WGzGL8x!yxzWrp z`z1%-jXH?EJJ5pkz*)91?tU8IqCmJjRY(b znl2K*>hhAs*dd`d4&s}WrE?>eDih z!)y6ms833Hn@>sJ2JG0P^maa&TO~&RGGY(kCHa%%!H+luWD+QBBpe(FJen$!?$B^bh~vV1>F)P_m5dud@uShiyBI@cDdALl9mU%^e04wf))%LjL{Lf@0?Vvlky zM8E%(-yML|f%FhJ3!yFH2d@W=7JQlU`%=~DY zQ%`v5Ek&n+o=YbeYaJjT)fX(go^_&?C7ase+Q&HTaQLC}m=407xc=_N`TNoUT|lD0 z5`wR%;&0qsm0d`d?J&N#oW;?-;@Vqu|GX%G`TDTFAKBHO9_SGb>rok3`2TqSM}5Kl zlDb(U&+-Zim;?ppa65Cj9inEb)K{0?!Pbszc<(*Sa~LmwpWWe?67*XuchbK2mi+qe zQS>7+WjFBuA$N+uE3WwM?=aQ9D*2hXx+p{8d)129iSQj}^}Xtz|Mp&02M3{dH_XtL zCwRmd&h|yJvB#;UmAV)a;i>#Ch3{rNUAp3hVmKSvO~SAUY=UFBRxdSz?lh7VO>-yB z!H0~M5U0NtoR&B^DUaKAoH}gV(TlKAqr0RT>fFZNrV}^2Ft5DBaHMN7r{vyssP_Z& zVq6EMokbR#=FKjz0kSevm`9c-Zs4{EB5NC5klJ`a`c(6z@2+fMuMu%;=6K34w7g>q z=Oo#ZtMrv}Gt^=+V_QBKbi&v&UIs`~p z=)iNawNDPovTW}g@s;VJ1(Hjl_*Kq~9%|zp9IK-9MaVd(V*blHo=JTb!&i=efF}&; ze-Yo|oRn*|JCeIH%IonyswK4>j`-J>eaOAbt%Q}e zys9YvKF4wN({eA;s-t_dC%~T&v_-VCJwM3NO`OnBX*!X;G}7R~Zk|swj{A8&*_CHm z2%K@x~fbpIex2^oo$M<&wy;;1KF#}L$DSAhks>O8PwiY072Ugc#-_->WI`gy-734##GK(_nMo>HIi7 zF6FvUpc6Gsr{s+YTc*YT`d@^Jd~5V=h&2_PaIJRJ9(WCNZE>adz28DCIhe#Z6Sl-+ z+oa|+)!P96FM<}RM&IRFeX5)yd*U6|@t34Wl57j3$tKbCqkKkau&^m9MANMp);XNP zwuRVZV4+AhWtwm$iJ#;tT;ccO%q;PCMajL-7ZWTmJvh)?z%iq~@7 z!2W1g59?@rka~=5_d%)zDl^o+?cH8q)KgO z1^XMZWGzc@UtAUu*4@P_?zTlW91z7P%|l7vH++t-)ppRcbnnvi$3o2fPJM*|kCD-ThDBV~G7|{?zJx7-}SJ?nAPFMRH z;o3x%qoJH*2%5tuC&m$Wr5zLZomIyWu7vMfnMS64-O1KeF~p%Wfr{oihQ!X%lTPI$qj zRoD$%@%e4&flDmXEt&~8S@PE5UXr`V9{nDlM{4t6KO0~_*d6Y`=LeWSMe39__;V>q z{BP0m=kIC!Sx;h$pOA#&A4$*h5A^do{d|uy-$=!-p`R=0=Wj{;c|X}mc$CsX)u|%+y8)2`kRIzhs@B^triAG*Vay5UEBn&u28>Id zR`seQuQLBfG}Se5a|b}ike?f5#DoC91Xud z69apRW2M;+D@m!^V~*{?8hg_JW$#Vkq$sY(@#^Y(x@V?$W_A}E*qt4&Sy^CVS(rsp zSY+`+QCC4WD4>3gnykBss4+&+7_WGMM2Sa&ns}g5FcG})7O!|8fZ~;Cyo1IVV^sLP z_o{lPcXpS4o?SzuG zFhArac=&D7_1T;<1o{^xy`RiX2j3BtVfhU~I%lvKYhEC}4Ek0i2(56jUxJpxGyE`i zWjw2!3cfMRb7mDm8%&V<tHMjLhQ$ZM%W>{^2FALElgV>;~bNmyL`eu)|Yp>1&kcI1}bZQ$9KMtFf$OXU-?> zYWvKUbaF=aGulhIOtuSfG*9?Wdne9h#P!pPoA(ff71voPR}1-EoE03QIHbynaaV1D zaLBXg=bz{OsizfrP-87}m!P+HIn|;+?NutthY=$!|4m8y>KK*(DS6r+DO|tiqFC`!pGblfW;hw@h+=_@rpbW0-GzDMQj@YRB3%cv9OuSvUv9`950DSnfMlY2XEUm3*NRDZI8F@!ob`1 z=^-7xZ4r}_IPPgjKCQ48xHrN5k8qz2_ujzo6-8l{ThU>W`*F_K|1i`yX4}5Gdj;AR%)g*Tkr!;dO=x^g?_eezX1F#kw!~;f=*iI`BN?FYve{^aFb=2f!%2-X~oh^#7)V^ zHFU6THuo01b1BR!;&kd$0vo59RYlxXJm1Cg?Jr0B5nb#!o8j6CzbRrwfb)Tb`~^tE z2Av&!jp;^w_Td=c{IWl$RHnfQFmD{~J73Uqdke@M&hJ6O`JA3t{=jv7_xjO(G)j;k zoQZbe8%Fyvg`S^3+>QFN1t0}|Md{x@!j1Xyd+RL^HS-I`SS7gA@U#Bt&HC9W1kmOkGnUYsQBhchL3=drI}d$9z47~+bYDe2)ENH=?yH1& zo9?TK)-nE1IIBUtL-$qF=??KP0gYh1OZQb|&BpjqB*l;4S9tobk|&Wh?)whypdY_4 z?Wl)%v9rE$U(!=SJPUE3>@<+x%RzddnN7j#y1?I+YyK2*|7f}4G;(Tkpt*l?AbS< z%*Ds}5qm&Tf^X~aY!2|97D}_|Zltu`_s!w{5z8D~84(yqP`0{r31NFaSw}|!#Z1`u zIEK481O^UExaJ=!qasHXzl88{3p=F3;JH|YzI=jl>tnGkE1$`7=_yC^r|aV)As%81DQ9d3tx?roDpG`aUP`DdA&{*U-*Z zXvbaAhXZn>D40n29?rL_- zmLNTTpJ}WrzH3pNKM$V13I`IH_})aV_=?jfcp@`GMEMWz{qfX$^10oc$#c+nqO5*S zgsika-&i45@g+L0seR-1iX7>KKP)=;`WU*7$xDFQeqE)p439~9(@0prQ>{RP6laSa z!?JH-d2{61VgWWPl<)JihXs0*b10;#1<9|w)52?}yKLy(^t(6%1C|GPzOuQda2AKd+S!!-1dq(2pExf8&UeaCsa4|G zPBI1b!Xf){N|At{Nqb`i275Dc-ii1IQ(2yV1qbq#`-l1bfng|FmT}jZqgZsp+w9^K z-dO&GHz@1m7Wx*)sJe+rdGlK);EI!*io^zbcGvy-7jUbczTX_hHQK%Z?1yER7`QhL z_wMW|_si`?&uYGH@O(Cz8>naOepPgWiW6%7Q2t9xz9u|q8tEGhLqe_63bd8c zRz=&qFZM&bNE1WN*Z%vFT%O*%ANtZY?>CZg{&qk7uG9hh2`$IJ_QRbRY>I|ED{Ki- zYpor<-zYA6g0T{b@E)=rP{(8C9qU>(09Tp2!zz>Ot={Zu2A+4~y|F)?d*Z#d zze&>E5RlwfLz^g5P}-$bcDwiX{z5*{rr=%xKIIh3L;De}R`2j>!S^qI7)W;Tq)$Q4 z6rIr~){YPR%Ikwap`T_{<1Q?&w|j$->N%ayt-Vl#XI%U0 zsZ~={h2DwP;T!vdWTehbKLDIr&|!Apx!$An7Ef_fXcRQkDNc$!F&OLN5KWu`eR>Je z2j2VBZpoh@M}gJ)p|o00>W{OL%>eb)cCVF*H^(xRUoyIAALQ=Zlu6Vc1Bov5DI=-I zX_mb|3euZ?m_vIl=b;`>(!pO8RplqQVCn4D6=`nSgt&_>1-t^mira}3CDHp2l!!1U;XE3^eVqj zo+K;7#uNkkPlO{=B6%nggm5i+8kIn;vAql$52A$*V!>KOmz*$=T15>O5l77LQ&Zlr zESv?lY;f?tfle5^I{%E{p(OsM3jXHd$(hP~p}c*n3TaJtLb}yyrZd~x((`Z!fQ}qX zrx;uh!RS#vr7azCP<#Jjef#*^_xDD|x`poo{3yVWbqU`E_)&l#>j1w5 z;Je!iKMwFcfM3!j{5Zh(0Dega_(`R$w!~4Pr4JYrzz<;Kzb6>(E58RM#{P*xq}M-| zrBIqsIm9w{x3*flQTx4iuQpEa9l2P?znksz?5pgH?epR99Qz6TMf-946??7yjJ*`27l+6zk z#w+>XTKf*bd;$EH0ECXE#3I?q?vd)q{D>df4MO#i;Sp|Cz@Km3r(duCPG6}n(|@U7 zqu;4t3Gf#JjI-?(0PAXdgY|;-jPP}_ag0b?E>w5?G0_UjeK0mkL`2e*UP$Y@zGyh3SC!bTvt}6ZP}6_ z`7Xj*mL+-1vIH-9&SjL<-nHD)9+>mcQ4jq5!N#`QQ)X1D?dek{BhN{)sm3}s+o)l? z0^ID^Np_Ku{dZ3Jc1x1|!N`7|VTX9_?3zZDg4)uXflmzv$!1O+op`|h40&INyu&H) zSVafwsW!9!O2V2n`?=2sg1q%nov`PYOvif6;V1WNt-Wj-S5QV}T%*0_BjAVjwM~+D zp{~@Gw2WzxSK}E6>!8N}R74t-d;7?AYKV#f)ewe3?J7dG+bv(aN^ZK%=_g7-vSdjG zYEuHWQGAhB`3TZ(8^;pDk>_#5cmLV4WlLwAmQC&+r*TC%-Tyt|bXVi{8jaLBfH>V z-OD9y7U6Wu_k`1ovD@EHxAj1rZvURf zRB_*JYfKHLF}1z?cNEA3H#LeeHHQ45#F$$8|IC;wrr-O%CtBGNnPycFpx@$l`ehH8 zr;2fUum|$PyLtdU?OKG>tv!IAiuvKwI|V1s3jfA;iBsP$ahd}w<^Kks`2R}374w1L z^Z;5a#_5J0Kug7A?v5USQ!#yC*8_M{F;2hgp)$xol0kyj?I?rn)=35#3o^*zV}%Sd zxW~%%J2H^UYxM&CPU=DQ z8}!VcUD8Ur8(Kko+1y6d`p5r^zDah|H+sk}vR9XVGoYKkIj98trc!&tYp;ED_(%=? z3%)yk<=a6!O{^>4m+7Y6Mn?th?6vPm_TS-Fy4_=KN9NQ^d%*lvjMGKmlMb`EowlXJ ztll9V=7ZV78oIMyy{F7yJ0e%C-f6U=biiqQ<e(JJ&WqdW=I@D~wihRy<%I6rs@AlD+v?&TIPd+g2h1^D z>05^MKz+;gJEg7SOlP`mtyTrUUw7o>2+L^Vqz{d?AO3E`-5Xs!!$wEj)2}topi?gH zbHr&EFVej&J$YX|17dSsgksMXZ_~>h4^Q=B3UBw8Pc}N#R8{>S05hXh*lkmLk6L(nd;0Ch6r08F^VYEnbwxU*oB?T5{1UjXuBuVU zckL^MS2JTvO8E`K`A55V@nm`8vtlN*>r5}Ze%mzrZ^pLjUv?bp+P^F+<6=cHUxr_A z7=sw+;AtMpt?6^{vVsG=!gs|N;MnwTax563E3o}|;oErFf+n@(@4~$nqU^mwW4N$0 zzMWl4>61!?&C-^at=qHzH%a|(cKi4*>%3++G_J>n#&xIC1QaEyoyunE_j~IO*^4KQ zmPq^fVUs5u4gFdBR%4R2*Z$TyQ+4H--+CJl?t(Ai-jV_b6=z2w3?p=I#9C^j&2>6a zYEbu|h3ei=sJr*)M!f??|CG|@iaZtbZN$%Fv(&#Q*4169Cbi=%Y@_r<967f&D%942 z$Kr7kjsZM(7E;<5DK-J`pUIwMLD>n8t%7H$w0pNw8@3z>ap_)@b;wH;tPllzHS9p5 z;26Xc_5M@B2y(KPsgN^>BM8|Kx7E(aY=f2$&eO6;(+g<1;jRKrkCJ^5>4LU(>N7px zH!I+mFcXSzpE|Cu=83gR89com@GM`c8)^2=ZdkXlT=mUWBk1i5n7i4*+@IG%si$V2 zNGj*Br2eRm^qD*q-|Rh-;NF{5E@nyXEuepQRI&-*{IwRaJT-gUEb~6kSC))aPJt3` zZ1>KSINm*i-v4%%c|W|b5bu{3>abYU;o=gQ&RkZpk+Jj*K3fC7Yj5`1Tete`UHC1$ z&1YxA@3`B2c0K(53ctoxK092tG4=uO*ut;;9nJ7ecbFHM&~+aIzaj8L5AX!>3p$m8 zEr$*~SvhjD2iMJY9`V;-A%Eow#bS86-nvGNtyHQ!iLaW_X6e8M4%z#gr17BEK7LK( z#G~=txF6MxR9rRVjE-6i=2Vz*YrC0o`-Dn+B0uByp>ye$Pv&@5lmg?j1jeQEoFRA$ z$@LnHO9jVeLcuvCL73G?lN?5821X};N~GqQbo_ViD#Hw@GjG7 z?cQJLTf{iGG&0vM9o!-OY%Dn&QMMbm9~T)$oI`q^}C8mxeLZQ~YNSL2Bb-xUQa4 z!zWSd6ubkaiA>EDn+75*H6#oz5?>sE+1P6hA!S4>9yj$IVq^a>6p&AXsv+rwcfGS?hdz_k>Wpp0-^p2uB+$P@V`^) z2Ezq7Z$n)6^Ax`dOIUAC%D$1}4`JK~ouGAHSEG>b<9uE5Ebl*pqoE%`inc&1<5OCThoEu*vtS1-B|7E!KtQ6N@ zM)+lLUA?%5A0c|!!tpxiWzoYE@xG}Ogsy9971Axr*E9?9DZY?OS}aT2O=7t0Wm!}E zT#!Rkkzd1g^-VSQXz|{@VZE&BUO`Q@4G5=ngMd>b;q>1?HQlRF{*rJ_?G#^t`67!j z-?cT|7d5r9ra#;$YP$Evjx}AfwVK+6bj$NKt%mp%KW8JBv~;5==}S#uc>P9M(}?;y zypN^ey86SK$YE1z2Z)4>E=K;7PocFYj&>#RPs{gaBi2;`iEkGj;q0mlIM+xxd+V6a zY|KPp&Eu7iim>8&9Q~p$aD0e)$axa3?>n!;^)6>DT(5Ix!1XNWIJo}8`3YRFcFu?E zN6r;+{k5|T%NSyHZG>j+Rk}xZ2dQjSuYH#!4aG!!q5?A|0&q%Gd^lv-OIyWrG5(#s7eK z==UKWFcS@u6!vGrLrG+B%$TBHW~g4bgzIHNy^>fji$$Opt8Iig7OtxgtWhk2SKlAT zhEn1Z?I{0nf_mjT)(dFoaikr<`${Sy-TT#Oiq}HElrsUYt8cI2pQ!@FR)qFNgAFak zFU0Vsgp%U7U|M~RD{AwJO#2k2HA^$LsEf^lzR+33NhyDfLoW9bxUPP%M%gHGDWAnL zSB8&{X6(!DM4$fm{Iw+ERw}PXrznowmVT}NE`~DOVumeo5a4T;W}mIU{T=8#&x5?{ zu#N*e*3oJARy%mkI`-Yl?)whXy(iP%Okcw50+!qE{mH?z*%8)*-NS-(SIBfXQ@X-; zRNB*1Cf^&Z8Jxt-L`5>*n8cz(3l(nYcCqy0{tB>i2qrE}AH914p{JG%4s}UXthnau}53_9W(bI4N@M zA$#RhO!dW>kvKx)Dauj%r^eA*ux3ciNt7m?u@PKfR^5U4CdV$4c$Wj-D&Rc~@}<;0 z;JSKb4Idz>WJ-!?K3UDK*etP7V4RfVSb^V1N+PAymt)Q*xUL>iqm)RTPAtcqV>#lq zxLi>8^L2v)t^#}&&nZqRD>1kB5aymxqi8bsCd!>tF?Xz&$USrHAT~?6&s$gW);BAv zQhaDHEO+-_0^_f^z<8Z6N9mssUsK>4k@)@#@g3C%^G)g_@O@9@Q|9(5;Jc_#fbZZ= z_^!a*+Jk)rzOTyMfA3SkcWFg{?_j|9e!zFlw}|iR3M}{W3W4vlTu?^#&J=$Ib9^4c z_bZ7nNHBGkm}}2Uk?THL%l1mbR>6^eNo9yeKytqgb7&7>j>a0knsSU9fiv;t88K6x zk_j*@XR|n9m=PGR%3xWKWkgxG$g*C>)L-OjY3?i)`k=0_n$&LAaXnWxQBc%un&I96 zzK>7sL|?b#+~M8hpf0XN*_Q60q6;03wG~~#>08kiRLXp~KdcUZ&G7q7zPpLx8L=WB z^Wk}lUrHTCSqO)bGW}Cqwrs(;&mhfhhKS3`bjeV<01qtla~W4vqz{?K#CgQ{&V%2X zOzP1U(KZ;b%3n|ijK@8zoABFb6(Y?AvfP|36YF-f*%6QOP&+;<>kzKj&@Sp4#eWe%D|11Q*G6XB=gK#~= zv~WUEACybn=fm$$^4&4AA5tOsALyO&pW6lgL0o`;LgqP<3Hru&s8_Ly+9${t&^E?B z4x{Y@_zjU|&s0QN;qyT8JkjKwq z!+{1Khu;UPc!%kB$+tmaY!Ob9_DZ_Iskpugi4(TdOY&V)hkQkC8Sff4wi~utaec=~ zoVtS@Zp*{;u3;lDIz#3+x@t@LZucVC*pAc2G4^Zt-8rt%ZV^_nO(kU650ed#u@@Qo zZz**4JnHNBQSjMehtpZ*9(#bEOW8~G?6c7vpDWouTzvcRW_qq>_tWz*mR9k(j*U|B zIma%e=W%Q~JvTD^O5y!z54ajH=ivtrzrxTJ_+75^@$v;;-o?v@`02w}@$x2qh2dGe zylledQ4{LL^ES1S02{T%M}kCDu&QNr5z0s6G3lej&p8>w`?LHOfO)H5aXa z-uaG2R=~B+f^Mv8BHgPp-OZTJ%Gl7Jo#92=y=!sik088d-NS=)kI8g5Q#x#a+rsw$ z6`RHWo><3zqpt8$3TX%}(hx4JQEpU(>?JgWic-yfwx!TQ?{u(Qr5I@_P0~<88!r)g znb1&*HYQ!-rcMxK8_O03NTe%NNmp1~!xj>x`UF~L{_-ekI@rUH1}!|eV~YT_UB69R zsz~=pC%bHCSg&m-taHM!?5<&L+)h|8bh7ap)Pq5*o!O<0H^oSU>W~I?MGaXzVXcFj zYj*fr(Q13F?WWaKgt{$jufXof4%np>(#NW#j|Ex(St>QK@GiPBu<$M~TgRq+vx27> zX=D}B$a*#GK_;l=x+h56sgO2yL%~*@eXUUMzX^XEydf6umb53`1?{qnL zbZ0XQ>@~&q-#?Q~SC9|)3&H-aoOg=l0F-k#{Y<1ewTrnrkln&_b+PrWPErc!8ZS^6Z0fVIno-b&tZ1;ZSi1V9R=nW$r6AZtR zuH|i+Wzr|bAZj)Ui$}Y$ygwYOLBaA~m;oPU1uvdX&;rXkznsldVeMD9FHdUMTBzTk zm0azQ>O2d1Jo*J>6yXn`gs^&EVs#$+WbwlMxP(d_$Gfmm7v~i?@T9to&C=dTt=sb^ zp41PraWy%z8NV?4R%2DD#GiL4QO=ht&6l;(HlCj^$MKHyWd{iPa+gE7Ft6;nR88u& zX2)_ftjccl>PKOJ^oJ7L)74`a!1c36^!*t&R-8)kUCy=Y9~$SyYuRcRUdwhprh_y% z?mVEjK=!&;6|@tjHj7e?U+O?Rk`Jo|8hVy@MMItP=c#3-?5P`|r;c-J-QSEHcT-)A zz6lFd!%?gHTH{RgBgt!i3lRTUXi`%}ld| zQZ=z)S3R1_s~^$Xu39w_t@6@3Y7qsVS;LQzni4^Q>*lWccE!lLs;{=BIMLz9O2G$Hl6+QS%XctSza?d@uj{U(=UI~@at4o*j`fbbj`i*i@rz~r*L8oS z=UJ2KS-f{an$7D|pQ3d4I(KwRRUS&&OvP$OAzd=0x)$bwZ}%YtF)Sirp|Zxu>+ zBh`p>3-cDRw3G!q!+L8wVciji)k$g>X%=rMtPjJm0)M|qVO)0b_v2Cq)JO(|)`}^4 zeRmf!U}vl@+ZtB9Q0jwHZoiq*rx?kA+C{R|cWJiBFpvQc>OJZbk^v2n0fD!%YdNkm z$db*;l3i7!tP`_~A}rY{CS^c?NV1|svf`g=w5LTnO~{H-W{yM|k@QLkPa}K#_#tBM zhS`cN=UpoVy@@>yGC_@A~k?!Qj z8(H`AV~f-`qD+T!qbqeCTayB`tT`Ru(A1PZd z2+5X@q3UC`-r;*tr~^xa92x!|RH^(P6iSzuJO8miHQzTsG`E<4Hy<)Lng24!@Zo$Y z&+%&Bmk;41_!eWmae;B6ah`FNalWy|c*8i}3V+WC^}@ZZ^-F^98Ljv5dq!>E8Nj`F z{3}M%*K)hQVpM$E;xNkF`LxBlT?$`}>HNilZOKR5`wgSc=Zv%FDZu3>W2KpF)-UVdFNNC~e?avk(|f2VZ`>LT0Iv5E1# zmGQi>3VK}$$5|#|dnIXxr_H#$qu*Ejjk>&&BaIT={gXAPmauUp9S_fU3 z$+Op+>7XSO86jVlt4ZSmlWfFC%5|U{?t=)(VavcRgYoxWbUe)+V0W~A-UKki^WlFO&W9g& zm=F8N`S4?S`l)@I-DbDIbsk)8`zLnP?qwfmH`#mIC)@kN{cyX{KEyuC-pk(Go?!29 zkB3y#LT^ri@cwqQeX!j%EZ>fI^Co6H+bn4!JWYk?jwPLMTxu)@3jU>WiE*`YHiWJ) zE`qp4#)0sDe@NfYJlYI?uWR_XuQk=0W*uOiXw9=GTc=s`tyZhiIvPSV)fwsu>Qr@a z^$hh8b-H@EdX;vicC&VgcDZ)3_M~>Jwn#fyvy5Gh3Zv2(X*kA5>U#BC^&9nh^?mgT zm8-U@sikU#3gcA$m-empw)V01Pi?)n1wx-{>(uAeXVg+hcT!H=DRUCeRoVsGQhElQj-C5ozd6%Os-@1L!_!C_FSO3nq1MUqf?Z(lSYGh9&h$*XB=qnv=o4$-YHSYqS*&1TKZ__U-gmnk-+$Haee1Bi zwj#ws>z#BByOz?7RSsk+cEm%ZTNFEVUoW)Cub@TVNUf{;J+#OvMxjN%#+6hayOvqy zp;o+7=J_4uxl+YFeU!(GPc+C1@_L=Z!+FcN^vF6G zhrV60e`o9CHtDWirs+<`IE-~|Lw;83>B7E~eM7JU{oBFv-60az4<)R?ck;$SzsK-f z+zPvwp$!(lH~(g43F#w|{)Lv}PF(K?bPp@W7P(@a@J&+t#=ussnh3O(fB!=^O9M*Z zvyYn8$I(vWs%BR^A^jX$C}3sz!?6(-(UTl#I0H1yZJ`C=M8i7JFc&mTt82Zm|IZYw zd>v?)6YX-O-Ha|qW+~9Zrp8IQyU{=k%pB4_e_b~c?*cbiTmFd6vH5Zym3Rb1R5M7TmJ6n|$UUiJr9tfM#f*STZ3u_PR=Z3WhWl&$&Y+?rB zQ$MyVzn|w=*zYH275siguGmCVj?O9YEJu%-l-@Ccj#_97U<4LfP}YP-py`z`X-oMu zv{zp2s55ExjQhLzFrk7p0?XhDhTOT|B$d8?_*XsAMZLiha z*|yi}yRq)|>HTC}pieLOopxNC2kZ5)AMV{SHmAUSR~V1izl z%$hh>Pe{M)+(bH>^MLDz=g!TntGTn?8#mc5Sm;CRsecQa@8pXo)2Cl+6#3#4ZPrOg zq@a!nz3vNhgBU|OwX=^wMx9lX@K6VY+#AO)dfd$&tJ2K#S)EqU(1~5GQ{`OOt%gp^ zYv@ixOQoJtLc3RI*C-E2N)uzOK}SuM7-MogDKwsd=dbB7p7MOnI7wQ-uLL^JSxD!z z$pZd$U1?#*ijMX(9rueWAs@E(8s#e1K~rWFG-c8*snF5^o-NyX$?l#8In(Y`vmu<%w>bI3K^q};Y>Pp|$k9Du_ zS}5np@R≪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 L!<; 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%0D=JbvaIpXoUit%9_ z@fhcNiK_A8Ro_}g&~|Dz+r;;XvK1?^QLRbFz6L@1_69l@dE{r|0=B^0-!CTGhAR5| zB%%%Hwd2cs7O#wA&thD~o<)@QEV^l?XfPw2#nXg?oF4mfxyNq89y{NeN4`*oUrW0Z zFP3M49pxR4m;7_c@>#(1e)vb)hsXhcN*>44yPK+Mna>}9K`4_+%>EwQU>t>ccV=!1I^&nJPL zwp8`O+sbpTi)pU)**&l0I`}&7Qx)sDPgj(3$N$H5oY#k&W5XZ4W~|cp)>i5JXnCWv zY~RDVD-|F<6+v3Ix9Z}KsZ$2}*|4on&5|bTJ(9*?DAA+jiAlUyXC?iq2)8KV+EsjX zxnr|{+j!um;aQTM!Lp9j6Y^fE9#|<2NgpVa*^zp|`l7+_#iiK$lIz`)d#tpxon$c~ z$%NNRsc8Kyik9&$>3)IN{rXt*;{95*ha^dNCLLQS-urr!rJ`K0KG&)<#~z5wvtAD^ zJunAJu@iN>t5cf{@uGD=4lOtI=CBP)mbrr4j<=*fNZSm!_UQ%vm=*r7e%upsXKEz; zz59UNE*aF%o~p9pg?7nsgfPq&rALWF9PJ7e(C4(oz3ri;0c>TvyHhJ!!8Wu4*P@^u z&DwQ5t~+h(+)+8m$B#q}ei)LmppaRZ({WE*Um$ohP?I;ut?+*xJ8!&gwT|J7`7g9` zD-UUposNQjE56Q0?-XRA0^iX~^hTcBf{=vmm4be~>G)5zge?dz;hbi)#5bPoIiYn& z{F0FV6-G{SyBUp?j(@-2^yYjVsBUD)(S)QcCF`dVPH{&TZ>9wS-^eaf^}PKmhb|ZP*5h0AZ+GAYog~Y48fQ8T9ktRl~!)I zuBF`HU5gaguHbS~(7)_Sb&E)Ki%1m`sZt8Gp~pf>W|Cw1upPm)0NprLyR3RC8VWt$$FZ2myoYu7`9M1S-&6{{$e~2d7?_?{`oTCQYHT!S+_vn z)&F+?9=<&#*S2rC&mQV}d=KUI?cv*z!~Za1(l8iSa^ZTaj4X`5LCtG0vD7vc8rU0c2%hkx_5h0r^nT&}VvZ3xOL zS&v7!)z5}9ykOnC{3w>5YHBHv_isR0e1Q=sqq$aKQ0fflf5*a0=9vg-DJUZ#avR#P z{siQ22$V8EUTy~(RP?u#)f3ujA@tH>v+3%dd62E(LH9@IL4kO1EaGH6zTAdfxaZid z4={lvGmM=Ue#0e!78!k41E{A2Pw?*?maPYK~v+7d<-G z&!2S2;Vh3=^J%2-oR6oM`8b}ja(_QkCA&(Bk?b%!jSe$n7-~Yhf|0$Zcp}(n4Fr|I zfFi5-EfH$4211IO2p?z-gb5xfT5So7bqt*uO({#1659v(+0=m0JMadxTCffx-GC`f z#bRc|d7v*2h}^-N8V4HP?;F@`kfpq2WIJX-Sxtb`K*uY9(`2YuUn&piEovfaSp(6Q zz(7kxMfiZ$q7DQp9-w##;$ezQl+ReG4j7QnoMjD|1eX!BKe2(PMiuK2_(samfWWN@ z!q97{M0NmXa|kmBua3PrR-W3`irP6gP_w928fC4@fa2D=FR#^vS{pIX49wGnd7fee zjf%>l)BVr@=FULwxtyCvckIWp7WpHUm`tz01fgbRGVAy&P&o;BXi99rjHu{|aUd26 z3`AN~g2SjX&>B$%EWlxk7bbC->V?T17V^THIV@a;8LP|Ccmo@Vms2Vn)>wv_@gM_u zoZ#b{*uXdeS3<0uzHJ;EXcO?ZFv8n7yv+k|@W3Z{;Ef*mL=U{l18?`hn?3MJ9(cq9 zpX`CRc;J=?u6y7~4?OCDr#x`O1Ml#_O%HsE2Ojglr+VP69{4m5Jnn%{_rS+_;As!M z%>$p|fsgmVXL{fX4}6vfKEVUu%LAY2EoYt!Z}*ntflneh%K3*V=aSj91@zD#qCet& zT{fF8VP@nr1p5=fj3WRVNj3dWD(ZH$3G*~NJ+p`R%#YBs9E}Eg0q}BlN5TX?ny9J% z&Vi+ zNuqcN;xUTT*z+isDI=b@17`bc8`uHx??9Ia8sab$aR_4iO*9sB=-z&4Af^3U>Nxnq zXwe!UB}ke6UWelDv6hI?z5GzAsvg;?r;p>Eaz=luMZ=s+Y4qpNv>yt5hVmBj^7;`% zcw1230w`}7+U*`{xBjZV6z(TsUzj&7#FYp6+w%J9!aWCCXK4k!xPp7+^7>tDV6LCt zg<4)-q~(=^w20?*o!4KZ3ys4+s{_`dib)2qaE5Hv&}_hExJS4 zBCNGfl-Cc@^2Whh-aM3OlPcCPHakRf-Y$CKL(=*{RPy80R)y1{fYZS~obtvY+K{{< z5S52yD8c8$Awp{tZch(F(k8jsdw*+}RkA*8?xKAv*N!UpFR)oIW*%&{K$rZx*@C(E zL#>X_Gp{d-g^c<30CucE8+yqlhCIiZ%??#G*;Fmo-483;K!};j{S2)LW>`9fr%>Jf zA?}?H=EMMN!`)a8vmIE(RGS6tChH?yW!sEic@%y=rNcnp4k!OSu5TOH?{mr8z9LI!G>2=L z*6(9rybt%m zdUkEp@~+Jlv}-eLeYlc#ZLF4+5?N$~RZI;ZED5&0qqd*6bMgHo_4tq1^wXBp9ebM2 zUp?QP33l1U%Do(?&+~oS0nONz(~r>n{&vx?a>4pzYd_g)4~X*}Sk+s90vPVSpwGd7 z;&-6T&Mel@!f%RQ0Gd#W_p)>Yh6lTrXm)n7R_vAIy~*i}_Y0?vk5L`(w63S}(B5vr zdJkd+eQrEJ>$eYEHIl-A0JKR4-AV1Ou!MT;6l~jmS}B^)>c@%@dT9($o+qM)*yS-v z0u=IXQs~`39!UD_aH4J0f<7-!zA=)xPma52SZkI_cql3fd#wfQ4*)}6D1;?>46^kIxPsY1_dp#X6f5qvY`~LM)Emg zr)~;}T$Gi#C1{=Zi@;(qC%d4z`e$g~;{ zpa)Xc4Z6}ckJNe;+)LXKmx=O+q6*m(*N9e`iChZiBEP9n66TtxG_jPjOESpwcG21a z`SJkAZ*FN1MA16w2dzompUb@8np7e_ouQH({H@ioeOwFf^_4Ox7Xa+PtpJ;CEk0ks&Ij0k5H@p&ZEpAO`0na-_8#vpN6PkK7nV9__k*S$t%d1x}@5U^D+rm$P%|>?6k{OBqPViRk8vMZOfo- z*~QNJk%SV#{e#>k3!2GaLWJ4`Jyp49bp`#TIQi1CJ`?A-K19AA&})mK=4UU~jQ4Z1 zmq1T9UUR=e`%~}5689xM@(>sGt2}){4~`=X|6S-U+vv;c6Pd9jtB+^1$WnRQ#GV1Y zQSXWKotF<#GXQ@ci6Zvc>iyJCjz&QWTx|iG0cZ+~HXkQ`z5Jv7<>)HlAeRN_%Vg2V zR9_!M|K>50V~tLVB0_&TDV=oamBC*R>PADtdeFA~k(%*NPC7!1`25dwl3tB~*5N*7 z6{$%{phrXLC{Mf@;`wsiyA!=s7UL3)rM@wWbclEEFjvS&z$+ie9&GGYEq;GTMP1NH5Xnl%KHtvsd8_HgjCEbSpRjw8yo;_Wf9JcU!Kv7aO*GE(TO7msd8o^j zZc}4u**j=kjno#Bkqd?cca9jbYL|2JU^2jCj4M5@SSd5Jj==*kbNW%dHdNgnB7hJj0Q1kqgFjvwZsEjNABqHUAD$z;)OY z(PY&rO|81C=M%PXT(C(-H6f!mhwnLe3$e3Qq6CFd=jg_ zW{S|7sbEct&lY+@taILT*EyAAZ%$fW--A8-tpf-5jQJR=1 zk;mzz$1}UPWzKZw3RYu0TyB{J<9fc_M!|x9EPj^Tv*ubrVe$Y53#xNegf^I()tR~>|AaJq;`1Anaa_&k-=g@vXWwy0S8%(Z-mC%(D zopNQXeC6R<-iG!-PXJn+JXY+=;){P6cle3)L$a+8LK)YNlWX{=$Vn?}`hv+x`Pw}H zIp?`|O~QSuQGGDZJp}WubH~*>XXZW_2DQpHO?CbY_K@GE{M~Ez|7bK^R#>z@w-H^8`xEZ895}yn07={0hXE24) zime7ZPc{DDeT>RhZOUnb8}r&cRb{zT^V%T%qnoNX8?R-}pYBFF=1DlSPY9~g+nXhq zvguNaW%Yz~-wZq-)5Q%ST$hG{U%1CI1Ag(18}@#ji_avvJ?FeF+LCkdMA4ZakiV?0 zwq{?qR2$ru*X--pXoEMb)CRXBhuZN@ci{OzVE5oBp+DTTLc>v)k7g6-=5n>Kpk*Xa z-a4jIySHLlp@KdRe}hh)_BP%sAkp5i{Cq&(ZM!5_@SS?(=XTHWSq?Ah++~>8d)QDrgagDN=&{nUyj(u8?Ab?aVveQS*`r}K&*xdl>4Q{N=BdO8pyGP5x2oQr8ucDF#kq0B%jaGlhiOfA zkcy|oFA^Sx;^JX1{VfoxytUptudt3IZ=*QI8Tu+~14v3AjdYb`gsmS7{rPI@^~3t*ac5u9 zyGKcPS)}8D?#m-MUz=?>zDZjo?;a$jvyRtn=^SmcbeW9z0t?naT&l1QhrX?PWLRhG zC%`&8?DMsGf`(A^gMvO4Q*y7KV82fnt#vTJoG$Y>wobnuW_-OxD_Fkffw^Qh87}Vy z4C_It-R?U9#x1;?^4Lo5pT@y|*@6ukdd%yQju5xI|7`XNKQ6RF$aKYHG`l;JEb7<` zpd`76d>7HqCf^BGdX&ALJz^NC?uS{?GTmh9cX%0DQN|ITGU7GLXsRgVC@O>7_Ve8p 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 k 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 z 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%0DZNg#P^{)66ts|6+E8GQ9K^& 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�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±sLmdRT^R@C-<>X^?Mwu{Yn3O?QD#2Pa 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

    Mvy@mUhN^pD!(7~y6F(`3n9FQsSFwG7OYRUuZ) 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

    |mkAs+N7&`0X~VueZNmVMX%K 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®+YJr=c7L%E2EC#+MF!+v3$nF`K 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 L{?+jDKac(gHy3*R literal 0 HcmV?d00001 diff --git a/xiaosa/wex.jar b/xiaosa/wex.jar new file mode 100644 index 0000000000000000000000000000000000000000..38b6fc206875247166fb3fe63160e0a4cec8484e GIT binary patch literal 450836 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 mw&V6 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%0AH_?_?kWeMrVTM@!3iLq=p`6$CU0* zpTvq!=>5bAaQ7t%;S4B!pAqiTJz~SVc>lhj3=^Xc1z} zChpz9xYEWFIDpo}-b}`dFQ9LW_6Xx#{*b=QVJ=^Z?+>42;PXBBoXbn`o^Qiko>-Fi zB#HNY8|Lz*g1LNK@tzaE=v)$n3$}{q-1ND4&h=l6=Ugva8erX(^8OU0ZM?ro-roUp z+zn+fBQBgJ%YGir{!H}16DL?cfM;OMp9VF*0$1M{gb!iO%Y&Lz;p$jkiVyiX^(cJS zzz5^1aUJ&z_$(g+r-tGyuMWajo`CXp#aFITeB~a6i%*AqNfHzH%P%mG1y9E-ApplN4Y1u99f8MSx!)%F;kmd@S!#QoNve1>WBijOJXpy0Ij$ zz~sd`rj_4YwO4%WM-cn;-meLUj?wWCQ&9-t*z zU1I)lZgy2XVXEQ@2djBFR^tgR@YxSOhr=gN&ziwJpnl$MEQNXa9-AY+AIwFJ^8QMV zCXTrS4A<&hwiM=LiqPj{Dn%o8E&Cqy@Ltxn{QC_3AhM^Pm`K?M>(P=CK*<@PWHDau zy*GDbRYFoS@dko$zJl-<%O9(W=ryX&=UkrV#pkulXI2e(rU{R(@fLytQBBK%CdRLi>jw_ZhQ7BmY;oUVoD0V6w|Bo<Wn zTIACw)zaBLA_CU#v#w`>Wnq863_TiC7L^Il>_~dng|v@qij_|{p~qG9I4kjNYcq@j zdVmLZT~QQ}#}6#;Nw1){^f@<@mnza68IN{|6~;>kr^)_Y#R4f!T#J`Ri^NhMD$h8v z8nd!CvACTyv}mH^8;#3U+@#vkZ(~HKI>lTpG;mz753Vsy2qV(qiIomQsz*pdiy-Q2 z6hDxAvTf*m&Og{PH&OTGd3 zCvksojEoFY=Z4E@7O2@LYnr9b4c9Gs^!zMRI|QXA@2?nnVt>kamqrOue3q8@Y7%Rw zS+OK3I!jBe@JiQ1iKC*7`B`dL%#H<7#%McwY#T2rD0x=c~&^q(%xqr z;rVe4%Ms^5rXGrKSMNnjk~5VpkyA{svlA2Qy>%4R8)k2%_*zc!wT{0pDamAf?SFoB z#xnD>Nb^{>^0P?8SoY{=pdb)mnzj{k4dvFma6MJ4Q|!Ay8*I4!Ke%!*+`jZqzUBMU zamI_|k%o(vJ%J6q4}Cr>9V>h0XQj_UN4uGE+20vZN9LlHzZJ*B?he1>dEj_%(k%M6 z$d>skk1+$}%v6#$_s9RoD5Zm*1oCECk=&QE=6aI*CxM(fvq0`&pyd8Ck~4YdYOc%u zWlCFnPsx3}Uk>-rE4h#Nw*~U|V7S^&l#=^c@5Z3s40ZLza_D7mD)p9|l&wNLATO0= zmj!R00#{e!FJ}+5A*GIhbN>zY`E`WRaJ7s{9l=n#!D9HFTGCcn4)e4km?xWb0;!*+ z(N>tT9Omio1@mN(JnNdVLg{DHMt_94eZ9G!z(!Xy_eWXpQm8kX)6CI*pm)D7?@{mG zg!gaD`)h)6+7GTS!6!EsjWN}`6Kc#+b*s2jaQd4(p8(HZ%NX;ubHG=@D5(<*N}Lbw z4LBbhPs>JmL1%ssIH}DO>qlZ%{(ADURWgct7B7yRZwL#|q`*Dr8Szb{H~nBaMs{>~ zJ-Gz1w=z0oTjCq8K#ygM`^&XmytIa>))r)6Z->4ff~QWBbuhDEmR=i-)c$alB@f2b zVjF{MUJ=yX3(q5F)EIdCG=Byu@q` zhr`tdx{s6R%VG)AU8lk4F0>yu;h)WXAda34IJ&YVFS(L<$;p7DD++LQmEt8Ul{H#j zz)MyZ*$^w04e>k0OI9l0@>_|Kbbo6wdb8o`vQijH^==629SB#mu-+r3>is0Bw=Y~B zh4t2ys&@_1fXC&jmeN-n=92xV&wPRvxt?lDNccTITdV*(}KAf!Fb?BJpwSS^U70TZf@rK+}tJk$Cal-?;d7dSDhy9 ziS##w6kvsA_IT3yi0GoYD^ zvqH^WD9v0b&0JjI`1O-Q^M`jfic^$MrnGPqbZDXc;o>K*XQF3#*Xnu`Erd0$jBwbs zdWuyhLWrc5Tcni(#2y7vYUOPNQEBDu@sVoRpp5*fZ{)`)E1;etZ!$t=9Ka|NZ1ZZk zDzh@SjC;4is^jBvO%%v^ zjI2Ca)J_98nbbh((=bhtD#=Qg`)FsJ@zP!mX>22Mk}dCOKQ+bPWtu><=o}j zO&;66($_y9`K%DX*=R zJs#>DLvVliSrNU{6BiG7q8*-Sq4)KDHkhuk8m=)<1Y*)W_;hi(2fLWw9V#0lcPbxx z&5v(^-i#?+htr!&@!v-4L!q9GWep`{7hdBTw%-7L zb~3b>TrTv+~=nNL3fPl4Z^# z9|RxNgY_5(T7Pr?0Xlh{VgvoNX&94hcS)87>t!zAF910}#=m-(lOWudXTRRpU{l;X zu1}*)3K;EFnF%(&eJsnEO%|S{5(Stq1IXTVDh2cAs4{E(jIZF?x|kKjs2`7|U~^mC z8QT}~co}jc8dOiXy@=AdAJ+OTDs>Zd^uU2CQfV{H-?Ftj`r&0t!XEp6cE2udd zB^>(`)Er?}*>QIAQBN)W!CrU4Q~Om-r+pB{59zsKW}EG@mKo*j9H7Fl2t(X8|E$am!6l5p$&pBaonJ|_hV%9` zJWF=9=6^((&p|orD;XY)zxA?Z(fH5ASW;Ei(h1tO^;?0h&Z@pGQhoO9--?Y9LH+(V z^ay`j67+i}?(-JeO*nhFW>If?)|hI9i(WQYv`ndD`vS6g_L%C`5n&({eEP0Mt7aVt z<+y_?`X(n>l`NfKYPIrmc()A}MLb#;L3o+!(_-;RA~HEM;W(zROlPO$y#sFly%DJI0@cB>71w<>FGv@D+e$TeCGgC%0kV=cBZ7US7B-A@vc zIJD32`}SJuc)nYgPe_en3NGADtbw;~>++W6wSb=%#~zP{ z-k)Pc=z0RY9edmyi;Fe^J*4ax*>~M!0(gN?cxjBbDK>Z#hcN-m%4Mz4whCxTc0@is zE9%fbqq!EIV=DKhJeG36Lh_%-e`Q)9IJFS1Q+Qi{f@9n;j$;hogR%dvrH|yBNjZ`@ zimkvK)4ljz#&9fghFzA=T`Levv*j*#4TKFdY{HoKonZe^ji>*PDtN~(Mei62^5qh8 zwHi~Vp!0Kqlm~m4p{%lP;9WZx^c(Otg;yA9b7UoOO@`T(r0x3~+Sl3R9FFAz%PBe* z%JCj4uP?VW1@FE6_5h75aC{LZg%CR z@vNh0tZd?XC|y4}4mIPMvSZBN_QT-!^ocOav1XP&1HX5nktk#F81@{#<2}w1_+7Sp znaL*p%x06z_F@x$JcUJ;Q`D)59A9TFweZcz3;Alk_5}NJf!Nf_iAI0c$kwdSzB@eJ zT7X;4T{RHuD-5$@d-vSR`E%2$uU8gs_Db9o3 zm_mEDPJk`P9<7qtP$`T+E0X%>9DX)COq|2qdW7K+3`gbf4682D3v{W^4(Z4qJZ+kYbep`ytxBaNz zDf!Op#Hd8PVseEEn)dyKp%tvGB9kaLdUL-o`+$#Sx3f&eT+2(09f7p|8QY;EQ}Ghq z?+Evg*U&u&97({;CvbEt0J9N0Kr{LPW<9Y#%{q*60%wQQEFFR0@!f&LO}qkTC%%kL z_~-YbtuF!Hm5soapb-G26=(?8ct)_YvdB7&&2)L>4IE7+sZIV@{w>4^Mz!DW&x**I zb!G6@vNGyRLhnmic6##_`?EE-WS<0OYu7MQ3F@+kNoAk58WteP5 z&Wsq91|$EeFTa{J9%vBAIkIo8iqEy-&+K_kd5ZIPBBgWcH zlEv?l_VI3;2{O$D?W#Zf<{Afi;ux^=D=kJ66Z>^2^b6O9=d*XC^-aEC+pV5t?#L#j zvTQSER=)M!~7isswUKW7#Btb&mQsxO;2<<M*ec9dbaVvUj}&ART{uKRHbs(RW`c7tGpWjMlzkuZse=6R zpfkhRe5{QP#=A_c$vaQbe%e<-duin_F%PssPrz@6!$#*8+UR?Bg&Hrp3j*w(6BGIL zAL5un1KMvs2kpO5Bt>u6ed4)H2B7q&?-kF&FVFMdTz6zV4|8$#IEO{h`iYFMGdBRW z9|3o9tJOmJePqNR=MFq$(s?(bqKB%>S-c#1FK`v(CD13=JU74mENIV%3CtoD?o~$) zLlHtWLhxIpHF5-v5R^tXMs4oKCfPF?>L{qEj++)^I07JZL2rc-+YR4_cW&JMSIgG` z*FcZI4rCuv70SR@%gT6b8Pv2k#^a#TyZ{Us!zjMsT$S)m~X|ND`G$kzWwA@NAi)AmDT{3!3ZU{&j8#)d%KGCvL}VK z{^EdFZJ-Hc_i@SM+7V{2%FID;-i%L0AEpJOc$r&0*>u^sc~Ea$mANw;H`Qi9EX#mz z#j4Dm;64leac#c9wUg#{kLN#4M(}S-Rfc9~64)#G^a|8NqLZTl#cAn_v2pv9vzH@Q zyrmCHA}9;(VXj$LS@cm*~J zjaaTl*&?o?#td{>zC6;$FHkZR^jV?#6{5sfH$;KLOq@N3^qx?+!TiZ>P^(Sa3aDuU z{}_q!)J&d98lKZJg7k2BUp}&epUu$ZdsW}YnuhVY z(J(V-i6rrrQE+{>x~}zW`w;x6_^obFZeq15%0TkXCJZ-Or73eA`|x6Lv^!KU0&6(isG!&rj|R>E z=$78mWMh8|Ig!zFGFaFqCwp_Dh?}h_)vJL6Ar61!lEuw?v+<3Q2uOAvF5-FgH;;3-iJK06{JC5+N;2bs%(s?(ajoZcZSspGgQZCSlOzyI}`3e z=JJ^!>rWz!yf57gwtF_3cRDB@s4tyQA&u*JmK_w&JX`i?K5MfoSbF=VR+~+J4x^qgzmv;RuTSv2b5=_FKh8=aH*IdNK;ERvR#DkF>c2~Lt>aCC+K{1` zMUNfgNSZ`1D`#`u^9R`BH8kFp$_DRp&Zj+TX?hxWbEg%gU6Vd_7e4O{`h1U5M{#I~ z*M&Z?t~Atg#?;EVnp{%K(8>ZCihlb!d^O-{XtU|>#rrz37^Kx#f_JZGs5RreD}_y` zX@~O?w$UGpi&%Hn1*|*yBQ_^>A;Al0QpQ1bu?y+h;_^;*0gdy(@*kBf?_w7P`!Wmp z;;W$LJtVO2w$?YywKHe$i>akRsULQ?UjlRbOOz_`y$NU1E{Y(O6jadf~^>!+2tP1F+Cw&OsOKP@|f@e^iM?|CH zA7fwVUIzF&8SLxsd6&Su=ghqn?C7&u*W8PtjSrBm?|$S~?G7W-IrqnGO|BdMb}f{@ zqE*|{?hq7NwoahMpnSOI#P(Wf`(m?m-sJ_qqin_B(U0Po_|ES6m$B?j`PTdKe2;?q zor^9bt&m16H?jgV3)F#?-o}z!06+UokMjoZLKSsFdIpHwIcq?s$`G{d+wT|!xtUV^!QtVYJ_=yWK3cPCpO zzoo1U5w0EwS z8kw)R{uK19X-wB!)%-G)nv-Y-REYr^P(O{jkv1N+T8(lRG3wx|&p8}-VH&L{vy$2E z&@RN$N2`!g`QQ7o=5}D&{3C%iQQI1iK7FwB@V?FXbH59kmeg`|J$`R$+q30)=a1Er z7oAfndC@WK3i#zo?Ux^_Up)4dR(fVo`m|QMDkyzIEB!%Gx~~A#r5VBo<+i*>K zKD!!lC;?AAqro{lXyetyGmD?ONn)VPT<*jEY+^oK?Yl|_16<`9R2y% z6a96=yWv@k86CKmo85x7-2MEuTvqQ}F6M4VH>(%p>ld;Nmur0-^s4`pmE3E#Y9;q# z_v3v*?5&PiX5m^cv$8*?Z0yR`qxG%xORbat{!?5h|BhL>PJaLBFW1SpW}STC_}&74 z=kl9{9A6*rAKD7MA3FYFcv}0-7ofFG@a#Dy@nI*X>@&6-`?P;}+?ZB^?#4IG{=cWV ztF{U!F5MSc>1vx3z0D6}1SExBI&l8a`(LE5`&1l?rR>$$VLUOm3H3dpop3ZK{WCVF z;X2km`g)cg|G4QoAUDnJSe@~>IcwaXBdtaa%NXwf)!Yeuc9$v>w8_`SRMwE(%bqj- zc6M0PZSc7jU|dVK!eQwfl$_G{U8 ztgGW%)>U~stFIiNa^>9=_+)Np8x4!+(=9d4q%T1W+}nfN(`{~z0vP4+cLytD%>yg> zX3#sX4xDl+9p9gWr zjD4co>9K!uf5&N8{m&UnLELdVOJ!&5tiO@uCYJ3g3U|Hux&IK}r=x9>;}RD@_fOve z7;&eGcF-q+MV@l6r95GEH!^~_*ync z+(~;I~Jr3=ZrhFOfR!KZ)3>Y&`;!vq>&Yo=HPs}l)q=}P^>xQR=`gaYX7C8 z;QSUgYbN$!H0zpq6FhZ^(TY0~(nbO!Rl8>0ME#H}OGj4E06g@6>zpO~GsEwXRcTei zXv%S{93$7oy3WD9?bo8u0D4-f=eRv@Ek%e@rF9mJs;&d>(gmEvwa`;pzZY;3vt{r1`nx6o)!DYyYL8=` zN8iDc(f3YKMMeS6Z;GBq-jweW{x4&)ju$ye z$SZvI7&`X?GxQ?QMr(8~qxhpogPm+r%2KROCHL)ff3EeIvd~*9V=?RaI}CBVv+@qs znYn}ATA$#)OdB=kOa1Zl>yN|h84Y8$Mz<-Jn}_$K-297@o2K^r^OeZg4`L0x*KQE4 z_V(f}JXHbn%Ng>Xb~9In_c^?82=8a({kZUcDc(;F@2|%DgTnhK@P0vf{};SJKD<7=cF;=hppvXs@*9i zH>hN1t>io^*+nb4i%NFYN;XkRPAdT+3?)rk$@Wyztd;CfCF8V`UMd-{m0Un2En3OF zR5C#;d6h~gY9;0fENRtB#!^X}R&oH9Owvk@r;^E9$wgGMn^tl^mF%vSyg?;mh?6|Ll9D%oEvd522As+E*iV99i?q?t+%&`J)bk^{AprBpIQE4hkF zX37!15ogzskM8kCT+>@#s5SI+oY{|@Jh?X z##!9LW@1aRu~=qdqwvdw4>trh4LV>7s45IgE)ARTJgsP&db|Gv|9senTEd3+!WjE) zrG~={m=^T`#uD^BtO5hfag0s8u;2libWL^?#+w_Tr`?}-yqP}UhL0zP5FF5!8?poN zZDCsshFzkrz>so*|I<1+v)}=fj1lUqfjJjU-Xg7Y4At7Q445-GT5rt!78O6Lx zC{qbvPpD={`x%=+JunQqlh1Ibnobrr_CuOka)$6mgzZ*A-PjkLdq6krJ~jxeSU3lU zuq58#ureGaA|D(wda}nbANHhGF!Jz!638h)39ZY;GV75c6fr zX&i;@O9-12mxcD2h$MpOoW`7{&_MYB%oG_cm$Csz2ze}Z&~LXv4aZAB_<`e%jRH#& zcexY(;b_VZA=M({QJaL{Xu?FqB640JY7sK)<1JfF?Uv)rg~V@Y1yTv4Aty9f_)UU= zkj=*vlxfg08Xmpf)L8rvxuBtZNrq}3mx7hJC1JkeMT#dOKas9DPGpHRU%*ee<;wE~ z@n$KNCI1!@AE^={6ffrAK7Lz>--P3WP{tso$B?>%sZ=0=oQANR5YVvX)1+$B9%CK9 zec6Ec4|@A5TulFYPQ5kA=x4Q70A2-tqh+KBnY-ocKETky^;A6lrK#g|uTKo+*g~gG7AR z=ZH!+kOpj-T&XvThXLMNistco9DNPHl`IZup8gY-6eP$uNk_&j5cSgDp(#}QnW11~ zuT7HDILxTM+>`>+lH-loXi3~Oh!0A+V;Pbs5J3^$>Nprk4kKXo23IPg zL5Rjl>qd4+vQyiUA;U`1oxY ziYSc2F|njoL7WfudEr|mmNZceXBs1mz#P5XCv8e$PK@03+ z)8}LUN*oUuFAlq*M6?*v(_)zZubLl1aHRqoK6gVrBn#P;I29;QhBP5mqe(p{IwBeq zG|{49E|o0xb$h~FGV-JjB;>Rq`H;*Z{O}ioOi8?)9wtN)1vnV?N{f;Xzv)pPXgj6H zgURLw&uaKBRbw?KTv<@4Ajk&ej1leNG&8EKMh5j6!?#XNNlb;bBd1X5-()u+BPGR8 z;tA(MzQPbe^A&+g*i6EfNK}9)O3di)GS0&h5P}UgAnG@6_*IJLl58HDKp~`6DOFwM z|I$vQ!Qtd9kZt9J65QavR%Vh-#|zrcnOtIq!L%sq9lbLq@guYxqrEnpwh4+9&1YBj}60C6HBD7BgZ3LuyA9Q6o~;0l-*70VYs?H+hUY` zSxEDS!cwK5Nq!RePe{fJl57^46QNClKI*_sCw+;;s8Qf&Q}R;sCFvL-Uos=#61PmH zvyqPj$w@h;NUVi2%`l{XQsf_0wiK7nD23-F?|ER4NjEPsFfL6f|79Q4B8SH;t(vVa$wT*$`|{(z&08kA_9gVL?Ml&SWliHfjeK$_+p&lah7?y1gmaGBlb; z8kQ8qr4c3l$jAr^)HVswB-vmw($$M}d&v<@-^P*l4r*A^P7`E$OV&boC&=q5buBWd zsZm1Vd~v%Ca<(d;w8@pT#GrPfQg6|vWhpe{Xn9ICSLvFBji~Qy{Dd1SvZ^i6zIxkdz}00wL8n>1UF*E3O;R6msdE zCSy=hwba*({IUOuf5kckmj*QuxN<#MOwzt7wF{bFAw5k>ypc~?9yLJzSm8VPO19f~ zC2&bL4(l=Y5L+%5UJF(ok4Qw}ij&mRDaW)IC^5gmck_`7Jbm#8D)9L27)W=v?^L=c8 z7!Qg<`o!Jb-Si7~SngihpBd)L!dSyje5$faykksEo9wWrd)X|gC-XMBY4@XXHtzoZ zP)xPrW>&a=YaU(8I$M6hn#Uwr=Y)IMn(A)&+cn`nHlN+irU4J!7rMI_v#mAG{_wYZ z{4dnLw6MJxXV#g%hgI=~Y@*}mib@ppsmgC#$3&-`bv50`T(K8m7Uol0QMrPx=Lw!- z%O3FelKD@{*tQP@#diO1ih}#$5kCAhj@!&Ne1@~ht zJw%JMTib>4bR8^v`M#jIueMoHWVniUyS&uifOd)v|FPP8u_du}En5*==RZ5;-x8O% zj@o=b8@|mxJ{&ma%e@0zvUk9rr>?Dap(_ zm8v{^PTyNiygqFie%_M8wp0Xd87!_^-`|W^GM`omKS^+^4Y||P6)mEi^`&c!(UeOe zX<$}-%47AnN?r<%vz$QZf+SokMFBhMw-MPc5v>N@7v6RpDEJ?`hYlPw)Z?cCe)cweeFcW5e&bUDRk=Yl2G(|%+s=c*hV z(KT-NZ{;HI?1HnUzAMxj;c}c!4G$U!|8mrhu#G!oW<1)r)#L1%lDjpqy%ST+Z?Cg` zO780p+bi>cj3Btr(Y(66enrNZ0F>UCieQGl-~{L%XD2MNZT0qGpD}$eMCwo6O~-dvfzr9ac~K!qoC~Yphm#5_8_oN%0|I^*Dzk4~q6UlT%Su zJD=XcI38<bq&9ovx_*pjI--hfQZDvIN{$|;(x7x@p&g_ z$ZVrhj&S%JReWI?@P#QBHQ6Xg&$kr&@GuuoT-oLYf&$w1Tx1)g=xD(vNj0ic_Bom&lp#6F~kZ13e zIOaBvGP$t-!!dI2CDK%c^2mS<8L5o)IL&ZBf>nt$y9QVUh$7Zx3$x9Rv6Z~RX|?mY ztP$arl=H*m^DDzMJ9j}!p&eOye|K60_vQD>76fC7`U{R>pHr*&y3eOAxk#dD9_x8* zy_wG)35>9UT!TJ8*jA0NN#mQO@imDTRIqyFIc}Uy14fPWWH8bKK0!Was{L9%9Jyz2 z4|ruae};97$BOhRY@3@)C?_)uWRLVIWZ1uePb6#ctotX}9QScHr)qt$_q9}gf6r~+ z`5K=74bS~*keo2TQhHd(r%4Zk`hDpKYSOg(wV$<$80*SB0rr1Sx*8-*f_7FGzCY$a z=d8nA7VK4couB6mv_iXxlS7ulp(}_rb2tqZ(xp|VRMWpS-1H#JIs1Y>4~M_51ePIGe67bh~H{^ zYyIE5($9kI|1EIA2GUuF!jtDp^);O+7@xTI&gbEsFF?CD1m`lyf0)CsEB8F>YI=cn zHE-~Bn%u683yBx3pbZ%o0}W>%110|NhUj}KeK)H7RzHUM&J(QX02?oX_w61z7Gz5W zXe3?6Onc3e&eSH>vS>Ezs(Be`$Ku`YCbq8?v0gWYB)-Bs|5h=|vO zh^!s+y09v6zhpMIVOIa18-*dCG$O`phEcJ$1)fjQ^Prvg_t&vITZ&+$2*$PqqarE# z`}-4jjtSsI08S*b?b>hkqz^G>Vy>O^hME~H`?GP2pnfc40Y|dGMcIUKzcH;f_L7ziScQ#MC@g)5wN}P zdKq`U@>gQ^NiSTyjIFx(z*xk3!?q**lH#OZnL-ep7 z=-~;F^&_FJe+F9Y%Do7b(IU0;rpJK;K3szoie63m3re7_X8B7!Wg+tAa%u=VK1{q+ zs=Z*r=n)&JUpHi0!G1yds3%&|<-rIR_?Us8zXEdLWrjFi!DMb`pT}TsW_A99v{(6# zY@@-+Z;%4rugYA;S~_f!R=g>@xeAn&mJUmvBk_-;Rm%F{2~= zZf4(szee_L>WntEg`05fk%^)_3%@FEXY&WoBn?6I(N*8~#?BNR0;p49w#h z*W}e@`0m)Hn1c;7=7ElJA?sQOEm*#ZsVsWJHCh_Z02(rA6xuM~s|BNQP@HYFIA1mH zKwPMu%4cTZud-n@7NpoloAWm!hW)|`>)5Ij4ve4&#pbUV#-3{rqWU(UntdT@(`YT& zjU{awtp(8kmW{Sa@7WKnW5bBAnF^yi`pQq&OxS=E``GV|^R2$1)IN>#|jYUt|SW9~n`#EncJF&lexsN+xUQNX4$rj9!RcWAs&HkHTkMec!K5yXIR1xi5sF13;`5)sO*ZU zFQA|xD54L2iooyrct!yQWRXP@RySmR=iFP>T|G;{_r2fu{r~fQJyrMCUC%xDZ1>!I zF=X(N^0cDPxn$kZiYO=Kvs}4$Mw%ar!bxyy)xA1=-B4Hp^VLi1npzGI9bD1r}mb1JZl zK;`_|0*E^n*Mw!%iJz9j@{{4PZp!RtQ)zFabKOVeVF+svjG{~tpcOUyt*63ax&7NF zIJ4^Jh{J8yre&i_u)@Sc~G8EFE3WekwQ62qFDAaXx2tq$vVuWg4 zm*DT9O!X?(y&&XV_aqSC=;U{X0qdwyxoygp8;wqF1i#vWjMV<0C~djnJ-_4}@QHg7 z+7Y%P5{|5mAk9Y^=hBDzQD|dpSPyZ)rzYd-4=3A?Y~(y*gB+IQ+5?kqr^KOSForxr zVoydQ4NpZP8mFXd+}ua9qWz!QFv^3G)44qO3uq3CXI3~qgg|$SnmI&2?Bd^`H=1Ezr)Yrq#v#*(2pVwmI zIvbR*;?>tNxDuWUMCR`e%Hw-3emW4W?+mPf4rdwGwgj*y9cwb(nj%z_QdKA6Ttd13 z*8tC`kgw%Edf^=dlI~l|EU@JAO9-0}YrFl-Wn5ZE>gKqRP>N9_-qjo&y>X+U;=>kti zD@g5JB9XX6au9!)`FjR6&|4)s*5| zs)R6<7bggYd1#hI_=n{%oqg|VwFiU$j3VdyXWSdgo$H^Ta#wi?>FrqhZ*&$BYWy+Q zDP>{4Y_J7#b*zc?$Cz{TGvM6vG?=;>FoSy2cI^~dfwA1*>zGt8BQ&92Zibjd^nX5w z<0>x2du#D@N6ENzt!(7Y*e3P|7*<~dhskUK^DF^bd7EUmjpz1+WQD8(c^E>vMRr#Q zF>uWIdr|`X&z?mau}GqO1&A+^C15@XdvO-PmHV46d@eMn$&WMq?g`^`8Qir76C~b3 z`n#XTnvwO7Zk;$aY09SJsEaW<==fDXepO~ky zv9A9}-TLipjVSMYiAp<;msZ2`JzFkK|Ic!H>PYehpt9Zq2j3jPvQnZfbqi@UHJ~rI zV>Mt$@$D!(l7-_`OS&jQcIq_pDU98qUqW_xvb?U4YhWbtJpP`=-*fn*(r-dND=O1m z+km4r!1@H2jAJczB7&mg;R41MN z#=}i@zVlaEfkn9H4es4ZW9e_nCfz~F)7IA!RY>spCBqMpFa4Aep2X<}qhwaXQI5YO z&g#ZdRuDq_!P2ghCUPhvYr^tMH+EyX1g0xn|D6=3)34^~w&{Lrzp&6=z+B5e*Pj-{ zc9vDds5N0J;*F@y@ks@FFg;ZW2WTV}Zu@(lZa1M*gYo@Y#6855Fpg{lc{9!zk17DA0lGP3J3CX3bF8}^#C&*L7V}{&{SC}Zy>-kNpcvQK zc-Pr7%P)p&VU=_W>}*V_5xDo*7LWsLU@N91+IJ4(;pyz#Sms`kA_OxBVM=o`15W$} z4sU+adM+x)z!yhjkmF`21{+O;PD5vO1?Ku;bS(WfOu3z%i~X>hYTS9hot=Z>vD_Xx zBiBMT_3)=4tBeSr&aT6-7b|4$WgzZlZ^tpA`_fmC^E(oTdu8dq(2X*^@H4;_5ci4` zO-h9to*!^b5BNST?aiPmsvRV{;34^nHL*4S>s6qK`G zBYi>wv8J<_%l;Z10<=EN;3NQke&6XJ*1yhndF&1z4uNvvlc5XGhtrT?pD)g47Cdz) z!B}y+kjn#d{cgsbZo=ljqO??x^4P~xMBm4a^T^Xe>Xd>|?0FG7B|0DcG>mh4_F*WD zFsfyv^1DEooQDyNE%sX7c0>Y%G9 z3O|r4vXRAp9e2;R?8XstPjWooJ=;>W^b>S*Q~BG;-no~#kyKi?*zgpIit1FLULkLR zdJg4!rP-AwWe|5?1@Mh*^QU0=JP>1HfJ+pZ|reSV@!#@wC5wJqcVx^mdy{+`PzK->kZTJYz6+iMFw*?^Lxg+ z9!fPC#oQmcAB58)%G|){#+L_E3M=ORf?rH1=3c{oe2=g{C+J$SHPzmwyGH zLr6?uzPT!lV18R38GjD+pdG9U(EPXvA$ktVVznGr0sf!774AxX4gdc%b+K1+km9Z? z-zUD1uZ`XpYJuuCGqOpT#;}3XFLG(&o!}sk7H=l!-Ndtr6BA#pEz7f_1S+qX!&w4k zy?zeo#Q7*EIJp-_x9?VqMrUjmozs&+>8k>wi;0)T1{E};K_`jL+8P)Y|kbJnE z;CaT4b1`+%c#*H=(@4?!$5{I7yo?wVWr(#$DkD}^Z_TuNLzq75)+~6O2Euns^U=q{ zh-US_2~H8Y%OKJo=Pz6i$}3^%f%HcFQta2*UVt|V2DH*r96+ipbs}$b2A%`+4T4EV zruXsmS#pxc@;H2Z!F%g}fqzxOu5||XVeCekV)udBJvjI#!g5$PdWVaDgyG^}TwlV< zolQAvV;7~mRo;40SbIR*xc*JS9lASVE^>$G_-Gj0o%N#bPpi)Q7htgGO&*`hQ%JOFpemU*9F$h{178#FNj9^OPrh7N6GGE{R3kq_d#-hqqzn8!3n@(ACkc zlHJa*14)%Z$AChyY1X|mj&m=42l8_JLu0v{DjMYDVZIM1RMqawy4y6=2P`5ECX%0$tTeW^e4N(y&ad0eEmb7{5syBEG-x@l1R&pAPAlmdJ=LI@ zjMmXf>nDklR!B47+0!ee%1dHn>EmRA@dstP9c;6F2RKVn{@L+5*Yi#_<{%r4g!MZ+ zX~i=V*8`w`T)$ku>2&S8JjWGSQ+*&7$OcDME3}*69C9n&oyo(Om%}x|`am;X{mg9{ zVV54&fmkaipGgP9r}245IQ0qgADjOPCeF9_#=X_01u2PfdeF3m(;3^7Uc5JJf*R1%o>-x!U=h(5N>+IP@e7>4@v{;K$#D@9x^E zq_j!6f9s8)Fl_aXH{s}DI5hm(KY~}EM{j=2>#NL6lHrOwv4=gT+{xB*K4rd1G_6IU z_rXt!zGWN=5%ylj(>R~Rwyb-c%ah%A^KX;~zrEnSA&>KNryUAW?p-|I*(vA~lN zYn+P(#q0!n8{8qN!(yX&vBvh?>UudjZ=c0k9Xc4C&pr=3zd&63!#Z*D5k~8&X%;d*3on9tJ*L+L z>UHw%q}KIvuC~6)=Z*S9GDas*3%-S17-xX-H-7hR8ovhJx%Ld={3t#%I|etSbg*R~ zmkLgUu>3&FMv6f_X}InQPBC`E%xOr<#2JZoIirZJubC2IT$)j6aH~5P9SRY~je~gm zS!xG=BaLk@V;uWauIxp5U*NU5^LX?HFYk#j@VpmMe@+xLdS#}TOFJ{k5vN}j)*sL} z9y+5OaglSVc>Cfu=g^8AQJ1HXi1*16m|DDjaa-k{hL;h3Q5V+aH$8-M8Oe1*HY2Gn zbkIxEB&tZ>j+o=YmK}G!$C`yk)QF$2l^zbjuL;5eFpzGl1 z4}pGKgM6O)JDu&gAM1kB{%$3pkGAo1xnQ8X56*SgvzS zefUJwkmV>8PehE=1x9x85fm7?68rWk)CuT&K}RT_h)~o86g8;VVp@$}uQlre->>BO zeiifV;eT7Gx%USDT&djg@s4Y~u-J&VMwHn<#i9{=U%ptx8{#;E;=YU-?;T+;!?5&< zdw&P`zBfp5Ry1CQV)kXYJsstBQ3;doy%r`kvVwLp`xBU(8)Iv;z9P!>QvGW{>4w<$Lz8r4y4Ecb;0 z_)B`VDg>Bs6-;nw(j6K{p?o;f@(&nkdk03^_ru7_*CDHjwkfEYpHfrM=0oPh_VKx} zo@rcCV_ZUWxVDO1fdyk^%Z-DrjOBLJIgIbM`D01@HSn-D()RZ$I6}U{2;QzcQO5Ib zZ;h5^8j+4{Urzr+I2z=2M6>#j-2bitF@WDex`1?UpN`)9j;o_Py`Hx2*U>ZFo1IE1 zutT7rQD5doHGV7m290TtoiGVRy-bt*n2Zw6ie8dM&!_uD*7y3Zu59;aqC(GHwj?28eqJ;mFg@ivf8K5?pTUpz&)%>{8@Z{O+trcaG$+B`C${aQ{&5IcQ=vdqU73BUMD_3?yU>g z@}m+^zFeeno2>~W*C{M>Kj|Xvh7RLh_sRD>5ei4ceyixAno9%l{~io)bFH44A64H{ zLvle#>=wfDDM|m1F>lf>oKhMZ8#^`fZ*5oS0YX}RN>^Da@Dq4Cs3}hdgVDo+fna}7 z){!c+Cp9g4m=@6bH4Kw~>hs>7tsFFF3fh=6KhXn|5&adGl_Z{tpS&UF)$Yi-(>xEc7G>oQv^3A+ZLVZ&R0U( zP}*vJg6`SgbW*CVcov%%HTbHu@Lq0IGg*BVYt(NTGdA&6I`V8H55*pcs7^}Y%`rIY z`biCe=VbDTxxIH4Y8Hh+6F5y+diDt*4BC*7s0DQ)WP>K#t3)MJ*LSl&um`tmU&L}p zu6jwV`QSWyG)U{Jge76rI4n3TVM*IyB6m@=Un2N_4dcBPlRL`mt-y8D`7SOU3&O|E z^J(JiqPcx=$pB%EQND@2RZSp%a0{)8ZH=KsGcZ4;EOgpPx8y#V_#Zh^`#!EC_3?f7 zN?E2L9L?ltN9uUj59EwO_Iz<06G1xD_W5;)MF=Yj6`O>-ln3(lQp#`P)8|Jz}b4`}^@@=AT+=KDem}fwW`tKYgerR> zJQ`TSdAts}3Wt(B{az}5wnF+ZB%RB2qpHS+)2~4>^A|vEE2A+dgYu>!{LVbTk1XQ$ z=}1DI>ktc#PjDMTBRHCKJ%vA6C++|rr6;2VZ$bKdBdw8~$EhWGwTtKOIZ!)}k-J1x zx)c6X<6e4K((9AV3>36_Xi$=DXg$hX8cHGSkppP7567^S~7y*`ZbjTj$x+nt!! z?pxe;pEWs_`y7_G7*3lM?MIsC#(a1(z23x9r+!gcP+;yIsRXVt5gd$UV1?*Qg zU9YlQ$TN3e7t*)8Bq-Z)7cUZPmgH+N+^;e6U);!Tx}ukeu|?DxjOS!}L+-)f2ofr{ z`xc}qIE|>2w~itn$R?l1sTM|RNGnk-C?potEl@{E3<|9xi_*qVGV-e+`+&|ueB21;#FsMbS``(@ z;}%o zCt$Cp1%~+(BE#D?lo97bT#LZ%n>&mI*I>6`n_Cd>p3lQY+#^YYjiNIP#28r! z#*x}KfW$hX74hx=$lICNTS&SOt^X7mQu*{9$*UkNIa`s3C?xIGMHLJel_$8S)s-(w zl+hO@bp=jjY$uh@Q+xx{`o zCRh6!riBb`w95$~TJ`U9}q5TUm{}X2#Vxv2uCfoHraGC(7eono!)mx2xRttp>5S?Trz? zHxjiu+7Ifq><8M9OtMH1LXD)hH7*UPSX+dT;*+YXKc%YjjUcPPQPr-0AN-MQ$l%)Y z#R!vamHZ`ud0uO@_DTK(B5tbZTHNQkhFqiPA1ECK5R=!*y(q1G0C3D-;@${qy@I2! zlD{MaK`+Cej0j6`tb~qxIL^<90l3{Hj6B>N?Tj4ELm>!7;;3_X%wGX}Swz_-F=cqS z&_ROW>=rtR1SCV<8X3?1P`+DnuEm+9C0TLzYp_d}n5pWcEW`5px3_D*quGIT?Hd}+ z!XPY$DQL)VDAQactgFTQaensCPkrPjJ4A659=`4gE}z{4RKxH!ufgyYe?ht5 z?%fr_UR_h})it75A=n#Y|DZlP%~;~k9)Uf_k}N;5@ubv6%@kj3Mw#-f!}wqHy!i7+ zp!fi`{-+Pao>RxV9+87fhJKE`J*0#4^M^pck+|EY2Y(4gsvT4Bv4*KFKY18Ne(?|p zn9xefnDG;OL;f_D{!h8ny)$)YdQsx^LIbHRarS}de?wHZ-=ngu03Bs2OE>-H^R$Pn z0eRVwgsqfNcI+YR+8^a2&XR&eI2eh z*~v*Bk$skDaVEy~C_&H+*7?aIWDzj9$A75nyl z7dI-@n|jDlPiu1Ds&0Fg`5x)?DCD@mtJnkMAU!yU{9Q@YVXq=3I0ehxd4$F&Ud5Xr0+S_oMrf7S0?aj*q zntXfPuAmZV{~~Ifb8X2Cb_Q!;FoaYhBB;a~B^-I+=NlQmuYVQ)m4 zq*{Ifk#Iv8Yx({waQi)LLkQ<1Y>EA%@xC=$;}6zo#RjZB_6nG0d(UFTaM8AfT&syQ z$xxu^ybQM|q*xf7uvq(=a863i`}^LoGExV*xhtu~rbl6A+v}5i!?8(I?YJ`myEHXy z*4?vxU7$v5-=M-?6-VsNmGl)JSg3Z&p9N*F)p{CY|)J<*%CoZVl7R2Fn8_GH;E9yC-6!roq{yNv)GBQ!V z8pt&AedPhi5Y%my_8vrt>TM=#$fAe1jEXue)1{bHgU@D-cbW(mkhPF53#rwfR1eg-WR?* ztsr%?M0gTq26NMDwgifoA(zVxcz&gfM8#(wWFYV6Ti@Py}IlP646gal3d5)1jsxg*Zz?>pXt?0H74lmLy1uH=r5J&H3apU{2(d zHsW21+aT{I8{~OdYt&?W94UK-C=i*mJtJUHd-9?yaqr z_WWQN;lCJOeYb!(;FiVoq@8NKy`a%fzT)L5>x`U~%J1akdk2kg0rpQ4Hze89eo53E z<~3L9Jql~Etpc4<>XvG&e9XgCzQ~iDlIM4{CW!EPBDxrEepmE-e%$LhSvox{XFd`3 zg^Bah9O#S%L98IFkiT9=Ep^jbDvQcBFu#@I_t&d<&B4PfG;*X;EU^ZfwW4=hf(BBj` z;rk*a9frW(JhbnZ&>4+Fao@v``LEWaLr{Df>2B^<@;x;puRH{HKheNi2u0o2N7qIV zg`sDW1}Z3rJ}dM-ThiOybZYT=lv`gwx%H1Iw_ZeY>&ETQ&DdKNA!!t^M_KjhM__p0 zqp;~IEQLH!D?Psrd;ao6F#HV4um}NLqc&t7AAb2^5G^KI7Bw10$g+onw?^#u7vz@j z^tp8?0U@1@N|m$AG}m8H_@N3)`T&&IiCwFwI04ODXG6^!<)2@wzr`Vc9K|qNr5aD4 zMRLWcuv`j#>NkG93aS1Do?eCAL|868ixgQdC6~*XipS%Ys;6K}>=C_*Tk-l3HY(y_ zNyy9VrHEv!4U);6EOLt``%un{nrIyUGD)@y;x~&FO!az$lytwm?0)$-@#VP&q=AD? zzkrGK-AM-`irv(J^lh+dFUCAAV&*j<4J&3JL^D{v_KKKb1Jb3T z>~Aq-r%FK9WB3#>kHA|Tqm&D(9ncZHQIG$~Lu}oveGUc*fM=QAt zWG5%e>?-?5^i(_`O8E?y+1UVyPYm&itpKM*NIl(1iPPqJYC+O~cD&WgsJpcYT$5RZ z&ufxQgpGmAKJ8+b_W`Eml9JH-x+ttVil8L;u28rJ|2Ok1$jHV+>ru3SZmm0q`@lPg z?@v0e}Wbq&vjk0D>^Vu zjLTC(2mvVRw8u zW*IK@ckY4Ul6fz<=&TbVJ{w#_Pjs&*66%5%ry&95!c_ZSB_~&RlpP*mS=aY(fZ|miGah zI)qIaVWWKfz3uEFMlyHV&c1k%?S&R@XK(hws}A9Xdab1F6c`zXskU}o9zOk>Y?*RTEiGdfXc z(c=xW=yM}#!6o=Lw)&T-GxPl!TxOHGOegkd_~pDhQ3lx*SuN`Lbh>q#_=AzV9Tlk4*f_`Xix&LHI-cW00T!qzBzJA?S@sl>!No3+!1RTY7-5!$&td4I6oo>}I~z^>5zldQs4W|x;cK)FP=|P)Mu{Pe z?fL^hoq^_nu)^Ut_7du@pXTd6o$T33UpgS~Oq^}MnYtgS)*Y*`yPJ93c(H0vkmnCi zD-$z~ahUsk9%zg!c-qY6BdS40NxUBW7WPR>)HmA4_i5hOe19$fp2dDSd7@9x$lVKx zK6SBrl+uJWBkIcVx|*umHy6a7r5E`gXi<-lU9cXck5mt749Nen)iKH6c5xzg%DtRO z{CW3^5Y9yr=OS!Gu4N-i4XZ7$E8mK=o#b$5Jj$Gj2y;%YWzK0eOq}sZC*214$pK4& zR?vN?4rl@kx8d7W?j^h4C1r`aAy>3VOz7Vgy^LTsb zD3Wjee^e`7kvD%R(bjKMag6ZlKv&thIV9uAW3U>cOdNyiyk*d5FvEY&8K7-zLG z)qmSD>Uher^lyV{uDPLBZW5%Ul7CLnJRUM)OzbCnOJ=@xlsgcXHlH^M_K!(gm0FQP zDOjeqpj@0zx@|FiZAoH0hK+40p>wJ*(wIbzm&anN98|Y8$YJz4#}Miho$})C>-5@4 z=aziTuoOB+cqBKMjpXK_R8Biq=AtY;l1nm^ZEC?5!d< z{(a1NCPqeM$ zA-uX$ta>fYngIu#^jyY$8Pu_KGDW)ENTYz5%-`p*Y97MZDl}Bnk@QNH{(4SV@8PA=fU_V2;&YO|2J;2u-LV-C4EGu6HlC6W&W>4 zZb)MwRmMOPxM@jZ)e&WiJf(j&$Y*nKYHAv-G>c5R114LBk&nk1X+}M$Xa2YaRiOr& z|Hgbq`|TU2;Q8G0_&QjUpctY&2TKuQ2TSn2P&qMH;aQI&Oy=@2I9;ynsYo-=AI95T zajiUcM@98`)XvzqEHk^Nw>jc#bJo}947SXhi~qeyoVo3!Gwv+R`etDUXJOWzg)zy? z^91Hu@LqYUxLt;GyR6IYVpGlqk8oVi2s)@!TPwZyaOxSXa}I~!M=S7a$q0*+?zCjf zkhG)=q{=Mz(+z>^bg|}GT2>73(}h2l>B6Z#xlqmb`xNlE2-=KYcEP9-!kDkaAJcdQZbEv6fp+0yE}VQo5n8D>r8`lsa` zsLnfMn$7PcO=k8q0WVFg)$ne)n6ZrR_v(j$<9avzDvr%2349vL$*_!B?8~MlU1VDF zy-`cKHfE`xOj_E;grzs7tUw@P1%DQ|LfcYS_?nm%aS~R|=aN=!OTvnt8?}r}Oe^*o z(=tCDv*I@-ti*QHN}g$2sk2P0?rhVVbB<}vJ=e6Xt5epz^ApzmCll6!M-8j~dr_<5 zTGL7|jar$}n3erd%xc^nvzm^NSqsg$wdgj(YJSYH?3WB{@mCCM$q(Yz(t}ghvX`RP zawlc27)V(M^`xxa5r)-rxMAflOj)hPl-1Uovf3X^Ssgp0*2?FjR^j`G)u|?|RliJF ztNT*cn(a|*?Y_8ma3N(K@{hRH6*jDHjPLomVf7v#wbuPLZuLDBU)Z-*Bk9dzXC^G^ zU!#`%shFjFCS|GbnwEBD)Y5k&Y;KEMK_z8{8e>+tF=a)5Vpui3hE;n;(u$rFw~Qa9 ztk_b+GS#RRFQu$RDrzO)j$5gZCat=UB&|6gPFiyzYFTRBn)g7|n*T=1TJU<@s#lU$ z!=jXxUYW8oH%6_j9Jd;q5H{hIwJ?UTxio1t_opoT+i`30&!X0nT?uRHWeIE9_v6;` zYYc0}$K%#P*CnjnpAuF}Fk$7#qE_o|39BuLu-SpIX-`=z2MnulFTw`Dt@?7*TK%=C zwMI)=YcbuynC=iv*L5Yr=7y-%b6V2sU68WY^(Pjt<8WaovlTd-5jSMS4F%z&B5r8d z4;}jvz?Ww^rs>M2^Sf_z?#;{Hk>x^Ta39K`Tb*6Tt7ACi95-e-qX=F^JU>fz(WYYka<4_%oS)BEONoQflS{I_=wjwFE0zhEeLeDXBLVo7tvfJDVZbOC>mn=Q0!R@dVv6DVMZm%-s#6 zHeeYO#$$#Go18r3IbJEjQn#K1rpNkt`ahLm$@@v~w3O2?e_!cy<@Ad&eY=_9H+z&+ zk-D9))rizGY-(#2cYgh;*0*XQ)^}WffzmWW$!O@?(bNrs7rx*1#HBCtHL3Z;jGO@{{o^ zOySnTQyJXmfvJ#lWtkYy4C2HlvzgfqV@9VUy!+>J8>NZwopKzdjJN1^J6Ug`8mQ%V zutv(tXR70A6*ZM+x~YY=gE$w6vH#|NZhrnpzI#Img-*Wbcaf_T2_3@YGhTY)4OFA# zwl#*ivrN>*_>EhxJre8Dr_`hJdYYMc_sDda+vYO2Uk^K+c(c*!koR^d7KSr9%Z@&d-7|JxWJ%)H| zFTdr>Z;Q%rE#8^835I$MD5a#-b!hP)>}j9+YZ%;-@R zZrxv}G`V*?RL&hE+pRN-rIbWYo%}vyrlOyAy0)Ck(W83EZI9V3cv*3mfLoBms+Gfy z-c7TUEdn#s81K{;$vKYcJe6Xq{9L%CskA5JaF`}5&KI%HtHh{ZgtfGuh@+jf6@D81 zs|7Ux#mjKSGsF1b{<(7*rrzy`E!}BIuw4!xsz9OYw% zPy1D;(Zw1pm#l^{S(`FuWbLC{M58EQs1l7}n}?gpsLG{^*DL%UU>?F~u{+jzKGqAs zz0+2nK36)hzCA6}mRiWln^g;5j*!Qkj9glTUn+;IZSHei=!z4|O&|W7DWc&M#zjeQ z7mEKLa4)~OV+!-MAUyb;5S6?%Z^cbl;*Zu@&HY3xOvQZ5e4EY@r@F)ZPCgvhL&uCG zc_<#*1o<15K|It9t+xgt{~tPZ$}0SxMl~D{Wid8@u^Q0X$iGJku2X5o6bqpcz;ZIJ z{}H6qK3J=ogyNkzLb2B07!)&UN8+IY%#FR7V{7qHAHK_A2G;62kTtn@$127at%V7um(j0+tsJXGr5|y|$sGXp;E1}jaqei3P zcNH}|4K*NrUeXGn#u!A+F?33DVMu7GC&R%^v=cR98S^TbSH-*<=G8H80P_YhZwT{- zF>mCQq*a5Ob1n8GidwXRT2l-)YV*R>LenerC@d4TDhXjAqqe4?)~uqouc4-=qvjSs z%`J!;eCXb&6-JFOf?87zwxJfa=_qP?2DT-J+MbE+iK7OdKP`Z{di9Mlfy zqLyW$);|xm|M{PeSqo76uSYGi;o6v$Mr|*H+Flm5y++jbno!$Yh}zzwi%hHeGp1!< zVp@w)yIg`WU5eWAGSobmqc*l;J!-z#_Z(`aEf2-5JdRr{YX5DhskXNytd7BiwbDsg zg^dZT6UTEEj@xR4&l=P~*P=FfFlvQ|p!V4Hxun&N8eb1;k-exbufuWgLzt~cm>r7R z;|7G=VFYb3f~wLxBkocwb^nU}Ca@$Of3(tTpRF1$(^4>l;xin|WvNdF5?| zl~~?h8Lk!O+2Cx&R9L3smP!4kck1iu$nnTaHp+YcNiQT7fSBT zKTACr@2GCWDmpFd1Tpk`|lfyi_$^eRR6KyDH&?Z=RA6Hj|Dg%8O}oq=b+rjtvE(r^i6TsnXB=3>TEgKH(R1Wa_U&R zsOG(!LQwV^MJUmDRyqLcB8hc*R65V zi}{H@e=^^Q%GGzHH*lUm6<3qsr(CPg9w`_{YJ*7TrB% z9BRO6yqlLp@#2J@HBwCGCBI;z+~tP@$tGDi66Z`p;XC@$nNXU}NLJXi``#DwK261i zdEm5E;{w?N>?n;K<11TpQa$c$ii!R`Z}Pk9rt1}z{!za~ADa1j91VbdfXe-Lt8otS zGd*{7Rl#_#1aF%1YOD)oD5WjE2Aofc)~Vd8g{`Ag1aj26Al)mCPnF-AJ14cB-!Mrl z7US->ar&l?r5_C*!)X<#8j{K1NP0HgTOAy~iv`{X0VxXg@84_rnb6eEK5XX?=**E_ z)wnQ~5<6EM#+)lf8kL_GszFJ8iH%%&7&FzjT!A@X5F@SeyDxF1bJ)iu-#3DNpjec? zG;u3CovoBk(M_1ez$K_4W!&Kf_Q1%W_Ek0n#1s$%+8hI@629af)|;+ z#M!mJj7@84e@P`Q@A(8_NsiB%i!JhbZeciJZZV{&Wax8q10PRHK`_`9KV1w8f3 z9Neb2z{9I|X{o1nY0uoTTXRmoTzmfNed+ID|8K<~-TQqx{yu|0I?Ml5{GEtDISW|tN=xIeNh54iNY2810)_x%)??tA>2`}3IhFvmEI z^K8`b-TRuS`YaqaZLN~;^~HQ6#^J6ltdc9td6tkNN+?GXuabOx#XIGIY-T0YK}|{;^7JQUjSFX#HKzK7WkH-~M62!_xJ|wq zUYpn<%)2ww`$A{$I$cwFU>2O78Ra$3DT-XRUiO!GfzfrP+gRS2CCaxm3=o%SpE8#JhOvMz<{2Ka@Qa3W9gm2Ea+!w=NeS>2wmOTi~O@ z@o|mh^dLSC3Vh5Xza8&7Cdl%Hc?lRAvRFZF#Jo9z1=1Od&iCQ(ByT%?_cGIL%px4* zF=Gjb&ru-B7Ti=bmixM*N(gJCh5Tz~u!Hxq%G!wdlRVg3l8GxZ(q2j8@>klGU2I7=3P7hCZX_$6 z&@GO0c8eTDDfY_Jo2IfFai31`xV^|0wRR|=Uv4LGtz4OX$1ynRWZ{L(z;U+BY9c?B_EV>Fb?(3CxZNDHXOw>cG4&gg0oW4jt}A+ zVb8L<6V=v54^39EMO;_l;0F*D^>I{qB$SSeLyv&65G#+iktZVaAr!Iq#k_h#$TWRJWXY}}Zn(?i*zjPB&?Wt*f!nCF}4#~&(vDh*sRg$5D~2#4B`dOgax?1%4jW}}HR z^?A^xi7}xSzep!x`u%%Ce2$;182kj!%Bi7K@6ay6k;L=JF3#~^cjx)Ji02o8@LLmi zgR~*tBLB1h4vO(y#>374VomyYL4%KJ7EFWAhBc9<&0$C3By|P^t>b=ONCU;03AAG$ z>E7V?n5FDch>qnIqGK5t8bunx&)JwzwxRs$^b2eo1*iXBR$^yh=o;)5g`9yynefp? zJ&&YaIP3sfMU_(X^U%Rfw9)1a>_gsi` zbg}A!eTksd^<947NDsxZ4XUkL7y5^;>?Zkq6YbyST$cNL%b3eorynC%Ohn3@w_3pD0HVHRA&d%p+chx?N z{=45JAY{D?zHn^mCv2JO_wM7-E*GD^27zsklAPz!MADa?48qd*YEbx666fR6eEKk- zUFmY{^L(EFh6J`)kt#hA@Z+oa24A(&-JXvrbjQQLa9Pmbj=3Cn{Mtv%AExylPU8(% z|A>J(qwgS>SKKnh8g=C^*%R<*j??|ci#V>H3REaLGBKMU>~X>lgMh0onsNj*Ln;V+H94E`R(%5(S}#c!SXEaH>y#ycOM zpU3Aefj&6s`_h6nNaCCqaHKF?y{?wuBYbj~cT zA(MZ~88}YIk#}x-6YW~a9D`wpd*&jCKt0XDF&Rl8D|~g`&?tuLks}4kb3gqd3<>^3 zp%Qa2W+c4@W9KvB@i~&-ilGJ!)$q_Z45cw-@X%&v?jKGMGos{cw2|}(Gt=U2BO7Tv zo{cmOv08o?n@2l1KkFZ26&bgYhq-K9Jf2nda#_k*s(ZH+{@>#5$i2~IgUBpC&s%MYNXL&CUMEMTdQek?%XBlYNj+3%)$U zwzxhk)q2S`x<8Ry6Q_UMT=mVr=EA=jF-5$I9a}=Ss`wSqn#555F^o=GbNY`%83AFH z>r?xg{g%^T#uP@YsRfqwM$n5_$RjzYIQ?6h@QWTPIykCMzazZ62Shv*@odxJG0f@T zjLS4}}v;d0i&Gtru$fzF|-Q{0P}T$EnuuszOsDDIvxR0oql4A?<_@i0|Lw-&+Ip z)j8{URzj*jmj0R=;HRmI*byeuUZILoE$LE(&}}NoOO~`%HshvJfGfc{8^6H@)a<{n zB3B4f+Cq>lrFU{KBw8)_hU(i{g}PG|8aI?QD|l*RJa@J7#Q?Qo%(xQk$C@YT{ThTD zf5RFxoLh#Wv8ALP1x&G|B+u83^{5a>8QGTOLGm4$NdG3e3nD?fH-XxMQr2Jdb91zV z2nCcjY*hj#e-E%SxQN~+4SYkY&=7|m_;oJwiGD_RTeZ)P^V;Z)k|4@FM@dv`$`G~g z4F-3t3qtUSU_i0sjk$8V;88(PtY95a_eDqqY3CNDin(yVmczk0<9HU=RwFcjsBS}e zOc*~Q*V5?u1-8Yxg%|yGAMjEx8b_byP zeo$xBPrEZbEbK@Ku|`3=Y3@jT%s%h4AqmUTV^b_gepxQXY1betaGw@x>pOCV=gmzS zQ+!(dvMuT8PR`%9S{~+Y%OB5ptxkoH_-W>fGR>qtGVhmGe(0Z~m43UA3FGNGs67lD zCrq>H(s&jzeyTqx$?ju@NtPKXW=>%3M)m$c|K8D$84Yz)_l|zGS?sIv_9&l>d~zil zVJ9JkY?QygL41XsShYv*o0x~r`OU&2Owo^U&9V(B`F$kW0$F)68&B`S{*C3%Rt(vZ z@5O#!&-dw!rMD;~pU{q{VhkyHsWtP)q$7V1Q+$ceq>@MQeFSri$amxKPUgtpXO(rp zyRcp%lb?)b9i>+6V^ev~Nz?Y_i9JjwVol#vgg!9yK1$h57jygTKkMIuC*(M5=N80+ zRXHR0d_`uav%yJPCLW@4-?svzdpE9C+Q8}C#x@n_3YWlWHQ5|!j3F&yhr6^y zcoC95eI1ryuZ^>VIi>Tw3%%S|;eUID1^*Qx&Y`+rsg9BUdR9`u!R)97i)!4jYJn_n z<*%o5dxZlwe*c=UZ6);+jLLRsCdlH<(2A}y6Fi`X_Hp~+q59^YSVQ<4V$?_3L|2d6 zYt+tA#tJNB{gyPV&H8fRo=*1I(Pz#JG=P`kN~G zav%jpPH!)yF+e#$5tbT^nLn1k0dcaVT+3|Dd;cWweXk3bMm`D(Bow}f7}NB+a3LI7 z&QH0W2`0;GNC!MHOwL4@T!1h+WEPm5tHfE`tT6dd8PD!gJt=3*_#W@E)4Gj0t!XAS z8jAlmrBMn>CqIKQpEw8ztMZ8^4|a(<)FpzDSF%8N+~<{ge&T*!vG7@gPn5*nQth;W zq|>&IY>eFkpJk5E$Zr!RWx|7St$?AI(}Uu%yj9h33-CU_8!@{pJ@((Tq4ECy8^Wtg z&9j-{6+w7)&kC=)GQ0#VME?Wj{?iUce?O+SPt=jeaW$*zP<;BPXyZ;ck?U6TFjE`X zVgALl(vGFRHqv~KOW4Lt9V8^)#te<**XaalK4VMj9&ZjCg1*>6r*8|5$$*7r+~T7# zGxbHrwuGkj#cK=g>x;udobm`AkoJ!Mt0F;3zMRjIJlO4H#trUQx`Xsa^2z`@Wn|3w zq9XjluBPvDr<~%qbbSePMPx4}Sw&^!s#|z#spMOj9kAq&$TVm37~ai$I5RANhjh4O zR#V(#JLtWChAgY<&F)Cf)X#%(oEFTA*9G3s3s_~2FBJ4K zF-OqHM6Dmk=U1p8op?+1tU~|j{d3;jb?Kj<@_933dK=GE=zNda#-e-5SQOOdE}R?7 z@HNWt)xlYZ^kUrtW;ebMs3uD4E^i*xy6N2f3Du)F&MfriM8#y4R!@a%h372Bb}m8= z)8O))Ic1(hXJCHI&u1276*@ac<1M_2Vvr)PZ39x0%V6flnzP(})vM+zt-1 zN!iIM%f~#b9TQ&6x7xNr#@FvK7;U*+P#?xDr_Q^FDd7jv1xjn_o3Xha9W$au_pgE;vhdzm5RlY zttCr(3(f1l%G{EkBbn{*bUI^s%DoKCz{&OYE1Y>k{r<#Iad6D;+&}Ixj&w z+AR1;eu3a4`DmGbYT#17w4i)KCYi!Tk|piq)9Br1HWSyF-riM6JLb-cOTyRg2AAL0 z^D+7ojXWO-E(c)E@5%K1d}hZGzvspoJ_;;WUO&d{$5xZeA}E2lTSZ#n&2 zGs@`=2b9xAyTjP-C9}4h&XRJvkOFc_c^~1TM?ck4vPH4&4WV-{=lDqLB#4xkUe(XjX9eSNh_g1s-(w%QN?J zInteZ?_sOD0O$Fc2e4IjDkQ1QHa;F7^k}Vs0rCk6Y3)Lka>&lHFy`4g76$le620tq z>1_qK#HhJAl`N^-y&gwB-1F00L75XX_PZV1oST(Dd|*0%KwaZJ)HU+R8#1U_*#C^q zv2X^Rquv=3y=(`2PD%UMe@g3^VGM8_t@n`O&OCq&cOk;#kbjakH2;5qHnd^Cz?zs+HuO2bAmgMTn-)R!1DfS%t(`C2-QC#1XmY($`hF%8FGj zYmI=Pr^hPxTjJ^Ix8*LBbVjFIafLK&MURj3&Wt43~!*abf8t-;L~; zajPPi_nzP4%E5?l<@gxJTuM4mIVONHdp!9|8P6$dUYQw2?KlpJ|Is*n;eC(8ejJDJ z|05aclo@5D-3OGBTCmRzv-Vls@$R>c)Vh84^vkP#J-^@pc9ENFXw+w$o1^8qc?ai2 zg8RH(k;71{IF#Svp3k5RCLvyAI`D})Wo9A7Rm6{hW=N=f?hees7{ssv#3&UpYydGz zMGPB2j8YN92Ijl6)w^=SwWZ+f4*4z9e%rGh=Te#MvsQ;F{{-~XTE0r{oS84ZCKG*` zjrV>QJopqR z#w|qWzK?ay>1|x1(5XDL+cD2LfE{zCLL6weaa+yDZQM6*%b|cJajnml15u9Z5fYNg zaiz#@jMtW>K$3R}&Se?UtjK_rKIxtP%-;{R7G`5xduE*@V*mOcRqS&U9GPz2e1+Q# z748Q@HpB0_mXIW5l?)R+M)+Zlr&HxI@!R@lYD*4jef@jbl>F;G?wn05bghJQ+_l}R zb)WQ1>pnYu>ps{16BfkjZ9WI#m!GxGJ-p2Td_aT0H~Q9I$)4BY+Vk?RJ#U3;&s*YJ z02fW`hX$feViq>SRLk8g7CvS6cAt-J>HJ@odH>(8TZwl626*V4ZlpC}RJTgtYsh3;Cx;qF?&dUvg$$6YHp7?w)3|JCUyx#}%$1?0A| z6=FTW)=S!j3}phL^9XIHv7}wFWglm|>lOd{M~9H!>r9 zo|0)U%r>qgGxCh1T%K{5%QO01p3&{{jI}P$XmxR5aTy0vK0DP+BVLx0-q-5zIlk55 zuX6f!-2rVntw=9o@1ei{3*y4g8U1hE^{N_k;6Q#C7ahRwVl~!3XV$sD7W^{#0xtQ= ze)*e;eJK`*Reu>Oa=D;PH!-``lcEL13%jM1ly8=0_PDYJyc`F%Yp%ie8nfa?D}X04 z;`kyzGP15Fqib?PYWQuT|I06250Qw;coxd zyZ!5N`**P0zg7R!{#gg;U)0w>t;~DuT<0JEET{Dk%7=AS$vbsAxq{KvZN=K>QRJ`akE~_h#NqQ_%1K z|NZm(y}Y^iox7cT?z!ijd+)h}E>B+T^5m5+PhN^VdFf<4xl6sh)e7d%`u~wL`*Ny4 zRMx>g-b_51&X3qIncVxCdVBnxV&(?99T?sAZN@yBs#rnH_($@$7ja@gB z(cF{BFER(Exs_#_n<&$qqM`*Z6?MB*G|#1?IW9eRxb)|(gV|*|41%8uh!41{Vg8)} zAs)b*`jX)Gzb! z9C^DvjFZ=OKGH1t7W_E`o4Xuw8mAlZ*@wAQsS83ZU2Y; zsYD0myPY&zFIj+E;$u3URy<3j#W04N3;`u^lSs?sFcdc=l;jN}tsRD;eTb8ic7aIi z^Dy*nrTC~wH?G5wVKhRi@na(0bOweFGn$~(bdE?TN*L-j5>QIq zCeqD^W9U~nvP;b$6zP^N80s`ypw#kik)E;wLoe!6pfu%+BJB)f=%2a+CFgRHo_Yj^ z{#Tz0rKz71>1l^x=pKCS343w7sGYC@#bD>3x4o`zC-r%1P*grStt2Bo%ZM7n(u zhMq*prPTf&k)F8>L%-8!LTTm|B0Xy@hThO;L21@?BHeK;hU$$DD0SQ-(wWmRw7|$f zDf4lW?#yB6dwM67I(Lio>@^sAU7ro5*%ylRoW&S=N}mIzIlDyqkmVS9K|cgahkQb$ z4?Pk?e?xt>bm*lbJ$D0!BF0=O%^efzdB9Es9deJ5fwHb?`v}n6XFJ6VAKkAF2wD`Y7`ta2ldR0Fh zN{4?|q?a6xp||uUP+D@nNDrKjp?+fkN(28b(o3@#x?f)krKOjN^s*5QO)-{1Y1s!v zV0i@Mk>${~f2A2;K|A3iE9~eX?bS&RO8lQ4)bRhnAX2_PG-%-eO@k)>9~-nVCC<2m zfe7#H9t=i!XZK);-gPio7h(Q67>)?ypM&-ImJKl25Rq}rd2l(sqc9kycMJw&^tNHp zrgt0$-3o)P^iINHlHMs8Owl_HgK2uV!C)J`+hMSs-ZNovCcS6D;4FG~z+eZx zGccH;cP9*X(t9=x&ZhSq7@R}zLtyX_dLIgdhthj449=zZJQ$ou?<@>v>D>i`UG&bu zV2TL1`ntA5*S=U?*SMbp!ZT3TuSd{Ft{utOOX!=HDB=ga`>odi&ChSLwC4( zGoA2M9%646YEGyFb(SLx^{79mp#!z5MW~^X1)ILtyR%&dViv+Eh)p~vR_?K6pEKEe zo1(J8y&JnC!_%1r@7yr0Y0){;Lc6k?k+qxlc4r1?R@chwSt)ltYr4ChHN{=eYI4`J zVy+}u@2+PB-PJXkUGq3g7TT1xjmmO_^2ZYAH5VnJE^{T3yt@LU=I=_qyIk2*d4Na) z?O4raTRgcZOSaaJ8Orn19eN5fPFgBkt7N-giY;e1<0w`$a~IFd5*np9GpC?d-zmAc zI$-^;SFPWy^sWD83bc~Jt8#p%=x|Tk5dESLswJe^u7otpm5|b|gfzpIkQ{}}Mt5zn zF{t!$UI(+Iu*`>7gitgq=b4Rk>G}_yk{AN>>eRiDb-k(;fhq?>lLr7n@x2U^RSDMPN zNacP3I+Lf)&(ZmB+Us$<-&*BV7 z=eF-b$+ANf80xFKy1DcNx^9g0d;`DSXT*&ppNcHNNYB?XM%^%_W9X}5r0Z@`yVpV8 zclcG|-l$T(D`h-6i_V`wA^ugq?WPT?&&Lz37Ls2UvcIrjOfkY9X9%i-Xf?z$Yu11+hz|Y z^Tz|v<5udY{AN{rxt9HAY2;ZtHi;czgQ3ngT+7Mn05V1!<2ud6Lq`;RagO)~QF9b8Rgk|1=WF z$JI`;o%85JnQc6J9q~lI!(yj68{<8Q}!^1Aw2j=#Gc|51!5kE^$G{9nuQdoZ57t-c?s%e@@q$i$K#`nZqgOKSCpf*+&pNY2yAkz^*4X!GFTD;YQ%+!EBr8+(uZ#5wk z3Gj^Oi`V0=2KiZN-M@cM>rYV>E9#H4&&btmBRX6bx?4n{{p-Ru;uiUj{WI*;HX5_> zYbRWUQpY;ub)G}dL233;Am2)t^6Wng>E{}xm@v}UdVKeZTj;D^cDKG=qmy^4SLpQJ zmB{_b5A}9Fk!QG+Ihs5Hsj3r>l;u>IE2TP{>F-KjedSabAHdQz7xHz^AKSKB)wC%7 zitt-Gw{}?+$FK*t?LytSlsTIGIc@jl^_=L0r$tdbhN(``)jd_@`L+tqS5xv8P5g%V zfc?hA@`c)Kj4|RjJ+24$!c66Fs~7yf+#4Ck)TVuOKiK}vZ){)POgDeBW>wd457zKn z;o)h>cn;^QPPiLmF4Yx81600J$}M!e2g1;azUsVA$GlD!MeWZn@92aZMDJO&26z(9 zN@l+q@bx(D*gjq_0^QqPu3y3Ro*b})RQpSVRbRinQxpuOgFx=oa^E7hP%cDx`|oz0 zJ+1fJPKehJK<`sCfw1-fgzH=D7s>83W3Vq6X3l*RgoCZYMM!ZY`i~(LvTn7fWJ2Wi zel&S9#WeIakPq{H;jqZ;v+Mio8$7Shg1m4MwQRtecS2fNzpy@H2kgUpU!d`NynX|O zB7G66@w@PMI5?Wz$#MOW0Mp?O5TKoE%ezbD7dagvKY3@8e`~AQFrWS8ZEpx$g}HYN zg0nU9A@`ocN3&P!H$<2^k~5ocBu~WgS8nt#9+l-Qn``$#OYU zzn?ULN%Mag((VljCi%C_+%4=NwPeT5!+6c{KU!;FXwid8nTKewTtfIETe9 zjz_a&dM-qmD?(wGYX8q5WZHktosI2p#`as(ehUg6Ust|1vrh9V+CIbJw&5J{ucG!G zw`KviW*XFTfgNuh$OS6A<65Ng%%Mf?yS_X={Vzvk8dW|v=YzbqD$lj=nCDJ$4)QX) zF`@?`3IS^x1hnZ$9RUag90+tyfxwg?1cIGl*{yO0%3NwL6cCsuc|N3_V1el*X{?F| zk~HJ@B?2j$@r`&OZGmGAH3r%=a5N;*c9g8mJ&l2x^nNfBm_=`h1W+1@o0}n!X@Gb` z3*?G_(c)$i-%o3Y$Yzwj0>(@Tpzb|KJ`|)m_i4?M>l=ylr(9pa$SYHF-T<1J_O7(h=^Fcs1M)YT$Ah_c?@9Ud}6UU#)@b!nm6d zPOpKxtp+ZOaTjYOQC7oUR|7YXyrolqHE`$Ez|F%p8nMVtN0nsn?-3aI-N^c{W{FhM8Ie(}{6^XTOen%P_$jm<-0f zART#mP5b^Ls^K~??xzU1JX#I+Yz^EjjQcj1`C1v~vKp9~828_p*Jz|VuX}6Y+A;1H zgsX3^hWl&{TpPw+fpCAWp^Y1B;L;eko$I!z40A~hObX*RNxCbwIYBZ)c^NT4L2RgM}s3zZ>olCt;ug1#=V7F)oC?w zbv1BPG44e{FiXoYZ`PFQux#SqPyeH1v}iIFi5a3G1X9{HC%wTx}gTESJmW3TEr;`x1$DIJ8R%bt5}b4 zZ`svwn`+=l%UFVN*Ed$x?x<=gx~1U|!dapUs=peFbdL+A`JhZLi*CNC zz)HR?!>b3uZZ2c^JuZyE-#3(D9QlzNdOO{PqxtS4{M`=K-$&fFSR^Q^j9(CjgB31o^ z5FT6|{qpsc3m57S8TfVoe$?V-gdh-_4T10>FlWZo2H7i6BB`H-di_lDC5>9k3Y6k+ z(kZSJzN^ujFm=%oAX(O`FuG}zoy}@KQ_84d51#b@n)o5iu+A4h2>{7M@-bGrSiT? za+k*P*cL1|Emq30=nsN|{cP8Bo!X)BWAd~8b1rjx^ak=bhIMLz?a>>_7dYx)Lnzf2 zL#TBbMe}DY5pH9Dg)gFJ@sr?E$o$rknMSHF_3SRxwH=`Pt~0`*>QBGFLG!idVU%>O zFt@<~5ArhoDJXoK{BGYalqb_p)UCY~h5N|Q@aKbMbGFmDRNX=Ip!S}HU+9h#ns+I+ zXMY*T?{rK1`*0l33q|?&Zrk%U*AK6vCj3{aYIuSE5g;3M9ozJ-V=O+!dfd&Z=k3ud z`PwWA?^2$uq@oC_(JpMkY+0d_0DBF)1Tm!i+I6CwTKKl#-ZmjAY_s+ob**h~Z(%!c zlhohTTVz$H-claUKOm{M1bc2*y`?<2uLxzCYG2;(`q)$i*$P$Gd$nUf z%&N|v@St=t&At_Oiapfg=;*+yh>cFzC^;|8hfYmWio*S>MPwDtX}3%7x81&Axeb%} znCG$hD(8QLtj5nZ((6qZ3v>oZQs4ZO?WHXT!AST&$H+k`Q}r=Q-$IT1J@TEY_-n!u zgv~n)qT(NNN(attQWlD^pfvXgr7ulmeJRXXf8s3{hxaKQGPS=xky0$QO2{Wy%2(r4JS~ZpyhGaL)*S_z zX0jG6;U-4mH7D%d>xk9^9EdeXD6DltlXyG)vjqeyH?ckD zyNPYlTOJ4A#J$w>);qPg=Q#uR>GFjP-OsfwH)-38=C8_}uFnX0ZRPq-`_J(3qe_c@ z_b;!#&;Cob^&}d3*otPTaE(Kl_o(RgUi=c24xX9G{p+S5 zPwp`urP~kz}gLaFqFTg-iQ5vas!3Y7LY_Z40{M;NGgjHv#zl z*T3f8LZ6xEt_i46rW*de1YfotiE`cxXhw5??@cKW_LYi|rbwGD{jp5IsFu=w5 zT#wI%_3AFK2g2$uuOt523)4P*%Dc&TKAnF!4WAS7$%8uMMte)=g7OuRaMz$fnD7J4 z>wf%s7e1c{b??^=pzi$wUUdd|3!i6!T_7_oJy#y&*#XMmO&Zks&qntFIhXGx%XK{W z#ZO(j|7&|To%oHju6pP@3-9iJfbJ=~^Q0#p`q0@=JoJV4%=<^l&F8F|Hh&JEP`zsV z;SB)G@VS^4KQ9#Uoev54`ce>Wc5_z%PSz?CN5iT2)m_J#i1`O&jp`0i(ReQocQi^ep>B|dBL>BXlV zA6onTrv&%|K0m|fJNSGFpIh;{5}%!t&WBm-5qz%0=R#U67W27(-^AZf;`10j-^b@3d_IoP@%S9&J`~sG3wsa2|4OQd z!e5t@KcC0vWPCF2<4;fiYwM)?{iaaw4~h!R82+9m6pSq@u;k|Xcc5Ut3o4&4xO)p| z>;&DtCR;Nmkat416RWI-;m2Q z{#iV$5nntGb0L0wE=$ISn-f`b&*jriC+lliSE!W1^2U#8&AWD=?Iy$XsdTNo&o=C? z4WEha*dc)V(`a-Mc2OSjn3jop3XDX?y96*EL3(IR|zR$6@)t%?-5 z+#U2EdE8VehTasJF5mr)fxbYU2j@ckLu8Up;0T7ef+2!sh#}(w)M1O(1Kd7UPNXLN z%iO*@*aB0uzB36V-ET{I)$v?+2WqyF5S6Cx4V~e(b~JgpemeK3MlHv_JRQ>)={|Ri zGu`qKQ{_C0#y&1hz17{ zXbzc5XBe}`8@Ja*qysm^D!Da#^^IPGbqk}Gu5^Er&x5fN(p=u)~+kdy&e?X`IHZ5#sHRAE_Vi% z%QA-(qFY7t#vNQw!%JU=t=`i@GZ8_=S$8^}_Gghz5%Z^WfE3eqkbUc04DWoHH=crS zzVF5H^aoJmsVH6)`R!_-g=FcsPd*8`+%aIcJI2aHZdpIr*_?a~?17wo6zriK>ktn! zu8;H4i8u0(Lrk5c(+Q~?_`8MTs77#BhlBsr5!JrbpxX>E)_6_7 zAV$gVrAn|7#@fy+Kj{`x)bHcISjJpNQQo;&yIt6}XTAF^fqciS+K|3KntV6a2**mm zSFQtUhQ4o)(>bAQ+R&dSg@_zdFUSQ=kgb2|6uh}}(eR?!-21*|<_ zJ>(;za@SduakGl4Ji(N0a&3t3MGUHq!Eha%1GYp`OCBlT5ZWglHwVg_IE~_D^#{q3 zZWAS)iF#MXOg7H_8rgdOO?I4v}&p+dmz(6{jM=RF6Vto>i1&C zhvv4}%6hnPgzCw%K9?b`rg`@-#MLaRx%c<@(-j&k>4It&#}@Ud9dU?{cChi6$Jct? zJ#n?|{JG|x!>MiO_cH39?Sr)Q&`LXd|J}AFJ$$IV6qWa|uke~SbNxr7*Yg>|EpF}K zsV&DDp6`6GEg`opKgPD)&g1eW=FLP^$SI|x1C+{8!GOeA*qb3MQpUErrVV2g^ccc9MT1-JaJLtmNEs;PGp7!xi(}g8^{Gl&? zs#l&X87LTvTkB%dT29(#KjY?VEH@G$yj(5#7xqPf;pT#Mab?W?z&GYn;N{lOmW<2w z{{LfXlkvvqG~ji_cfwli*rgsWo9qR?|G8Cx+yj0$d%r@Sy_TQm%R|H ze8#dRSJOH$ET8)Q1E@1)z;N|vWPQ_17Od-?8f z!i%4`P@R>vK3okc2@>UgyIRgsbvxBiKJ8WAg0Aj7zteQ@MEIx2n^^1BTnW$eB)Kw2 z$}DpE5o<}UR;x&hBV^&SyF_7UlF!u%|d#_g5IlUZLIIER^^G^POx=>f4uww@1 z8V+?q;W9ckuq7CWW6zl;`Ya0ySJGLW+Spzsy&dF-(`3{>1%bGBRjo$^JT%7 zYnOXE+IteV-Y4gSHO7=iGMS;~%slf+I)78*axWtp+j_(0grvU*AhWFq&-iA%dZx9$ zGTm@pY0rF_3%eW-d+#LX+G?IAn$4B@^5w{LLsq{v*W;5qSry#7J8&CdmrH=|%C)t3ber19*3CGyo>yCrwYLtyvY zvvar2huoe+Nkb)#_g%TiRf~SeG?h1whERQf{p&!x+FR?@u6?@K$lbN?@PZSC3UOjrN?3?e0-i zF?IG-@}-y?8LhgO5A$La)kKatzb9Fd`Eyv^V=-ig8~yi!A>vL(^) zStN`yp31HFVrUTPynaEpezNnEeV@*0(i#Mvx2*Nqr+B!jE8lQxba?ahB{(+T=gKgK zH@_Hae!=;49r5u>yrNc&UrBu2aPPD9&DQ1FH{qLo`HpUEU9w7s*_Y{OWnQ**_1vdVbcuwSlDVS(ED2ercl`W->gUV5s|~ zs`23avjq7!D2fMtYnlh8@v3!-XYI8)8X0#FoSmbKMZ_({>>unzg60-k|7FS@$br z_4*Lis%Smrv;C8XKCU}hssp!1D%SI>u{S?&(b>$JX1;Yhj zIEq@TBi1EoS63s)R9h4_k_L|)Lig=oB3i80>peZ^O)PT{&tZQO`EegdL@sy)*loEk zZxw`Ocb~;Yd$_zG1oa^;!TLfA>kB^lA8S*sHDng}&yJ9VYAk!Hadv=mFUlYJ)>~_| zh;sSfI)GX)SiFxn6R0E~G7~bh9=tt=_Xf;hevQ@zKKh7R5IiD(>z! zsnn@b_GEqetmgSDzt-o6j__JH+vNQtG;VcImeSRzU5Q#CjoC`P8nYNbOe0pWlCgSS z8B1q*iAF2V(^K7?;|w>o297+j|DN%)lDsavIkWUOP?6r$Xs<|b z%ErFZJ5nma&i*m-xYz;f*wwp3$Rb640Z_6)LB zG`KiUA&$S}%3p-%aAlqkD@;F1^Zb1ks_qk?2a>*Qoz^1lS-DgJa+{Mp&nIXtlKcKj zYxP;(SLq$9JB}z@BNYIj0?H43bWeyEzSw`o)(B$gQ#Q7xAgw8tj`l=$^)w z!~#zb{F~jLi94EFnJmY?VmD@3)7j|7Jm053us_!xh1^zuojuO{D5w^U>(kjA3fCSx zbvji3-Y2PVZ;d$OV-ZJwF5+nGqK^JxyuGm1jONIj%tHeCTB9S{6YWWiV-GV=39^wp z^8N_*QhRo*nbg91Nq~s68>$ z+-jnHiZDM%7_5tla2CP^ur5J_MFcu^2pfKHlT+WGa2inli)>5GtnV)o%I&}|4o$zB(r~Zkk({N(UiJTO3qMKq)?24FUUu8S->ujgdXmpyo z8lA+2jZX6?8l9H+H91py6OQxY#LR?O#*eX#vu(#b$9Al9T|Wfp+fL{LyHfwha71D~ z3@p$5L?huMZ&Lh|82|C8W4st89OfDJR~UC9!oC^DJbkd=#rQiK9V3`<%!?D1`0rzU zGs0&Y9rKSq_@80DUc|N^5v6@5PT-c96TA}ZwJhP(El)V%bqS|Fk2otJ&feq0*-t0I z*@F=$gm|k%yoC{O_1KOE#9IXM7Dc?p5N|f(Esl6=M7%XU5_b}ayJo~)3*v6d(~XXU zxSNW&n})b+@ydD*%K|Lx16bA_Sk`jv*S44wx;*C8y=6P$p+={EN0ZZ_V;!d_oM>CZ ziCvX&>>Cm@8@xOo7c?U|2DZz@Hd)x7zjtb#1j~tHePW1X8|xHD90#|Wbv#affbcj@!kDHW(==e3$j59ais@pQ z&c<|cOxK9%npEGYbieSG`IAY?#B|XDj~fO5&4ZM)+^rYp9q?d(bkO{q7{XZ|+%s>R zX9ezCf_D4Rc_l|1O1R@6iG8N>XQyfLgl2xE@M2p zfb70TztQcj0HgF7B)b4gp9b%2|A}vBJ84g+qu!M^l$KBOwx-WyDRY>=t%b}(lYh;8 z^MH7q;ZaR&LW{F6urufovP?7Q-Hkq(`Yp)(BfUHPU+*Ij|3%h`A3KSVnG zUJPB#zAIlA>G}&XwA~=zl`n~O!#Nn*W{~g7H$*z}9t@prknhSrh;($PI9r^=zAOJ% zq+{DLG{U|s|0dG*c^Ep)Am5dL73uh87`ljkSN>6?8!yMuW$e51d68~98$(;zcjap$ zoj40ao7s2e??t-#A`I;`$am$xM4*K{47Nbq{#9mt3VRrw^8cZSL0}Jqe24sCJ-yk( zAig8y84%y>VG!T!VG!T!VG!T!VG#ebhe3R^he3R^he3R^he5>HZ^b#{@Wd1zvA<*g z>)twhWE!UY^W+nY*9wKwoIT6R{e3obG~F{=Dp0hogqX{AC+# zHAkZRg$*Oow}c%XjtZ2_Pidl+9`XnQFk(xoymXBxf8RuUR$IE?9I-=kEcz)NQ4K!t zW=b#4Cv}-m1!YfECqHr0=2e?&pH-vLj~hyA)>#`UVCm!0eNA-wXgs;OIY~PiUhS0u zti^ArHgcboZ$*&O1oKz=BmL{xXEfOlJ0SlImieqDd!y>)Y5rM5+OOMME@i>qsF*H< zc#Qh0@Vu0l7^B(KnhIu}MWMzZwQV$ca??#<>+vAywln{xCMf(t%EC(_nfk`wqecf# zZTk8Hp4Ydteh`l{B>BXDr0%r*X7nUp!+XE!IO?ye!6&&sqXHkY&9%ZbAmzN}I|Vog@>!5$$xkwb{aQEqMS()sTf+6ig;cr~ zIr@*9h^q5BAt&T8{#UuoXa>%YdPtp3nc5u19I-WBLB#n~%qb+-3ITB$g6>q5bI#|0 zdQD77uV*P;iq1!f%=6SfoyXoP9Baogy@z2zH~{I;E@NyUnz-fRSjdj{h7E9VxWt0A zUTtf=_lMz0O>4bguaj%_pgysj%Ew_`W?o=(Ve|Qk7Px)|E>2hy0jzrlTH4vl2NsGsY7UrhRuxTn21@EXrwYek95ljV0*SF z&u=1&Z~hW2?NaRP)M6-HihYeZx8u2F159+O_+U9cm&CIFvQG+>DK4PY`b7KQp8Vwq zwQd^BFJPa{>|Gh-y!#RVg)1?gWf|RPTR4W>jci<E8LJK{>osXPWh=T~|(>_S^gWjn=JbF5`Vy?%e19PB!Cw6fuW9a2Vg7zTiP5U7FT>G+oFd zK68qixrdT&4<$pYhmsce(EOzG>*$|r34eV!&rqHEu`X$OA4-BB7UU;W;@tk0pgD)` z>L%|7wxk$Ur|LWuPotVi*GgSThM4hj()%HufXd&I}maFH<< zU7tVZj`Qa{8!K8T8^((3sy!F*MhcC06A;*3w6)z4Lz zG*oldpxeI9Shodk`z-fA%^tKCksn9?z8$GEh4W5)0eKvY*`imFhGQpMaI6>3LL8ip zwM?uv3^P~2)|1CG92J>Y>?m`NFerF_uf|d?!BTW8Wy(M}h}6$>vVUB4PBN}y?zpPQaWxCa zRn7Q%_1_s^wZ2zL&XK%UrhJ`}RFk81idVZeoEO^!;y9l~2}YZU6CIkqI#OS&8`(aj z=8f0*?!t9gdLDTZ&Xiof78W#rpbUinVD%iR7n55RN>W18>eETq((oQ3J? zPR_ywRh zX4=Jf)~HdW0(`raM~|F7otgU!v!h2y)3ZLJq^3 zL{SNO*Dfp%p@dA5bWX&ie=N88#xk7-CEANVk$ zSjTy89ksF+Wxw8wFrFUO-H0Q+2WvclrINn%C;Qc05;;{5_D2`?M^167Mj6)gU6{WZ z#{V&$_>zXwXiO(rq%sfmOv0O|xxATf@=fFDZ*X}u(udK3Z<-DIXm_aEBdWBC-@-6!$b?ii8oi46Zp?#@=E1;71*WFWE>wZS5D7GtplbtEaF zbU}6#f~CIJK*`C5i))gtNd5|f;<<*KABEepi_D^^leQdRe`+F?jB!5Iav80$l3(fw z*1E$j!)r;D`CN1Tc=UDmwuG>&p`T-nC5;4W=)mQZe*SbQ2ukLxz6**p;MWqHP#dVo zLaEKR?6q5Ajb_Rxy7%K)e4>ebe|S2q-PDbI+0lO_5x?wP{G`MH|Ie~Coq5iciOkXH zVx?(B`}s|Jo!>4+XWi9)G^Mo&*Siz;nefY~WWz~DEltVXt-{g@v5)H=LijL7?IUmC zy!!yl^<*-lanG(sa&{Uu9!ET0KboA8AYW9D{Ju7pUDh%n9sLK|c=YfV+6ivkquC`b z$?0kBK(&8XkRx@2wcoY&k3<_{6yUh_8j@>tHnc5bf#3 z_oMU{Zaw501lygaTc^nulhzakk`?j91g*T=jV`1yv2u+8M%-KoxosqK`(t+>OE*BQ z2bK_D@b1zWk3Pp#+ovr-_+R1gIwOIDsw-$%3xmCoHdJW_OtgFTnOG)fU2@7Loi2Rc zy|;D+t-8Zdw_9U@x%(U{=PWLVJkn-fa?`=YfY&pl$%lDw2%jNnh&7}eHW`(X<%n^| zz25*^n1#wMyWeYSfQ;;D$n3XVdOZ($@+TN~kI+e#=nv`4DvoY-hk!uM$ZCu0+aNb^ z6~y&3pnHHy|0!zpVMyz{kOzbkJ&;)v*SF%gdB`j3`6RnKgQNO_tpwNxnrDU!WEuD| zrPtZBjQS2f`rAJ|6q9U)!o0Ee*^8Tno{7cv5|%)1dZMOuf>;VxTgHj&DDwKN4Blbsf4Zg8Ik{0&|@(Reb#^qKw=Eo`~5tk)5<_Q&3uOw~Tm9!feN6VR} zrt&_0Ra)kUli@?%J9=DVsfQ1p@G*e+=uR4LePcq&Bx=O30l)rBBQ(HyJxXtsNz~Yr z?kE#D_O_MBUL{tIy&>P&BYLK>2QKX(te99j(N(e3K5VoQ<^$LY*zQn014R3Q%>ImT zzM{K*Oy8V2gYo_o)^SFLqB4)Pm|quR`Hp6twsfCaSZ||bN1PJ*^w6n^__Fcn1AOa5 zth`U^8tlWo%j+~4>1mQ9y$MNL%6Rm?Mzy>6!sY^Eki6g9daM4Z;TVrJjwUa_SoVI0 z^wTIwzOG|=4!nJanoV~0DBY7sqr}aJ*DQ&;lSoaC(v3x_ahE~1>Cx-L4@^^1Kp#cf!JsE4VInO`$1{kM%aL)UcL0E6b(mdJe(^yuK%G%V7JY)k>z*8)96gD^G{Q4x{ zg;OZf?_cn(ONA};`)R&QDy?6HwDd}REO~6Az!H;=e0jR?em!14p1hMrulvnPwgRn( zxAB_Eud(ud$iG^pS|caArhWo<2RQW;@Vdz^L+#wpyyl*4V@^k0y z{ZF;|25j?lyhh!Ely)#&`DJ4opGAZ&!4&DO`&H+86Xy9_&eM6@JS(}_9+p;~Xj1pD9F)jPHU0yB0|>baWe#$o&4z5 zYgXKisn#Zz(RjyHM02d4eTp@22XADE%hb)!iPv!YD#j8zsZ5vHCHx+1x zmzfXSe_3OKag$}}1h*YR*4<}cck(e9m$`)`b7~pMkgR#$NVryaL+wS}kQVcc+J>P^)ZjDET3Rd@feLf9;!?_9~`@XOXJoNaMXI(Zo@2?lsoI zlb|n}7-|%oUStnvf^G}C0EUy(B+XyMbHs>DCf$4$ushg=xQk8>1rOOUOFB} zwqqQ}Be($G$x<41%b`PK=(6NV&?`}s$}{vzPi`zj>prR`eJ`24S$Ov;6_V3st9G*} zbWi7%AhOpS$S0>WpR{;HRO0hu+5zi393RDac)R#YeRw zkwyq-V*{@m(O3z2r#e5bY(oELKy%%P08mo(#(`d52WfN<& ztu5*d%0jS{qsi$lCeL$pvS>W|I7`c96|LABL{wP@7cyDLna^bnznQL|$G`GLwSjhFekZ z(_C7izj}uGeV`~((vg?w1es!)=T@QS?FuDXOs8##-J4C62xLrFe<%24@>b#P%b?N< zSjR#-jcL}KNj`C2eMcSDv7piS4Q8Arfuj;O#H4=?P~{>_bR(}et8*2VQ^4hVWj{#! z0J&bC%=5InM&rQu^fEnnQC@jdNgj%>3oeBha`dfWDw*uWMAD^qmF8HLCi>fEf7+KC zYHz}$dCMr*KLHhc!z`q*0N`|X@m*cRqFrXRVXYlCnpfgF-^MqS@4Bqul-5P;Xm%}3zv|Z-cx6AIXdXz6`%EGZT@%!D)%6}N| zEx~*uvfA!I>%#eDyL=L$wUELT(R+Be--LKlh}J?9%fK0!Fh9Zb^MQ2xQMzr}B)aW* z8@a*XXLL^}jmV>U?T@U3quB;CrA;bJBqLROkqE!E3#?bG1I7JY<0AN6$zr+u;`3#FrIf7%m`d)bA*@a|A=2M-LYDKp>twKU=)hOqU3GWVfKh6r- zj7%XnA$@xx?V8DDPDVs(T~7Jm_ozj@f3?H{wpd6VDm^)BJo!8J zFzn5*2lnTP$jZu{mR^4L7}bc@0t#JOY1`d1Ndw&n#{TWu0dpzT+7lH&%c5pCZBl+` zdfzd1l4%2~>Ys*B37m(LGtDUWZkOb+@WMIQ9ywY4PY~U1{k{AKn64t=wx9~X6UJc% zVjK&3qt^x{Iexhb zInkoM2Ei6!651b9v@d*ZcK0S`do&A%?Or(??;(j#ZbAv?yEvP7)c877u5InHvG^(wx~W&Nx9Vza6x%29GvclMc<@+tj~wv1(Wl!foeYHz}xWl`U5yz z)a!$TwYh(idKIGmG?#O|Dr2a&-Tm({{`!66Z}PGix^s;G&e%A69yq#L?RTP6iR=BdIXW={4XW={6=delZQ&&@;ystioy-j@%dx!cQHYtCi{Xl8>qOiNh zlB<{>Es`8w=Yr!U#Y#I2jf@$MhIHjvO`*g;{X3w9+vM~BJF%{ ziuaZkyHo!zH=9gnTOtoWwoViSlZ@MqazJ`@OHIZjqme4SQ@J*@!D_Pv%Mima8TR;C z^37(#@KVgb(Vdf@LwR|Vq%xv#ws-^Qy8!9|BVvUN;EX&XSIcw6D{++6QHEM2)7sYz z%q7vrd&9`CNz%_h$R47PM*o%IdmEx}(HnI!XjbBx zi%dIY*Y!^QnmDp97%J4Qkm<0}z{9X26bun3s)JBHXiQdPLWqoZbgd*L4I>!AXoXqQS(ZQihpLPmrNFWM=%jp+RJ(5_DWFh5m*(^t58F1lFpR z=mTrj8syr}Z#7_FD72q$a;NlmY{H=&1C|Y$Z&41mI5HGuA6H?-+6w+Xn@)Dt_1Dop z^;v8kYDUb(!{?1j|sbj zzZvAUz)p4lBM52hV}jzE%})3PbWb&*DCS7I7q}=o@cm)L+Guh<;((}1;ih{k&idlN zg{bU#?UApn^u*JE|>1v*$)W;E&xf_U8O zge_o?x-Ao#6YN;`R0C^~lbH=zSN^?NW`>HQOJ)Y`nB9?^+6cJ|BGCO0_uDds^%-#w z+eLA>%q%F1MKaT4ALZgwWag&DCq%(oE$yRv9yXy+w@TX6GCIG*V*}I8@rN_h?2hgW zFkfrF%+%SdNiMyBZX}&bxlCALD_%DY-FpMr#@n&Qec0lRw8oV$#eH=+)K2M+cs7UcQZPx%y|bkZS#eY?oG!Yzbi>@4W@o93B^0h|6e4@9fjSPTSq~3cD$8 zzM#b|lu%9!L+|+k=nc`1@r-HD%INld)I(P7J$-Rq9auNF1{CLR!QQCbpZVY1h9!`j zm4V#+801!=c5v!X?s!3)n7aF3>jrN=xf6c+`4_aF^CR%fy3p3zZ%>6nTQin*Yipf~ znF>82h72*}^{t@dCkQfB4LRZL{(Ngtg>Hw;>^A5(ZP^!UKnYBWr*zDtarcTL9po=D zt-#*zy%Sq;OKV7_aokqW{W1$>9jpz3tmJ^`&Hto?5!75##G&j}M)eil?dOKTUX1$q_ z9VV^Ulbo&2z&JHBOAF7LIW0!seKZ_7@M+`@8I)gQkk&qqqsTVf=wyfXIsDzjzYnzG zu8`h77O$;D%gKQ+m2JVT`jY;O%EXK0)&0QsKz~M+;ksvA+Ktk^8A)X2Pxj96oqy4ZMZq{Z}(IOmUybcYiH)E z2JP-JvCj${u$FmM%UL8#WRGh$1=VsJr&B9tPt|+t?EP4K$Gkzy1V^KPZBqN1KC0fy zlMdL4pjOz_{Vg7S3_|tZTRuyG{pR|8?wOLT(k?%*f{Rq?Gj&Hve~RoyxW_ z6>&cYNWXc|XNO!N541n7sYo?zDK!R;0~Z zdrR1@tE_?=Ngg4UFEx@$XJMOY4;;#`qG*mMe->|oarh0dppw;y`ZX;lgx%fNT{H*T zhw`A%=yWO0S7XWJQ9~>Y9Kl>a$+qo#jDE~54Y!K1fwzpI&4ramFz=s<@@lJb58Fzu zp~>vuC=n#jGX)IWNAmm^VC_Tw(L6L7MRA36Jd{V+)0&ll-e{C1M+{rz(QBG4&vT~E z>uj%$CIgrzV@y~J#t}E;)$o@c2(QYpx-Ht1V&QM)-ABdJE`_tO9khyJ@R}m!o}YCj zwyG&`9t;q_S-`=W{I_~T)Zj`OJ_rFRBna@vF{dP~EX zg(K3)M^0u9?j{3&n zkn*-2eXiL%^*bz%!MaA>{bRj|(_7s3(76+}ZwymDljoIz2w6p+StlL#tE+IH7S9{w zum{^u^81Te{&@7Ci3qPO3*Hx!YO{4Zqp=!RnbKHgnYt68Ro5wrE7`9V($oC$==SYiA#A{UU&c(=DYy%QtHNfeFB}JY z(|*u@LO48{e5v_9_LFHr;g!6ky)lp0p_U^u`}kzYJ)_Z=iIYWWFGPgbEMmMDBI53a zh|689PbE>uen0km=4B@`k2&M39z{i{zY#t%@}~_o_KekTpXhv79eFtzMvXJGxR6{Y zsgCS7IGN|YHUrEDzJjyzG@!V&PCg<+v^7xDDmF$=90Pv#?l3 z&ZQ&bPz7&Y2}Yvpk$V17rk?SEo6O~s*(d5a9e@803C%uv+ z;hpGe#ID6V?GG;`*ZXjMtPjUq4Ta-l|3e&aHS+C+@}61`qaHr<*w${wXNO+lLxnOQ z+Em8f`ZDfLD#soBALH21R}9}gpk&m_96a#$WGD`VqbbG$tqB_FRDF8Ancy+lMiZ7M-l5u_wD7sJt7PD9giI51Md2|T5sc1OIVY_x79ZuZPd@lbTRTAB%las&MPpS9XY4Hs~sS6LBAjb!;H??J97|UK_3X&vH#CJ04Q;Aqa=^533UHflw%Sivhp3 zERoqu=C_oc`s^M7n!oWbC%kfqCIh}Z9P}--=BB@j~J`) z2;E03JRWU(tebt0Pvks#vnp-0I<4O~N@WG;1~cdStMtzD(BFrF_}Q7D%Q(g9 z7`jK$4I5+8T^zHGQ+Uv$Zu)RJ{mE`jeL3btH>RN+bB244ywXcY`FP7FIU=`8cWoYJ z>@BQ=)1A*n?Okk{PVj;B8Q!PA zfn}70+7tN@NlG*??6WMCl#1*(xO;)YFtf-T24W%up3n8lqxLIEI30Q365@SGdDCGP zGQxgA_HWdEbENyGU=ZUdeg+h>TjciSx7?G9Uq@Lr#cNyLC_AL}uZlwN7L@%@Hw$15 zWCCfpOB8Y#Gcaln%q;X^+U&oYm-3yOUl(LMis><^$9y|5k5&5l9bM+#|Z1sMP z>r8L&r$-w<1a-$J?fpCt>{L!W7k`}(IqgiCqn(dm5792i|8ukn8i~@sQF3GBcyQF#_XoD(h02=JDt$y8KlW~(@rzj zHk}1^UY=|`B$Ke3B%0A)v~^ByZf*~E!fNJb(12c1{$cFXeY-n75{UHF{g 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⪚8fqpN8TA~$5oJB6UxUu3F694cXtGAZY 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

  1. zUu}!dtt{Oj*i`A3Q?~~7wC48)DGbT!la*gBkvQ=T>QBL*m_!YPk;v#f=hX138>^Fj zvX7&`1lQqPjN3KI6yt+mAc9^CpKV`lqzkLDpy$r^PuwEvKbHTwUv-1bmS70Md&E6r z+X4F>jJRpZU$kRB@h^GqatC}!v4L2O84CAjaCoa)G>06>-p&Q{Lc#tz!}L{pQwG{P z*a^P)ngJ{2*dNFVysUT$aLVE~J+@JXQQJ-@Z5=HiA==qCbMMssvSu4WUDetP;6{h2 zw#L&DQcbjxaPM>Oi3qC^ez`oOQ(ghXM!^5zJ#!PYD(+Tn$xxzv^GGnk(BfdMVGuPUG@QuK!9Iw}nJ6o5fbd z{W&Mzh!e*1Y-Zrb#O@)^Q5<=Ie;G?$xk7kP2m=HP$mNiGxcZ;VXX~Kd6x~XUHnE-* z7(5CzReu%lSFVl;%b0JMs5#7Vfw;r_qVyWD11ZtNR1QRZ_UD2rG?(cKHFeV`V87tc#PL8g_aJdMDgz zWZS)Ian*m=xO*8UD}5qrY=Uejv2!_{r+cT?iY1@*Y0LfbzQd+CXPS+Y3Swt-2y=YRyV?1jKwjt21?!Wp@}=4S zLg)DLJ@NhmHR7Jc-LUKBCB(gw+?viCqWT-3+Y7CI>P))tx|xQ-g211p%v`hc9=Se|oJ_59+I6poXF${Ip?B zLUFT=wSM-zw{K-(Kv;j~yrwQQ8_Gzcarc@3*Wi{%c32aNjtQ>%R>umV{Fkvr@2jxj zu&^|v-L7>cqPkrlb$ON@5#95|`tn^t&&Dekaxkuzes+JV6(!6v)aP&3Eb;N!DDu0I z3%okkfay@>&EVNX$|td>!ox1c-$*MQnlIC3B&Is0+ny8C1TqjjsC*qGT@qiIuZ@qrKU1I*@cD*u3iPsml+R*Bj_j`$EW&k zSy|j6+yTEs)4->oVV2kvHD}#_4A03(hZQhk^2bXd_F$#U(cYb41;-`t(;OV;vr
    -zXN3$Hi@LMg6P1#kiB&NqhAk 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
  2. Sexvhi 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�PM&yMyZuP5#jQ27m81*p-TT(g$~3$8i;A^e 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