pksPlanHelper.js 146 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128
  1. /*
  2. 168计划助手
  3. [Script]
  4. ^https?:\/\/.*168.*\.com\/api\/LotteryPlan\/getPksPlanList.do url script-request-body https://git.jojo21.top/shawenguan/Quantumult-X/raw/master/Scripts/168/pksPlanHelper.js
  5. ^https?:\/\/.*168.*\.com\/api\/LotteryPlan\/getPksPlanList.do url script-response-body https://git.jojo21.top/shawenguan/Quantumult-X/raw/master/Scripts/168/pksPlanHelper.js
  6. ^https?:\/\/.*168.*\.com\/pks\/getLotteryPksInfo.do url script-request-body https://git.jojo21.top/shawenguan/Quantumult-X/raw/master/Scripts/168/pksPlanHelper.js
  7. ^https?:\/\/.*168.*\.com\/pks\/getLotteryPksInfo.do url script-response-body https://git.jojo21.top/shawenguan/Quantumult-X/raw/master/Scripts/168/pksPlanHelper.js
  8. [MITM]
  9. hostname = *.168.*.com
  10. 说明:
  11. <li value="10058" data-text="sgAirship" class="Pk10Li checked">SG飞艇</li>
  12. <!--<li data-text="xingyft">幸运飞艇</li>-->
  13. <!-- <li value="10001" data-text="pk10">北京PK拾</li> -->
  14. <li value="10057" data-text="xingyft">幸运飞艇</li>
  15. <li value="10037" data-text="jisusaiche">极速赛车</li>
  16. <li value="10035" data-text="xyft">极速飞艇</li>
  17. <li value="10012" data-text="aozxy10">澳洲幸运10</li>
  18. <li value="10079" data-text="ukLotto10">英国乐透10</li>
  19. <!-- <li value="10060" data-text="happyCZ">重庆欢乐生肖</li> -->
  20. <li value="10075" data-text="sgssc" class="sscLi">SG时时彩</li>
  21. <li value="10059" data-text="xyssc">幸运时时彩</li>
  22. <!--<li data-text="cqssc">重庆时时彩</li>-->
  23. <!-- <li value="10003" data-text="tjssc">天津时时彩</li> -->
  24. <li value="10004" data-text="xjssc">新疆时时彩 <span class="stopSelling"></span></li>
  25. <li value="10036" data-text="jisussc">极速时时彩</li>
  26. <li value="10010" data-text="aozxy5">澳洲幸运5</li>
  27. <li value="10077" data-text="ukLotto5">英国乐透5</li>
  28. <li value="10064" data-text="tw_5fencai">台湾5分彩</li>
  29. <!-- cxf -->
  30. <li value="10065" data-text="xyffc" class="displaynone">幸运分分彩</li>
  31. <li value="10066" data-text="hn5fc" class="displaynone">河内5分彩</li>
  32. <li value="10084" data-text="sg11x5" class="check11_5Li">SG11选5</span></li>
  33. <li value="10006" data-text="gdsyxw">广东11选5 <span class="stopSelling"></span></li>
  34. <li value="10025" data-text="zjef">浙江11选5 <span class="stopSelling"></span></li>
  35. <li value="10015" data-text="jxef">江西11选5 <span class="stopSelling"></span></li>
  36. <li value="10016" data-text="jsef">江苏11选5 <span class="stopSelling"></span></li>
  37. <li value="10017" data-text="ahef">安徽11选5 <span class="stopSelling"></span></li>
  38. <li value="10018" data-text="shef">上海11选5 <span class="stopSelling"></span></li>
  39. <li value="10019" data-text="lnef">辽宁11选5 <span class="stopSelling"></span></li>
  40. <li value="10020" data-text="hbef">湖北11选5 <span class="stopSelling"></span></li>
  41. <li value="10022" data-text="gxef">广西11选5 <span class="stopSelling"></span></li>
  42. <li value="10023" data-text="jlef">吉林11选5 <span class="stopSelling"></span></li>
  43. <li value="10024" data-text="nmgef">内蒙古11选5 <span class="stopSelling"></span></li>
  44. <li value="10008" data-text="sdsyydj">十一运夺金 <span class="stopSelling"></span></li>
  45. <li value="10076" data-text="sgkuaisan" class="kui3Li">SG快3</li>
  46. <li value="10007" data-text="jsksan">江苏快3 <span class="stopSelling"></span></li>
  47. <li value="10061" data-text="shft">上海快3 <span class="stopSelling"></span></li>
  48. <li value="10062" data-text="gzft">贵州快3 <span class="stopSelling"></span></li>
  49. <li value="10063" data-text="gsft">甘肃快3 <span class="stopSelling"></span></li>
  50. <li value="10026" data-text="gxft">广西快3 <span class="stopSelling"></span></li>
  51. <li value="10027" data-text="jlft">吉林快3 <span class="stopSelling"></span></li>
  52. <li value="10028" data-text="hebft">河北快3 <span class="stopSelling"></span></li>
  53. <li value="10029" data-text="nmgft">内蒙古快3 <span class="stopSelling"></span></li>
  54. <li value="10030" data-text="ahft">安徽快3 <span class="stopSelling"></span></li>
  55. <!-- <li value="10031" data-text="fjft">福建快3</li> -->
  56. <li value="10032" data-text="hubft">湖北快3 <span class="stopSelling"></span></li>
  57. <li value="10033" data-text="bjft">北京快3 <span class="stopSelling"></span></li>
  58. <!-- <li value="10046" data-text="egxy28" class="ortherLi">PC蛋蛋幸运28</li> -->
  59. <li value="10074" data-text="egxy28" class="ortherLi">PC蛋蛋幸运28</li>
  60. <li value="10005" data-text="gdklsf">广东快乐十分 <span class="stopSelling"></span></li>
  61. <li value="10011" data-text="aozxy8">澳洲幸运8</li>
  62. <li value="10034" data-text="tjklsf">天津快乐十分 <span class="stopSelling"></span></li>
  63. <li value="10009" data-text="cqxync">重庆幸运农场 <span class="stopSelling"></span></li>
  64. */
  65. const scriptName = `168计划`;
  66. const magicJS = MagicJS(scriptName, "INFO");
  67. let gLotteryCode = 10058;
  68. let gUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148`;
  69. let gBuyPlanHost = `e7i.16890269.com`;
  70. const gBuyPlanHeaders = {
  71. 'Accept': `*/*`,
  72. 'Accept-Encoding': `gzip, deflate, br`,
  73. 'Connection': `keep-alive`,
  74. 'Sec-Fetch-Mode': `cors`,
  75. 'Referer': `https://${gBuyPlanHost}/v1/html/buy_plan/buy_plan.html`,
  76. 'Host': gBuyPlanHost,
  77. 'User-Agent': gUserAgent,
  78. 'Sec-Fetch-Site': `same-origin`,
  79. 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
  80. 'Sec-Fetch-Dest': `empty`,
  81. 'X-Requested-With': `XMLHttpRequest`
  82. };
  83. let gCaiLeLotteryType = 'SGFT';
  84. let gCaiLeUserAgent = `Mozilla/5.0 (iPhone; CPU iPhone OS 16_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Mident/1.0`;
  85. let gCaiLeHost = magicJS.data.read('DIII_CaiLeYuan_Host', `lqt6oh7-ydl.o2xs6pexip.com`);
  86. let gCaiLeToken = `d16e47c3aa4fa856032da779e7467790fac7f93c`;
  87. // base64编码的
  88. let gCaiLeNewrelic = `ewoiZCI6IHsKImFjIjogIjM5NTQxNDYiLAoiYXAiOiAiNjAxMzk5MzYzIiwKImlkIjogIjQ3YWY3ZjdhNDZjNjVkZmMiLAoidGkiOiAxNzE5NzUzNzE4NTM2LAoidHIiOiAiMzAxZDlkMjI2NGUxZTBlMjNiZTY4ZTRlNTVkNDFmNmYiLAoidHkiOiAiTW9iaWxlIgp9LAoidiI6IFsKMCwKMgpdCn0=`;
  89. const gCaiLeHeaders = {
  90. 'systemversion': `16.6.1`,
  91. 'tracestate': `3954146@nr=0-2-3954146-601399363-47af7f7a46c65dfc--0--1719753718536`,
  92. 'Connection': `keep-alive`,
  93. 'Accept-Encoding': `gzip, deflate, br`,
  94. 'newrelic': gCaiLeNewrelic,
  95. 'X-NewRelic-ID': `Vw8CVVdXDhAGVFBRDggEUFc=`,
  96. 'traceparent': `00-301d9d2264e1e0e23be68e4e55d41f6f-47af7f7a46c65dfc-00`,
  97. 'Content-Type': `application/json`,
  98. 'os': `ios`,
  99. 'User-Agent': gCaiLeUserAgent,
  100. 'token': gCaiLeToken,
  101. 'Host': gCaiLeHost,
  102. 'apuid': `sg282zfK1ZE5G`,//13位
  103. 'appv': `3.0.48`,
  104. 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
  105. 'Accept': `application/json, text/plain, */*`
  106. };
  107. let gExpertsRecommendToken = `jGu36jgpJJYPh6AsOGQydYj8GEKxUnvw`;
  108. let gExpertsRecommendHost = `n3iiz7z5p.168fxo67.com`;
  109. const gExpertsRecommendHeaders = {
  110. 'Cookie': `__nxquid=xFcoBcm0I0z0zfRnkzrBrh0Z+z0ppg==0022`,
  111. 'Accept': `*/*`,
  112. 'Connection': `keep-alive`,
  113. 'Accept-Encoding': `gzip, deflate, br`,
  114. 'Host': gExpertsRecommendHost,
  115. 'User-Agent': `CaiPiao/2.1.64 (iPhone; iOS 16.6.1; Scale/3.00)`,
  116. 'Accept-Language': `zh-Hans-CN;q=1`,
  117. 'token': gExpertsRecommendToken
  118. };
  119. let g168MemberHost = `168member.1680383.com`;
  120. let g168LoginCallbackUrl = encodeURIComponent(`https://j8b.168auutz.com/v1/`);
  121. const g168MemberHeaders = {
  122. 'Sec-Fetch-Dest': `empty`,
  123. 'Connection': `keep-alive`,
  124. 'Accept-Encoding': `gzip, deflate, br`,
  125. 'Content-Type': `application/json;charset=utf-8`,
  126. 'Sec-Fetch-Site': `same-origin`,
  127. 'Origin': `https://${g168MemberHost}`,
  128. 'User-Agent': gUserAgent,
  129. 'Sec-Fetch-Mode': `cors`,
  130. 'Cookie': `2a29530a2306=57415995059943d0b7aaa457afde402447f42073204a91dc; JSESSIONID=EBF070671FFD978427A31DA1D6B79211`,
  131. 'Host': `${g168MemberHost}`,
  132. 'Referer': `https://${g168MemberHost}/login?callbackUrl=${g168LoginCallbackUrl}`,
  133. 'Accept-Language': `zh-CN,zh-Hans;q=0.9`,
  134. 'Accept': `application/json, text/plain, */*`
  135. };
  136. const formatNow = () => {
  137. return magicJS.formatDate(new Date(), 'yyyy-MM-dd');
  138. }
  139. let gTmpPlanBetOnceFlag = {};
  140. let gRetBody;
  141. async function Main() {
  142. if (magicJS.isRequest) {
  143. checkHandleRequest();
  144. } else {
  145. gLotteryCode = magicJS.data.read('168_PksPlanLotteryCode', 10058);
  146. gBuyPlanHost = magicJS.data.read('168_PksPlanAPIHost', 'e7i.16890269.com');
  147. gBuyPlanHeaders.Host = gBuyPlanHost;
  148. gBuyPlanHeaders.Referer = `https://${gBuyPlanHost}/v1/html/buy_plan/buy_plan.html`;
  149. gExpertsRecommendHost = magicJS.data.read('168_PksExpertsPlanAPIHost', 'n3iiz7z5p.168fxo67.com');
  150. gExpertsRecommendToken = magicJS.data.read('168_PksExpertsPlanToken', 'jGu36jgpJJYPh6AsOGQydYj8GEKxUnvw');
  151. gExpertsRecommendHeaders.Host = gExpertsRecommendHost;
  152. gExpertsRecommendHeaders.token = gExpertsRecommendToken;
  153. if (isPlanBuyTime()) {
  154. let comPlanResult = await checkTimeSlotPlanBuy();
  155. } else {
  156. let comPlanResult = await checkLastRecordPlanBuy();
  157. }
  158. // if (isExpertsRecommendEnabled()) {
  159. // let expertsResult = await checkExpertPlanBuy();
  160. // }
  161. }
  162. magicJS.notification.msg('');
  163. if (gRetBody) {
  164. magicJS.done({
  165. body: JSON.stringify(gRetBody)
  166. });
  167. } else {
  168. magicJS.done();
  169. }
  170. }
  171. function checkHandleRequest() {
  172. handleHeaders();
  173. const request = magicJS.request;
  174. const url = request.url;
  175. const path = request.path;
  176. magicJS.log(`请求url=${url}#${request.method}`);
  177. let reqBody = magicJS.getRequestBody();
  178. magicJS.log(`请求body=${reqBody}`);
  179. if ($request && $request.method != 'OPTIONS') {
  180. switch (path) {
  181. case '/v1/html/buy_plan/buy_plan.html`':
  182. break;
  183. default:
  184. if (path.indexOf('/api/LotteryPlan/getPksPlanList.do') > -1) {
  185. handleLotteryPksPlanList();
  186. } else if (path.indexOf('/pks/getLotteryPksInfo.do') > -1) {
  187. handleLotteryPksInfo();
  188. }
  189. break;
  190. }
  191. }
  192. }
  193. function getResponsePlainData() {
  194. let data = magicJS.getResponseBody();
  195. if (!data) {
  196. return;
  197. }
  198. try {
  199. return JSON.parse(data);
  200. } catch (err) {
  201. magicJS.logger.error(err);
  202. }
  203. }
  204. function handleLotteryPksInfo() {
  205. let rspData = getResponsePlainData();
  206. if (!rspData) {
  207. return;
  208. }
  209. const path = $request.path;
  210. let urlParams = magicJS.parseQueryStr(path);
  211. let pksInfoToken = urlParams.token;
  212. if (pksInfoToken) {
  213. magicJS.data.write('168_PksInfoToken', pksInfoToken);
  214. }
  215. }
  216. function handleLotteryPksPlanList() {
  217. }
  218. function handleHeaders() {
  219. magicJS.logger.info(`处理请求头参数...`);
  220. const path = $request.path;
  221. let headers = $request.headers;
  222. if (path.indexOf('/api/LotteryPlan/getPksPlanList.do') > -1) {
  223. magicJS.data.write('168_PksPlanAPIHost', headers['Host']);
  224. magicJS.logger.info(`168_PksPlanAPIHost已刷新`);
  225. } else if (path.indexOf('/pks/getLotteryPksInfo.do') > -1) {
  226. magicJS.data.write('168_PksExpertsPlanAPIHost', headers['Host']);
  227. magicJS.data.write('168_PksExpertsPlanToken', headers['token']);
  228. magicJS.logger.info(`168_PksExpertsPlanAPIHost已刷新`);
  229. let urlParams = magicJS.parseQueryStr(path);
  230. let pksInfoToken = urlParams.token;
  231. if (pksInfoToken) {
  232. magicJS.data.write('168_PksInfoToken', pksInfoToken);
  233. }
  234. }
  235. }
  236. function isPlanAEnabled() {
  237. let flag = magicJS.data.read('168_PksPlanAEnabled', null);
  238. if (flag == null) {
  239. return false;
  240. }
  241. return JSON.parse(flag);
  242. }
  243. function isPlanBEnabled() {
  244. let flag = magicJS.data.read('168_PksPlanBEnabled', null);
  245. if (flag == null) {
  246. return false;
  247. }
  248. return JSON.parse(flag);
  249. }
  250. function isPlanCEnabled() {
  251. let flag = magicJS.data.read('168_PksPlanCEnabled', null);
  252. if (flag == null) {
  253. return false;
  254. }
  255. return JSON.parse(flag);
  256. }
  257. function isPlanBuyTime() {
  258. const timeRanges = [
  259. { start: '10:55', end: '15:00' },
  260. { start: '17:55', end: '23:50' },
  261. { start: '01:00', end: '03:30' }
  262. ];
  263. for (const range of timeRanges) {
  264. if (isInTimeRange(range.start, range.end)) {
  265. return true;
  266. }
  267. }
  268. return false;
  269. }
  270. function isInTimeRange(start, end) {
  271. const now = new Date();
  272. const startTime = new Date(now.toDateString() + ' ' + start);
  273. const endTime = new Date(now.toDateString() + ' ' + end);
  274. return now >= startTime && now <= endTime;
  275. }
  276. function isExpertsRecommendEnabled() {
  277. let flag = magicJS.data.read('168_PksExpertsRecommendEnabled', null);
  278. if (flag == null) {
  279. return false;
  280. }
  281. return JSON.parse(flag);
  282. }
  283. function isPlanLotteryAutoBet() {
  284. let flag = magicJS.data.read('168_PksPlanLotteryAutoBet', null);
  285. if (flag == null) {
  286. return false;
  287. }
  288. return JSON.parse(flag);
  289. }
  290. function setPlanBetOnce(planStr) {
  291. gTmpPlanBetOnceFlag[planStr] = true;
  292. }
  293. function hasPlanBetOnce(planStr) {
  294. let planArr = planStr.split(',');
  295. for (let planKey of planArr) {
  296. if (gTmpPlanBetOnceFlag[planStr] == true) {
  297. return true;
  298. }
  299. }
  300. return false;
  301. }
  302. function isPlanLotteryAutoKillDrongon() {
  303. let flag = magicJS.data.read('168_PksPlanLotteryKillDrongon', null);
  304. if (flag == null) {
  305. return false;
  306. }
  307. return JSON.parse(flag) && isPlanLotteryAutoBet();
  308. }
  309. function getPlanLotteryMaxBetAmount() {
  310. let amount = magicJS.data.read('168_PksPlanLotteryMaxBetAmount', null);
  311. if (amount == null) {
  312. return 96;
  313. }
  314. return Number(amount);
  315. }
  316. function getPlanLotteryDrongonMaxTurn() {
  317. let amount = magicJS.data.read('168_PksPlanLotteryDrongonMaxTurn', null);
  318. if (amount == null) {
  319. return 11;
  320. }
  321. return Number(amount);
  322. }
  323. function getPlanLotteryCostrReduceA() {
  324. let multiple = magicJS.data.read('168_PksPlanLotteryCostrReduceA', null);
  325. if (multiple == null) {
  326. return 16;
  327. }
  328. return Number(multiple);
  329. }
  330. function getPlanLotteryCostrReduceB() {
  331. let multiple = magicJS.data.read('168_PksPlanLotteryCostrReduceB', null);
  332. if (multiple == null) {
  333. return 8;
  334. }
  335. return Number(multiple);
  336. }
  337. function getPlanLotteryCostrReduceC() {
  338. let multiple = magicJS.data.read('168_PksPlanLotteryCostrReduceC', null);
  339. if (multiple == null) {
  340. return 4;
  341. }
  342. return Number(multiple);
  343. }
  344. function getAllowBetProbability(planType) {
  345. let value = magicJS.data.read('168_PksPlanAllowBetProbability', null);
  346. if (value == null) {
  347. return 70;
  348. }
  349. return Number(value);
  350. }
  351. function getExpertPlanMaxBetAmount() {
  352. let amount = magicJS.data.read('168_PksExpertMaxBetAmount', null);
  353. if (amount == null) {
  354. return 64;
  355. }
  356. return Number(amount);
  357. }
  358. async function getHtmlContent(url, headers) {
  359. let options = {
  360. url: `${url}`,
  361. headers: headers,
  362. body: ``
  363. };
  364. let result = await magicJS.http.get(options).then(response => {
  365. try {
  366. // magicJS.logger.info(JSON.stringify(response));
  367. const body = response.body;
  368. magicJS.logger.info(body);
  369. return body;
  370. } catch (e) {
  371. magicJS.logger.error(e);
  372. }
  373. }).catch(err => {
  374. const msg = `打开网页异常\n${JSON.stringify(err)}`;
  375. magicJS.logger.error(msg);
  376. });
  377. return result;
  378. }
  379. async function check168UserLogin() {
  380. let htmlUrl = `https://${g168MemberHost}/login?callbackUrl=${g168LoginCallbackUrl}`
  381. let htmlContent = await getHtmlContent(htmlUrl, g168MemberHeaders);
  382. let base64ImgData = await get168LoginCaptchaImage();
  383. if (!base64ImgData) {
  384. return;
  385. }
  386. let recognizeRet = await tryAutoRecognizeCaptcha('ddddocr', { image: base64ImgData }, 'alphanum');
  387. if (!recognizeRet) {
  388. return;
  389. }
  390. let codeStr = recognizeRet.code_data;
  391. let loginRet = await do168UserLogin('aiyo21', 'aiyo510520', String(codeStr));
  392. }
  393. async function get168LoginCaptchaImage() {
  394. let options = {
  395. url: `https://${g168MemberHost}/captcha`,
  396. headers: g168MemberHeaders,
  397. body: ``,
  398. };
  399. let result = await magicJS.http.post(options).then(response => {
  400. try {
  401. const imageData = base64encodeBytes(response.bodyBytes);
  402. return imageData;
  403. } catch (e) {
  404. magicJS.logger.error(e);
  405. }
  406. }).catch(err => {
  407. const msg = `请求验证码图片异常\n${JSON.stringify(err)}`;
  408. magicJS.logger.error(msg);
  409. });
  410. return result;
  411. }
  412. function base64encodeBytes(bytes) {
  413. let CryptoJS = createCryptoJS();
  414. let data = CryptoJS.lib.WordArray.create(bytes);
  415. let base64Data = CryptoJS.enc.Base64.stringify(data);
  416. return base64Data;
  417. }
  418. async function do168UserLogin(userName, password, captchaCode) {
  419. let reqData = {
  420. userName: userName,
  421. password: password,
  422. confirmPassword: password,
  423. name: "",
  424. mobile: "",
  425. mobileCaptcha: "",
  426. captcha: captchaCode,
  427. loginType: ""
  428. };
  429. let options = {
  430. url: `https://168member.1680383.com/userLogin`,
  431. headers: g168MemberHeaders,
  432. body: JSON.stringify(reqData),
  433. };
  434. let result = await magicJS.http.post(options).then(response => {
  435. try {
  436. const body = response.body;
  437. let rspData = null;
  438. if (typeof body === "string") {
  439. return {
  440. code: -1,
  441. message: "Response Exception"
  442. };
  443. } else if (typeof body === "object") {
  444. rspData = body;
  445. }
  446. magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  447. return rspData;
  448. } catch (e) {
  449. magicJS.logger.error(e);
  450. }
  451. }).catch(err => {
  452. const msg = `请求登陆验证异常\n${JSON.stringify(err)}`;
  453. magicJS.logger.error(msg);
  454. });
  455. return result;
  456. }
  457. async function checkTimeSlotPlanBuy() {
  458. // let htmlUrl = `https://${gBuyPlanHost}/v1/html/buy_plan/buy_plan.html`;
  459. // let htmlContent = await getHtmlContent(htmlUrl, gBuyPlanHeaders);
  460. let nowDate = formatNow();
  461. let pksPlanListData = await getPksPlanList(gLotteryCode, nowDate, 100);
  462. if (!pksPlanListData) {
  463. return;
  464. }
  465. // magicJS.logger.info(`pksPlanListData=${JSON.stringify(pksPlanListData)}`);
  466. let isConnectOk = await pingPksPlan(nowDate);
  467. if (!isConnectOk) {
  468. return;
  469. }
  470. let pksPlanItemData = await getPksPlanItem(gLotteryCode);
  471. if (!pksPlanItemData) {
  472. return;
  473. }
  474. if (pksPlanItemData.lotteryStatus != 0) {
  475. return;
  476. }
  477. let tmpDrawIssue = magicJS.data.read('168_PksPlanPreDrawIssue', '');
  478. // 期号
  479. let preDrawIssue = String(pksPlanItemData.preDrawIssue);
  480. if (tmpDrawIssue == preDrawIssue) {
  481. return;
  482. }
  483. let outMsg = `\n计划C:${pksPlanItemData.planC} 单注:${Math.floor(pksPlanItemData.lotteryCostC / 3)}\n`;
  484. outMsg += `\n计划B:${pksPlanItemData.planB} 单注:${Math.floor(pksPlanItemData.lotteryCostB / 4)}\n`;
  485. outMsg += `\n计划A:${pksPlanItemData.planA} 单注:${Math.floor(pksPlanItemData.lotteryCostA / 5)}\n`;
  486. magicJS.logger.info(outMsg);
  487. magicJS.data.write('168_PksPlanPreDrawIssue', preDrawIssue);
  488. updateRequestHeaders();
  489. if (isPlanCEnabled()) {
  490. await checkPlanCBuyNotify(pksPlanItemData, pksPlanListData);
  491. }
  492. if (isPlanBEnabled()) {
  493. await checkPlanBBuyNotify(pksPlanItemData, pksPlanListData);
  494. }
  495. if (isPlanAEnabled()) {
  496. await checkPlanABuyNotify(pksPlanItemData, pksPlanListData);
  497. }
  498. checkLongDragonNotify(pksPlanListData, pksPlanItemData);
  499. return true;
  500. }
  501. async function checkLastRecordPlanBuy() {
  502. let ranking = 1;
  503. let lastBetRecord = magicJS.data.read(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`);
  504. magicJS.logger.info(`checkLastRecordPlanBuy:${JSON.stringify(lastBetRecord)}`);
  505. if (!lastBetRecord || lastBetRecord.drawIssue == void 0) {
  506. return;
  507. }
  508. let lotteryRet = await getLotteryPksInfo(gLotteryCode);
  509. if (!lotteryRet) {
  510. return;
  511. }
  512. let tmpDrawIssue = magicJS.data.read('168_PksPlanTailDrawIssue', '');
  513. // 期号
  514. let strDrawIssue = String(lotteryRet.drawIssue);
  515. if (tmpDrawIssue == strDrawIssue) {
  516. return;
  517. }
  518. let planArr = lastBetRecord.planStr.split(',');
  519. if (planArr.length > 3) {
  520. return;
  521. }
  522. if (lotteryRet.preDrawIssue - lastBetRecord.drawIssue > 1) {
  523. magicJS.logger.info(`尾末期号:${lastBetRecord.drawIssue} 已经错过追号时机,放弃追号`);
  524. magicJS.data.write(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`, `{}`);
  525. return;
  526. }
  527. if (lastBetRecord.drawIssue == String(lotteryRet.preDrawIssue)) {
  528. if (checkHitPrize(lotteryRet.preDrawCode, lastBetRecord.planStr, 0)) {
  529. magicJS.data.write(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`, `{}`);
  530. } else {
  531. let drawIssue = lotteryRet.drawIssue;
  532. let drawTime = lotteryRet.drawTime;
  533. let turnOneCost = lastBetRecord.betAmount * 2;
  534. let turnNum = Math.log2(turnOneCost);
  535. if (turnNum > 9) {
  536. // 超过10期了
  537. magicJS.notification.post(magicJS.scriptName, `⚠️追号失败 号码:${planStr} 单注:${turnOneCost}`);
  538. magicJS.data.write(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`, `{}`);
  539. return;
  540. }
  541. let tipsMsg = `[尾末]推荐号码:${lastBetRecord.planStr} 单注:${turnOneCost} \n期号:${drawIssue} 开奖时间:${drawTime}`;
  542. if (isPlanCEnabled() && isPlanLotteryAutoBet()) {
  543. updateRequestHeaders();
  544. let maxBetAmount = getPlanLotteryMaxBetAmount();
  545. let betRet = await tryDragonBetPoor(lotteryRet.drawIssue, ranking, lastBetRecord.planStr, turnOneCost, maxBetAmount);
  546. }
  547. magicJS.logger.info(tipsMsg);
  548. magicJS.notification.appendNotifyInfo(tipsMsg);
  549. }
  550. } else {
  551. magicJS.data.write(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`, `{}`);
  552. }
  553. magicJS.data.write('168_PksPlanTailDrawIssue', strDrawIssue);
  554. }
  555. function checkRecentLongFail(pksPlanListData, nIssue = 10) {
  556. let seriesCost = Math.pow(2, nIssue - 1);//512
  557. let failItemC = null;
  558. let failItemB = null;
  559. let failItemA = null;
  560. for (let i = 0; i < pksPlanListData.length; i++) {
  561. let element = pksPlanListData[i];
  562. element.index = i;
  563. if (!element.preDrawCode || element.preDrawCode.length == 0) {
  564. continue;
  565. }
  566. let lotteryCostC = element.lotteryCostC;
  567. let lotteryCostB = element.lotteryCostB;
  568. let lotteryCostA = element.lotteryCostA;
  569. let oneCostC = Math.floor(lotteryCostC / 3);
  570. let oneCostB = Math.floor(lotteryCostB / 4);
  571. let oneCostA = Math.floor(lotteryCostA / 5);
  572. //let buySeriesNum = Math.floor(Math.log2(oneCostC)) + 1;
  573. if (oneCostC >= seriesCost) {
  574. if (!checkHitPrize(element.preDrawCode, element.planC, 0)) {
  575. failItemC = element;
  576. }
  577. }
  578. if (oneCostB >= seriesCost) {
  579. if (!checkHitPrize(element.preDrawCode, element.planB, 0)) {
  580. failItemB = element;
  581. }
  582. }
  583. if (oneCostA >= seriesCost) {
  584. if (!checkHitPrize(element.preDrawCode, element.planA, 0)) {
  585. failItemA = element;
  586. }
  587. }
  588. }
  589. return {
  590. failItemA: failItemA,
  591. failItemB: failItemB,
  592. failItemC: failItemC,
  593. };
  594. }
  595. function checkHitPrizeAfterFailOnce(pksPlanListData, failItem) {
  596. let unHitCount = 0;
  597. for (let i = failItem.index - 1; i >= 0; i--) {
  598. let element = pksPlanListData[i];
  599. if (!checkHitPrize(element.preDrawCode, element.planC, 0)) {
  600. unHitCount += 1;
  601. } else {
  602. break;
  603. }
  604. }
  605. return unHitCount == failItem.index;
  606. }
  607. async function checkLongDragonNotify(pksPlanListData, pksPlanItemData) {
  608. // 挑选出来恶龙
  609. let failItemData = checkRecentLongFail(pksPlanListData);
  610. let failItemC = failItemData.failItemC;
  611. let failItemB = failItemData.failItemB;
  612. let failItemA = failItemData.failItemA;
  613. // 检查是否后面屠杀成功
  614. if (failItemC) {
  615. await checkEvilDragonCSlayingNotify(failItemC, pksPlanListData, pksPlanItemData);
  616. }
  617. if (failItemB) {
  618. await checkEvilDragonBSlayingNotify(failItemB, pksPlanListData, pksPlanItemData);
  619. }
  620. if (failItemA) {
  621. await checkEvilDragonASlayingNotify(failItemA, pksPlanListData, pksPlanItemData);
  622. }
  623. }
  624. async function checkEvilDragonCSlayingNotify(failItem, pksPlanListData, pksPlanItemData) {
  625. let latestItem = pksPlanListData[0];
  626. let unHitCount = 0;
  627. for (let i = failItem.index - 1; i >= 0; i--) {
  628. let element = pksPlanListData[i];
  629. if (!checkHitPrize(element.preDrawCode, failItem.planC, 0)) {
  630. unHitCount += 1;
  631. } else {
  632. break;
  633. }
  634. }
  635. if (failItem.index == unHitCount) {
  636. let turnCount = 10 + unHitCount;
  637. let maxTurnCount = getPlanLotteryDrongonMaxTurn();
  638. let tipsMsg = `[C]推荐号码:${latestItem.planC} VS 长龙号码:${failItem.planC} 期数:${turnCount}`;
  639. tipsMsg += `\n期号:${latestItem.preDrawIssue} 开奖时间:${latestItem.preDrawTime} 剩余时间:${latestItem.countTime}s`;
  640. magicJS.logger.info(tipsMsg);
  641. if (isPlanLotteryAutoKillDrongon()) {
  642. let turnOneCost = Math.pow(2, turnCount - 1);
  643. let maxBetAmount = getPlanLotteryMaxBetAmount();
  644. if (turnCount <= maxTurnCount) {
  645. let betRet = await tryDragonBetPoor(latestItem.preDrawIssue, 1, failItem.planC, turnOneCost, maxBetAmount);
  646. }
  647. }
  648. magicJS.notification.appendNotifyInfo(tipsMsg);
  649. }
  650. }
  651. async function checkEvilDragonBSlayingNotify(failItem, pksPlanListData, pksPlanItemData) {
  652. let latestItem = pksPlanListData[0];
  653. let unHitCount = 0;
  654. for (let i = failItem.index - 1; i >= 0; i--) {
  655. let element = pksPlanListData[i];
  656. if (!checkHitPrize(element.preDrawCode, failItem.planB, 0)) {
  657. unHitCount += 1;
  658. } else {
  659. break;
  660. }
  661. }
  662. if (failItem.index == unHitCount) {
  663. let turnCount = 10 + unHitCount;
  664. let maxTurnCount = getPlanLotteryDrongonMaxTurn();
  665. let tipsMsg = `[B]推荐号码:${latestItem.planB} VS 长龙号码:${failItem.planB} 期数:${turnCount}`;
  666. tipsMsg += `\n期号:${latestItem.preDrawIssue} 开奖时间:${latestItem.preDrawTime} 剩余时间:${latestItem.countTime}s`;
  667. magicJS.logger.info(tipsMsg);
  668. if (isPlanLotteryAutoKillDrongon()) {
  669. let turnOneCost = Math.pow(2, turnCount - 1);
  670. let maxBetAmount = getPlanLotteryMaxBetAmount();
  671. if (turnCount <= maxTurnCount) {
  672. let betRet = await tryDragonBetPoor(latestItem.preDrawIssue, 1, failItem.planB, turnOneCost, maxBetAmount);
  673. }
  674. }
  675. magicJS.notification.appendNotifyInfo(tipsMsg);
  676. }
  677. }
  678. async function checkEvilDragonASlayingNotify(failItem, pksPlanListData, pksPlanItemData) {
  679. let latestItem = pksPlanListData[0];
  680. let unHitCount = 0;
  681. for (let i = failItem.index - 1; i >= 0; i--) {
  682. let element = pksPlanListData[i];
  683. if (!checkHitPrize(element.preDrawCode, failItem.planA, 0)) {
  684. unHitCount += 1;
  685. } else {
  686. break;
  687. }
  688. }
  689. if (failItem.index == unHitCount) {
  690. let turnCount = 10 + unHitCount;
  691. let maxTurnCount = getPlanLotteryDrongonMaxTurn();
  692. let tipsMsg = `[A]推荐号码:${latestItem.planA} VS 长龙号码:${failItem.planA} 期数:${turnCount}`;
  693. tipsMsg += `\n期号:${latestItem.preDrawIssue} 开奖时间:${latestItem.preDrawTime} 剩余时间:${latestItem.countTime}s`;
  694. magicJS.logger.info(tipsMsg);
  695. if (isPlanLotteryAutoKillDrongon()) {
  696. let turnOneCost = Math.pow(2, turnCount - 1);
  697. let maxBetAmount = getPlanLotteryMaxBetAmount();
  698. if (turnCount <= maxTurnCount) {
  699. let betRet = await tryDragonBetPoor(latestItem.preDrawIssue, 1, failItem.planA, turnOneCost, maxBetAmount);
  700. }
  701. }
  702. magicJS.notification.appendNotifyInfo(tipsMsg);
  703. }
  704. }
  705. function checkHitPrize(drawCodeStr, planStr, posNum = 0) {
  706. if (drawCodeStr.length == 0) {
  707. return false;
  708. }
  709. let drawCodeArr = drawCodeStr.split(',');
  710. let championCode = drawCodeArr[posNum];
  711. if (planStr.indexOf(championCode) > -1) {
  712. return true;
  713. }
  714. return false;
  715. }
  716. function calcPlanMatchCount(planArr, planStr) {
  717. let mateCount = 0;
  718. for (let i = 0; i < planArr.length; i++) {
  719. if (planStr.indexOf(planArr[i]) > -1) {
  720. mateCount += 1;
  721. }
  722. }
  723. return mateCount;
  724. }
  725. async function analyseBetProbability(planType, pksPlanItemData, pksPlanListData) {
  726. let probability = 100;
  727. let planC = pksPlanItemData.planC;
  728. let planB = pksPlanItemData.planB;
  729. let planA = pksPlanItemData.planA;
  730. let planCArr = planC.split(',');
  731. let planBArr = planB.split(',');
  732. let planAArr = planA.split(',');
  733. let maxMateCount = 7;
  734. let curMateCount = 0;
  735. let oneCostC = Math.floor(pksPlanItemData.lotteryCostC / 3);
  736. let oneCostB = Math.floor(pksPlanItemData.lotteryCostB / 4);
  737. let oneCostA = Math.floor(pksPlanItemData.lotteryCostA / 5);
  738. let turnNumC = Math.floor(Math.log2(oneCostC));
  739. let turnNumB = Math.floor(Math.log2(oneCostB));
  740. let turnNumA = Math.floor(Math.log2(oneCostA));
  741. let maxTurnCount = turnNumA * 3;
  742. let logMsg = '';
  743. if (planType == 'A') {
  744. maxMateCount = Math.min(planAArr.length, planBArr.length) + Math.min(planAArr.length, planCArr.length);
  745. curMateCount = calcPlanMatchCount(planAArr, planB) + calcPlanMatchCount(planAArr, planC);
  746. maxTurnCount = turnNumA * 3;
  747. logMsg += `\n[1]推荐计划A与BC号码交合次数:${curMateCount}/${maxMateCount}`;
  748. } else if (planType == 'B') {
  749. maxMateCount = Math.min(planBArr.length, planAArr.length) + Math.min(planBArr.length, planCArr.length);
  750. curMateCount = calcPlanMatchCount(planBArr, planA) + calcPlanMatchCount(planBArr, planC);
  751. maxTurnCount = turnNumB * 3;
  752. logMsg += `\n[1]推荐计划B与AC号码交合次数:${curMateCount}/${maxMateCount}`;
  753. } else {
  754. maxMateCount = Math.min(planCArr.length, planAArr.length) + Math.min(planCArr.length, planBArr.length);
  755. curMateCount = calcPlanMatchCount(planCArr, planA) + calcPlanMatchCount(planCArr, planB);
  756. maxTurnCount = turnNumC * 3;
  757. logMsg += `\n[1]推荐计划C与AB号码交合次数:${curMateCount}/${maxMateCount}`;
  758. }
  759. logMsg += `\n[2]推荐计划CBA相合连续期数系数:(${turnNumC}+${turnNumB}+${turnNumA})=${(turnNumC + turnNumB + turnNumA)}/${maxTurnCount}`;
  760. let factor1 = 25 * (curMateCount / maxMateCount);
  761. let factor2 = 0;
  762. if (maxTurnCount > 5) {
  763. factor2 = 25 * (turnNumC + turnNumB + turnNumA) / maxTurnCount;
  764. }
  765. probability = probability - factor1 - factor2;
  766. let factor3 = 0;
  767. let nowDate = formatNow();
  768. let killData = await getPksKillNumListFirst(gLotteryCode, nowDate, 30);
  769. if (killData) {
  770. let killNumDict = killData.firstNumDict;
  771. let killTotalCount = 0;
  772. if (planType == 'A') {
  773. killTotalCount = calcPlanKillTotalCount(killNumDict, planAArr);
  774. } else if (planType == 'B') {
  775. killTotalCount = calcPlanKillTotalCount(killNumDict, planBArr);
  776. } else {
  777. killTotalCount = calcPlanKillTotalCount(killNumDict, planCArr);
  778. }
  779. factor3 = killTotalCount * 5;
  780. logMsg += `\n[3]杀号:${JSON.stringify(killNumDict)} 杀中次数:${killTotalCount}`;
  781. }
  782. probability = probability - factor3;
  783. logMsg += `\n综合中奖概率减 系数1=${factor1.toFixed(2)} 系数2=${factor2.toFixed(2)} 系数3=${factor3.toFixed(2)}`;
  784. magicJS.logger.info(logMsg);
  785. return [probability, logMsg];
  786. }
  787. function calcPlanKillTotalCount(killNumDict, planArr) {
  788. let retValue = 0;
  789. for (let i = 0; i < planArr.length; i++) {
  790. let n = parseInt(planArr[i]);
  791. if (killNumDict[n]) {
  792. retValue += killNumDict[n];
  793. }
  794. }
  795. return retValue;
  796. }
  797. async function checkPlanCBuyNotify(pksPlanItemData, pksPlanListData) {
  798. let initCost = 1;
  799. let turnCount = magicJS.data.read('168_PksPlanDrawTurnCountC', 0);
  800. if (turnCount < 1) {
  801. return;
  802. }
  803. let turnOneCost = Math.pow(2, turnCount - 1);
  804. let turnAllCost = turnOneCost * 3;
  805. // 当前成本
  806. let lotteryCostC = pksPlanItemData.lotteryCostC;
  807. if (lotteryCostC < turnAllCost) {
  808. return;
  809. }
  810. // 通知购买彩票
  811. // 已推荐的期数
  812. let lotteryCount = pksPlanItemData.lotteryCount;
  813. // 开奖号码
  814. let preDrawCode = pksPlanItemData.preDrawCode;
  815. turnOneCost = Math.floor(lotteryCostC / 3);
  816. // 期数
  817. let preDrawIssue = String(pksPlanItemData.preDrawIssue);
  818. // 开奖时间
  819. let preDrawTime = pksPlanItemData.preDrawTime;
  820. // 倒计时秒数
  821. let countTime = pksPlanItemData.countTime;
  822. // 当前计划号码
  823. let planC = pksPlanItemData.planC;
  824. // 赢利/亏损
  825. let profitC = pksPlanItemData.profitC;
  826. // 累计成本
  827. let lotteryCostAllC = pksPlanItemData.lotteryCostAllC;
  828. let tipsMsg = `[C]推荐号码:${planC} 单注:${turnOneCost} \n期号:${preDrawIssue} 开奖时间:${preDrawTime} 剩余时间:${countTime}s`;
  829. magicJS.logger.info(tipsMsg);
  830. let ranking = 1;
  831. if (preDrawCode.length > 0) {
  832. return;
  833. }
  834. if (isPlanLotteryAutoBet()) {
  835. turnOneCost = turnOneCost * getLuckyRandCostTimes(turnOneCost);
  836. let [probability, analyseLogMsg] = await analyseBetProbability('C', pksPlanItemData, pksPlanListData);
  837. let proAllowValue = getAllowBetProbability('C');
  838. turnOneCost = getPlanFixCost(pksPlanListData, turnOneCost, 'planC');
  839. if (probability < 50) {
  840. turnOneCost = Math.floor(turnOneCost / 2);
  841. }
  842. turnOneCost = turnOneCost * getChangLongCostTimes('C', pksPlanListData);
  843. if (probability >= proAllowValue) {
  844. let maxBetAmount = getPlanLotteryMaxBetAmount();
  845. let betRet = await tryDragonBetPoor(preDrawIssue, ranking, planC, turnOneCost, maxBetAmount);
  846. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)}`;
  847. tipsMsg += analyseLogMsg;
  848. setPlanBetOnce('C');
  849. } else {
  850. tipsMsg = '⚠️' + tipsMsg;
  851. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)},小于预设值${proAllowValue},请自主下单`;
  852. tipsMsg += analyseLogMsg;
  853. }
  854. }
  855. magicJS.notification.appendNotifyInfo(tipsMsg);
  856. return true;
  857. }
  858. function getLuckyRandCostTimes(turnOneCost) {
  859. let times = 1;
  860. let nIssue = Math.log2(turnOneCost) + 1;
  861. if (nIssue >= 8) {
  862. let rv = Math.random();
  863. if (rv > 0.8) {
  864. times = 1 / 4;
  865. } else {
  866. times = 1 / 2;
  867. }
  868. } else if (nIssue >= 6) {
  869. let rv = Math.random();
  870. if (rv > 0.5) {
  871. times = 2;
  872. }
  873. } else {
  874. let rv = Math.random();
  875. if (nIssue == 5) {
  876. if (rv > 0.5) {
  877. times = 2;
  878. }
  879. } else if (nIssue == 3) {
  880. if (rv > 0.8) {
  881. times = 2;
  882. }
  883. }
  884. }
  885. return times;
  886. }
  887. function getChangLongCostTimes(planType, pksPlanListData) {
  888. let times = 1;
  889. let failItemData = checkRecentLongFail(pksPlanListData);
  890. let failItem = failItemData.failItemC;
  891. if (planType == 'C') {
  892. failItem = failItemData.failItemC;
  893. } else if (planType == 'B') {
  894. failItem = failItemData.failItemB;
  895. } else {
  896. failItem = failItemData.failItemA;
  897. }
  898. if (failItem) {
  899. if (!checkHitPrizeAfterFailOnce(failItem, pksPlanListData)) {
  900. let timesDict = {
  901. [1]: 4,
  902. [3]: 8,
  903. [5]: 8,
  904. [6]: 4,
  905. };
  906. times = timesDict[failItem.index] || 1;
  907. }
  908. }
  909. return times;
  910. }
  911. async function checkPlanBBuyNotify(pksPlanItemData, pksPlanListData) {
  912. let initCost = 1;
  913. let turnCount = magicJS.data.read('168_PksPlanDrawTurnCountB', 0);
  914. if (turnCount < 1) {
  915. return;
  916. }
  917. let turnOneCost = Math.pow(2, turnCount - 1);
  918. let turnAllCost = turnOneCost * 4;
  919. // 当前成本
  920. let lotteryCostB = pksPlanItemData.lotteryCostB;
  921. if (lotteryCostB < turnAllCost) {
  922. return;
  923. }
  924. // 通知购买彩票
  925. // 已推荐的期数
  926. let lotteryCount = pksPlanItemData.lotteryCount;
  927. // 开奖号码
  928. let preDrawCode = pksPlanItemData.preDrawCode;
  929. turnOneCost = Math.floor(lotteryCostB / 4);
  930. // 期数
  931. let preDrawIssue = String(pksPlanItemData.preDrawIssue);
  932. // 开奖时间
  933. let preDrawTime = pksPlanItemData.preDrawTime;
  934. // 倒计时秒数
  935. let countTime = pksPlanItemData.countTime;
  936. // 当前计划号码
  937. let planB = pksPlanItemData.planB;
  938. // 赢利/亏损
  939. let profitB = pksPlanItemData.profitB;
  940. // 累计成本
  941. let lotteryCostAllB = pksPlanItemData.lotteryCostAllB;
  942. let tipsMsg = `[B]推荐号码:${planB} 单注:${turnOneCost} \n期号:${preDrawIssue} 开奖时间:${preDrawTime} 剩余时间:${countTime}s`;
  943. magicJS.logger.info(tipsMsg);
  944. if (preDrawCode.length > 0) {
  945. return;
  946. }
  947. if (!hasPlanBetOnce('C') && isPlanLotteryAutoBet()) {
  948. let [probability, analyseLogMsg] = await analyseBetProbability('B', pksPlanItemData, pksPlanListData);
  949. let proAllowValue = getAllowBetProbability('B');
  950. turnOneCost = getPlanFixCost(pksPlanListData, turnOneCost, 'planB');
  951. if (probability < 50) {
  952. turnOneCost = Math.floor(turnOneCost / 2);
  953. }
  954. if (probability >= proAllowValue) {
  955. let maxBetAmount = getPlanLotteryMaxBetAmount();
  956. let betRet = await tryDragonBetPoor(preDrawIssue, 1, planB, turnOneCost, maxBetAmount);
  957. tipsMsg += analyseLogMsg;
  958. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)}`;
  959. setPlanBetOnce('B');
  960. } else {
  961. tipsMsg = '⚠️' + tipsMsg;
  962. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)},小于预设值${proAllowValue},请自主下单`;
  963. tipsMsg += analyseLogMsg;
  964. }
  965. }
  966. magicJS.notification.appendNotifyInfo(tipsMsg);
  967. return true;
  968. }
  969. async function checkPlanABuyNotify(pksPlanItemData, pksPlanListData) {
  970. let initCost = 1;
  971. let turnCount = magicJS.data.read('168_PksPlanDrawTurnCountA', 0);
  972. if (turnCount < 1) {
  973. return;
  974. }
  975. let turnOneCost = Math.pow(2, turnCount - 1);
  976. let turnAllCost = turnOneCost * 5;
  977. // 当前成本
  978. let lotteryCostA = pksPlanItemData.lotteryCostA;
  979. if (lotteryCostA < turnAllCost) {
  980. return;
  981. }
  982. // 通知购买彩票
  983. // 已推荐的期数
  984. let lotteryCount = pksPlanItemData.lotteryCount;
  985. // 开奖号码
  986. let preDrawCode = pksPlanItemData.preDrawCode;
  987. turnOneCost = Math.floor(lotteryCostA / 5);
  988. // 期数
  989. let preDrawIssue = String(pksPlanItemData.preDrawIssue);
  990. // 开奖时间
  991. let preDrawTime = pksPlanItemData.preDrawTime;
  992. // 倒计时秒数
  993. let countTime = pksPlanItemData.countTime;
  994. // 当前计划号码
  995. let planA = pksPlanItemData.planA;
  996. // 赢利/亏损
  997. let profitA = pksPlanItemData.profitA;
  998. // 累计成本
  999. let lotteryCostAllC = pksPlanItemData.lotteryCostAllC;
  1000. let tipsMsg = `[A]推荐号码:${planA} 单注:${turnOneCost} \n期号:${preDrawIssue} 开奖时间:${preDrawTime} 剩余时间:${countTime}s`;
  1001. magicJS.logger.info(tipsMsg);
  1002. if (preDrawCode.length > 0) {
  1003. return;
  1004. }
  1005. if (!hasPlanBetOnce('B,C') && isPlanLotteryAutoBet()) {
  1006. let [probability, analyseLogMsg] = await analyseBetProbability('A', pksPlanItemData, pksPlanListData);
  1007. let proAllowValue = getAllowBetProbability('A');
  1008. turnOneCost = getPlanFixCost(pksPlanListData, turnOneCost, 'planA');
  1009. if (probability < 50) {
  1010. turnOneCost = Math.floor(turnOneCost / 2);
  1011. }
  1012. if (probability >= proAllowValue) {
  1013. let maxBetAmount = getPlanLotteryMaxBetAmount();
  1014. let betRet = await tryDragonBetPoor(preDrawIssue, 1, planA, turnOneCost, maxBetAmount);
  1015. tipsMsg += analyseLogMsg;
  1016. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)}`;
  1017. setPlanBetOnce('A');
  1018. } else {
  1019. tipsMsg = '⚠️' + tipsMsg;
  1020. tipsMsg += `\n最终单注:${turnOneCost} 预估中奖率:${probability.toFixed(2)},小于预设值${proAllowValue},请自主下单`;
  1021. tipsMsg += analyseLogMsg;
  1022. }
  1023. }
  1024. magicJS.notification.appendNotifyInfo(tipsMsg);
  1025. return true;
  1026. }
  1027. function getPlanFixCost(pksPlanListData, turnOneCost, planKey, ranking = 1) {
  1028. magicJS.logger.info(`getPlanFixCost#0`);
  1029. if (!pksPlanListData) {
  1030. return turnOneCost;
  1031. }
  1032. let latestItem = pksPlanListData[0];
  1033. magicJS.logger.info(`getPlanFixCost#1: ${JSON.stringify(latestItem)}`);
  1034. if (latestItem.preDrawCode && latestItem.preDrawCode.length > 0) {
  1035. return turnOneCost;
  1036. }
  1037. let failCount = 0;
  1038. let preItem = null;
  1039. for (let i = 1; i < pksPlanListData.length; i++) {
  1040. const element = pksPlanListData[i];
  1041. if (preItem && preItem.preDrawIssue - element.preDrawIssue > 1) {
  1042. // 非连续期数
  1043. break;
  1044. }
  1045. if (!checkHitPrize(element.preDrawCode, element[planKey], 0)) {
  1046. failCount += 1;
  1047. } else {
  1048. break;
  1049. }
  1050. preItem = element;
  1051. }
  1052. if (failCount >= 10) {
  1053. let fixCount = failCount - 10;
  1054. if (fixCount <= 2) {
  1055. turnOneCost = turnOneCost * Math.pow(2, 2 - fixCount) * (4 - fixCount);
  1056. } else if (fixCount <= 5) {
  1057. turnOneCost = turnOneCost + Math.pow(2, fixCount - 1);
  1058. }
  1059. }
  1060. let posIndex = ranking - 1;
  1061. let continuousNumDict = {};
  1062. let tmpDrawNum = null;
  1063. let planStr = latestItem[planKey];
  1064. magicJS.logger.info(`getPlanFixCost#2: ${planKey}: ${planStr}`);
  1065. for (let i = 1; i < pksPlanListData.length; i++) {
  1066. const item = pksPlanListData[i];
  1067. if (item[planKey] != planStr) {
  1068. break;
  1069. }
  1070. const numArr = item.preDrawCode.split(',');
  1071. if (tmpDrawNum) {
  1072. if (numArr[posIndex] == tmpDrawNum) {
  1073. if (!continuousNumDict[tmpDrawNum]) {
  1074. continuousNumDict[tmpDrawNum] = 0;
  1075. }
  1076. continuousNumDict[tmpDrawNum] += 1;
  1077. }
  1078. }
  1079. tmpDrawNum = numArr[posIndex];
  1080. }
  1081. magicJS.logger.info(JSON.stringify(continuousNumDict));
  1082. let continuousNumTotalCnt = 0;
  1083. for (let k in continuousNumDict) {
  1084. continuousNumTotalCnt += continuousNumDict[k];
  1085. }
  1086. if (continuousNumTotalCnt > 0) {
  1087. turnOneCost = Math.ceil(turnOneCost / (continuousNumTotalCnt * 2));
  1088. }
  1089. let numCountDict = {};
  1090. for (let i = 1; i < pksPlanListData.length; i++) {
  1091. const element = pksPlanListData[i];
  1092. if (preItem && preItem.preDrawIssue - element.preDrawIssue > 1) {
  1093. // 非连续期数
  1094. break;
  1095. }
  1096. if (checkHitPrize(element.preDrawCode, element[planKey], 0)) {
  1097. break;
  1098. }
  1099. const numArr = element.preDrawCode.split(',');
  1100. tmpDrawNum = numArr[posIndex];
  1101. if (!numCountDict[tmpDrawNum]) {
  1102. numCountDict[tmpDrawNum] = 1;
  1103. } else {
  1104. numCountDict[tmpDrawNum] += 1;
  1105. }
  1106. }
  1107. let divisorNum = 1;
  1108. for (let k in numCountDict) {
  1109. if (numCountDict[k] >= 3) {
  1110. divisorNum += (numCountDict[k] - 2);
  1111. }
  1112. }
  1113. turnOneCost = Math.ceil(turnOneCost / divisorNum);
  1114. magicJS.logger.info(`continuousNumTotalCnt: ${continuousNumTotalCnt}`);
  1115. magicJS.logger.info(`divisorNum: ${divisorNum}`);
  1116. magicJS.logger.info(`getPlanFixCost#3: ${turnOneCost}`);
  1117. return turnOneCost;
  1118. }
  1119. function getTimeStrFromPlanItem(item) {
  1120. const strIssue = String(item.preDrawIssue);
  1121. const dateStr = strIssue.substring(0, 8);
  1122. const sequence = strIssue.substring(8);
  1123. const year = dateStr.substring(0, 4);
  1124. const month = dateStr.substring(4, 6);
  1125. const day = dateStr.substring(6, 8);
  1126. // const date = new Date(year, month - 1, day);
  1127. // console.log('日期:', date);
  1128. // console.log('序号:', sequence);
  1129. return `${year}-${month - 1}-${day} ${item.preDrawTime}`;
  1130. }
  1131. async function getPksPlanList(lotCode, date, rows = 30) {
  1132. const url = `https://${gBuyPlanHost}/api/LotteryPlan/getPksPlanList.do?lotCode=${lotCode}&rows=${rows}&date=${date}`;
  1133. magicJS.logger.info(url);
  1134. let cacheData = magicJS.data.read('168_PksPlanListDataCache', null);
  1135. // magicJS.logger.info(`cacheData=${JSON.stringify(cacheData)}`);
  1136. if (cacheData && cacheData[0]) {
  1137. let timeStr = getTimeStrFromPlanItem(cacheData[0]);;
  1138. let preDrawDate = new Date(timeStr);
  1139. magicJS.logger.info(`开奖时间:${timeStr}`);
  1140. if (Date.now() < preDrawDate.getTime()) {
  1141. magicJS.logger.info(`当前计划列表数据已是最新无需请求,使用缓存数据`);
  1142. return cacheData;
  1143. }
  1144. }
  1145. const myRequest = {
  1146. url: url,
  1147. headers: gBuyPlanHeaders,
  1148. body: ``
  1149. };
  1150. let result = await magicJS.http.get(myRequest).then(response => {
  1151. try {
  1152. const body = response.body;
  1153. // magicJS.logger.info(JSON.stringify(body));
  1154. let rspData;
  1155. if (typeof body === "string") {
  1156. return {
  1157. errorCode: -1,
  1158. message: '操作失败',
  1159. result: null,
  1160. };
  1161. } else if (typeof body === "object") {
  1162. rspData = body;
  1163. }
  1164. return rspData;
  1165. } catch (e) {
  1166. magicJS.logger.error(e);
  1167. }
  1168. }).catch(err => {
  1169. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1170. magicJS.logger.error(msg);
  1171. });
  1172. if (!result) {
  1173. return;
  1174. }
  1175. if (result.errorCode != 0 || result.result == void 0) {
  1176. return;
  1177. }
  1178. if (result.result.businessCode != 0) {
  1179. return;
  1180. }
  1181. magicJS.data.write('168_PksPlanListDataCache', JSON.stringify(result.result.data));
  1182. return result.result.data;
  1183. }
  1184. async function pingPksPlan(date, rows = 30) {
  1185. const url = `https://${gBuyPlanHost}/api/?rows=${rows}&date=${date}`;
  1186. magicJS.logger.info(url);
  1187. const myRequest = {
  1188. url: url,
  1189. headers: gBuyPlanHeaders,
  1190. body: ``
  1191. };
  1192. let result = await magicJS.http.get(myRequest).then(response => {
  1193. const body = response.body;
  1194. magicJS.logger.info(body);
  1195. return true;
  1196. }).catch(err => {
  1197. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1198. magicJS.logger.error(msg);
  1199. return false;
  1200. });
  1201. return result;
  1202. }
  1203. async function getPksPlanItem(lotCode) {
  1204. const url = `https://${gBuyPlanHost}/api/LotteryPlan/getPksPlan.do?lotCode=${lotCode}`;
  1205. magicJS.logger.info(url);
  1206. const myRequest = {
  1207. url: url,
  1208. headers: gBuyPlanHeaders,
  1209. body: ``
  1210. };
  1211. let result = await magicJS.http.get(myRequest).then(response => {
  1212. try {
  1213. const body = response.body;
  1214. // magicJS.logger.info(JSON.stringify(body));
  1215. let rspData;
  1216. if (typeof body === "string") {
  1217. return {
  1218. errorCode: -1,
  1219. message: '操作失败',
  1220. result: null,
  1221. };
  1222. } else if (typeof body === "object") {
  1223. rspData = body;
  1224. }
  1225. return rspData;
  1226. } catch (e) {
  1227. magicJS.logger.error(e);
  1228. }
  1229. }).catch(err => {
  1230. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1231. magicJS.logger.error(msg);
  1232. });
  1233. if (!result) {
  1234. return;
  1235. }
  1236. if (result.errorCode != 0 || result.result == void 0) {
  1237. return;
  1238. }
  1239. if (result.result.businessCode != 0) {
  1240. return;
  1241. }
  1242. return result.result.data;
  1243. }
  1244. async function checkExpertPlanBuy() {
  1245. let userName = magicJS.data.read('168_PksExpertUserName', null);
  1246. if (!userName || userName.length == 0) {
  1247. magicJS.logger.info(`请选择你信任的专家`);
  1248. return;
  1249. }
  1250. userName = userName.trim();
  1251. let groupCode = 1;
  1252. let ranking = magicJS.data.read('168_PksExpertRecommendRanking', 1);
  1253. let recommendList = await getExpertsRecommendList(gLotteryCode, groupCode, ranking);
  1254. if (!recommendList) {
  1255. return;
  1256. }
  1257. let expectList = [];
  1258. let expectItem = null;
  1259. for (let i = 0; i < recommendList.length; i++) {
  1260. const item = recommendList[i];
  1261. const recommendCount = item.recommendCount;
  1262. if (recommendCount <= 5) {
  1263. expectList.push(item);
  1264. if (item.userName.indexOf(userName) > -1) {
  1265. expectItem = item;
  1266. }
  1267. }
  1268. }
  1269. if (!expectItem) {
  1270. return;
  1271. }
  1272. let prValue = parseInt(expectItem.winningProbability);
  1273. if (prValue < 89) {
  1274. let indexKey = 'winningProbability';
  1275. expectList.sort((a, b) => {
  1276. if (a[indexKey] == b[indexKey]) {
  1277. return 0;
  1278. } else if (a[indexKey] < b[indexKey]) {
  1279. return 1;
  1280. } else {
  1281. return -1;
  1282. }
  1283. });
  1284. expectItem = expectList[0];
  1285. if (!expectItem) {
  1286. return;
  1287. }
  1288. prValue = parseInt(expectItem.winningProbability);
  1289. if (prValue < 80) {
  1290. magicJS.data.read('168_PksExpertUserName', null);
  1291. return;
  1292. }
  1293. }
  1294. magicJS.data.write('168_PksExpertUserName', expectItem.userName);
  1295. let planDetail = await getExpertsRecommendDetail(expectItem.userId, gLotteryCode, groupCode, ranking);
  1296. if (!planDetail) {
  1297. return;
  1298. }
  1299. updateRequestHeaders();
  1300. let latestItem = planDetail.head;
  1301. let tmpDrawIssue = magicJS.data.read('168_PksExpertsPreDrawIssue', '');
  1302. // 期号
  1303. let preDrawIssue = String(latestItem.preDrawIssue);
  1304. if (tmpDrawIssue == preDrawIssue) {
  1305. return;
  1306. }
  1307. magicJS.data.write('168_PksExpertsPreDrawIssue', preDrawIssue);
  1308. let turnOneCost = getExpertsFixCost(planDetail);
  1309. let recommendCode = latestItem.recommendCode;
  1310. let maxBetAmount = getExpertPlanMaxBetAmount();
  1311. let tipsMsg = `专家[${latestItem.userName}]推荐${latestItem.recommendTypeDesc}:${recommendCode} 准确率:${latestItem.winningProbability} 期数:${latestItem.rank} 期号:${preDrawIssue}`;
  1312. magicJS.logger.info(tipsMsg);
  1313. if (isPlanLotteryAutoBet()) {
  1314. let betRet = await tryDragonBetCommon(preDrawIssue, ranking, recommendCode, turnOneCost, maxBetAmount);
  1315. }
  1316. magicJS.notification.appendNotifyInfo(tipsMsg);
  1317. }
  1318. function getExpertsFixCost(planDetail) {
  1319. let latestItem = planDetail.head;
  1320. let turnOneCost = Math.pow(2, latestItem.rank - 1);
  1321. if (planDetail.list) {
  1322. let list = planDetail.list;
  1323. let continuousWrongCount = 0;
  1324. let wrongCostTurn = 0;
  1325. for (let i = 1; i < list.length; i++) {
  1326. const item = list[i];
  1327. if (item.result == '错') {
  1328. continuousWrongCount += 1;
  1329. wrongCostTurn += item.rank;
  1330. } else {
  1331. break;
  1332. }
  1333. }
  1334. if (continuousWrongCount > 0 && wrongCostTurn + latestItem.rank < 8) {
  1335. turnOneCost = continuousWrongCount * turnOneCost + continuousWrongCount * Math.pow(2, 2 + continuousWrongCount);
  1336. turnOneCost += (wrongCostTurn + latestItem.rank - 3);
  1337. }
  1338. let continuousRightCount = 0;
  1339. let rightCostTurn = 0;
  1340. for (let i = 1; i < list.length; i++) {
  1341. const item = list[i];
  1342. if (item.result == '中') {
  1343. continuousRightCount += 1;
  1344. rightCostTurn += item.rank;
  1345. } else {
  1346. break;
  1347. }
  1348. }
  1349. }
  1350. return turnOneCost;
  1351. }
  1352. async function getExpertsRecommendList(lotCode, groupCode = 1, ranking = 1, field = 'winningProbability') {
  1353. /**
  1354. * type
  1355. * 0=定码
  1356. * 1=杀码
  1357. * 2=大小
  1358. * 3=单收
  1359. * 4=龙虎
  1360. */
  1361. /**
  1362. * field
  1363. * winningProbability=准确率
  1364. * continuousWin=当前连中
  1365. */
  1366. const reqData = {
  1367. lotCode: lotCode,
  1368. groupCode: groupCode,
  1369. ranking: ranking,
  1370. field: field,
  1371. type: 0,
  1372. sort: 'desc',
  1373. s: '168noadv',
  1374. };
  1375. const queryStr = magicJS.objToQueryStr(reqData);
  1376. const url = `https://${gExpertsRecommendHost}/expertsRecommend/list.do?${queryStr}`;
  1377. magicJS.logger.info(url);
  1378. const myRequest = {
  1379. url: url,
  1380. headers: gExpertsRecommendHeaders,
  1381. body: ``
  1382. };
  1383. let result = await magicJS.http.get(myRequest).then(response => {
  1384. try {
  1385. const body = response.body;
  1386. // magicJS.logger.info(JSON.stringify(body));
  1387. let rspData;
  1388. if (typeof body === "string") {
  1389. return {
  1390. errorCode: -1,
  1391. message: '操作失败',
  1392. result: null,
  1393. };
  1394. } else if (typeof body === "object") {
  1395. rspData = body;
  1396. }
  1397. return rspData;
  1398. } catch (e) {
  1399. magicJS.logger.error(e);
  1400. }
  1401. }).catch(err => {
  1402. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1403. magicJS.logger.error(msg);
  1404. });
  1405. if (!result) {
  1406. return;
  1407. }
  1408. if (result.errorCode != 0 || result.result == void 0) {
  1409. return;
  1410. }
  1411. if (result.result.businessCode != 0) {
  1412. return;
  1413. }
  1414. return result.result.data;
  1415. }
  1416. async function getExpertsRecommendDetail(userId, lotCode, groupCode = 1, ranking = 1) {
  1417. const reqData = {
  1418. userId: userId,
  1419. lotCode: lotCode,
  1420. groupCode: groupCode,
  1421. ranking: ranking,
  1422. type: 0,
  1423. sort: 'desc',
  1424. s: '168noadv',
  1425. };
  1426. const queryStr = magicJS.objToQueryStr(reqData);
  1427. const url = `https://${gExpertsRecommendHost}/expertsRecommend/detail.do?${queryStr}`;
  1428. magicJS.logger.info(url);
  1429. const myRequest = {
  1430. url: url,
  1431. headers: gExpertsRecommendHeaders,
  1432. body: ``
  1433. };
  1434. let result = await magicJS.http.get(myRequest).then(response => {
  1435. try {
  1436. const body = response.body;
  1437. // magicJS.logger.info(JSON.stringify(body));
  1438. let rspData;
  1439. if (typeof body === "string") {
  1440. return {
  1441. errorCode: -1,
  1442. message: '操作失败',
  1443. result: null,
  1444. };
  1445. } else if (typeof body === "object") {
  1446. rspData = body;
  1447. }
  1448. return rspData;
  1449. } catch (e) {
  1450. magicJS.logger.error(e);
  1451. }
  1452. }).catch(err => {
  1453. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1454. magicJS.logger.error(msg);
  1455. });
  1456. if (!result) {
  1457. return;
  1458. }
  1459. if (result.errorCode != 0 || result.result == void 0) {
  1460. return;
  1461. }
  1462. if (result.result.businessCode != 0) {
  1463. return;
  1464. }
  1465. return result.result.data;
  1466. }
  1467. async function getLotteryPksInfo(lotCode) {
  1468. const url = `https://${gBuyPlanHost}/api/pks/getLotteryPksInfo.do?lotCode=${lotCode}`;
  1469. magicJS.logger.info(url);
  1470. const myRequest = {
  1471. url: url,
  1472. headers: gBuyPlanHeaders,
  1473. body: ``
  1474. };
  1475. let result = await magicJS.http.get(myRequest).then(response => {
  1476. try {
  1477. const body = response.body;
  1478. // magicJS.logger.info(JSON.stringify(body));
  1479. let rspData;
  1480. if (typeof body === "string") {
  1481. return {
  1482. errorCode: -1,
  1483. message: '操作失败',
  1484. result: null,
  1485. };
  1486. } else if (typeof body === "object") {
  1487. rspData = body;
  1488. }
  1489. return rspData;
  1490. } catch (e) {
  1491. magicJS.logger.error(e);
  1492. }
  1493. }).catch(err => {
  1494. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1495. magicJS.logger.error(msg);
  1496. });
  1497. if (!result) {
  1498. return;
  1499. }
  1500. if (result.errorCode != 0 || result.result == void 0) {
  1501. return;
  1502. }
  1503. if (result.result.businessCode != 0) {
  1504. return;
  1505. }
  1506. return result.result.data;
  1507. }
  1508. async function getPksKillNumListFirst(lotCode, date, rows = 30) {
  1509. let result = await getPksKillNumAllList(lotCode, date, rows);
  1510. if (!result) {
  1511. return;
  1512. }
  1513. let killNumItem = result.list[0];
  1514. let firstNum = killNumItem.firstNum;
  1515. let numDict = {};
  1516. let numArr = [];
  1517. for (let i = 0; i < firstNum.length; i += 2) {
  1518. let n = firstNum[i];
  1519. if (!numDict[n]) {
  1520. numDict[n] = 1;
  1521. numArr.push(n);
  1522. } else {
  1523. numDict[n] += 1;
  1524. }
  1525. }
  1526. result.firstNumArr = numArr;
  1527. result.firstNumDict = numDict;
  1528. return result;
  1529. }
  1530. async function getPksKillNumAllList(lotCode, date, rows = 30) {
  1531. const url = `https://${gBuyPlanHost}/api/KillNum/getPksKillNumList.do?lotCode=${lotCode}&rows=${rows}&date=${date}`;
  1532. magicJS.logger.info(url);
  1533. let cacheData = magicJS.data.read('168_PksKillNumListCache', null);
  1534. // magicJS.logger.info(`cacheData=${JSON.stringify(cacheData)}`);
  1535. if (cacheData && cacheData.list) {
  1536. let itemData = cacheData.list[0];
  1537. magicJS.logger.info(`期号:${itemData.preDrawIssue} 开奖时间:${itemData.preDrawDate}`);
  1538. let preDrawDate = new Date(itemData.preDrawDate);
  1539. if (Date.now() < preDrawDate.getTime()) {
  1540. magicJS.logger.info(`getPksKillNumList.do无需请求,使用缓存数据`);
  1541. return cacheData;
  1542. }
  1543. }
  1544. const myRequest = {
  1545. url: url,
  1546. headers: gBuyPlanHeaders,
  1547. body: ``
  1548. };
  1549. let result = await magicJS.http.get(myRequest).then(response => {
  1550. try {
  1551. const body = response.body;
  1552. // magicJS.logger.info(JSON.stringify(body));
  1553. let rspData;
  1554. if (typeof body === "string") {
  1555. return {
  1556. errorCode: -1,
  1557. message: '操作失败',
  1558. result: null,
  1559. };
  1560. } else if (typeof body === "object") {
  1561. rspData = body;
  1562. }
  1563. return rspData;
  1564. } catch (e) {
  1565. magicJS.logger.error(e);
  1566. }
  1567. }).catch(err => {
  1568. const msg = `请求发生异常\n${JSON.stringify(err)}`;
  1569. magicJS.logger.error(msg);
  1570. });
  1571. if (!result) {
  1572. return;
  1573. }
  1574. if (result.errorCode != 0 || result.result == void 0) {
  1575. return;
  1576. }
  1577. if (result.result.businessCode != 0) {
  1578. return;
  1579. }
  1580. magicJS.data.write('168_PksKillNumListCache', JSON.stringify(result.result.data));
  1581. return result.result.data;
  1582. }
  1583. function updateRequestHeaders() {
  1584. gCaiLeToken = magicJS.data.read('DIII_CaiLeYuan_Token', '');
  1585. gCaiLeHeaders['token'] = gCaiLeToken;
  1586. gCaiLeHeaders['Cookie'] = magicJS.data.read('DIII_CaiLeYuan_Cookie', ``);
  1587. gCaiLeHeaders['newrelic'] = magicJS.data.read('DIII_CaiLeYuan_Newrelic', ``);
  1588. gCaiLeHeaders['apuid'] = magicJS.data.read('DIII_CaiLeYuan_apuid', `sg2829aJOVSRG`);
  1589. }
  1590. async function tryDragonBetPoor(drawIssue, ranking, planStr, betAmount, maxBetAmount = 96) {
  1591. let numArr = planStr.split(',');
  1592. let numCount = numArr.length;
  1593. if (numCount >= 5) {
  1594. betAmount = Math.floor(betAmount / getPlanLotteryCostrReduceA());
  1595. } else if (numCount >= 4) {
  1596. betAmount = Math.floor(betAmount / getPlanLotteryCostrReduceB());
  1597. } else {
  1598. betAmount = Math.floor(betAmount / getPlanLotteryCostrReduceC());
  1599. }
  1600. if (betAmount < 1) {
  1601. betAmount = 1;
  1602. } else if (betAmount > maxBetAmount) {
  1603. betAmount = maxBetAmount;
  1604. }
  1605. let result = await doDragonBet(drawIssue, ranking, planStr, betAmount);
  1606. if (!result) {
  1607. let loginRet = await tryReLogin();
  1608. if (!loginRet) {
  1609. return;
  1610. }
  1611. result = await doDragonBet(drawIssue, ranking, planStr, betAmount);
  1612. }
  1613. let betRecord = {
  1614. ranking: ranking,
  1615. drawIssue: drawIssue,
  1616. planStr: planStr,
  1617. betAmount: betAmount,
  1618. };
  1619. magicJS.data.write(`DIII_CaiLeYuan_Lottery_${gCaiLeLotteryType}#${ranking}`, JSON.stringify(betRecord));
  1620. if (result && result.statusCode == 200) {
  1621. if (checkBetResult(result)) {
  1622. magicJS.notification.post(magicJS.scriptName, `🎉下注成功 号码:${planStr} 单注:${betAmount}`);
  1623. } else {
  1624. magicJS.notification.post(magicJS.scriptName, `⚠️下注失败 号码:${planStr} 单注:${betAmount}`);
  1625. }
  1626. }
  1627. return result;
  1628. }
  1629. async function tryDragonBetCommon(drawIssue, ranking, planStr, betAmount, maxBetAmount = 96) {
  1630. let numArr = planStr.split(',');
  1631. let numCount = numArr.length;
  1632. if (numCount >= 5) {
  1633. betAmount = Math.floor(betAmount);
  1634. } else if (numCount >= 4) {
  1635. betAmount = Math.floor(betAmount);
  1636. } else {
  1637. betAmount = Math.floor(betAmount);
  1638. }
  1639. if (betAmount < 1) {
  1640. betAmount = 1;
  1641. } else if (betAmount > maxBetAmount) {
  1642. betAmount = maxBetAmount;
  1643. }
  1644. let result = await doDragonBet(drawIssue, ranking, planStr, betAmount);
  1645. if (!result) {
  1646. let loginRet = await tryReLogin();
  1647. if (!loginRet) {
  1648. return;
  1649. }
  1650. result = await doDragonBet(drawIssue, ranking, planStr, betAmount);
  1651. }
  1652. if (result && result.statusCode == 200) {
  1653. if (checkBetResult(result)) {
  1654. magicJS.notification.post(magicJS.scriptName, `🎉下注成功 号码:${planStr} 单注:${betAmount}`);
  1655. } else {
  1656. magicJS.notification.post(magicJS.scriptName, `⚠️下注失败 号码:${planStr} 单注:${betAmount}`);
  1657. }
  1658. }
  1659. return result;
  1660. }
  1661. function checkBetResult(data) {
  1662. let result = data.result;
  1663. let account = result.account;
  1664. let bets = result.bets;
  1665. let count = bets.length;
  1666. let sucCount = 0;
  1667. for (let i = 0; i < count; i++) {
  1668. if (bets[i].success) {
  1669. sucCount += 1;
  1670. }
  1671. }
  1672. if (sucCount == count) {
  1673. return true;
  1674. }
  1675. return false;
  1676. }
  1677. async function doDragonBet(drawIssue, ranking, planStr, betAmount) {
  1678. let rowTextArr = [
  1679. '',
  1680. '冠军',
  1681. '亚军',
  1682. '第三名',
  1683. '第四名',
  1684. '第五名',
  1685. '第六名',
  1686. '第七名',
  1687. '第八名',
  1688. '第九名',
  1689. '第十名',
  1690. ];
  1691. let lotteryType = gCaiLeLotteryType;
  1692. let numArr = planStr.split(',');
  1693. let bets = [];
  1694. for (let i = 0; i < numArr.length; i++) {
  1695. let numStr = String(parseInt(numArr[i].trim()));
  1696. let element = {
  1697. amount: betAmount,
  1698. contentText: numStr,
  1699. contents: numStr,
  1700. drawNumber: String(drawIssue),
  1701. game: `B${ranking}`,
  1702. groupText: "1 ~ 10名",
  1703. ignore: "false",
  1704. lottery: lotteryType,
  1705. odds: 9.91,
  1706. rowText: rowTextArr[ranking],
  1707. };
  1708. bets.push(element);
  1709. }
  1710. const reqData = {
  1711. bets: bets,
  1712. };
  1713. const url = `https://${gCaiLeHost}/rest/member/dragon/bet`;
  1714. let result = await clyRequest('post', url, reqData);
  1715. return result;
  1716. }
  1717. async function tryReLogin() {
  1718. let recognizeRet = await tryGenerateCaptchaAndRecognize(3);
  1719. if (!recognizeRet) {
  1720. return;
  1721. }
  1722. let validateRet = await doValidateCaptcha(recognizeRet.uuid, recognizeRet.positionX, recognizeRet.positionY);
  1723. if (!validateRet || validateRet.statusCode != 200) {
  1724. return;
  1725. }
  1726. let vFinalResult = validateRet.result;
  1727. if (vFinalResult.status != 'OK') {
  1728. return;
  1729. }
  1730. let username = 'aiyo21';
  1731. let password = 'aiyo510520';
  1732. let loginRet = await doLogin(username, password, vFinalResult.code, vFinalResult.cryptograph);
  1733. if (!loginRet || loginRet.statusCode != 0) {
  1734. return;
  1735. }
  1736. let newToken = loginRet.token;
  1737. gCaiLeToken = newToken;
  1738. gCaiLeHeaders['token'] = gCaiLeToken;
  1739. magicJS.data.write('DIII_CaiLeYuan_Token', newToken);
  1740. magicJS.notification.appendNotifyInfo(`🎉重登成功,最新token已刷新`);
  1741. return true;
  1742. }
  1743. async function tryGenerateCaptchaAndRecognize(tryCount = 1) {
  1744. let captchaRet = null;
  1745. let recognizeRet = null;
  1746. for (let i = 0; i < tryCount; i++) {
  1747. captchaRet = await doGenerateCaptcha();
  1748. if (!captchaRet || captchaRet.statusCode != 200) {
  1749. continue;
  1750. }
  1751. recognizeRet = await tryAutoRecognizeCaptcha('ddddocr', captchaRet.result, 'slide');
  1752. if (!recognizeRet) {
  1753. continue;
  1754. } else {
  1755. break;
  1756. }
  1757. }
  1758. return recognizeRet;
  1759. }
  1760. async function doLogin(username, password, code, cryptograph) {
  1761. const url = `https://${gCaiLeHost}/rest/login`;
  1762. let reqData = {
  1763. username: username,
  1764. password: password,
  1765. code: code,
  1766. cryptograph: cryptograph,
  1767. platform: "ios",
  1768. version: "3.0.48",
  1769. };
  1770. let result = await clyRequest('post', url, reqData);
  1771. return result;
  1772. }
  1773. async function doValidateCaptcha(uuid, positionX, positionY) {
  1774. const url = `https://${gCaiLeHost}/rest/captcha/validate`;
  1775. let reqData = {
  1776. uuid: uuid,
  1777. positionX: positionX,
  1778. positionY: positionY,
  1779. };
  1780. let result = await clyRequest('post', url, reqData);
  1781. return result;
  1782. }
  1783. async function doGenerateCaptcha() {
  1784. const url = `https://${gCaiLeHost}/rest/captcha/generate`;
  1785. let result = await clyRequest('get', url);
  1786. return result;
  1787. }
  1788. async function tryAutoRecognizeCaptcha(typeStr, captchaInfo, recognizeType) {
  1789. switch (typeStr) {
  1790. case 'ddddocr':
  1791. return recognizeCaptchaByDdddocr(captchaInfo, recognizeType);
  1792. }
  1793. }
  1794. async function recognizeCaptchaByDdddocr(captchaInfo, recognizeType) {
  1795. // recognizeType: alphanum slide cn_boxes
  1796. let reqData = null;
  1797. let positionY = captchaInfo.positionY;
  1798. if (recognizeType == 'slide') {
  1799. let puzzleImage = captchaInfo.puzzleImage;
  1800. let backgroundImage = captchaInfo.backgroundImage;
  1801. let uuid = captchaInfo.uuid;
  1802. reqData = {
  1803. recognize_type: recognizeType,
  1804. puzzle_image: encodeURIComponent(puzzleImage),
  1805. background_image: encodeURIComponent(backgroundImage),
  1806. position_y: positionY,
  1807. uuid: uuid,
  1808. }
  1809. } else if (recognizeType == 'alphanum') {
  1810. reqData = captchaInfo;
  1811. } else {
  1812. reqData = captchaInfo;
  1813. }
  1814. let form = magicJS.objToQueryStr(reqData);
  1815. let headers = {
  1816. 'Accept': `application/json`,
  1817. 'Origin': `https://api.jojo21.com`,
  1818. 'Connection': `keep-alive`,
  1819. 'Host': `api.jojo21.com`,
  1820. 'User-Agent': gCaiLeUserAgent,
  1821. 'Content-Type': 'application/x-www-form-urlencoded',
  1822. };
  1823. let options = {
  1824. url: 'http://api.jojo21.com/captcha/ddddocr',
  1825. headers: headers,
  1826. body: form,
  1827. };
  1828. let result = await magicJS.http.post(options).then(response => {
  1829. try {
  1830. const body = response.body;
  1831. let rspData = null;
  1832. if (typeof body === "string") {
  1833. return {
  1834. code: -1,
  1835. message: "Response Exception"
  1836. };
  1837. } else if (typeof body === "object") {
  1838. rspData = body;
  1839. }
  1840. magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  1841. return rspData;
  1842. } catch (e) {
  1843. magicJS.logger.error(e);
  1844. }
  1845. }).catch(err => {
  1846. const msg = `请求滑块验证异常\n${JSON.stringify(err)}`;
  1847. magicJS.logger.error(msg);
  1848. });
  1849. if (result && result.code == 1) {
  1850. if (recognizeType == 'slide') {
  1851. let targetInfo = result.result.target;
  1852. if (Math.abs(targetInfo[1] - positionY) > 4) {
  1853. return null;
  1854. }
  1855. result.positionX = targetInfo[0] + randomFloat(0, 0.5);
  1856. result.positionY = reqData.position_y;
  1857. result.uuid = reqData.uuid;
  1858. } else {
  1859. }
  1860. return result;
  1861. }
  1862. return null;
  1863. }
  1864. function randomFloat(min, max) {
  1865. return Math.random() * (max - min) + min;
  1866. }
  1867. function generateRandString(length) {
  1868. let result = '';
  1869. let characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
  1870. let charactersLength = characters.length;
  1871. for (let i = 0; i < length; i++) {
  1872. result += characters.charAt(Math.floor(Math.random() * charactersLength));
  1873. }
  1874. return result;
  1875. }
  1876. async function clyRequest(method, url, reqData, printRspData = true) {
  1877. if (!gCaiLeHeaders['token'] || gCaiLeHeaders['token'].length == 0) {
  1878. magicJS.logger.info(`❌token已失效请重新登陆获取!`);
  1879. return;
  1880. }
  1881. let nowTime = Date.now();
  1882. let newrelicData = {
  1883. "d": {
  1884. "ac": "3954146",
  1885. "ap": "601399363",
  1886. "id": generateRandString(16),//16位
  1887. "ti": nowTime,
  1888. "tr": "301d9d2264e1e0e23be68e4e55d41f6f",
  1889. "ty": "Mobile"
  1890. },
  1891. "v": [0, 2]
  1892. };
  1893. let tracestate = `${newrelicData.d.ac}@nr=0-2-${newrelicData.d.ac}-${newrelicData.d.ap}-${newrelicData.d.id}--0--${newrelicData.d.ti}`;
  1894. let traceparent = `00-${newrelicData.d.tr}-${newrelicData.d.id}-00`;
  1895. let headers = gCaiLeHeaders;
  1896. // 这三个参数不重要 可有可无
  1897. headers.newrelic = base64encodeStr(JSON.stringify(newrelicData));
  1898. headers.tracestate = tracestate;
  1899. headers.traceparent = traceparent;
  1900. // 重要的时这个appuid参数
  1901. // headers.apuid = 'sg282MjNFMbRl';
  1902. let body = '';
  1903. if (method == 'post') {
  1904. let contentType = headers['Content-Type'];
  1905. if (contentType && contentType.indexOf('form') > -1) {
  1906. // 表单
  1907. body = magicJS.objToQueryStr(reqData);
  1908. } else {
  1909. body = JSON.stringify(reqData);
  1910. }
  1911. } else {
  1912. url = `${url}?${magicJS.objToQueryStr(reqData)}`;
  1913. }
  1914. let options = {
  1915. url: url,
  1916. headers: headers,
  1917. body: body
  1918. };
  1919. let result = await magicJS.http[method](options).then(response => {
  1920. try {
  1921. const body = response.body;
  1922. let rspData = null;
  1923. if (typeof body === "string") {
  1924. magicJS.logger.info(`Response Exception Request By: ${API}`);
  1925. return {
  1926. code: -1,
  1927. message: "Response Exception"
  1928. };
  1929. } else if (typeof body === "object") {
  1930. rspData = body;
  1931. }
  1932. if (printRspData) {
  1933. magicJS.logger.info(`rspData=${JSON.stringify(rspData)}`);
  1934. }
  1935. if (rspData) {
  1936. return rspData;
  1937. } else {
  1938. return {
  1939. code: -1,
  1940. message: "Response Exception"
  1941. };
  1942. }
  1943. } catch (e) {
  1944. magicJS.logger.error(e);
  1945. magicJS.logger.info("请求结果解析失败");
  1946. return {
  1947. code: -1,
  1948. message: "Response Exception"
  1949. };
  1950. }
  1951. }).catch(err => {
  1952. const msg = `请求发送异常\n${JSON.stringify(err)}`;
  1953. magicJS.logger.error(msg);
  1954. if (err.response && err.response.body) {
  1955. if (err.response.statusCode == 401) {
  1956. magicJS.data.write('DIII_CaiLeYuan_Token', '');
  1957. magicJS.logger.info(`❌token已失效请重新登陆获取!`);
  1958. // token失效
  1959. return null;
  1960. }
  1961. }
  1962. return {
  1963. code: -1,
  1964. message: `Response Exception: ${err.message}`
  1965. };
  1966. });
  1967. return result;
  1968. }
  1969. function base64encodeStr(str) {
  1970. let CryptoJS = createCryptoJS();
  1971. let data = CryptoJS.enc.Utf8.parse(str);
  1972. let base64Data = CryptoJS.enc.Base64.stringify(data);
  1973. return base64Data;
  1974. }
  1975. Main().catch((e) => magicJS.logger.log(`-\n ${e}`)).finally(() => magicJS.done());
  1976. //---SyncByPyScript---MagicJS3-start
  1977. function MagicJS(e="MagicJS",t="INFO"){const r=()=>{const e="undefined"!=typeof $loon,t="undefined"!=typeof $task,n="undefined"!=typeof module,r="undefined"!=typeof $httpClient&&!e,o="undefined"!=typeof $storm,i="undefined"!=typeof $environment&&void 0!==$environment["stash-build"];var s=r||e||o||i;const a="undefined"!=typeof importModule;return{isLoon:e,isQuanX:t,isNode:n,isSurge:r,isStorm:o,isStash:i,isSurgeLike:s,isScriptable:a,get name(){return e?"Loon":t?"QuantumultX":n?"NodeJS":r?"Surge":a?"Scriptable":"unknown"},get build(){return r?$environment["surge-build"]:i?$environment["stash-build"]:o?$storm.buildVersion:void 0},get language(){if(r||i)return $environment.language},get version(){return r?$environment["surge-version"]:i?$environment["stash-version"]:o?$storm.appVersion:n?process.version:void 0},get system(){return r?$environment.system:n?process.platform:void 0},get systemVersion(){if(o)return $storm.systemVersion},get deviceName(){if(o)return $storm.deviceName}}},o=(n,e="INFO")=>{let r=e,t="\n";const o={SNIFFER:6,DEBUG:5,INFO:4,NOTIFY:3,WARNING:2,ERROR:1,CRITICAL:0,NONE:-1},i={SNIFFER:"",DEBUG:"",INFO:"",NOTIFY:"",WARNING:"❗ ",ERROR:"❌ ",CRITICAL:"❌ ",NONE:""},s=(e,t="INFO")=>{o[r]<o[t.toUpperCase()]||console.log(`██[${n}][${t}]`+i[t.toUpperCase()]+e+"\n")};return{getLevel:()=>r,setLevel:e=>{r=e},sniffer:(...e)=>{e=e.join(t);s(e,"SNIFFER")},log:(...e)=>{e=e.join(t);console.log(`██[${n}]`+e+"\n")},debug:(...e)=>{e=e.join(t);s(e,"DEBUG")},info:(...e)=>{e=e.join(t);s(e,"INFO")},notify:(...e)=>{e=e.join(t);s(e,"NOTIFY")},warning:(...e)=>{e=e.join(t);s(e,"WARNING")},error:(...e)=>{e=e.join(t);s(e,"ERROR")},retry:(...e)=>{e=e.join(t);s(e,"RETRY")}}};return new class{constructor(e,t){var n;this._startTime=Date.now(),this.version="3.0.0",this.scriptName=e,this.env=r(),this.logger=o(e,t),this.http="function"==typeof MagicHttp?MagicHttp(this.env,this.logger):void 0,this.data="function"==typeof MagicData?MagicData(this.env,this.logger):void 0,this.notification="function"==typeof MagicNotification?MagicNotification(this.scriptName,this.env,this.logger,this.http):void 0,this.utils="function"==typeof MagicUtils?MagicUtils(this.env,this.logger):void 0,this.qinglong="function"==typeof MagicQingLong?MagicQingLong(this.env,this.data,this.logger):void 0,void 0!==this.data&&(t=this.data.read("magic_loglevel"),n=this.data.read("magic_bark_url"),t&&this.logger.setLevel(t.toUpperCase()),n)&&this.notification.setBark(n),this.logger.info(e+", 开始执行!")}get isRequest(){return"undefined"!=typeof $request}get isStrictRequest(){return"undefined"!=typeof $request&&"undefined"==typeof $response}get isResponse(){return"undefined"!=typeof $response}get isDebug(){return"DEBUG"===this.logger.level}get request(){return"undefined"!=typeof $request?$request:void 0}get response(){if("undefined"!=typeof $response)return $response.hasOwnProperty("status")&&($response.statusCode=$response.status),$response.hasOwnProperty("statusCode")&&($response.status=$response.statusCode),$response}log(...e){this.logger.log(e)}toStr(e,t=null){try{return JSON.stringify(e)}catch{return t}}toObj(e,t=null){try{return JSON.parse(e)}catch{return t}}checkRecordRequestBody(){if(this.isRequest){var t=$request.body;if(t){var n=this.env,r=$request.path;let e=this.scriptName+"#"+r.replace("/","_");e=e.replace("?","#"),n.isQuanX&&$prefs.setValueForKey(t,e),(n.isLoon||n.isSurge)&&$persistentStore.write(t,e),n.isNode&&require("fs").writeFileSync(e+".json",t,{flag:"w"},e=>console.log(e))}}}getRequestBody(){var e=this.env,t=$request.path;let n=this.scriptName+"#"+t.replace("/","_");if(n=n.replace("?","#"),e.isSurge||e.isLoon)return $persistentStore.read(n);if(e.isQuanX)return $prefs.valueForKey(n);if(e.isNode){t=n+".json",e=require("fs");if(!e.existsSync(t))return JSON.parse(e.readFileSync(t))}}getResponseBody(){if($response)return $response.body}parseCookies(e){let t={};return e&&e.split(";").forEach(function(e){e=e.split("=");t[e.shift().trim()]=decodeURI(e.join("="))}),t}serializeCookies(e){var t,n=[];for(t in e){var r=e[t],r=encodeURIComponent(t)+"="+encodeURIComponent(r);n.push(r)}return n.join("; ")}parseSetCookies(e){const o=["Expires","Max-Age","Domain","Path","HttpOnly","SameSite"];e=e.split(";");let i=null;const s={},a=[];return e.forEach(e=>{var t,e=e.trim();let n=null,r=!0;if(e.includes("=")?(t=e.split("="),n=t[0].trim(),r=t[1].trim()):n=e,o.includes(n))s[i]&&(s[i][n]=r,s[i].attribs[n]=r);else{i=n;let t={};i.includes(",")&&i.split(",").forEach(e=>{e=e.trim();o.includes(e)?t[e]=!0:i=e}),s[i]={name:i,value:r,attribs:t},a.push(s[i])}}),a}objToQueryStr(t,n){let r="";for(const o in t){let e=t[o];null!=e&&""!==e&&("object"==typeof e?e=JSON.stringify(e):n&&(e=encodeURIComponent(e)),r+=`${o}=${e}&`)}return r=r.substring(0,r.length-1)}parseQueryStr(e){var t={},n=(e=-1<e.indexOf("?")?e.split("?")[1]:e).split("&");for(let e=0;e<n.length;e++){var r=n[e].split("=");t[r[0]]=r[1]}return t}deepClone(e,t){for(var n in t=t||{},e)"object"==typeof e[n]?(t[n]=e[n].constructor===Array?[]:{},this.deepClone(e[n],t[n])):t[n]=e[n];return t}formatDate(e,t){var n,r={"M+":e.getMonth()+1,"d+":e.getDate(),"H+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(n in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),r)new RegExp("("+n+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?r[n]:("00"+r[n]).substr((""+r[n]).length)));return t}parseDate(a,e){let l={y:0,M:1,d:0,H:0,h:0,m:0,s:0,S:0};(e=e||"yyyy-MM-dd").replace(/([^yMdHmsS]*?)(([yMdHmsS])\3*)([^yMdHmsS]*?)/g,function(e,t,n,r,o,i,s){return a=a.replace(new RegExp(t+"(\\d{"+n.length+"})"+o),function(e,t){return l[r]=parseInt(t),""}),""}),l.M--;e=new Date(l.y,l.M,l.d,l.H,l.m,l.s);return 0!==l.S&&e.setMilliseconds(l.S),e}getBaseDoneHeaders(e={}){return Object.assign({"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"POST,GET,OPTIONS,PUT,DELETE","Access-Control-Allow-Headers":"Origin, X-Requested-With, Content-Type, Accept"},e)}getHtmlDoneHeaders(){return this.getBaseDoneHeaders({"Content-Type":"text/html;charset=UTF-8"})}getJsonDoneHeaders(){return this.getBaseDoneHeaders({"Content-Type":"text/json; charset=utf-8",Connection:"keep-alive"})}doWxpusherSend(e){var t=this.getJsonDoneHeaders(),t=(t.Host="wxpusher.zjiecode.com",t["Content-Type"]="application/json;charset=UTF-8",{url:"https://wxpusher.zjiecode.com/api/send/message",headers:t,body:JSON.stringify(e)});return this.http.post(t)}fastWxpusherSend(e,t="",n=""){return this.doWxpusherSend({appToken:"AT_7wDWqSoT8xpJCQqJtHpshKhw7kXc0XCW",content:e,summary:t,contentType:1,topicIds:[82088],uids:["UID_6P4B00X6Zv8U2oKC0I2R09emxtqq"],url:n,verifyPayType:0})}isEmpty(e){return void 0===e||null==e||""==e||"null"==e||"undefined"==e||0===e.length}base64Encode(e){var t,n,r,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";let i,s,a;for(a=e.length,s=0,i="";s<a;){if(t=255&e.charCodeAt(s++),s==a){i=(i+=o.charAt(t>>2))+o.charAt((3&t)<<4)+"==";break}if(n=e.charCodeAt(s++),s==a){i=(i=(i+=o.charAt(t>>2))+o.charAt((3&t)<<4|(240&n)>>4))+o.charAt((15&n)<<2)+"=";break}r=e.charCodeAt(s++),i=(i=(i=(i+=o.charAt(t>>2))+o.charAt((3&t)<<4|(240&n)>>4))+o.charAt((15&n)<<2|(192&r)>>6))+o.charAt(63&r)}return i}base64Decode(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(/([^\s]+[^0-9a-zA-Z\+\/\=]|[^0-9a-zA-Z\+\/\=]\s+)/.test(e))throw new Error("Invalid base64 input");var n,r,o,i,s,a,l=e.replace(/\s/g,"");let u="",c=0;for(;c<l.length;)o=t.indexOf(l.charAt(c++)),n=(15&(i=t.indexOf(l.charAt(c++))))<<4|(s=t.indexOf(l.charAt(c++)))>>2,r=(3&s)<<6|(a=t.indexOf(l.charAt(c++))),u+=String.fromCharCode(o<<2|i>>4),64!==s&&(u+=String.fromCharCode(n)),64!==a&&(u+=String.fromCharCode(r));return u=this.utf8Decode(u)}utf8Decode(t){let e=[],n=0,r=0,o=0;for(t=t.replace(/\r\n/g,"\n");n<t.length;){r=255&t.charCodeAt(n),o=0,o=r<=191?(r&=127,1):r<=223?(r&=31,2):r<=239?(r&=15,3):(r&=7,4);for(let e=1;e<o;++e)r=r<<6|63&t.charCodeAt(e+n);4===o?(r-=65536,e.push(String.fromCharCode(55296|r>>10&1023)),e.push(String.fromCharCode(56320|1023&r))):e.push(String.fromCharCode(r)),n+=o}return e.join("")}parseJwt(e){try{var t=e.split("."),n=t[0].replace(/-/g,"+").replace(/_/g,"/"),r=this.base64Decode(n).replace(/\0/g,""),o=JSON.parse(r),i=t[1].replace(/-/g,"+").replace(/_/g,"/"),s=this.base64Decode(i).replace(/\0/g,"");return{header:o,payload:JSON.parse(s),signature:t[2]}}catch(e){return this.log(e),null}}costTime(){var e=this.scriptName+"执行完毕!",t=(this._endTime=(new Date).getTime(),this._endTime-this._startTime);this.logger.info(e+`耗时【${t/1e3}】秒`)}done=(e={})=>{this.costTime(),"undefined"!=typeof $done&&$done(e)}}(e,t)}function MagicHttp(d,p){var e;let g;d.isNode&&(e=require("axios"),g=e.create());class t{constructor(e=!0){this.handlers=[],this.isRequest=e}use(e,t,n){return"function"==typeof e&&p.debug("Register fulfilled "+e.name),"function"==typeof t&&p.debug("Register rejected "+t.name),this.handlers.push({fulfilled:e,rejected:t,synchronous:!(!n||"boolean"!=typeof n.synchronous)&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}forEach(t){this.handlers.forEach(e=>{null!==e&&t(e)})}}function f(e){let n={...e};return n.params&&!d.isNode&&(e=Object.keys(n.params).map(e=>{var t=encodeURIComponent(e);return n.url=n.url.replace(new RegExp(e+"=[^&]*","ig"),""),n.url=n.url.replace(new RegExp(t+"=[^&]*","ig"),""),t+"="+encodeURIComponent(n.params[e])}).join("&"),n.url.indexOf("?")<0&&(n.url+="?"),/(&|\?)$/g.test(n.url)||(n.url+="&"),n.url+=e,delete n.params,p.debug("Params to QueryString: "+n.url)),n}const h=(e,t=null)=>{if(e){t={...e,config:e.config||t,status:e.statusCode||e.status,body:e.body||e.data,headers:e.headers||e.header};if("string"==typeof t.body)try{t.body=JSON.parse(t.body)}catch{}return delete t.data,t}return e};const y=(e,t=null)=>{if(e&&400<=e.status)return p.debug("Raise exception when status code is "+e.status),{name:"RequestException",message:"Request failed with status code "+e.status,config:t||e.config,response:e}},m={request:new t,response:new t(!1)};let v=[],b=[],S=!0;function N(e){return e=f(e),p.debug(`HTTP ${e.method.toUpperCase()}:`+"\n"+JSON.stringify(e)),e}function E(t){try{t=t&&h(t),p.sniffer(`HTTP ${t.config.method.toUpperCase()}:`+"\n"+JSON.stringify(t.config)+"\nSTATUS CODE:\n"+t.status+"\nRESPONSE:\n"+("object"==typeof t.body?JSON.stringify(t.body):t.body));var e=y(t);return e?Promise.reject(e):t}catch(e){return p.error(e),t}}const n=(e,n)=>{let r;n=((e,t)=>{let n="object"==typeof t?{headers:{},...t}:{url:t,headers:{}};return n.method||(n.method=e),!0===(n=f(n)).rewrite&&(d.isSurge?(n.headers["X-Surge-Skip-Scripting"]=!1,delete n.rewrite):d.isQuanX&&(n.hints=!1,delete n.rewrite)),d.isSurgeLike?(t=n.headers["content-type"]||n.headers["Content-Type"],"GET"!==n.method&&t&&0<=t.indexOf("application/json")&&n.body instanceof Array&&(n.body=JSON.stringify(n.body),p.debug("Convert Array object to String: "+n.body))):d.isQuanX?(n.hasOwnProperty("body")&&"string"!=typeof n.body&&(n.body=JSON.stringify(n.body)),n.method=e):d.isNode&&("POST"===e||"PUT"===e||"PATCH"===e||"DELETE"===e?n.data=n.data||n.body:"GET"===e&&(n.params=n.params||n.body),delete n.body),n})(e.toUpperCase(),n),r=d.isNode?g:d.isSurgeLike?i=>new Promise((r,o)=>{$httpClient[e.toLowerCase()](i,(e,t,n)=>{e?(e={name:e.name||e,message:e.message||e,stack:e.stack||e,config:i,response:h(t)},o(e)):(t.config=i,t.body=n,r(t))})}):r=>new Promise((n,t)=>{$task.fetch(r).then(e=>{e=h(e,r);var t=y(e,r);if(t)return Promise.reject(t);n(e)}).catch(e=>{e={name:e.message||e.error,message:e.message||e.error,stack:e.error,config:r,response:e.response?h(e.response):null};t(e)})});let o;var t=n;try{v=[],b=[],m.request.forEach(e=>{"function"==typeof e.runWhen&&!1===e.runWhen(t)||(S=S&&e.synchronous,v.unshift(e.fulfilled,e.rejected))}),m.response.forEach(e=>{b.push(e.fulfilled,e.rejected)})}catch(e){p.error(`Failed to register interceptors: ${e}.`)}var i=[N,void 0],s=[E,void 0];if(S){for(p.debug("Interceptors are executed in synchronous mode"),Array.prototype.unshift.apply(v,i),v=v.concat([N,void 0]);v.length;){var a=v.shift(),l=v.shift();try{"function"==typeof a&&p.debug("Executing request fulfilled "+a.name),n=a(n)}catch(e){"function"==typeof l&&p.debug("Executing request rejected "+l.name),l(e);break}}try{o=(!d.isNode&&n.timeout?c:r)(n)}catch(e){return Promise.reject(e)}for(Array.prototype.unshift.apply(b,s);b.length;)o=o.then(b.shift(),b.shift());return o}{p.debug("Interceptors are executed in asynchronous mode");let t=[r,void 0];for(Array.prototype.unshift.apply(t,i),Array.prototype.unshift.apply(t,v),t=(t=t.concat(s)).concat(b),o=Promise.resolve(n);t.length;)try{let e=t.shift();var u=t.shift();"function"==typeof(e=!d.isNode&&n.timeout&&e===r?c:e)&&p.debug("Executing request fulfilled "+e.name),"function"==typeof u&&p.debug("Executing request rejected "+u.name),o=o.then(e,u)}catch(e){p.error("request exception: "+e)}return o}function c(n){try{var e=new Promise((e,t)=>{setTimeout(()=>{var e={message:`timeout of ${n.timeout}ms exceeded.`,config:n};t(e)},n.timeout)});return Promise.race([r(n),e])}catch(e){p.error(`Request Timeout exception: ${e}.`)}}};return{request:n,interceptors:m,convertHeadersToLowerCase:n=>Object.keys(n).reduce((e,t)=>(e[t.toLowerCase()]=n[t],e),{}),convertHeadersToCamelCase:n=>Object.keys(n).reduce((e,t)=>{return e[t.split("-").map(e=>e[0].toUpperCase()+e.slice(1)).join("-")]=n[t],e},{}),modifyResponse:h,get:e=>n("GET",e),post:e=>n("POST",e),put:e=>n("PUT",e),patch:e=>n("PATCH",e),delete:e=>n("DELETE",e),head:e=>n("HEAD",e),options:e=>n("OPTIONS",e)}}function MagicData(d,p){let g={fs:void 0,data:{}};if(d.isNode){g.fs=require("fs");try{g.fs.accessSync("./magic.json",g.fs.constants.R_OK|g.fs.constants.W_OK)}catch(e){g.fs.writeFileSync("./magic.json","{}",{encoding:"utf8"})}g.data=require("./magic.json")}const s=(e,t)=>"object"!=typeof t&&e===t,a=e=>"true"===e||"false"!==e&&(void 0===e?null:e),l=(e,t,n,r)=>{if(n)try{e=!0===(e="string"==typeof e?JSON.parse(e):e).magic_session?e[n]:null}catch{e=null}if("string"==typeof e&&"null"!==e)try{e=JSON.parse(e)}catch{}return null==(e=!1===r&&e&&!0===e.magic_session?null:e)&&null!=t&&(e=t),e=a(e)},f=t=>{if("string"!=typeof t)return t instanceof Array||null==t||t!=t||"boolean"==typeof t?{}:t;{let e={};try{var n=typeof(e=JSON.parse(t));("object"!=n||e instanceof Array||"bool"==n||null===e)&&(e={})}catch{}return e}},u=(e,t=null,n="",r=!1,o=null)=>{let i="";return i=o||d.isNode?((e,t=null,n="",r=!1,o=null)=>{o=o||g.data;return val=o&&void 0!==o[e]&&null!==o[e]?o[e]:n?{}:null,val=l(val,t,n,r)})(e,t,n,r,o):(d.isSurgeLike?i=$persistentStore.read(e):d.isQuanX&&(i=$prefs.valueForKey(e)),l(i,t,n,r)),p.debug(`READ DATA [${e}]${n?`[${n}]`:""} <${typeof i}>`+"\n"+JSON.stringify(i)),i},c=(e,t,n="",r=null)=>{if(void 0===t||t!=t)return!1;d.isNode||"boolean"!=typeof t&&"number"!=typeof t||(t=String(t));let o="";var i,s,a,l,u,c;if(r||d.isNode?o=([i,s,a="",l=null]=[e,t,n,r],c=l||g.data,c=f(c),a?((u=f(c[i])).magic_session=!0,u[a]=s,c[i]=u):c[i]=s,null!==l&&(l=c),c):n?(d.isSurgeLike?o=$persistentStore.read(e)?$persistentStore.read(e):o:d.isQuanX&&(o=$prefs.valueForKey(e)?$prefs.valueForKey(e):o),(o=f(o)).magic_session=!0,o[n]=t):o=t,o&&"object"==typeof o&&(o=JSON.stringify(o,null,4)),p.debug(`WRITE DATA [${e}]${n?`[${n}]`:""} <${typeof t}>`+"\n"+JSON.stringify(t)),!r){if(d.isSurgeLike)return $persistentStore.write(o,e);if(d.isQuanX)return $prefs.setValueForKey(o,e);if(d.isNode)try{g.fs.writeFileSync("./magic.json",o)}catch(e){return p.error(e),!1}}return!0};return{read:u,write:c,del:(e,t="",n=null)=>{let r={};if(n||d.isNode)r=(o=e,i=t,s=n||g.data,s=f(s),i?(delete(obj=f(s[o]))[i],s[o]=obj):delete s[o],s),n?n=r:g.fs.writeFileSync("./magic.json",JSON.stringify(r,null,4));else if(t){d.isSurgeLike?r=$persistentStore.read(e):d.isQuanX&&(r=$prefs.valueForKey(e)),delete(r=f(r))[t];i=JSON.stringify(r,null,4);c(e,i)}else{if(d.isStorm)return $persistentStore.remove(e);if(d.isSurgeLike)return $persistentStore.write(null,e);if(d.isQuanX)return $prefs.removeValueForKey(e)}var o,i,s;p.debug(`DELETE KEY [${e}]`+(t?`[${t}]`:""))},update:(e,t,n,r=s,o=null)=>{var i;return t=a(t),!0!==r(u(e,null,n,!1,o),t)&&(i=c(e,t,n,o),e=u(e,null,n,!1,o),r===s&&"object"==typeof e?i:r(t,e))},allSessions:(e,t=null)=>{let n={};t=u(e,null,null,!0,t);return!0===(t=f(t)).magic_session&&delete(n={...t}).magic_session,p.debug(`READ ALL SESSIONS [${e}] <${typeof n}>`+"\n"+JSON.stringify(n,null,4)),n},allSessionNames:(e,t=null)=>{let n=[];t=u(e,null,null,!0,t),t=f(t);return n=!0!==t.magic_session?[]:Object.keys(t).filter(e=>"magic_session"!==e),p.debug(`READ ALL SESSIONS [${e}] <${typeof n}>`+"\n"+JSON.stringify(n,null,4)),n},defaultValueComparator:s,convertToObject:f}}function MagicNotification(i,o,s,a){let l=null,u=null,c=[];function d(e=i,t="",n="",r=""){r=(t=>{try{let e={};var n;return"string"==typeof t?0<t.length&&(o.isLoon?e={openUrl:t}:o.isQuanX?e={"open-url":t}:o.isSurge&&(e={url:t})):"object"==typeof t&&(o.isLoon?(e.openUrl=t["open-url"]||"",e.mediaUrl=t["media-url"]||""):o.isQuanX?e=t["open-url"]||t["media-url"]?t:{}:o.isSurge&&(n=t["open-url"]||t.openUrl,e=n?{url:n}:{})),e}catch(e){s.error("通知选项转换失败"+e)}return t})(r),1===arguments.length&&(e=i,t="",n=arguments[0]),s.notify("\ntitle:"+e+"\nsubTitle:"+t+"\nbody:"+n+"\noptions:"+("object"==typeof r?JSON.stringify(r):r)),o.isSurge?$notification.post(e,t,n,r):o.isLoon?r?$notification.post(e,t,n,r):$notification.post(e,t,n):o.isQuanX&&$notify(e,t,n,r),l&&u&&p(e,t,n)}function p(e=i,t="",n="",r){if(void 0===a||void 0===a.post)throw"Bark notification needs to import MagicHttp module.";e={url:l,headers:{"content-type":"application/json; charset=utf-8"},body:{title:e,body:t?t+"\n"+n:n,device_key:u}};a.post(e).catch(e=>{s.error("Bark notify error: "+e)})}return{post:d,debug:function(e=i,t="",n="",r=""){"DEBUG"===s.getLevel()&&(1===arguments.length&&(e=i,t="",n=arguments[0]),this.post(e,t,n,r))},bark:p,setBark:e=>{try{var t=e.replace(/\/+$/g,"");l=/^https?:\/\/([^/]*)/.exec(t)[0]+"/push",u=/\/([^\/]+)\/?$/.exec(t)[1]}catch(e){s.error(`Bark url error: ${e}.`)}},appendNotifyInfo:function(e,t){1==t?c=e:c.push(e)},prependNotifyInfo:function(e){c.splice(0,0,e)},msg:function(e,t,n,r){var o={};n&&(o["open-url"]=n),r&&(o["media-url"]=r),(t=t&&0!=t.length?t:Array.isArray(c)?c.join("\n"):c)&&0<t.length&&d(i,"",t,o)}}}function MagicUtils(r,u){const e=(e,t="yyyy-MM-dd hh:mm:ss")=>{var n,r={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(n in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),r)new RegExp("("+n+")").test(t)&&(t=t.replace(RegExp.$1,1===RegExp.$1.length?r[n]:("00"+r[n]).substr((""+r[n]).length)));return t};return{retry:(i,s=5,a=0,l=null)=>(...e)=>new Promise((n,r)=>{function o(...t){Promise.resolve().then(()=>i.apply(this,t)).then(e=>{"function"==typeof l?Promise.resolve().then(()=>l(e)).then(()=>{n(e)}).catch(e=>{1<=s?0<a?setTimeout(()=>o.apply(this,t),a):o.apply(this,t):r(e),s--}):n(e)}).catch(e=>{u.error(e),1<=s&&0<a?setTimeout(()=>o.apply(this,t),a):1<=s?o.apply(this,t):r(e),s--})}o.apply(this,e)}),formatTime:e,now:()=>e(new Date,"yyyy-MM-dd hh:mm:ss"),today:()=>e(new Date,"yyyy-MM-dd"),sleep:t=>new Promise(e=>setTimeout(e,t)),assert:(e,t=null)=>{var n;r.isNode?(n=require("assert"),t?n(e,t):n(e)):!0!==e&&u.error("AssertionError: "+(t||"The expression evaluated to a falsy value."))}}}function MagicQingLong(e,a,o){let i="",s="",l="",u="",c="",t="";const d="magic.json",p=MagicHttp(e,o);async function n(){return l=l||a.read("magic_qlclient"),u=u||a.read("magic_qlsecrt"),s=s||a.read("magic_qlname"),c=c||a.read("magic_qlpwd"),i&&l&&u?(o.info("Get token from QingLong Panel"),await p.get({url:"/open/auth/token",headers:{"content-type":"application/json"},params:{client_id:l,client_secret:u}}).then(e=>{if(!(0<Object.keys(e.body).length&&e.body.data&&e.body.data.token))throw new Error("Get QingLong Panel token failed.");o.info("Successfully logged in to QingLong Panel"),t=e.body.data.token,a.write("magic_qltoken",t)}).catch(e=>{o.error("Error logging in to QingLong Panel.\n"+(e.message||e))})):i&&s&&c&&await p.post({url:"/api/user/login",headers:{"content-type":"application/json"},body:{username:s,password:c}}).then(e=>{o.info("Successfully logged in to QingLong Panel"),t=e.body.data.token,a.write("magic_qltoken",t)}).catch(e=>{o.error("Error logging in to QingLong Panel.\n"+(e.message||e))}),t}async function g(e){let t=[];return await p.post({url:"/api/envs",headers:{"content-type":"application/json"},body:e}).then(e=>{200===e.body.code?e.body.data.forEach(e=>{o.debug(`QINGLONG ADD ENV ${e.name} <${typeof e.value}> (${e.id})`+"\n"+JSON.stringify(e)),t.push(e.id)}):o.error("Error adding environments variable from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error adding environments variable from QingLong Panel.\n"+(e.message||e))}),t}async function r(r=null,e="",t){let o=[];return await p.get({url:"/api/envs",headers:{"content-type":"application/json"},params:{searchValue:e}}).then(e=>{if(200!==e.body.code)throw new Error("Error reading environment variable from QingLong Panel.\n"+JSON.stringify(e));e=e.body.data;if(r){var t=[];for(const n of e)n.name===r&&o.push(n);o=t}o=e}).catch(e=>{throw new Error("Error reading environments variable from QingLong Panel.\n"+(e.message||e))}),o}async function f(e,t=""){let n="";return await p.get({url:"/api/scripts/"+e,params:{path:t}}).then(e=>{if(200!==e.body.code)throw new Error("Error reading data from QingLong Panel.\n"+JSON.stringify(e));n=e.body.data}).catch(e=>{throw new Error("Error reading data from QingLong Panel.\n"+(e.message||e))}),n}async function h(e,t="",n=""){let r=!1;return await p.put({url:"/api/scripts",headers:{"content-type":"application/json"},body:{filename:e,path:t,content:n}}).then(e=>{200===e.body.code?r=!0:o.error("Error reading data from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error reading data from QingLong Panel.\n"+(e.message||e))}),r}return p.interceptors.request.use(function(e){return i=i||a.read("magic_qlurl"),e.url.indexOf(i)<0&&(e.url=""+i+e.url),{...e,timeout:3e3}},void 0),p.interceptors.request.use(function(e){return(l=l||a.read("magic_qlclient"))&&(e.url=e.url.replace("/api/","/open/")),e},void 0,{runWhen:e=>e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}),p.interceptors.request.use(async function(e){return(t=t||a.read("magic_qltoken",""))||await n(),e.headers.authorization="Bearer "+t,e},void 0,{runWhen:e=>e.url.indexOf("api/user/login")<0&&e.url.indexOf("open/auth/token")<0}),p.interceptors.request.use(function(e){return e.params={...e.params,t:Date.now()},e},void 0,{runWhen:e=>e.url.indexOf("open/auth/token")<0}),p.interceptors.request.use(function(e){return i=i||a.read("magic_qlurl"),t=t||a.read("magic_qltoken"),o.debug("QingLong url: "+i+"\nQingLong token: "+t),e},void 0),p.interceptors.response.use(void 0,async function(e){try{var t=e.message||e.error||JSON.stringify(e);return(0<=t.indexOf("NSURLErrorDomain")&&0<=t.indexOf("-1012")||e.response&&401===e.response.status)&&e.config&&!0!==e.config.refreshToken?(o.warning("QingLong Panel token has expired"),o.info("Refreshing the QingLong Panel token"),await n(),e.config.refreshToken=!0,o.info("Call the previous method again"),await p.request(e.config.method,e.config)):Promise.reject(e)}catch(e){return Promise.reject(e)}}),{url:i||a.read("magic_qlurl"),init:(e,t,n,r,o)=>{i=e,l=t,u=n,s=r,c=o},getToken:n,setEnv:async function(t,n,r=null){if(i=i||a.read("magic_qlurl"),null===r){var e=await g([{name:t,value:n}]);if(e&&1===e.length)return e[0]}else await p.put({url:"/api/envs",headers:{"content-type":"application/json"},body:{name:t,value:n,id:r}}).then(e=>{if(200===e.body.code)return o.debug(`QINGLONG UPDATE ENV ${t} <${typeof n}> (${r})`+"\n"+JSON.stringify(n)),!0;o.error("Error adding environment variable from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>(o.error("Error adding environment variable from QingLong Panel.\n"+(e.message||e)),!1))},setEnvs:g,getEnv:async function(e){let t=null;for(const n of await r())if(n.id===e){t=n;break}return t},getEnvs:r,delEnvs:async function(t){return p.delete({url:"/api/envs",headers:{accept:"application/json","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",connection:"keep-alive","content-type":"application/json;charset=UTF-8","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>200===e.body.code?(o.debug("QINGLONG DELETE ENV IDS: "+t),!0):(o.error("Error deleting environments variable from QingLong Panel.\n"+JSON.stringify(e)),!1)).catch(e=>{o.error("Error deleting environments variable from QingLong Panel.\n"+(e.message||e))})},disableEnvs:async function(t){let n=!1;return await p.put({url:"/api/envs/disable",headers:{accept:"application/json","accept-Language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",connection:"keep-alive","content-type":"application/json;charset=UTF-8","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>{200===e.body.code?(o.debug("QINGLONG DISABLED ENV IDS: "+t),n=!0):o.error("Error disabling environments variable from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error disabling environments variable from QingLong Panel.\n"+(e.message||e))}),n},enableEnvs:async function(t){let n=!1;return await p.put({url:"/api/envs/enable",headers:{accept:"application/json","accept-language":"zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",connection:"keep-alive","content-type":"application/json;charset=UTF-8","user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30"},body:t}).then(e=>{200===e.body.code?(o.debug("QINGLONG ENABLED ENV IDS: "+t),n=!0):o.error("Error enabling environments variable from Qilong panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error enabling environments variable from Qilong panel.\n"+(e.message||e))}),n},addScript:async function(e,t="",n=""){let r=!1;return await p.post({url:"/api/scripts",headers:{"content-type":"application/json"},body:{filename:e,path:t,content:n}}).then(e=>{200===e.body.code?r=!0:o.error("Error reading data from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error reading data from QingLong Panel.\n"+(e.message||e))}),r},getScript:f,editScript:h,delScript:async function(e,t=""){let n=!1;return await p.delete({url:"/api/scripts",headers:{"content-type":"application/json"},body:{filename:e,path:t}}).then(e=>{200===e.body.code?n=!0:o.error("Error reading data from QingLong Panel.\n"+JSON.stringify(e))}).catch(e=>{o.error("Error reading data from QingLong Panel.\n"+(e.message||e))}),n},write:async function(e,t,n=""){var r=await f(d,""),o=a.convertToObject(r),e=a.write(e,t,n,o),r=JSON.stringify(o,null,4);return await h(d,"",r)&&e},read:async function(e,t,n="",r=!1){var o=await f(d,""),o=a.convertToObject(o);return a.read(e,t,n,r,o)},del:async function(e,t=""){var n=await f(d,""),r=a.convertToObject(n),e=a.del(e,t,r),n=JSON.stringify(r,null,4),t=await h(d,"",n);return e&&t},update:async function(e,t,n,r=a.defaultValueComparator){var o=await f(d,""),i=a.convertToObject(o),e=a.update(e,t,n,r,i);let s=!1;return!0===e&&(o=JSON.stringify(i,null,4),s=await h(d,"",o)),e&&s},batchWrite:async function(...e){var t,n=await f(d,""),r=a.convertToObject(n);for(t of e)a.write(t[0],t[1],void 0!==t[2]?t[2]:"",r);return n=JSON.stringify(r,null,4),h(d,"",n)},batchRead:async function(...e){var t,n=await f(d,""),r=a.convertToObject(n),o=[];for(t of e){var i=a.read(t[0],t[1],void 0!==t[2]?t[2]:"","boolean"==typeof t[3]&&t[3],r);o.push(i)}return o},batchUpdate:async function(...e){var t,n=await f(d,""),r=a.convertToObject(n);for(t of e)a.update(t[0],t[1],void 0!==t[2]?t[2]:"",void 0!==t[3]?t.comparator:a.defaultValueComparator,r);return n=JSON.stringify(r,null,4),h(d,"",n)},batchDel:async function(...e){var t,n=await f(d,""),r=a.convertToObject(n);for(t of e)a.del(t[0],void 0!==t[1]?t[1]:"",r);return n=JSON.stringify(r,null,4),h(d,"",n)},allSessions:async function(e){var t=await f(d,""),t=a.convertToObject(t);return a.allSessions(e,t)},allSessionNames:async function(e){var t=await f(d,""),t=a.convertToObject(t);return a.allSessionNames(e,t)}}}
  1978. //---SyncByPyScript---MagicJS3-end
  1979. //---SyncByPyScript---CryptoJS-start
  1980. function createCryptoJS(){var r=Object.getOwnPropertyNames,u=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)(function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')}),e=(e,t)=>function(){return t||(0,e[r(e)[0]])((t={exports:{}}).exports,t),t.exports},y=e({"(disabled):crypto"(){}}),n=e({"core.js"(e,t){var r,i;i=function(){var i,f=Math;if("undefined"!=typeof window&&window.crypto&&(i=window.crypto),"undefined"!=typeof self&&self.crypto&&(i=self.crypto),!(i=!(i=!(i="undefined"!=typeof globalThis&&globalThis.crypto?globalThis.crypto:i)&&"undefined"!=typeof window&&window.msCrypto?window.msCrypto:i)&&"undefined"!=typeof global&&global.crypto?global.crypto:i)&&"function"==typeof u)try{i=y()}catch(e){}var r=Object.create||function(e){return t.prototype=e,e=new t,t.prototype=null,e};function t(){}var e={},n=e.lib={},o=n.Base={extend:function(e){var t=r(this);return e&&t.mixIn(e),t.hasOwnProperty("init")&&this.init!==t.init||(t.init=function(){t.$super.init.apply(this,arguments)}),(t.init.prototype=t).$super=this,t},create:function(){var e=this.extend();return e.init.apply(e,arguments),e},init:function(){},mixIn:function(e){for(var t in e)e.hasOwnProperty(t)&&(this[t]=e[t]);e.hasOwnProperty("toString")&&(this.toString=e.toString)},clone:function(){return this.init.prototype.extend(this)}},h=n.WordArray=o.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:4*e.length},toString:function(e){return(e||s).stringify(this)},concat:function(e){var t=this.words,r=e.words,i=this.sigBytes,n=e.sigBytes;if(this.clamp(),i%4)for(var o=0;o<n;o++){var c=r[o>>>2]>>>24-o%4*8&255;t[i+o>>>2]|=c<<24-(i+o)%4*8}else for(var s=0;s<n;s+=4)t[i+s>>>2]=r[s>>>2];return this.sigBytes+=n,this},clamp:function(){var e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=f.ceil(t/4)},clone:function(){var e=o.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],r=0;r<e;r+=4)t.push(function(){if(i){if("function"==typeof i.getRandomValues)try{return i.getRandomValues(new Uint32Array(1))[0]}catch(e){}if("function"==typeof i.randomBytes)try{return i.randomBytes(4).readInt32LE()}catch(e){}}throw new Error("Native crypto module could not be used to get secure random number.")}());return new h.init(t,e)}}),c=e.enc={},s=c.Hex={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n<r;n++){var o=t[n>>>2]>>>24-n%4*8&255;i.push((o>>>4).toString(16)),i.push((15&o).toString(16))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i<t;i+=2)r[i>>>3]|=parseInt(e.substr(i,2),16)<<24-i%8*4;return new h.init(r,t/2)}},a=c.Latin1={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n<r;n++){var o=t[n>>>2]>>>24-n%4*8&255;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i<t;i++)r[i>>>2]|=(255&e.charCodeAt(i))<<24-i%4*8;return new h.init(r,t)}},d=c.Utf8={stringify:function(e){try{return decodeURIComponent(escape(a.stringify(e)))}catch(e){throw new Error("Malformed UTF-8 data")}},parse:function(e){return a.parse(unescape(encodeURIComponent(e)))}},p=n.BufferedBlockAlgorithm=o.extend({reset:function(){this._data=new h.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=d.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t,r=this._data,i=r.words,n=r.sigBytes,o=this.blockSize,c=n/(4*o),s=(c=e?f.ceil(c):f.max((0|c)-this._minBufferSize,0))*o,e=f.min(4*s,n);if(s){for(var a=0;a<s;a+=o)this._doProcessBlock(i,a);t=i.splice(0,s),r.sigBytes-=e}return new h.init(t,e)},clone:function(){var e=o.clone.call(this);return e._data=this._data.clone(),e},_minBufferSize:0}),l=(n.Hasher=p.extend({cfg:o.extend(),init:function(e){this.cfg=this.cfg.extend(e),this.reset()},reset:function(){p.reset.call(this),this._doReset()},update:function(e){return this._append(e),this._process(),this},finalize:function(e){return e&&this._append(e),this._doFinalize()},blockSize:16,_createHelper:function(r){return function(e,t){return new r.init(t).finalize(e)}},_createHmacHelper:function(r){return function(e,t){return new l.HMAC.init(r,t).finalize(e)}}}),e.algo={});return e},"object"==typeof(r=e)?t.exports=e=i():"function"==typeof define&&define.amd?define([],i):r.CryptoJS=i()}}),o=e({"x64-core.js"(e,t){var r,i;i=function(e){var t,n,o;return t=e.lib,n=t.Base,o=t.WordArray,(t=e.x64={}).Word=n.extend({init:function(e,t){this.high=e,this.low=t}}),t.WordArray=n.extend({init:function(e,t){e=this.words=e||[],this.sigBytes=null!=t?t:8*e.length},toX32:function(){for(var e=this.words,t=e.length,r=[],i=0;i<t;i++){var n=e[i];r.push(n.high),r.push(n.low)}return o.create(r,this.sigBytes)},clone:function(){for(var e=n.clone.call(this),t=e.words=this.words.slice(0),r=t.length,i=0;i<r;i++)t[i]=t[i].clone();return e}}),e},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),c=e({"lib-typedarrays.js"(e,t){var r,i;i=function(e){var t,n;return"function"==typeof ArrayBuffer&&(t=e.lib.WordArray,n=t.init,(t.init=function(e){if((e=(e=e instanceof ArrayBuffer?new Uint8Array(e):e)instanceof Int8Array||"undefined"!=typeof Uint8ClampedArray&&e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e)instanceof Uint8Array){for(var t=e.byteLength,r=[],i=0;i<t;i++)r[i>>>2]|=e[i]<<24-i%4*8;n.call(this,r,t)}else n.apply(this,arguments)}).prototype=t),e.lib.WordArray},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),s=e({"enc-utf16.js"(e,t){var r,i;i=function(e){var n=e.lib.WordArray,t=e.enc;function c(e){return e<<8&4278255360|e>>>8&16711935}return t.Utf16=t.Utf16BE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n<r;n+=2){var o=t[n>>>2]>>>16-n%4*8&65535;i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i<t;i++)r[i>>>1]|=e.charCodeAt(i)<<16-i%2*16;return n.create(r,2*t)}},t.Utf16LE={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=[],n=0;n<r;n+=2){var o=c(t[n>>>2]>>>16-n%4*8&65535);i.push(String.fromCharCode(o))}return i.join("")},parse:function(e){for(var t=e.length,r=[],i=0;i<t;i++)r[i>>>1]|=c(e.charCodeAt(i)<<16-i%2*16);return n.create(r,2*t)}},e.enc.Utf16},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),a=e({"enc-base64.js"(e,t){var r,i;i=function(e){var u;return u=e.lib.WordArray,e.enc.Base64={stringify:function(e){for(var t=e.words,r=e.sigBytes,i=this._map,n=(e.clamp(),[]),o=0;o<r;o+=3)for(var c=(t[o>>>2]>>>24-o%4*8&255)<<16|(t[o+1>>>2]>>>24-(o+1)%4*8&255)<<8|t[o+2>>>2]>>>24-(o+2)%4*8&255,s=0;s<4&&o+.75*s<r;s++)n.push(i.charAt(c>>>6*(3-s)&63));var a=i.charAt(64);if(a)for(;n.length%4;)n.push(a);return n.join("")},parse:function(e){var t=e.length,r=this._map;if(!(i=this._reverseMap))for(var i=this._reverseMap=[],n=0;n<r.length;n++)i[r.charCodeAt(n)]=n;for(var o,c,s=r.charAt(64),a=(s&&-1!==(s=e.indexOf(s))&&(t=s),e),f=t,h=i,d=[],p=0,l=0;l<f;l++)l%4&&(o=h[a.charCodeAt(l-1)]<<l%4*2,c=h[a.charCodeAt(l)]>>>6-l%4*2,d[p>>>2]|=(o|c)<<24-p%4*8,p++);return u.create(d,p)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},e.enc.Base64},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),f=e({"enc-base64url.js"(e,t){var r,i;i=function(e){var u;return u=e.lib.WordArray,e.enc.Base64url={stringify:function(e,t=!0){for(var r=e.words,i=e.sigBytes,n=t?this._safe_map:this._map,o=(e.clamp(),[]),c=0;c<i;c+=3)for(var s=(r[c>>>2]>>>24-c%4*8&255)<<16|(r[c+1>>>2]>>>24-(c+1)%4*8&255)<<8|r[c+2>>>2]>>>24-(c+2)%4*8&255,a=0;a<4&&c+.75*a<i;a++)o.push(n.charAt(s>>>6*(3-a)&63));var f=n.charAt(64);if(f)for(;o.length%4;)o.push(f);return o.join("")},parse:function(e,t=!0){var r=e.length,i=t?this._safe_map:this._map;if(!(n=this._reverseMap))for(var n=this._reverseMap=[],o=0;o<i.length;o++)n[i.charCodeAt(o)]=o;for(var c,s,t=i.charAt(64),a=(t&&-1!==(t=e.indexOf(t))&&(r=t),e),f=r,h=n,d=[],p=0,l=0;l<f;l++)l%4&&(c=h[a.charCodeAt(l-1)]<<l%4*2,s=h[a.charCodeAt(l)]>>>6-l%4*2,d[p>>>2]|=(c|s)<<24-p%4*8,p++);return u.create(d,p)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_safe_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"},e.enc.Base64url},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),h=e({"md5.js"(e,t){var r,i;i=function(e){for(var a=Math,t=e,r=(n=t.lib).WordArray,i=n.Hasher,n=t.algo,C=[],o=0;o<64;o++)C[o]=4294967296*a.abs(a.sin(o+1))|0;function A(e,t,r,i,n,o,c){e=e+(t&r|~t&i)+n+c;return(e<<o|e>>>32-o)+t}function H(e,t,r,i,n,o,c){e=e+(t&i|r&~i)+n+c;return(e<<o|e>>>32-o)+t}function j(e,t,r,i,n,o,c){e=e+(t^r^i)+n+c;return(e<<o|e>>>32-o)+t}function z(e,t,r,i,n,o,c){e=e+(r^(t|~i))+n+c;return(e<<o|e>>>32-o)+t}return n=n.MD5=i.extend({_doReset:function(){this._hash=new r.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}var o=this._hash.words,c=e[t+0],s=e[t+1],a=e[t+2],f=e[t+3],h=e[t+4],d=e[t+5],p=e[t+6],l=e[t+7],u=e[t+8],y=e[t+9],_=e[t+10],v=e[t+11],g=e[t+12],B=e[t+13],m=e[t+14],w=e[t+15],b=A(o[0],x=o[1],S=o[2],k=o[3],c,7,C[0]),k=A(k,b,x,S,s,12,C[1]),S=A(S,k,b,x,a,17,C[2]),x=A(x,S,k,b,f,22,C[3]);b=A(b,x,S,k,h,7,C[4]),k=A(k,b,x,S,d,12,C[5]),S=A(S,k,b,x,p,17,C[6]),x=A(x,S,k,b,l,22,C[7]),b=A(b,x,S,k,u,7,C[8]),k=A(k,b,x,S,y,12,C[9]),S=A(S,k,b,x,_,17,C[10]),x=A(x,S,k,b,v,22,C[11]),b=A(b,x,S,k,g,7,C[12]),k=A(k,b,x,S,B,12,C[13]),S=A(S,k,b,x,m,17,C[14]),b=H(b,x=A(x,S,k,b,w,22,C[15]),S,k,s,5,C[16]),k=H(k,b,x,S,p,9,C[17]),S=H(S,k,b,x,v,14,C[18]),x=H(x,S,k,b,c,20,C[19]),b=H(b,x,S,k,d,5,C[20]),k=H(k,b,x,S,_,9,C[21]),S=H(S,k,b,x,w,14,C[22]),x=H(x,S,k,b,h,20,C[23]),b=H(b,x,S,k,y,5,C[24]),k=H(k,b,x,S,m,9,C[25]),S=H(S,k,b,x,f,14,C[26]),x=H(x,S,k,b,u,20,C[27]),b=H(b,x,S,k,B,5,C[28]),k=H(k,b,x,S,a,9,C[29]),S=H(S,k,b,x,l,14,C[30]),b=j(b,x=H(x,S,k,b,g,20,C[31]),S,k,d,4,C[32]),k=j(k,b,x,S,u,11,C[33]),S=j(S,k,b,x,v,16,C[34]),x=j(x,S,k,b,m,23,C[35]),b=j(b,x,S,k,s,4,C[36]),k=j(k,b,x,S,h,11,C[37]),S=j(S,k,b,x,l,16,C[38]),x=j(x,S,k,b,_,23,C[39]),b=j(b,x,S,k,B,4,C[40]),k=j(k,b,x,S,c,11,C[41]),S=j(S,k,b,x,f,16,C[42]),x=j(x,S,k,b,p,23,C[43]),b=j(b,x,S,k,y,4,C[44]),k=j(k,b,x,S,g,11,C[45]),S=j(S,k,b,x,w,16,C[46]),b=z(b,x=j(x,S,k,b,a,23,C[47]),S,k,c,6,C[48]),k=z(k,b,x,S,l,10,C[49]),S=z(S,k,b,x,m,15,C[50]),x=z(x,S,k,b,d,21,C[51]),b=z(b,x,S,k,g,6,C[52]),k=z(k,b,x,S,f,10,C[53]),S=z(S,k,b,x,_,15,C[54]),x=z(x,S,k,b,s,21,C[55]),b=z(b,x,S,k,u,6,C[56]),k=z(k,b,x,S,w,10,C[57]),S=z(S,k,b,x,p,15,C[58]),x=z(x,S,k,b,B,21,C[59]),b=z(b,x,S,k,h,6,C[60]),k=z(k,b,x,S,v,10,C[61]),S=z(S,k,b,x,a,15,C[62]),x=z(x,S,k,b,y,21,C[63]),o[0]=o[0]+b|0,o[1]=o[1]+x|0,o[2]=o[2]+S|0,o[3]=o[3]+k|0},_doFinalize:function(){for(var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes,n=(t[i>>>5]|=128<<24-i%32,a.floor(r/4294967296)),n=(t[15+(64+i>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),t[14+(64+i>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process(),this._hash),o=n.words,c=0;c<4;c++){var s=o[c];o[c]=16711935&(s<<8|s>>>24)|4278255360&(s<<24|s>>>8)}return n},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}}),t.MD5=i._createHelper(n),t.HmacMD5=i._createHmacHelper(n),e.MD5},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),d=e({"sha1.js"(e,t){var r,i;i=function(e){var t,r,i,n,h;return r=(t=e).lib,i=r.WordArray,n=r.Hasher,r=t.algo,h=[],r=r.SHA1=n.extend({_doReset:function(){this._hash=new i.init([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],c=r[3],s=r[4],a=0;a<80;a++){h[a]=a<16?0|e[t+a]:(f=h[a-3]^h[a-8]^h[a-14]^h[a-16])<<1|f>>>31;var f=(i<<5|i>>>27)+s+h[a];f+=a<20?1518500249+(n&o|~n&c):a<40?1859775393+(n^o^c):a<60?(n&o|n&c|o&c)-1894007588:(n^o^c)-899497514,s=c,c=o,o=n<<30|n>>>2,n=i,i=f}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+c|0,r[4]=r[4]+s|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(64+i>>>9<<4)]=Math.floor(r/4294967296),t[15+(64+i>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),t.SHA1=n._createHelper(r),t.HmacSHA1=n._createHmacHelper(r),e.SHA1},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),p=e({"sha256.js"(e,t){var r,i;i=function(e){var n=Math,t=e,r=(o=t.lib).WordArray,i=o.Hasher,o=t.algo,c=[],u=[];function s(e){return 4294967296*(e-(0|e))|0}for(var a=2,f=0;f<64;)!function(e){for(var t=n.sqrt(e),r=2;r<=t;r++)if(!(e%r))return;return 1}(a)||(f<8&&(c[f]=s(n.pow(a,.5))),u[f]=s(n.pow(a,1/3)),f++),a++;var y=[],o=o.SHA256=i.extend({_doReset:function(){this._hash=new r.init(c.slice(0))},_doProcessBlock:function(e,t){for(var r=this._hash.words,i=r[0],n=r[1],o=r[2],c=r[3],s=r[4],a=r[5],f=r[6],h=r[7],d=0;d<64;d++){y[d]=d<16?0|e[t+d]:(((p=y[d-15])<<25|p>>>7)^(p<<14|p>>>18)^p>>>3)+y[d-7]+(((p=y[d-2])<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+y[d-16];var p=i&n^i&o^n&o,l=h+((s<<26|s>>>6)^(s<<21|s>>>11)^(s<<7|s>>>25))+(s&a^~s&f)+u[d]+y[d],h=f,f=a,a=s,s=c+l|0,c=o,o=n,n=i,i=l+(((i<<30|i>>>2)^(i<<19|i>>>13)^(i<<10|i>>>22))+p)|0}r[0]=r[0]+i|0,r[1]=r[1]+n|0,r[2]=r[2]+o|0,r[3]=r[3]+c|0,r[4]=r[4]+s|0,r[5]=r[5]+a|0,r[6]=r[6]+f|0,r[7]=r[7]+h|0},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[14+(64+i>>>9<<4)]=n.floor(r/4294967296),t[15+(64+i>>>9<<4)]=r,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=i.clone.call(this);return e._hash=this._hash.clone(),e}});return t.SHA256=i._createHelper(o),t.HmacSHA256=i._createHmacHelper(o),e.SHA256},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),l=e({"sha224.js"(e,t){var r,i;i=function(e){var t,r,i,n;return r=(t=e).lib.WordArray,i=t.algo,n=i.SHA256,i=i.SHA224=n.extend({_doReset:function(){this._hash=new r.init([3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428])},_doFinalize:function(){var e=n._doFinalize.call(this);return e.sigBytes-=4,e}}),t.SHA224=n._createHelper(i),t.HmacSHA224=n._createHmacHelper(i),e.SHA224},"object"==typeof(r=e)?t.exports=e=i(n(),p()):"function"==typeof define&&define.amd?define(["./core","./sha256"],i):i(r.CryptoJS)}}),_=e({"sha512.js"(e,t){var r,i;i=function(e){var t=e,r=t.lib.Hasher,i=(o=t.x64).Word,n=o.WordArray,o=t.algo;function c(){return i.create.apply(i,arguments)}for(var t1=[c(1116352408,3609767458),c(1899447441,602891725),c(3049323471,3964484399),c(3921009573,2173295548),c(961987163,4081628472),c(1508970993,3053834265),c(2453635748,2937671579),c(2870763221,3664609560),c(3624381080,2734883394),c(310598401,1164996542),c(607225278,1323610764),c(1426881987,3590304994),c(1925078388,4068182383),c(2162078206,991336113),c(2614888103,633803317),c(3248222580,3479774868),c(3835390401,2666613458),c(4022224774,944711139),c(264347078,2341262773),c(604807628,2007800933),c(770255983,1495990901),c(1249150122,1856431235),c(1555081692,3175218132),c(1996064986,2198950837),c(2554220882,3999719339),c(2821834349,766784016),c(2952996808,2566594879),c(3210313671,3203337956),c(3336571891,1034457026),c(3584528711,2466948901),c(113926993,3758326383),c(338241895,168717936),c(666307205,1188179964),c(773529912,1546045734),c(1294757372,1522805485),c(1396182291,2643833823),c(1695183700,2343527390),c(1986661051,1014477480),c(2177026350,1206759142),c(2456956037,344077627),c(2730485921,1290863460),c(2820302411,3158454273),c(3259730800,3505952657),c(3345764771,106217008),c(3516065817,3606008344),c(3600352804,1432725776),c(4094571909,1467031594),c(275423344,851169720),c(430227734,3100823752),c(506948616,1363258195),c(659060556,3750685593),c(883997877,3785050280),c(958139571,3318307427),c(1322822218,3812723403),c(1537002063,2003034995),c(1747873779,3602036899),c(1955562222,1575990012),c(2024104815,1125592928),c(2227730452,2716904306),c(2361852424,442776044),c(2428436474,593698344),c(2756734187,3733110249),c(3204031479,2999351573),c(3329325298,3815920427),c(3391569614,3928383900),c(3515267271,566280711),c(3940187606,3454069534),c(4118630271,4000239992),c(116418474,1914138554),c(174292421,2731055270),c(289380356,3203993006),c(460393269,320620315),c(685471733,587496836),c(852142971,1086792851),c(1017036298,365543100),c(1126000580,2618297676),c(1288033470,3409855158),c(1501505948,4234509866),c(1607167915,987167468),c(1816402316,1246189591)],r1=[],s=0;s<80;s++)r1[s]=c();return o=o.SHA512=r.extend({_doReset:function(){this._hash=new n.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(P,F){for(var e=this._hash.words,t=e[0],r=e[1],i=e[2],n=e[3],o=e[4],c=e[5],s=e[6],e=e[7],W=t.high,a=t.low,O=r.high,f=r.low,I=i.high,h=i.low,U=n.high,d=n.low,K=o.high,p=o.low,X=c.high,l=c.low,L=s.high,u=s.low,T=e.high,y=e.low,_=W,v=a,g=O,B=f,m=I,w=h,q=U,b=d,k=K,S=p,N=X,x=l,Z=L,G=u,V=T,Q=y,C=0;C<80;C++)var A,H,j=r1[C],z=(C<16?(H=j.high=0|P[F+2*C],A=j.low=0|P[F+2*C+1]):(J=(M=r1[C-15]).high,M=M.low,R=(E=r1[C-2]).high,E=E.low,D=(z=r1[C-7]).high,z=z.low,$=(Y=r1[C-16]).high,H=(H=((J>>>1|M<<31)^(J>>>8|M<<24)^J>>>7)+D+((A=(D=(M>>>1|J<<31)^(M>>>8|J<<24)^(M>>>7|J<<25))+z)>>>0<D>>>0?1:0))+((R>>>19|E<<13)^(R<<3|E>>>29)^R>>>6)+((A+=M=(E>>>19|R<<13)^(E<<3|R>>>29)^(E>>>6|R<<26))>>>0<M>>>0?1:0),A+=J=Y.low,j.high=H=H+$+(A>>>0<J>>>0?1:0),j.low=A),k&N^~k&Z),D=S&x^~S&G,E=_&g^_&m^g&m,R=(v>>>28|_<<4)^(v<<30|_>>>2)^(v<<25|_>>>7),M=t1[C],Y=M.high,$=M.low,J=Q+((S>>>14|k<<18)^(S>>>18|k<<14)^(S<<23|k>>>9)),j=V+((k>>>14|S<<18)^(k>>>18|S<<14)^(k<<23|S>>>9))+(J>>>0<Q>>>0?1:0),e1=R+(v&B^v&w^B&w),V=Z,Q=G,Z=N,G=x,N=k,x=S,k=q+(j=j+z+((J=J+D)>>>0<D>>>0?1:0)+Y+((J=J+$)>>>0<$>>>0?1:0)+H+((J=J+A)>>>0<A>>>0?1:0))+((S=b+J|0)>>>0<b>>>0?1:0)|0,q=m,b=w,m=g,w=B,g=_,B=v,_=j+(((_>>>28|v<<4)^(_<<30|v>>>2)^(_<<25|v>>>7))+E+(e1>>>0<R>>>0?1:0))+((v=J+e1|0)>>>0<J>>>0?1:0)|0;a=t.low=a+v,t.high=W+_+(a>>>0<v>>>0?1:0),f=r.low=f+B,r.high=O+g+(f>>>0<B>>>0?1:0),h=i.low=h+w,i.high=I+m+(h>>>0<w>>>0?1:0),d=n.low=d+b,n.high=U+q+(d>>>0<b>>>0?1:0),p=o.low=p+S,o.high=K+k+(p>>>0<S>>>0?1:0),l=c.low=l+x,c.high=X+N+(l>>>0<x>>>0?1:0),u=s.low=u+G,s.high=L+Z+(u>>>0<G>>>0?1:0),y=e.low=y+Q,e.high=T+V+(y>>>0<Q>>>0?1:0)},_doFinalize:function(){var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes;return t[i>>>5]|=128<<24-i%32,t[30+(128+i>>>10<<5)]=Math.floor(r/4294967296),t[31+(128+i>>>10<<5)]=r,e.sigBytes=4*t.length,this._process(),this._hash.toX32()},clone:function(){var e=r.clone.call(this);return e._hash=this._hash.clone(),e},blockSize:32}),t.SHA512=r._createHelper(o),t.HmacSHA512=r._createHmacHelper(o),e.SHA512},"object"==typeof(r=e)?t.exports=e=i(n(),o()):"function"==typeof define&&define.amd?define(["./core","./x64-core"],i):i(r.CryptoJS)}}),v=e({"sha384.js"(e,t){var r,i;i=function(e){var t,r,i,n,o;return r=(t=e).x64,i=r.Word,n=r.WordArray,r=t.algo,o=r.SHA512,r=r.SHA384=o.extend({_doReset:function(){this._hash=new n.init([new i.init(3418070365,3238371032),new i.init(1654270250,914150663),new i.init(2438529370,812702999),new i.init(355462360,4144912697),new i.init(1731405415,4290775857),new i.init(2394180231,1750603025),new i.init(3675008525,1694076839),new i.init(1203062813,3204075428)])},_doFinalize:function(){var e=o._doFinalize.call(this);return e.sigBytes-=16,e}}),t.SHA384=o._createHelper(r),t.HmacSHA384=o._createHmacHelper(r),e.SHA384},"object"==typeof(r=e)?t.exports=e=i(n(),o(),_()):"function"==typeof define&&define.amd?define(["./core","./x64-core","./sha512"],i):i(r.CryptoJS)}}),g=e({"sha3.js"(e,t){var r,i;i=function(e){for(var h=Math,t=e,d=(n=t.lib).WordArray,i=n.Hasher,r=t.x64.Word,n=t.algo,C=[],A=[],H=[],o=1,c=0,s=0;s<24;s++){C[o+5*c]=(s+1)*(s+2)/2%64;var a=(2*o+3*c)%5;o=c%5,c=a}for(o=0;o<5;o++)for(c=0;c<5;c++)A[o+5*c]=c+(2*o+3*c)%5*5;for(var f=1,p=0;p<24;p++){for(var l,u=0,y=0,_=0;_<7;_++)1&f&&((l=(1<<_)-1)<32?y^=1<<l:u^=1<<l-32),128&f?f=f<<1^113:f<<=1;H[p]=r.create(u,y)}for(var j=[],v=0;v<25;v++)j[v]=r.create();return n=n.SHA3=i.extend({cfg:i.cfg.extend({outputLength:512}),_doReset:function(){for(var e=this._state=[],t=0;t<25;t++)e[t]=new r.init;this.blockSize=(1600-2*this.cfg.outputLength)/32},_doProcessBlock:function(e,t){for(var r=this._state,i=this.blockSize/2,n=0;n<i;n++){var o=e[t+2*n],c=e[t+2*n+1],o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8);(b=r[n]).high^=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8),b.low^=o}for(var s=0;s<24;s++){for(var a=0;a<5;a++){for(var f=0,h=0,d=0;d<5;d++)f^=(b=r[a+5*d]).high,h^=b.low;var p=j[a];p.high=f,p.low=h}for(a=0;a<5;a++)for(var l=j[(a+4)%5],u=j[(a+1)%5],y=u.high,u=u.low,f=l.high^(y<<1|u>>>31),h=l.low^(u<<1|y>>>31),d=0;d<5;d++)(b=r[a+5*d]).high^=f,b.low^=h;for(var _=1;_<25;_++){var v=(b=r[_]).high,g=b.low,B=C[_],v=(h=B<32?(f=v<<B|g>>>32-B,g<<B|v>>>32-B):(f=g<<B-32|v>>>64-B,v<<B-32|g>>>64-B),j[A[_]]);v.high=f,v.low=h}var m=j[0],w=r[0];m.high=w.high,m.low=w.low;for(a=0;a<5;a++)for(d=0;d<5;d++){var b=r[_=a+5*d],k=j[_],S=j[(a+1)%5+5*d],x=j[(a+2)%5+5*d];b.high=k.high^~S.high&x.high,b.low=k.low^~S.low&x.low}b=r[0],m=H[s];b.high^=m.high,b.low^=m.low}},_doFinalize:function(){for(var e=this._data,t=e.words,r=(this._nDataBytes,8*e.sigBytes),i=32*this.blockSize,n=(t[r>>>5]|=1<<24-r%32,t[(h.ceil((1+r)/i)*i>>>5)-1]|=128,e.sigBytes=4*t.length,this._process(),this._state),r=this.cfg.outputLength/8,o=r/8,c=[],s=0;s<o;s++){var a=n[s],f=a.high,a=a.low,f=16711935&(f<<8|f>>>24)|4278255360&(f<<24|f>>>8);c.push(16711935&(a<<8|a>>>24)|4278255360&(a<<24|a>>>8)),c.push(f)}return new d.init(c,r)},clone:function(){for(var e=i.clone.call(this),t=e._state=this._state.slice(0),r=0;r<25;r++)t[r]=t[r].clone();return e}}),t.SHA3=i._createHelper(n),t.HmacSHA3=i._createHmacHelper(n),e.SHA3},"object"==typeof(r=e)?t.exports=e=i(n(),o()):"function"==typeof define&&define.amd?define(["./core","./x64-core"],i):i(r.CryptoJS)}}),B=e({"ripemd160.js"(e,t){var r,i;i=function(e){function k(e,t,r){return e&t|~e&r}function S(e,t,r){return e&r|t&~r}function x(e,t){return e<<t|e>>>32-t}var t,r,i,n,C,A,H,j,z,D;return Math,r=(t=e).lib,i=r.WordArray,n=r.Hasher,r=t.algo,C=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]),A=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]),H=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]),j=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]),z=i.create([0,1518500249,1859775393,2400959708,2840853838]),D=i.create([1352829926,1548603684,1836072691,2053994217,0]),r=r.RIPEMD160=n.extend({_doReset:function(){this._hash=i.create([1732584193,4023233417,2562383102,271733878,3285377520])},_doProcessBlock:function(e,t){for(var r=0;r<16;r++){var i=t+r,n=e[i];e[i]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8)}for(var o,c,s,a,f,h,d=this._hash.words,p=z.words,l=D.words,u=C.words,y=A.words,_=H.words,v=j.words,g=o=d[0],B=c=d[1],m=s=d[2],w=a=d[3],b=f=d[4],r=0;r<80;r+=1)h=(h=x(h=(h=o+e[t+u[r]]|0)+(r<16?(c^s^a)+p[0]:r<32?k(c,s,a)+p[1]:r<48?((c|~s)^a)+p[2]:r<64?S(c,s,a)+p[3]:(c^(s|~a))+p[4])|0,_[r]))+f|0,o=f,f=a,a=x(s,10),s=c,c=h,h=(h=x(h=(h=g+e[t+y[r]]|0)+(r<16?(B^(m|~w))+l[0]:r<32?S(B,m,w)+l[1]:r<48?((B|~m)^w)+l[2]:r<64?k(B,m,w)+l[3]:(B^m^w)+l[4])|0,v[r]))+b|0,g=b,b=w,w=x(m,10),m=B,B=h;h=d[1]+s+w|0,d[1]=d[2]+a+b|0,d[2]=d[3]+f+g|0,d[3]=d[4]+o+B|0,d[4]=d[0]+c+m|0,d[0]=h},_doFinalize:function(){for(var e=this._data,t=e.words,r=8*this._nDataBytes,i=8*e.sigBytes,i=(t[i>>>5]|=128<<24-i%32,t[14+(64+i>>>9<<4)]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8),e.sigBytes=4*(t.length+1),this._process(),this._hash),n=i.words,o=0;o<5;o++){var c=n[o];n[o]=16711935&(c<<8|c>>>24)|4278255360&(c<<24|c>>>8)}return i},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),t.RIPEMD160=n._createHelper(r),t.HmacRIPEMD160=n._createHmacHelper(r),e.RIPEMD160},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),m=e({"hmac.js"(e,t){var r,i;i=function(e){var t,s;t=e.lib.Base,s=e.enc.Utf8,e.algo.HMAC=t.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=s.parse(t));for(var r=e.blockSize,i=4*r,e=((t=t.sigBytes>i?e.finalize(t):t).clamp(),this._oKey=t.clone()),t=this._iKey=t.clone(),n=e.words,o=t.words,c=0;c<r;c++)n[c]^=1549556828,o[c]^=909522486;e.sigBytes=t.sigBytes=i,this.reset()},reset:function(){var e=this._hasher;e.reset(),e.update(this._iKey)},update:function(e){return this._hasher.update(e),this},finalize:function(e){var t=this._hasher,e=t.finalize(e);return t.reset(),t.finalize(this._oKey.clone().concat(e))}})},"object"==typeof(r=e)?t.exports=e=i(n()):"function"==typeof define&&define.amd?define(["./core"],i):i(r.CryptoJS)}}),w=e({"pbkdf2.js"(e,t){var r,i;i=function(e){var t,r,i,v,n,g,o;return r=(t=e).lib,i=r.Base,v=r.WordArray,r=t.algo,n=r.SHA1,g=r.HMAC,o=r.PBKDF2=i.extend({cfg:i.extend({keySize:4,hasher:n,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r=this.cfg,i=g.create(r.hasher,e),n=v.create(),o=v.create([1]),c=n.words,s=o.words,a=r.keySize,f=r.iterations;c.length<a;){for(var h=i.update(t).finalize(o),d=(i.reset(),h.words),p=d.length,l=h,u=1;u<f;u++){l=i.finalize(l),i.reset();for(var y=l.words,_=0;_<p;_++)d[_]^=y[_]}n.concat(h),s[0]++}return n.sigBytes=4*a,n}}),t.PBKDF2=function(e,t,r){return o.create(r).compute(e,t)},e.PBKDF2},"object"==typeof(r=e)?t.exports=e=i(n(),d(),m()):"function"==typeof define&&define.amd?define(["./core","./sha1","./hmac"],i):i(r.CryptoJS)}}),b=e({"evpkdf.js"(e,t){var r,i;i=function(e){var t,r,i,h,n,o;return r=(t=e).lib,i=r.Base,h=r.WordArray,r=t.algo,n=r.MD5,o=r.EvpKDF=i.extend({cfg:i.extend({keySize:4,hasher:n,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var r,i=this.cfg,n=i.hasher.create(),o=h.create(),c=o.words,s=i.keySize,a=i.iterations;c.length<s;){r&&n.update(r),r=n.update(e).finalize(t),n.reset();for(var f=1;f<a;f++)r=n.finalize(r),n.reset();o.concat(r)}return o.sigBytes=4*s,o}}),t.EvpKDF=function(e,t,r){return o.create(r).compute(e,t)},e.EvpKDF},"object"==typeof(r=e)?t.exports=e=i(n(),d(),m()):"function"==typeof define&&define.amd?define(["./core","./sha1","./hmac"],i):i(r.CryptoJS)}}),k=e({"cipher-core.js"(e,t){var r,i;i=function(e){function n(e){return"string"==typeof e?y:u}function o(e,t,r){var i,n=this._iv;n?(i=n,this._iv=c):i=this._prevBlock;for(var o=0;o<r;o++)e[t+o]^=i[o]}var c,t,r,s,i,a,f,h,d,p,l,u,y;e.lib.Cipher||(t=(e=e).lib,r=t.Base,s=t.WordArray,i=t.BufferedBlockAlgorithm,(a=e.enc).Utf8,f=a.Base64,h=e.algo.EvpKDF,d=t.Cipher=i.extend({cfg:r.extend(),createEncryptor:function(e,t){return this.create(this._ENC_XFORM_MODE,e,t)},createDecryptor:function(e,t){return this.create(this._DEC_XFORM_MODE,e,t)},init:function(e,t,r){this.cfg=this.cfg.extend(r),this._xformMode=e,this._key=t,this.reset()},reset:function(){i.reset.call(this),this._doReset()},process:function(e){return this._append(e),this._process()},finalize:function(e){return e&&this._append(e),this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(i){return{encrypt:function(e,t,r){return n(t).encrypt(i,e,t,r)},decrypt:function(e,t,r){return n(t).decrypt(i,e,t,r)}}}}),t.StreamCipher=d.extend({_doFinalize:function(){return this._process(!0)},blockSize:1}),a=e.mode={},p=t.BlockCipherMode=r.extend({createEncryptor:function(e,t){return this.Encryptor.create(e,t)},createDecryptor:function(e,t){return this.Decryptor.create(e,t)},init:function(e,t){this._cipher=e,this._iv=t}}),p=a.CBC=((a=p.extend()).Encryptor=a.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;o.call(this,e,t,i),r.encryptBlock(e,t),this._prevBlock=e.slice(t,t+i)}}),a.Decryptor=a.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,n=e.slice(t,t+i);r.decryptBlock(e,t),o.call(this,e,t,i),this._prevBlock=n}}),a),a=(e.pad={}).Pkcs7={pad:function(e,t){for(var t=4*t,r=t-e.sigBytes%t,i=r<<24|r<<16|r<<8|r,n=[],o=0;o<r;o+=4)n.push(i);t=s.create(n,r);e.concat(t)},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},t.BlockCipher=d.extend({cfg:d.cfg.extend({mode:p,padding:a}),reset:function(){d.reset.call(this);var e,t=this.cfg,r=t.iv,t=t.mode;this._xformMode==this._ENC_XFORM_MODE?e=t.createEncryptor:(e=t.createDecryptor,this._minBufferSize=1),this._mode&&this._mode.__creator==e?this._mode.init(this,r&&r.words):(this._mode=e.call(t,this,r&&r.words),this._mode.__creator=e)},_doProcessBlock:function(e,t){this._mode.processBlock(e,t)},_doFinalize:function(){var e,t=this.cfg.padding;return this._xformMode==this._ENC_XFORM_MODE?(t.pad(this._data,this.blockSize),e=this._process(!0)):(e=this._process(!0),t.unpad(e)),e},blockSize:4}),l=t.CipherParams=r.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),p=(e.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext,e=e.salt,e=e?s.create([1398893684,1701076831]).concat(e).concat(t):t;return e.toString(f)},parse:function(e){var t,e=f.parse(e),r=e.words;return 1398893684==r[0]&&1701076831==r[1]&&(t=s.create(r.slice(2,4)),r.splice(0,4),e.sigBytes-=16),l.create({ciphertext:e,salt:t})}},u=t.SerializableCipher=r.extend({cfg:r.extend({format:p}),encrypt:function(e,t,r,i){i=this.cfg.extend(i);var n=e.createEncryptor(r,i),t=n.finalize(t),n=n.cfg;return l.create({ciphertext:t,key:r,iv:n.iv,algorithm:e,mode:n.mode,padding:n.padding,blockSize:e.blockSize,formatter:i.format})},decrypt:function(e,t,r,i){return i=this.cfg.extend(i),t=this._parse(t,i.format),e.createDecryptor(r,i).finalize(t.ciphertext)},_parse:function(e,t){return"string"==typeof e?t.parse(e,this):e}}),a=(e.kdf={}).OpenSSL={execute:function(e,t,r,i){i=i||s.random(8);e=h.create({keySize:t+r}).compute(e,i),r=s.create(e.words.slice(t),4*r);return e.sigBytes=4*t,l.create({key:e,iv:r,salt:i})}},y=t.PasswordBasedCipher=u.extend({cfg:u.cfg.extend({kdf:a}),encrypt:function(e,t,r,i){r=(i=this.cfg.extend(i)).kdf.execute(r,e.keySize,e.ivSize),i.iv=r.iv,e=u.encrypt.call(this,e,t,r.key,i);return e.mixIn(r),e},decrypt:function(e,t,r,i){i=this.cfg.extend(i),t=this._parse(t,i.format);r=i.kdf.execute(r,e.keySize,e.ivSize,t.salt);return i.iv=r.iv,u.decrypt.call(this,e,t,r.key,i)}}))},"object"==typeof(r=e)?t.exports=e=i(n(),b()):"function"==typeof define&&define.amd?define(["./core","./evpkdf"],i):i(r.CryptoJS)}}),S=e({"mode-cfb.js"(e,t){var r,i;i=function(e){function o(e,t,r,i){var n,o=this._iv;o?(n=o.slice(0),this._iv=void 0):n=this._prevBlock,i.encryptBlock(n,0);for(var c=0;c<r;c++)e[t+c]^=n[c]}var t;return e.mode.CFB=((t=e.lib.BlockCipherMode.extend()).Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize;o.call(this,e,t,i,r),this._prevBlock=e.slice(t,t+i)}}),t.Decryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,n=e.slice(t,t+i);o.call(this,e,t,i,r),this._prevBlock=n}}),t),e.mode.CFB},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),x=e({"mode-ctr.js"(e,t){var r,i;i=function(e){var t,r;return e.mode.CTR=(t=e.lib.BlockCipherMode.extend(),r=t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._counter,c=(n&&(o=this._counter=n.slice(0),this._iv=void 0),o.slice(0));r.encryptBlock(c,0),o[i-1]=o[i-1]+1|0;for(var s=0;s<i;s++)e[t+s]^=c[s]}}),t.Decryptor=r,t),e.mode.CTR},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),C=e({"mode-ctr-gladman.js"(e,t){var r,i;i=function(e){function a(e){var t,r,i;return 255==(e>>24&255)?(r=e>>8&255,i=255&e,255===(t=e>>16&255)?(t=0,255===r?(r=0,255===i?i=0:++i):++r):++t,e=0,e=(e+=t<<16)+(r<<8)+i):e+=1<<24,e}var t,r;return e.mode.CTRGladman=(t=e.lib.BlockCipherMode.extend(),r=t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._counter,c=(n&&(o=this._counter=n.slice(0),this._iv=void 0),0===((n=o)[0]=a(n[0]))&&(n[1]=a(n[1])),o.slice(0));r.encryptBlock(c,0);for(var s=0;s<i;s++)e[t+s]^=c[s]}}),t.Decryptor=r,t),e.mode.CTRGladman},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),A=e({"mode-ofb.js"(e,t){var r,i;i=function(e){var t,r;return e.mode.OFB=(t=e.lib.BlockCipherMode.extend(),r=t.Encryptor=t.extend({processBlock:function(e,t){var r=this._cipher,i=r.blockSize,n=this._iv,o=this._keystream;n&&(o=this._keystream=n.slice(0),this._iv=void 0),r.encryptBlock(o,0);for(var c=0;c<i;c++)e[t+c]^=o[c]}}),t.Decryptor=r,t),e.mode.OFB},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),H=e({"mode-ecb.js"(e,t){var r,i;i=function(e){var t;return e.mode.ECB=((t=e.lib.BlockCipherMode.extend()).Encryptor=t.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),t.Decryptor=t.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),t),e.mode.ECB},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),j=e({"pad-ansix923.js"(e,t){var r,i;i=function(e){return e.pad.AnsiX923={pad:function(e,t){var r=e.sigBytes,t=4*t,t=t-r%t,r=r+t-1;e.clamp(),e.words[r>>>2]|=t<<24-r%4*8,e.sigBytes+=t},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},e.pad.Ansix923},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),z=e({"pad-iso10126.js"(e,t){var r,i;i=function(r){return r.pad.Iso10126={pad:function(e,t){t*=4,t-=e.sigBytes%t;e.concat(r.lib.WordArray.random(t-1)).concat(r.lib.WordArray.create([t<<24],1))},unpad:function(e){var t=255&e.words[e.sigBytes-1>>>2];e.sigBytes-=t}},r.pad.Iso10126},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),D=e({"pad-iso97971.js"(e,t){var r,i;i=function(r){return r.pad.Iso97971={pad:function(e,t){e.concat(r.lib.WordArray.create([2147483648],1)),r.pad.ZeroPadding.pad(e,t)},unpad:function(e){r.pad.ZeroPadding.unpad(e),e.sigBytes--}},r.pad.Iso97971},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),E=e({"pad-zeropadding.js"(e,t){var r,i;i=function(e){return e.pad.ZeroPadding={pad:function(e,t){t*=4;e.clamp(),e.sigBytes+=t-(e.sigBytes%t||t)},unpad:function(e){for(var t=e.words,r=e.sigBytes-1,r=e.sigBytes-1;0<=r;r--)if(t[r>>>2]>>>24-r%4*8&255){e.sigBytes=r+1;break}}},e.pad.ZeroPadding},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),R=e({"pad-nopadding.js"(e,t){var r,i;i=function(e){return e.pad.NoPadding={pad:function(){},unpad:function(){}},e.pad.NoPadding},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),M=e({"format-hex.js"(e,t){var r,i;i=function(e){var t,r;return t=e.lib.CipherParams,r=e.enc.Hex,e.format.Hex={stringify:function(e){return e.ciphertext.toString(r)},parse:function(e){e=r.parse(e);return t.create({ciphertext:e})}},e.format.Hex},"object"==typeof(r=e)?t.exports=e=i(n(),k()):"function"==typeof define&&define.amd?define(["./core","./cipher-core"],i):i(r.CryptoJS)}}),J=e({"aes.js"(e,t){var r,i;i=function(e){for(var t=e,r=t.lib.BlockCipher,i=t.algo,f=[],n=[],o=[],c=[],s=[],a=[],h=[],d=[],p=[],l=[],u=[],y=0;y<256;y++)u[y]=y<128?y<<1:y<<1^283;for(var _=0,v=0,y=0;y<256;y++){var g=v^v<<1^v<<2^v<<3^v<<4,B=u[n[f[_]=g=g>>>8^255&g^99]=_],m=u[B],w=u[m],b=257*u[g]^16843008*g;o[_]=b<<24|b>>>8,c[_]=b<<16|b>>>16,s[_]=b<<8|b>>>24,a[_]=b,h[g]=(b=16843009*w^65537*m^257*B^16843008*_)<<24|b>>>8,d[g]=b<<16|b>>>16,p[g]=b<<8|b>>>24,l[g]=b,_?(_=B^u[u[u[w^B]]],v^=u[u[v]]):_=v=1}var k=[0,1,2,4,8,16,32,64,128,27,54],i=i.AES=r.extend({_doReset:function(){if(!this._nRounds||this._keyPriorReset!==this._key){for(var e=this._keyPriorReset=this._key,t=e.words,r=e.sigBytes/4,i=4*(1+(this._nRounds=6+r)),n=this._keySchedule=[],o=0;o<i;o++)o<r?n[o]=t[o]:(a=n[o-1],o%r?6<r&&o%r==4&&(a=f[a>>>24]<<24|f[a>>>16&255]<<16|f[a>>>8&255]<<8|f[255&a]):(a=f[(a=a<<8|a>>>24)>>>24]<<24|f[a>>>16&255]<<16|f[a>>>8&255]<<8|f[255&a],a^=k[o/r|0]<<24),n[o]=n[o-r]^a);for(var c=this._invKeySchedule=[],s=0;s<i;s++){var a,o=i-s;a=s%4?n[o]:n[o-4],c[s]=s<4||o<=4?a:h[f[a>>>24]]^d[f[a>>>16&255]]^p[f[a>>>8&255]]^l[f[255&a]]}}},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,o,c,s,a,f)},decryptBlock:function(e,t){var r=e[t+1],r=(e[t+1]=e[t+3],e[t+3]=r,this._doCryptBlock(e,t,this._invKeySchedule,h,d,p,l,n),e[t+1]);e[t+1]=e[t+3],e[t+3]=r},_doCryptBlock:function(e,t,r,i,n,o,c,s){for(var a=this._nRounds,f=e[t]^r[0],h=e[t+1]^r[1],d=e[t+2]^r[2],p=e[t+3]^r[3],l=4,u=1;u<a;u++)var y=i[f>>>24]^n[h>>>16&255]^o[d>>>8&255]^c[255&p]^r[l++],_=i[h>>>24]^n[d>>>16&255]^o[p>>>8&255]^c[255&f]^r[l++],v=i[d>>>24]^n[p>>>16&255]^o[f>>>8&255]^c[255&h]^r[l++],g=i[p>>>24]^n[f>>>16&255]^o[h>>>8&255]^c[255&d]^r[l++],f=y,h=_,d=v,p=g;y=(s[f>>>24]<<24|s[h>>>16&255]<<16|s[d>>>8&255]<<8|s[255&p])^r[l++],_=(s[h>>>24]<<24|s[d>>>16&255]<<16|s[p>>>8&255]<<8|s[255&f])^r[l++],v=(s[d>>>24]<<24|s[p>>>16&255]<<16|s[f>>>8&255]<<8|s[255&h])^r[l++],g=(s[p>>>24]<<24|s[f>>>16&255]<<16|s[h>>>8&255]<<8|s[255&d])^r[l++];e[t]=y,e[t+1]=_,e[t+2]=v,e[t+3]=g},keySize:8});return t.AES=r._createHelper(i),e.AES},"object"==typeof(r=e)?t.exports=e=i(n(),a(),h(),b(),k()):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(r.CryptoJS)}}),P=e({"tripledes.js"(e,t){var r,i;i=function(e){var t=e,i=(r=t.lib).WordArray,r=r.BlockCipher,n=t.algo,f=[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],h=[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],d=[1,2,4,6,8,10,12,14,15,17,19,21,23,25,27,28],p=[{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}],l=[4160749569,528482304,33030144,2064384,129024,8064,504,2147483679],o=n.DES=r.extend({_doReset:function(){for(var e=this._key.words,t=[],r=0;r<56;r++){var i=f[r]-1;t[r]=e[i>>>5]>>>31-i%32&1}for(var n=this._subKeys=[],o=0;o<16;o++){for(var c=n[o]=[],s=d[o],r=0;r<24;r++)c[r/6|0]|=t[(h[r]-1+s)%28]<<31-r%6,c[4+(r/6|0)]|=t[28+(h[r+24]-1+s)%28]<<31-r%6;c[0]=c[0]<<1|c[0]>>>31;for(r=1;r<7;r++)c[r]=c[r]>>>4*(r-1)+3;c[7]=c[7]<<5|c[7]>>>27}for(var a=this._invSubKeys=[],r=0;r<16;r++)a[r]=n[15-r]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._subKeys)},decryptBlock:function(e,t){this._doCryptBlock(e,t,this._invSubKeys)},_doCryptBlock:function(e,t,r){this._lBlock=e[t],this._rBlock=e[t+1],u.call(this,4,252645135),u.call(this,16,65535),y.call(this,2,858993459),y.call(this,8,16711935),u.call(this,1,1431655765);for(var i=0;i<16;i++){for(var n=r[i],o=this._lBlock,c=this._rBlock,s=0,a=0;a<8;a++)s|=p[a][((c^n[a])&l[a])>>>0];this._lBlock=c,this._rBlock=o^s}var f=this._lBlock;this._lBlock=this._rBlock,this._rBlock=f,u.call(this,1,1431655765),y.call(this,8,16711935),y.call(this,2,858993459),u.call(this,16,65535),u.call(this,4,252645135),e[t]=this._lBlock,e[t+1]=this._rBlock},keySize:2,ivSize:2,blockSize:2});function u(e,t){t=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=t,this._lBlock^=t<<e}function y(e,t){t=(this._rBlock>>>e^this._lBlock)&t;this._lBlock^=t,this._rBlock^=t<<e}return t.DES=r._createHelper(o),n=n.TripleDES=r.extend({_doReset:function(){var e=this._key.words;if(2!==e.length&&4!==e.length&&e.length<6)throw new Error("Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.");var t=e.slice(0,2),r=e.length<4?e.slice(0,2):e.slice(2,4),e=e.length<6?e.slice(0,2):e.slice(4,6);this._des1=o.createEncryptor(i.create(t)),this._des2=o.createEncryptor(i.create(r)),this._des3=o.createEncryptor(i.create(e))},encryptBlock:function(e,t){this._des1.encryptBlock(e,t),this._des2.decryptBlock(e,t),this._des3.encryptBlock(e,t)},decryptBlock:function(e,t){this._des3.decryptBlock(e,t),this._des2.encryptBlock(e,t),this._des1.decryptBlock(e,t)},keySize:6,ivSize:2,blockSize:2}),t.TripleDES=r._createHelper(n),e.TripleDES},"object"==typeof(r=e)?t.exports=e=i(n(),a(),h(),b(),k()):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(r.CryptoJS)}}),F=e({"rc4.js"(e,t){var r,i;i=function(e){var t=e,r=t.lib.StreamCipher,i=t.algo,n=i.RC4=r.extend({_doReset:function(){for(var e=this._key,t=e.words,r=e.sigBytes,i=this._S=[],n=0;n<256;n++)i[n]=n;for(var n=0,o=0;n<256;n++){var c=n%r,c=t[c>>>2]>>>24-c%4*8&255,o=(o+i[n]+c)%256,c=i[n];i[n]=i[o],i[o]=c}this._i=this._j=0},_doProcessBlock:function(e,t){e[t]^=o.call(this)},keySize:8,ivSize:0});function o(){for(var e=this._S,t=this._i,r=this._j,i=0,n=0;n<4;n++){var r=(r+e[t=(t+1)%256])%256,o=e[t];e[t]=e[r],e[r]=o,i|=e[(e[t]+e[r])%256]<<24-8*n}return this._i=t,this._j=r,i}return t.RC4=r._createHelper(n),i=i.RC4Drop=n.extend({cfg:n.cfg.extend({drop:192}),_doReset:function(){n._doReset.call(this);for(var e=this.cfg.drop;0<e;e--)o.call(this)}}),t.RC4Drop=r._createHelper(i),e.RC4},"object"==typeof(r=e)?t.exports=e=i(n(),a(),h(),b(),k()):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(r.CryptoJS)}}),W=e({"rabbit.js"(e,t){var r,i;i=function(e){function a(){for(var e=this._X,t=this._C,r=0;r<8;r++)c[r]=t[r];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0<c[0]>>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0<c[1]>>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0<c[2]>>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0<c[3]>>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0<c[4]>>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0<c[5]>>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0<c[6]>>>0?1:0)|0,this._b=t[7]>>>0<c[7]>>>0?1:0;for(r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16;s[r]=((n*n>>>17)+n*o>>>15)+o*o^((4294901760&i)*i|0)+((65535&i)*i|0)}e[0]=s[0]+(s[7]<<16|s[7]>>>16)+(s[6]<<16|s[6]>>>16)|0,e[1]=s[1]+(s[0]<<8|s[0]>>>24)+s[7]|0,e[2]=s[2]+(s[1]<<16|s[1]>>>16)+(s[0]<<16|s[0]>>>16)|0,e[3]=s[3]+(s[2]<<8|s[2]>>>24)+s[1]|0,e[4]=s[4]+(s[3]<<16|s[3]>>>16)+(s[2]<<16|s[2]>>>16)|0,e[5]=s[5]+(s[4]<<8|s[4]>>>24)+s[3]|0,e[6]=s[6]+(s[5]<<16|s[5]>>>16)+(s[4]<<16|s[4]>>>16)|0,e[7]=s[7]+(s[6]<<8|s[6]>>>24)+s[5]|0}var t,r,i,n,c,s;return r=(t=e).lib.StreamCipher,i=t.algo,n=[],c=[],s=[],i=i.Rabbit=r.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=0;r<4;r++)e[r]=16711935&(e[r]<<8|e[r]>>>24)|4278255360&(e[r]<<24|e[r]>>>8);for(var i=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],n=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],r=this._b=0;r<4;r++)a.call(this);for(r=0;r<8;r++)n[r]^=i[r+4&7];if(t){var t=t.words,o=t[0],t=t[1],o=16711935&(o<<8|o>>>24)|4278255360&(o<<24|o>>>8),t=16711935&(t<<8|t>>>24)|4278255360&(t<<24|t>>>8),c=o>>>16|4294901760&t,s=t<<16|65535&o;n[0]^=o,n[1]^=c,n[2]^=t,n[3]^=s,n[4]^=o,n[5]^=c,n[6]^=t,n[7]^=s;for(r=0;r<4;r++)a.call(this)}},_doProcessBlock:function(e,t){var r=this._X;a.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2}),t.Rabbit=r._createHelper(i),e.Rabbit},"object"==typeof(r=e)?t.exports=e=i(n(),a(),h(),b(),k()):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(r.CryptoJS)}}),O=e({"rabbit-legacy.js"(e,t){var r,i;i=function(e){function s(){for(var e=this._X,t=this._C,r=0;r<8;r++)c[r]=t[r];t[0]=t[0]+1295307597+this._b|0,t[1]=t[1]+3545052371+(t[0]>>>0<c[0]>>>0?1:0)|0,t[2]=t[2]+886263092+(t[1]>>>0<c[1]>>>0?1:0)|0,t[3]=t[3]+1295307597+(t[2]>>>0<c[2]>>>0?1:0)|0,t[4]=t[4]+3545052371+(t[3]>>>0<c[3]>>>0?1:0)|0,t[5]=t[5]+886263092+(t[4]>>>0<c[4]>>>0?1:0)|0,t[6]=t[6]+1295307597+(t[5]>>>0<c[5]>>>0?1:0)|0,t[7]=t[7]+3545052371+(t[6]>>>0<c[6]>>>0?1:0)|0,this._b=t[7]>>>0<c[7]>>>0?1:0;for(r=0;r<8;r++){var i=e[r]+t[r],n=65535&i,o=i>>>16;a[r]=((n*n>>>17)+n*o>>>15)+o*o^((4294901760&i)*i|0)+((65535&i)*i|0)}e[0]=a[0]+(a[7]<<16|a[7]>>>16)+(a[6]<<16|a[6]>>>16)|0,e[1]=a[1]+(a[0]<<8|a[0]>>>24)+a[7]|0,e[2]=a[2]+(a[1]<<16|a[1]>>>16)+(a[0]<<16|a[0]>>>16)|0,e[3]=a[3]+(a[2]<<8|a[2]>>>24)+a[1]|0,e[4]=a[4]+(a[3]<<16|a[3]>>>16)+(a[2]<<16|a[2]>>>16)|0,e[5]=a[5]+(a[4]<<8|a[4]>>>24)+a[3]|0,e[6]=a[6]+(a[5]<<16|a[5]>>>16)+(a[4]<<16|a[4]>>>16)|0,e[7]=a[7]+(a[6]<<8|a[6]>>>24)+a[5]|0}var t,r,i,n,c,a;return r=(t=e).lib.StreamCipher,i=t.algo,n=[],c=[],a=[],i=i.RabbitLegacy=r.extend({_doReset:function(){for(var e=this._key.words,t=this.cfg.iv,r=this._X=[e[0],e[3]<<16|e[2]>>>16,e[1],e[0]<<16|e[3]>>>16,e[2],e[1]<<16|e[0]>>>16,e[3],e[2]<<16|e[1]>>>16],i=this._C=[e[2]<<16|e[2]>>>16,4294901760&e[0]|65535&e[1],e[3]<<16|e[3]>>>16,4294901760&e[1]|65535&e[2],e[0]<<16|e[0]>>>16,4294901760&e[2]|65535&e[3],e[1]<<16|e[1]>>>16,4294901760&e[3]|65535&e[0]],n=this._b=0;n<4;n++)s.call(this);for(n=0;n<8;n++)i[n]^=r[n+4&7];if(t){var e=t.words,t=e[0],e=e[1],t=16711935&(t<<8|t>>>24)|4278255360&(t<<24|t>>>8),e=16711935&(e<<8|e>>>24)|4278255360&(e<<24|e>>>8),o=t>>>16|4294901760&e,c=e<<16|65535&t;i[0]^=t,i[1]^=o,i[2]^=e,i[3]^=c,i[4]^=t,i[5]^=o,i[6]^=e,i[7]^=c;for(n=0;n<4;n++)s.call(this)}},_doProcessBlock:function(e,t){var r=this._X;s.call(this),n[0]=r[0]^r[5]>>>16^r[3]<<16,n[1]=r[2]^r[7]>>>16^r[5]<<16,n[2]=r[4]^r[1]>>>16^r[7]<<16,n[3]=r[6]^r[3]>>>16^r[1]<<16;for(var i=0;i<4;i++)n[i]=16711935&(n[i]<<8|n[i]>>>24)|4278255360&(n[i]<<24|n[i]>>>8),e[t+i]^=n[i]},blockSize:4,ivSize:2}),t.RabbitLegacy=r._createHelper(i),e.RabbitLegacy},"object"==typeof(r=e)?t.exports=e=i(n(),a(),h(),b(),k()):"function"==typeof define&&define.amd?define(["./core","./enc-base64","./md5","./evpkdf","./cipher-core"],i):i(r.CryptoJS)}});return e({"index.js"(e,t){var r,i;i=function(e){return e},"object"==typeof(r=e)?t.exports=e=i(n(),o(),c(),s(),a(),f(),h(),d(),p(),l(),_(),v(),g(),B(),m(),w(),b(),k(),S(),x(),C(),A(),H(),j(),z(),D(),E(),R(),M(),J(),P(),F(),W(),O()):"function"==typeof define&&define.amd?define(["./core","./x64-core","./lib-typedarrays","./enc-utf16","./enc-base64","./enc-base64url","./md5","./sha1","./sha256","./sha224","./sha512","./sha384","./sha3","./ripemd160","./hmac","./pbkdf2","./evpkdf","./cipher-core","./mode-cfb","./mode-ctr","./mode-ctr-gladman","./mode-ofb","./mode-ecb","./pad-ansix923","./pad-iso10126","./pad-iso97971","./pad-zeropadding","./pad-nopadding","./format-hex","./aes","./tripledes","./rc4","./rabbit","./rabbit-legacy"],i):r.CryptoJS=r.CryptoJS}})()}
  1981. //---SyncByPyScript---CryptoJS-end