返回首頁 

JKForum Helper

JKF JKForum Helper: Auto-sign-in, timed sign-in, auto-thank you, auto-load original image, auto-play image, auto-pay to buy theme post, auto-complete voting task, optimize browsing experience, one-click bulk reply/thank you, one-click package to download post image,Skip mobile verification code when logging in


Install this script?
// ==UserScript==// @name                JKForum 助手// @name:en             JKForum Helper// @name:zh-TW          JKForum 助手// @name:ja             JKForum 助手// @name:ko             JKForum 조수// @namespace           https://github.com/Eished/jkforum_helper// @version             0.9.2// @description         JKF 捷克论坛助手:自动签到、定时签到、自动感谢、自动加载原图、自动播放图片、自动支付购买主题贴、自动完成投票任务,优化浏览体验,一键批量回帖/感谢,一键打包下载帖子图片,自动识别验证码,自动现在有空,自动点击置顶广告,登录时跳过绑定手机号验证码,自动发文// @description:en      JKF JKForum Helper: Auto-sign-in, timed sign-in, auto-thank you, auto-load original image, auto-play image, auto-pay to buy theme post, auto-complete voting task, optimize browsing experience, one-click bulk reply/thank you, one-click package to download post image,Skip mobile verification code when logging in// @description:zh-TW   JKF 捷克論壇助手:自動簽到、定時簽到、自動感謝、自動加載原圖、自動播放圖片、自動支付購買主題貼、自動完成投票任務,優化瀏覽體驗,一鍵批量回帖/感謝,一鍵打包下載帖子圖片,自動識別驗證碼,自動現在有空,自動點擊置頂廣告,登錄時跳過綁定手機號驗證碼,自動發文// @description:ja      JKF チェコ語フォーラム助手:自動チェックイン、時限式チェックイン、オートサンキュー、オリジナル画像の自動読み込み、画像の自動再生、トピック投稿の自動支払い、ポールタスクの自動完了、ブラウジングエクスペリエンスの最適化、ワンクリックでの一括返信/サンキュー、ワンクリックでの投稿画像のパッケージダウンロード,ログイン時にモバイル認証コードをスキップ// @description:ko      JKF 체코 포럼 조수: 자동 로그인, 정기 로그인, 자동 감사, 원본 사진 자동로드, 테마 스티커 구매 자동 결제, 투표 작업 자동 완료, 최적화 된 브라우징 경험, 원 클릭 일괄 회신 / 감사, 원 클릭 포스트 사진의 패키지 다운로드 클릭다운로드하십시오,로그인 시 모바일 인증 코드 건너뛰기// @author              Eished// @copyright           Eished// @license             MIT// @match               *://*.jkforum.net/*// @run-at              document-idle// @supportURL          https://github.com/Eished/jkforum_helper/issues// @homepage            https://github.com/Eished/jkforum_helper// @grant               GM_getValue// @grant               GM_setValue// @grant               GM_deleteValue// @grant               GM_info// @grant               GM_xmlhttpRequest// @grant               GM_openInTab// @grant               GM_registerMenuCommand// @grant               GM_addElement// @grant               GM_addStyle// @grant               GM_notification// @grant               GM_addValueChangeListener// @connect             mymypic.net// @connect             jkf.iknow.fun// @connect             cdn.jsdelivr.net// @connect             github.com// @connect             greasyfork.org// @connect             jkf.hare200.com// @require             https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js// @require             https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js// @require             https://cdn.jsdelivr.net/npm/[email protected]/dist/react-table.production.min.js// @require             https://cdn.jsdelivr.net/npm/[email protected]/dist/FileSaver.min.js// @require             https://cdn.jsdelivr.net/npm/[email protected]/dist/jszip.min.js// @require             https://cdn.jsdelivr.net/npm/[email protected]/build/react-copy-to-clipboard.min.js// @icon                data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDExNi4xNjQ2NTUsIDIwMjEvMDEvMjYtMTU6NDE6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YzYwNmI3NGQtODA4Zi03YjQ3LWI4NGYtYjNlZmJiMTM4NDIwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkM3MzFDMzYyRUE5MzExRUJCOTU4RkY3NUMxOTY5MDdGIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkM3MzFDMzYxRUE5MzExRUJCOTU4RkY3NUMxOTY5MDdGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSI+IDx4bXBNTTpEZ###dmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA2MWY1NjgyLTk5OTctNDU0OS04NjIzLWZhNzY0MmVjMTM5MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpjNjA2Yjc0ZC04MDhmLTdiNDctYjg0Zi1iM2VmYmIxMzg0MjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5urL1nAAAJJUlEQVR42uxba2wU1xX+ZnZ2vYvX4BpDCYVA6xgKkR0wlYlJnyK1iiweVlqgGFpKK6qWAuYtQgitoYANGCTqRnJIQbQ/sJoAKsESMkrTitSQpuJhUBwVHCC21QeCgh17vevd6Tkzs+uZfXgftsevHOvT7twd35lz7rnnfufcGUGWZQxnETH###gbQLpy5UpfX0MgjCAkExwabBpEDT4NbkIHoZ3QRviUv/Msbff0/o1ZLBbl5npL0gkZhCkavkj4gtaeqhnArilu6aYfr2YEF6GV8EgS8J/ffh9NaSlo8PlQLwr4iNBAaBUT1YCMKtkdPTJAGuF5wrcIeYQvE0b3hQs5k4CmUmAkm9Kj3Dz/NRJuEP5CWrxDfnS###2KRnJsBoDNCSneKUPIJywjvEj4vBnzVCClPqXJMZL9olObVgIm0udEUqTAR8p4fbjmlfGmRcApyYI7QjRDyGo3sQZBGgP8hPAB4TyhyCzlu1VAU5CngVXCDLuEPaT4NZcHx9weTAtEoB6uAvMItYTXCc8N2HCuGYNG3+mw4ceiiL9T4PxVp5fijpCYAThYHSZUE2YOmnVN8wwyRLLDildpavyZvGFqJCOI3QS4twnFg3aB1zwiyYrnaVq82+6mQC3EZoCRhD8Rvj0kmI6sxIdxkoi3yRNmBBtBDENaThBeGFJ0TzUCe/UfPZ30KUQ2wFpC4ZDkvGQEmxXPUEwoV/I/IdQAvK7uHurc3ybhh+QFXwvnAVu1+T90hUaelkf+eEX2dTE7aKRmxaBRxBqd4EQUotJWES92+pBlFVDnN8ACwqiouTOZTxC6ruyjzCRSQYUzLb10d264/+HrWK1WtLe3h5xXd5dSRXcC2R+N/nMTlIAokgG+S65Q5//tnI5cRsThw4fl+vr6APLz8yOeW1VVZTh36tSp3fa9evVqw/l37tyRCwsLld9S7JCby8h+vyNUQn52fPR7DQciRmo/b0DuqMAV7xspgqRlcF+JxYKTJ08GKRI4Tk1NjXjulClTDOc6HI6I52ZnZ+PIkSOGc86cOYNz586FH8kE3d8iGr5PpxXhaW7KjjWxcbuNfuf1eiOe29HRETIFwondbseJEycMyt+6dQsrV65EZ2dnxOwwEWmlW5K7Eignfc1mD5jRg5DSY9m/fz9mzuxKNVpbW1FUVIQnT57E3EdBFiGHlIsSF6wUYlJHqLUnQV0VstgA0/pL+fnz52P9+vWGtjVr1uD69etx9fP1TOBnC7QCWjRxacU3dcgzJa10ZbqMHz8elZWVhraKigqcPHky7r5cHq2C2B73v07kGDCuPwzAyo8b13Xp2tpabNq0ydR7oFiSzgb4nNnKb9iwAQUFBYHjBw8eYPny5SGBs88NQMyXDZBsjrXVSTdr1izs27fP8NuqVavQ0NBgvhsKcLAB7GZcy+PxKMzu+PHjSEpKCrTv3r074nrf56mBDLuoywf6VHh527FjB7KysgJtZ8+exa5du/otpSAyZJFgwvZYW1sb5s2bh23bthnajx07ht7YnLVJmh97oydC8BmrP5IZJEiSJOzdu1dhfXopKSlBTU1NCMOMV07WAu9/Av+eQUR5heJuzjNQN+A0C5hiAJvNhrS0tJD2nJwcrF27FocOHepR/x/+S0U0+dELdE1LV21AgMm7w1evXg2ZBjt37sSkSZNMub4YZrdI0pr63AtaWlqUBOfGjRtYuHAh5syZo7SPGjUKpaWlWLp0acJ9pzsJKYi6JzjSrjtHUL9KZo3+unXrFOVZNm/ejEuXLikFFpYlS5Yoy+OFCxcS6vsX36T5/T2NDndb0IG676xvM8bFvhOmuvrvnALrpby8PCRIxuzapAWvZ9EQnEbzAiRGj53GYBZrPSBY9OTHP/cfPnwYOJ4+fTo2btyYKKHpesSiOwRNEZ8PPlG3KESVsWPHGo4fP36csEc0Nzdjz549hrbt27cjIyPDPCZIE0KMPnMQCFZc5vILV2saGxt7dAOc/t68eTNw7HQ6cfDgQTOzQRcbIKbSS2FhIdLT0wPH9+7dU9ATYQLEAVEvixYtUgolJuUCrWyA/3Y3V1nmzp2LsrIyQ9v58+d7zOBYOPKfPn3a0MbEKDnZlCT1IRvA4MdMWfnJsaqqKpw6dQqXL1/GxYsXMWbMmMA5XKs/evRor90FkyPOF/ySmZmJrVu3muEBzWyAfwbT09zcXCxevFhZn2fPnh3yj8XFxbh9+3av3Qj3FUyHt2zZYiir95E0sAHq9MvctGmRa6T379/HihUrQmp54STYhYN3ioLlwIEDhpjCZXLOFm22JPj6gqmo/PdDZoJcguVyooNTU87Z8/LyMGHCBCUeuFwu3L17V2Fu1dXVePToUUz98wjqgyb3EY0qM0XW1wvYaDa6B5+rl0tlgsIBmMTU+VPif0DdIBmQkkIE8aMS4Kl0lbZlvEy++6Dr95e/A/x6OWIri2sGoFX8Y8GW8qykMcF3B7IBgqVkAS1drV3HeV+Kh85pLNaH92wi2v3JEK9D6wa85to2Z9E3ghJ5j4Z4qDPpzLmBv5v3CDcHiwcouzttOnjim/+dXjRJImqgsyNPg3IMB5EVD3iN4msrZKMj/YGLNkNaeRp9jxeNlD5X6OsB+pn083jS48GmPPMJCn4bJAv+F3jOOOi0y7yED1XXd3fiN0lWvKmvC4Qrih4hlA01/V0evGWVUCxEeVI0kJ8QXh0Kbs+D3e7G78ntl1lEYn9ybAZg4YcmXyI0DVblabnroJHfRm7/AzKAO1zVONq+ABOkXEJlnKtt/wY7WXH5Ggp4X3VYUaZUgyOUzGPZGGkm/FQzxHHC44GotEJvucjnwTu01C20WZBPI/9BgEFGkHj2Ba4RVhF+yZUrqA9Vs1FG9JfCrJjyvpAX9aR8NTVXWS14PzDicuxdJSqTob4xxg8f50B9bS69t/V10DA1lwKp6ltjrsAbY8DfCH8lP75Omrjj0oaNY7VDGD26V990486ehvrgFYOfQH9KMwo/iut/edKmeZ+oux2vFmfcGsNvIfDGwb9tEhqX5eITZxI+5ioO6dlEo+zWvzOYyC57ksMJgZ/PMVEsOuX9O9P+LUufxkL9RjCo1OJS3T3W1wJjEZFIgfDZ2+PDXP4vwABKHSZ0zSd04wAAAABJRU5ErkJggg==// ==/UserScript==/* eslint-disable */ /* spell-checker: disable */// @[ You can find all source codes in GitHub repo ]/******/ (() => { // webpackBootstrap/******/ 	var __webpack_modules__ = ({/***/ 529:/***/ ((module, __unused_webpack_exports, __webpack_require__) => {// Importsvar ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ = __webpack_require__(81);var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(645);var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);// Module___CSS_LOADER_EXPORT___.push([module.id, "/*\n! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com\n*/\n\n/*\n1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)\n2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)\n*/\n\n*,\n::before,\n::after {\n  box-sizing: border-box;\n  /* 1 */\n  border-width: 0;\n  /* 2 */\n  border-style: solid;\n  /* 2 */\n  border-color: #e5e7eb;\n  /* 2 */\n}\n\n::before,\n::after {\n  --tw-content: '';\n}\n\n/*\n1. Use a consistent sensible line-height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n3. Use a more readable tab size.\n4. Use the user's configured `sans` font-family by default.\n*/\n\nhtml {\n  line-height: 1.5;\n  /* 1 */\n  -webkit-text-size-adjust: 100%;\n  /* 2 */\n  -moz-tab-size: 4;\n  /* 3 */\n  -o-tab-size: 4;\n     tab-size: 4;\n  /* 3 */\n  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  /* 4 */\n}\n\n/*\n1. Remove the margin in all browsers.\n2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.\n*/\n\nbody {\n  margin: 0;\n  /* 1 */\n  line-height: inherit;\n  /* 2 */\n}\n\n/*\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n3. Ensure horizontal rules are visible by default.\n*/\n\nhr {\n  height: 0;\n  /* 1 */\n  color: inherit;\n  /* 2 */\n  border-top-width: 1px;\n  /* 3 */\n}\n\n/*\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr:where([title]) {\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n}\n\n/*\nRemove the default font size and weight for headings.\n*/\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  font-size: inherit;\n  font-weight: inherit;\n}\n\n/*\nReset links to optimize for opt-in styling instead of opt-out.\n*/\n\na {\n  color: inherit;\n  text-decoration: inherit;\n}\n\n/*\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/*\n1. Use the user's configured `mono` font family by default.\n2. Correct the odd `em` font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  /* 1 */\n  font-size: 1em;\n  /* 2 */\n}\n\n/*\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n  font-size: 80%;\n}\n\n/*\nPrevent `sub` and `sup` elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/*\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n3. Remove gaps between table borders by default.\n*/\n\ntable {\n  text-indent: 0;\n  /* 1 */\n  border-color: inherit;\n  /* 2 */\n  border-collapse: collapse;\n  /* 3 */\n}\n\n/*\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n3. Remove default padding in all browsers.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  font-family: inherit;\n  /* 1 */\n  font-size: 100%;\n  /* 1 */\n  line-height: inherit;\n  /* 1 */\n  color: inherit;\n  /* 1 */\n  margin: 0;\n  /* 2 */\n  padding: 0;\n  /* 3 */\n}\n\n/*\nRemove the inheritance of text transform in Edge and Firefox.\n*/\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Remove default button styles.\n*/\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n  -webkit-appearance: button;\n  /* 1 */\n  background-color: transparent;\n  /* 2 */\n  background-image: none;\n  /* 2 */\n}\n\n/*\nUse the modern Firefox focus style for all focusable elements.\n*/\n\n:-moz-focusring {\n  outline: auto;\n}\n\n/*\nRemove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)\n*/\n\n:-moz-ui-invalid {\n  box-shadow: none;\n}\n\n/*\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n  vertical-align: baseline;\n}\n\n/*\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n::-webkit-inner-spin-button,\n::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/*\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n  -webkit-appearance: textfield;\n  /* 1 */\n  outline-offset: -2px;\n  /* 2 */\n}\n\n/*\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/*\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to `inherit` in Safari.\n*/\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button;\n  /* 1 */\n  font: inherit;\n  /* 2 */\n}\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n  display: list-item;\n}\n\n/*\nRemoves the default spacing and border for appropriate elements.\n*/\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n  margin: 0;\n}\n\nfieldset {\n  margin: 0;\n  padding: 0;\n}\n\nlegend {\n  padding: 0;\n}\n\nol,\nul,\nmenu {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n\n/*\nPrevent resizing textareas horizontally by default.\n*/\n\ntextarea {\n  resize: vertical;\n}\n\n/*\n1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)\n2. Set the default placeholder color to the user's configured gray 400 color.\n*/\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n  opacity: 1;\n  /* 1 */\n  color: #9ca3af;\n  /* 2 */\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n  opacity: 1;\n  /* 1 */\n  color: #9ca3af;\n  /* 2 */\n}\n\ninput::placeholder,\ntextarea::placeholder {\n  opacity: 1;\n  /* 1 */\n  color: #9ca3af;\n  /* 2 */\n}\n\n/*\nSet the default cursor for buttons.\n*/\n\nbutton,\n[role=\"button\"] {\n  cursor: pointer;\n}\n\n/*\nMake sure disabled buttons don't get the pointer cursor.\n*/\n\n:disabled {\n  cursor: default;\n}\n\n/*\n1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)\n2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)\n   This can trigger a poorly considered lint error in some tools but is included by design.\n*/\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n  display: block;\n  /* 1 */\n  vertical-align: middle;\n  /* 2 */\n}\n\n/*\nConstrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)\n*/\n\nimg,\nvideo {\n  max-width: 100%;\n  height: auto;\n}\n\n/*\nEnsure the default browser behavior of the `hidden` attribute.\n*/\n\n[hidden] {\n  display: none;\n}\n\n[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select {\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n  background-color: #fff;\n  border-color: #6b7280;\n  border-width: 1px;\n  border-radius: 0px;\n  padding-top: 0.5rem;\n  padding-right: 0.75rem;\n  padding-bottom: 0.5rem;\n  padding-left: 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5rem;\n  --tw-shadow: 0 0 #0000;\n}\n\n[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus {\n  outline: 2px solid transparent;\n  outline-offset: 2px;\n  --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n  --tw-ring-offset-width: 0px;\n  --tw-ring-offset-color: #fff;\n  --tw-ring-color: #2563eb;\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n  border-color: #2563eb;\n}\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n  color: #6b7280;\n  opacity: 1;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n  color: #6b7280;\n  opacity: 1;\n}\n\ninput::placeholder,textarea::placeholder {\n  color: #6b7280;\n  opacity: 1;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n  padding: 0;\n}\n\n::-webkit-date-and-time-value {\n  min-height: 1.5em;\n}\n\n::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field {\n  padding-top: 0;\n  padding-bottom: 0;\n}\n\nselect {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\");\n  background-position: right 0.5rem center;\n  background-repeat: no-repeat;\n  background-size: 1.5em 1.5em;\n  padding-right: 2.5rem;\n  print-color-adjust: exact;\n}\n\n[multiple] {\n  background-image: initial;\n  background-position: initial;\n  background-repeat: unset;\n  background-size: initial;\n  padding-right: 0.75rem;\n  print-color-adjust: unset;\n}\n\n[type='checkbox'],[type='radio'] {\n  -webkit-appearance: none;\n     -moz-appearance: none;\n          appearance: none;\n  padding: 0;\n  print-color-adjust: exact;\n  display: inline-block;\n  vertical-align: middle;\n  background-origin: border-box;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  flex-shrink: 0;\n  height: 1rem;\n  width: 1rem;\n  color: #2563eb;\n  background-color: #fff;\n  border-color: #6b7280;\n  border-width: 1px;\n  --tw-shadow: 0 0 #0000;\n}\n\n[type='checkbox'] {\n  border-radius: 0px;\n}\n\n[type='radio'] {\n  border-radius: 100%;\n}\n\n[type='checkbox']:focus,[type='radio']:focus {\n  outline: 2px solid transparent;\n  outline-offset: 2px;\n  --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n  --tw-ring-offset-width: 2px;\n  --tw-ring-offset-color: #fff;\n  --tw-ring-color: #2563eb;\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n}\n\n[type='checkbox']:checked,[type='radio']:checked {\n  border-color: transparent;\n  background-color: currentColor;\n  background-size: 100% 100%;\n  background-position: center;\n  background-repeat: no-repeat;\n}\n\n[type='checkbox']:checked {\n  background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e\");\n}\n\n[type='radio']:checked {\n  background-image: url(\"data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e\");\n}\n\n[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus {\n  border-color: transparent;\n  background-color: currentColor;\n}\n\n[type='checkbox']:indeterminate {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e\");\n  border-color: transparent;\n  background-color: currentColor;\n  background-size: 100% 100%;\n  background-position: center;\n  background-repeat: no-repeat;\n}\n\n[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus {\n  border-color: transparent;\n  background-color: currentColor;\n}\n\n[type='file'] {\n  background: unset;\n  border-color: inherit;\n  border-width: 0;\n  border-radius: 0;\n  padding: 0;\n  font-size: unset;\n  line-height: inherit;\n}\n\n[type='file']:focus {\n  outline: 1px solid ButtonText;\n  outline: 1px auto -webkit-focus-ring-color;\n}\n\n*, ::before, ::after {\n  --tw-translate-x: 0;\n  --tw-translate-y: 0;\n  --tw-rotate: 0;\n  --tw-skew-x: 0;\n  --tw-skew-y: 0;\n  --tw-scale-x: 1;\n  --tw-scale-y: 1;\n  --tw-pan-x:  ;\n  --tw-pan-y:  ;\n  --tw-pinch-zoom:  ;\n  --tw-scroll-snap-strictness: proximity;\n  --tw-ordinal:  ;\n  --tw-slashed-zero:  ;\n  --tw-numeric-figure:  ;\n  --tw-numeric-spacing:  ;\n  --tw-numeric-fraction:  ;\n  --tw-ring-inset:  ;\n  --tw-ring-offset-width: 0px;\n  --tw-ring-offset-color: #fff;\n  --tw-ring-color: rgb(59 130 246 / 0.5);\n  --tw-ring-offset-shadow: 0 0 #0000;\n  --tw-ring-shadow: 0 0 #0000;\n  --tw-shadow: 0 0 #0000;\n  --tw-shadow-colored: 0 0 #0000;\n  --tw-blur:  ;\n  --tw-brightness:  ;\n  --tw-contrast:  ;\n  --tw-grayscale:  ;\n  --tw-hue-rotate:  ;\n  --tw-invert:  ;\n  --tw-saturate:  ;\n  --tw-sepia:  ;\n  --tw-drop-shadow:  ;\n  --tw-backdrop-blur:  ;\n  --tw-backdrop-brightness:  ;\n  --tw-backdrop-contrast:  ;\n  --tw-backdrop-grayscale:  ;\n  --tw-backdrop-hue-rotate:  ;\n  --tw-backdrop-invert:  ;\n  --tw-backdrop-opacity:  ;\n  --tw-backdrop-saturate:  ;\n  --tw-backdrop-sepia:  ;\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border-width: 0;\n}\n\n.pointer-events-none {\n  pointer-events: none;\n}\n\n.pointer-events-auto {\n  pointer-events: auto;\n}\n\n.static {\n  position: static;\n}\n\n.fixed {\n  position: fixed;\n}\n\n.absolute {\n  position: absolute;\n}\n\n.relative {\n  position: relative;\n}\n\n.inset-0 {\n  top: 0px;\n  right: 0px;\n  bottom: 0px;\n  left: 0px;\n}\n\n.inset-y-0 {\n  top: 0px;\n  bottom: 0px;\n}\n\n.-left-8 {\n  left: -2rem;\n}\n\n.top-1\\/2 {\n  top: 50%;\n}\n\n.top-0 {\n  top: 0px;\n}\n\n.right-0 {\n  right: 0px;\n}\n\n.left-0 {\n  left: 0px;\n}\n\n.z-50 {\n  z-index: 50;\n}\n\n.m-2 {\n  margin: 0.5rem;\n}\n\n.-m-2 {\n  margin: -0.5rem;\n}\n\n.m-1 {\n  margin: 0.25rem;\n}\n\n.m-4 {\n  margin: 1rem;\n}\n\n.mx-1 {\n  margin-left: 0.25rem;\n  margin-right: 0.25rem;\n}\n\n.my-1 {\n  margin-top: 0.25rem;\n  margin-bottom: 0.25rem;\n}\n\n.-my-6 {\n  margin-top: -1.5rem;\n  margin-bottom: -1.5rem;\n}\n\n.mx-2 {\n  margin-left: 0.5rem;\n  margin-right: 0.5rem;\n}\n\n.ml-4 {\n  margin-left: 1rem;\n}\n\n.mt-2 {\n  margin-top: 0.5rem;\n}\n\n.ml-3 {\n  margin-left: 0.75rem;\n}\n\n.mt-8 {\n  margin-top: 2rem;\n}\n\n.mt-1 {\n  margin-top: 0.25rem;\n}\n\n.mt-0\\.5 {\n  margin-top: 0.125rem;\n}\n\n.mt-0 {\n  margin-top: 0px;\n}\n\n.mt-6 {\n  margin-top: 1.5rem;\n}\n\n.ml-auto {\n  margin-left: auto;\n}\n\n.mb-4 {\n  margin-bottom: 1rem;\n}\n\n.ml-1 {\n  margin-left: 0.25rem;\n}\n\n.block {\n  display: block;\n}\n\n.inline-block {\n  display: inline-block;\n}\n\n.flex {\n  display: flex;\n}\n\n.inline-flex {\n  display: inline-flex;\n}\n\n.table {\n  display: table;\n}\n\n.flow-root {\n  display: flow-root;\n}\n\n.h-12 {\n  height: 3rem;\n}\n\n.h-screen {\n  height: 100vh;\n}\n\n.h-fit {\n  height: -webkit-fit-content;\n  height: -moz-fit-content;\n  height: fit-content;\n}\n\n.h-20 {\n  height: 5rem;\n}\n\n.h-full {\n  height: 100%;\n}\n\n.h-7 {\n  height: 1.75rem;\n}\n\n.h-6 {\n  height: 1.5rem;\n}\n\n.h-24 {\n  height: 6rem;\n}\n\n.h-5 {\n  height: 1.25rem;\n}\n\n.h-3 {\n  height: 0.75rem;\n}\n\n.h-4 {\n  height: 1rem;\n}\n\n.h-8 {\n  height: 2rem;\n}\n\n.max-h-\\[95\\%\\] {\n  max-height: 95%;\n}\n\n.w-12 {\n  width: 3rem;\n}\n\n.w-full {\n  width: 100%;\n}\n\n.w-64 {\n  width: 16rem;\n}\n\n.w-80 {\n  width: 20rem;\n}\n\n.w-8 {\n  width: 2rem;\n}\n\n.w-screen {\n  width: 100vw;\n}\n\n.w-72 {\n  width: 18rem;\n}\n\n.w-40 {\n  width: 10rem;\n}\n\n.w-6 {\n  width: 1.5rem;\n}\n\n.w-24 {\n  width: 6rem;\n}\n\n.w-5 {\n  width: 1.25rem;\n}\n\n.w-3 {\n  width: 0.75rem;\n}\n\n.w-16 {\n  width: 4rem;\n}\n\n.w-4 {\n  width: 1rem;\n}\n\n.w-7 {\n  width: 1.75rem;\n}\n\n.min-w-full {\n  min-width: 100%;\n}\n\n.max-w-full {\n  max-width: 100%;\n}\n\n.max-w-md {\n  max-width: 28rem;\n}\n\n.max-w-\\[150px\\] {\n  max-width: 150px;\n}\n\n.flex-1 {\n  flex: 1 1 0%;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0;\n}\n\n.table-auto {\n  table-layout: auto;\n}\n\n.translate-x-full {\n  --tw-translate-x: 100%;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.translate-x-0 {\n  --tw-translate-x: 0px;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transform {\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.cursor-help {\n  cursor: help;\n}\n\n.cursor-not-allowed {\n  cursor: not-allowed;\n}\n\n.cursor-pointer {\n  cursor: pointer;\n}\n\n.flex-col {\n  flex-direction: column;\n}\n\n.flex-wrap {\n  flex-wrap: wrap;\n}\n\n.items-start {\n  align-items: flex-start;\n}\n\n.items-end {\n  align-items: flex-end;\n}\n\n.items-center {\n  align-items: center;\n}\n\n.justify-center {\n  justify-content: center;\n}\n\n.justify-between {\n  justify-content: space-between;\n}\n\n.justify-evenly {\n  justify-content: space-evenly;\n}\n\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n  --tw-space-y-reverse: 0;\n  margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n  margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n\n.divide-y > :not([hidden]) ~ :not([hidden]) {\n  --tw-divide-y-reverse: 0;\n  border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));\n  border-bottom-width: calc(1px * var(--tw-divide-y-reverse));\n}\n\n.divide-gray-200 > :not([hidden]) ~ :not([hidden]) {\n  --tw-divide-opacity: 1;\n  border-color: rgb(229 231 235 / var(--tw-divide-opacity));\n}\n\n.divide-gray-100 > :not([hidden]) ~ :not([hidden]) {\n  --tw-divide-opacity: 1;\n  border-color: rgb(243 244 246 / var(--tw-divide-opacity));\n}\n\n.overflow-auto {\n  overflow: auto;\n}\n\n.overflow-hidden {\n  overflow: hidden;\n}\n\n.overflow-y-auto {\n  overflow-y: auto;\n}\n\n.overflow-x-hidden {\n  overflow-x: hidden;\n}\n\n.overflow-y-scroll {\n  overflow-y: scroll;\n}\n\n.overflow-ellipsis {\n  text-overflow: ellipsis;\n}\n\n.text-ellipsis {\n  text-overflow: ellipsis;\n}\n\n.whitespace-nowrap {\n  white-space: nowrap;\n}\n\n.rounded-md {\n  border-radius: 0.375rem;\n}\n\n.rounded {\n  border-radius: 0.25rem;\n}\n\n.rounded-lg {\n  border-radius: 0.5rem;\n}\n\n.rounded-full {\n  border-radius: 9999px;\n}\n\n.rounded-t {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.rounded-b {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.border {\n  border-width: 1px;\n}\n\n.border-0 {\n  border-width: 0px;\n}\n\n.border-2 {\n  border-width: 2px;\n}\n\n.border-b {\n  border-bottom-width: 1px;\n}\n\n.border-t {\n  border-top-width: 1px;\n}\n\n.border-b-2 {\n  border-bottom-width: 2px;\n}\n\n.border-solid {\n  border-style: solid;\n}\n\n.border-gray-200 {\n  --tw-border-opacity: 1;\n  border-color: rgb(229 231 235 / var(--tw-border-opacity));\n}\n\n.border-transparent {\n  border-color: transparent;\n}\n\n.border-gray-300 {\n  --tw-border-opacity: 1;\n  border-color: rgb(209 213 219 / var(--tw-border-opacity));\n}\n\n.border-gray-400 {\n  --tw-border-opacity: 1;\n  border-color: rgb(156 163 175 / var(--tw-border-opacity));\n}\n\n.bg-transparent {\n  background-color: transparent;\n}\n\n.bg-gray-50 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(249 250 251 / var(--tw-bg-opacity));\n}\n\n.bg-indigo-400 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(129 140 248 / var(--tw-bg-opacity));\n}\n\n.bg-indigo-600 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(79 70 229 / var(--tw-bg-opacity));\n}\n\n.bg-gray-500 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(107 114 128 / var(--tw-bg-opacity));\n}\n\n.bg-white {\n  --tw-bg-opacity: 1;\n  background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n}\n\n.bg-gray-900 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n\n.bg-gray-200 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n\n.bg-blue-200 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(191 219 254 / var(--tw-bg-opacity));\n}\n\n.bg-green-400 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(74 222 128 / var(--tw-bg-opacity));\n}\n\n.bg-gray-400 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(156 163 175 / var(--tw-bg-opacity));\n}\n\n.bg-red-400 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(248 113 113 / var(--tw-bg-opacity));\n}\n\n.bg-blue-400 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(96 165 250 / var(--tw-bg-opacity));\n}\n\n.bg-gray-100 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.bg-gray-300 {\n  --tw-bg-opacity: 1;\n  background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n\n.bg-opacity-75 {\n  --tw-bg-opacity: 0.75;\n}\n\n.bg-opacity-50 {\n  --tw-bg-opacity: 0.5;\n}\n\n.bg-cover {\n  background-size: cover;\n}\n\n.bg-center {\n  background-position: center;\n}\n\n.object-cover {\n  -o-object-fit: cover;\n     object-fit: cover;\n}\n\n.object-center {\n  -o-object-position: center;\n     object-position: center;\n}\n\n.p-2 {\n  padding: 0.5rem;\n}\n\n.p-5 {\n  padding: 1.25rem;\n}\n\n.p-1\\.5 {\n  padding: 0.375rem;\n}\n\n.p-1 {\n  padding: 0.25rem;\n}\n\n.p-6 {\n  padding: 1.5rem;\n}\n\n.p-3 {\n  padding: 0.75rem;\n}\n\n.p-0 {\n  padding: 0px;\n}\n\n.px-2 {\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n}\n\n.py-1 {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n}\n\n.py-6 {\n  padding-top: 1.5rem;\n  padding-bottom: 1.5rem;\n}\n\n.px-4 {\n  padding-left: 1rem;\n  padding-right: 1rem;\n}\n\n.px-6 {\n  padding-left: 1.5rem;\n  padding-right: 1.5rem;\n}\n\n.py-3 {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n}\n\n.py-4 {\n  padding-top: 1rem;\n  padding-bottom: 1rem;\n}\n\n.px-3 {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n}\n\n.py-2 {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.pr-4 {\n  padding-right: 1rem;\n}\n\n.pl-2 {\n  padding-left: 0.5rem;\n}\n\n.pl-10 {\n  padding-left: 2.5rem;\n}\n\n.pl-1 {\n  padding-left: 0.25rem;\n}\n\n.pl-5 {\n  padding-left: 1.25rem;\n}\n\n.text-left {\n  text-align: left;\n}\n\n.text-center {\n  text-align: center;\n}\n\n.text-sm {\n  font-size: 0.875rem;\n  line-height: 1.25rem;\n}\n\n.text-xs {\n  font-size: 0.75rem;\n  line-height: 1rem;\n}\n\n.text-lg {\n  font-size: 1.125rem;\n  line-height: 1.75rem;\n}\n\n.text-base {\n  font-size: 1rem;\n  line-height: 1.5rem;\n}\n\n.text-xl {\n  font-size: 1.25rem;\n  line-height: 1.75rem;\n}\n\n.font-bold {\n  font-weight: 700;\n}\n\n.font-medium {\n  font-weight: 500;\n}\n\n.font-normal {\n  font-weight: 400;\n}\n\n.uppercase {\n  text-transform: uppercase;\n}\n\n.leading-tight {\n  line-height: 1.25;\n}\n\n.leading-6 {\n  line-height: 1.5rem;\n}\n\n.tracking-wider {\n  letter-spacing: 0.05em;\n}\n\n.text-white {\n  --tw-text-opacity: 1;\n  color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n.text-red-500 {\n  --tw-text-opacity: 1;\n  color: rgb(239 68 68 / var(--tw-text-opacity));\n}\n\n.text-blue-500 {\n  --tw-text-opacity: 1;\n  color: rgb(59 130 246 / var(--tw-text-opacity));\n}\n\n.text-gray-900 {\n  --tw-text-opacity: 1;\n  color: rgb(17 24 39 / var(--tw-text-opacity));\n}\n\n.text-gray-400 {\n  --tw-text-opacity: 1;\n  color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.text-gray-500 {\n  --tw-text-opacity: 1;\n  color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n\n.text-indigo-600 {\n  --tw-text-opacity: 1;\n  color: rgb(79 70 229 / var(--tw-text-opacity));\n}\n\n.text-gray-800 {\n  --tw-text-opacity: 1;\n  color: rgb(31 41 55 / var(--tw-text-opacity));\n}\n\n.text-blue-600 {\n  --tw-text-opacity: 1;\n  color: rgb(37 99 235 / var(--tw-text-opacity));\n}\n\n.text-gray-700 {\n  --tw-text-opacity: 1;\n  color: rgb(55 65 81 / var(--tw-text-opacity));\n}\n\n.opacity-0 {\n  opacity: 0;\n}\n\n.opacity-100 {\n  opacity: 1;\n}\n\n.shadow-md {\n  --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-xl {\n  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow-sm {\n  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.shadow {\n  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.filter {\n  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n\n.transition {\n  transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;\n  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n\n.transition-opacity {\n  transition-property: opacity;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n\n.delay-150 {\n  transition-delay: 150ms;\n}\n\n.duration-300 {\n  transition-duration: 300ms;\n}\n\n.duration-150 {\n  transition-duration: 150ms;\n}\n\n.duration-500 {\n  transition-duration: 500ms;\n}\n\n.duration-75 {\n  transition-duration: 75ms;\n}\n\n.ease-in-out {\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n#jkforum-helper .toggle-bg:after {\n  content: '';\n  position: absolute;\n  top: 0.125rem;\n  left: 0.125rem;\n  height: 0.75rem;\n  width: 0.75rem;\n  border-radius: 9999px;\n  border-width: 1px;\n  --tw-border-opacity: 1;\n  border-color: rgb(209 213 219 / var(--tw-border-opacity));\n  --tw-bg-opacity: 1;\n  background-color: rgb(255 255 255 / var(--tw-bg-opacity));\n  --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n  --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n  transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;\n  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n\n#jkforum-helper input:checked + .toggle-bg:after {\n  transform: translateX(100%);\n  --tw-border-opacity: 1;\n  border-color: rgb(255 255 255 / var(--tw-border-opacity));\n}\n\n#jkforum-helper input:checked + .toggle-bg {\n  --tw-border-opacity: 1;\n  border-color: rgb(37 99 235 / var(--tw-border-opacity));\n  --tw-bg-opacity: 1;\n  background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n\n.border-b {\n  border-bottom: 1px solid lightgray;\n}\n\n/* 增加 visited 样式,图片模式已阅的帖子变灰色 */\n\n.xw0 a:visited {\n  color: grey;\n}\n\n#jkforum-helper button {\n  border: unset;\n}\n\n.focus-within\\:text-gray-400:focus-within {\n  --tw-text-opacity: 1;\n  color: rgb(156 163 175 / var(--tw-text-opacity));\n}\n\n.hover\\:translate-x-9:hover {\n  --tw-translate-x: 2.25rem;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\:rotate-\\[360deg\\]:hover {\n  --tw-rotate: 360deg;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\:scale-110:hover {\n  --tw-scale-x: 1.1;\n  --tw-scale-y: 1.1;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.hover\\:border-gray-200:hover {\n  --tw-border-opacity: 1;\n  border-color: rgb(229 231 235 / var(--tw-border-opacity));\n}\n\n.hover\\:bg-indigo-700:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgb(67 56 202 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-200:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n\n.hover\\:bg-gray-100:hover {\n  --tw-bg-opacity: 1;\n  background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n\n.hover\\:text-gray-500:hover {\n  --tw-text-opacity: 1;\n  color: rgb(107 114 128 / var(--tw-text-opacity));\n}\n\n.hover\\:text-indigo-500:hover {\n  --tw-text-opacity: 1;\n  color: rgb(99 102 241 / var(--tw-text-opacity));\n}\n\n.hover\\:text-gray-900:hover {\n  --tw-text-opacity: 1;\n  color: rgb(17 24 39 / var(--tw-text-opacity));\n}\n\n.hover\\:shadow-lg:hover {\n  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:border-blue-500:focus {\n  --tw-border-opacity: 1;\n  border-color: rgb(59 130 246 / var(--tw-border-opacity));\n}\n\n.focus\\:border-gray-100:focus {\n  --tw-border-opacity: 1;\n  border-color: rgb(243 244 246 / var(--tw-border-opacity));\n}\n\n.focus\\:bg-indigo-700:focus {\n  --tw-bg-opacity: 1;\n  background-color: rgb(67 56 202 / var(--tw-bg-opacity));\n}\n\n.focus\\:shadow-lg:focus {\n  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.focus\\:outline-none:focus {\n  outline: 2px solid transparent;\n  outline-offset: 2px;\n}\n\n.focus\\:ring-2:focus {\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-0:focus {\n  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);\n  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);\n  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);\n}\n\n.focus\\:ring-indigo-500:focus {\n  --tw-ring-opacity: 1;\n  --tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity));\n}\n\n.focus\\:ring-blue-500:focus {\n  --tw-ring-opacity: 1;\n  --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));\n}\n\n.focus\\:ring-offset-2:focus {\n  --tw-ring-offset-width: 2px;\n}\n\n.active\\:bg-indigo-800:active {\n  --tw-bg-opacity: 1;\n  background-color: rgb(55 48 163 / var(--tw-bg-opacity));\n}\n\n.active\\:shadow-lg:active {\n  --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n\n.disabled\\:opacity-25:disabled {\n  opacity: 0.25;\n}\n\n.group:hover .group-hover\\:text-gray-900 {\n  --tw-text-opacity: 1;\n  color: rgb(17 24 39 / var(--tw-text-opacity));\n}\n\n@media (min-width: 640px) {\n  .sm\\:px-6 {\n    padding-left: 1.5rem;\n    padding-right: 1.5rem;\n  }\n\n  .sm\\:text-xs {\n    font-size: 0.75rem;\n    line-height: 1rem;\n  }\n\n  .sm\\:text-sm {\n    font-size: 0.875rem;\n    line-height: 1.25rem;\n  }\n\n  .sm\\:leading-5 {\n    line-height: 1.25rem;\n  }\n\n  .sm\\:duration-700 {\n    transition-duration: 700ms;\n  }\n}\n", ""]);// Exportsmodule.exports = ___CSS_LOADER_EXPORT___;/***/ }),/***/ 645:/***/ ((module) => {"use strict";/*MIT License http://www.opensource.org/licenses/mit-license.phpAuthor Tobias Koppers @sokra*/module.exports = function (cssWithMappingToString) {var list = []; // return the list of modules as css stringlist.toString = function toString() {return this.map(function (item) {var content = "";var needLayer = typeof item[5] !== "undefined";if (item[4]) {content += "@supports (".concat(item[4], ") {");}if (item[2]) {content += "@media ".concat(item[2], " {");}if (needLayer) {content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");}content += cssWithMappingToString(item);if (needLayer) {content += "}";}if (item[2]) {content += "}";}if (item[4]) {content += "}";}return content;}).join("");}; // import a list of modules into the listlist.i = function i(modules, media, dedupe, supports, layer) {if (typeof modules === "string") {modules = [[null, modules, undefined]];}var alreadyImportedModules = {};if (dedupe) {for (var k = 0; k < this.length; k++) {var id = this[k][0];if (id != null) {alreadyImportedModules[id] = true;}}}for (var _k = 0; _k < modules.length; _k++) {var item = [].concat(modules[_k]);if (dedupe && alreadyImportedModules[item[0]]) {continue;}if (typeof layer !== "undefined") {if (typeof item[5] === "undefined") {item[5] = layer;} else {item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");item[5] = layer;}}if (media) {if (!item[2]) {item[2] = media;} else {item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");item[2] = media;}}if (supports) {if (!item[4]) {item[4] = "".concat(supports);} else {item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");item[4] = supports;}}list.push(item);}};return list;};/***/ }),/***/ 81:/***/ ((module) => {"use strict";module.exports = function (i) {return i[1];};/***/ }),/***/ 466:/***/ (() => {(function (workerScript) {if (!/MSIE 10/i.test (navigator.userAgent)) {try {var blob = new Blob (["\var fakeIdToId = {};\onmessage = function (event) {\var data = event.data,\name = data.name,\fakeId = data.fakeId,\time;\if(data.hasOwnProperty('time')) {\time = data.time;\}\switch (name) {\case 'setInterval':\fakeIdToId[fakeId] = setInterval(function () {\postMessage({fakeId: fakeId});\}, time);\break;\case 'clearInterval':\if (fakeIdToId.hasOwnProperty (fakeId)) {\clearInterval(fakeIdToId[fakeId]);\delete fakeIdToId[fakeId];\}\break;\case 'setTimeout':\fakeIdToId[fakeId] = setTimeout(function () {\postMessage({fakeId: fakeId});\if (fakeIdToId.hasOwnProperty (fakeId)) {\delete fakeIdToId[fakeId];\}\}, time);\break;\case 'clearTimeout':\if (fakeIdToId.hasOwnProperty (fakeId)) {\clearTimeout(fakeIdToId[fakeId]);\delete fakeIdToId[fakeId];\}\break;\}\}\"]);// Obtain a blob URL reference to our worker 'file'.workerScript = window.URL.createObjectURL(blob);} catch (error) {/* Blob is not supported, use external script instead */}}var worker,fakeIdToCallback = {},lastFakeId = 0,maxFakeId = 0x7FFFFFFF, // 2 ^ 31 - 1, 31 bit, positive values of signed 32 bit integerlogPrefix = 'HackTimer.js by turuslan: ';if (typeof (Worker) !== 'undefined') {function getFakeId () {do {if (lastFakeId == maxFakeId) {lastFakeId = 0;} else {lastFakeId ++;}} while (fakeIdToCallback.hasOwnProperty (lastFakeId));return lastFakeId;}try {worker = new Worker (workerScript);window.setInterval = function (callback, time /* , parameters */) {var fakeId = getFakeId ();fakeIdToCallback[fakeId] = {callback: callback,parameters: Array.prototype.slice.call(arguments, 2)};worker.postMessage ({name: 'setInterval',fakeId: fakeId,time: time});return fakeId;};window.clearInterval = function (fakeId) {if (fakeIdToCallback.hasOwnProperty(fakeId)) {delete fakeIdToCallback[fakeId];worker.postMessage ({name: 'clearInterval',fakeId: fakeId});}};window.setTimeout = function (callback, time /* , parameters */) {var fakeId = getFakeId ();fakeIdToCallback[fakeId] = {callback: callback,parameters: Array.prototype.slice.call(arguments, 2),isTimeout: true};worker.postMessage ({name: 'setTimeout',fakeId: fakeId,time: time});return fakeId;};window.clearTimeout = function (fakeId) {if (fakeIdToCallback.hasOwnProperty(fakeId)) {delete fakeIdToCallback[fakeId];worker.postMessage ({name: 'clearTimeout',fakeId: fakeId});}};worker.onmessage = function (event) {var data = event.data,fakeId = data.fakeId,request,parameters,callback;if (fakeIdToCallback.hasOwnProperty(fakeId)) {request = fakeIdToCallback[fakeId];callback = request.callback;parameters = request.parameters;if (request.hasOwnProperty ('isTimeout') && request.isTimeout) {delete fakeIdToCallback[fakeId];}}if (typeof (callback) === 'string') {try {callback = new Function (callback);} catch (error) {console.log (logPrefix + 'Error parsing callback code string: ', error);}}if (typeof (callback) === 'function') {callback.apply (window, parameters);}};worker.onerror = function (event) {console.log (event);};} catch (error) {console.log (logPrefix + 'Initialisation failed');console.error (error);}} else {console.log (logPrefix + 'Initialisation failed - HTML5 Web Worker is not supported');}}) ('HackTimerWorker.js');/***/ }),/***/ 745:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";var m = __webpack_require__(533);if (true) {exports.createRoot = m.createRoot;exports.hydrateRoot = m.hydrateRoot;} else { var i; }/***/ }),/***/ 600:/***/ ((module, __unused_webpack_exports, __webpack_require__) => {var r###lt = __webpack_require__(529);if (r###lt && r###lt.__esModule) {r###lt = r###lt.default;}if (typeof r###lt === "string") {module.exports = r###lt;} else {module.exports = r###lt.toString();}/***/ }),/***/ 632:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};Object.defineProperty(exports, "__esModule", ({ value: true }));const lib_1 = __webpack_require__(915);const Home_1 = __webpack_require__(818);const react_1 = __importStar(__webpack_require__(995));const commonMeta = __webpack_require__(419);const App = ({ username, formhash }) => {const [user, setUser] = (0, react_1.useState)();const [showHome, setShowHome] = (0, react_1.useState)(false);const [counter, setCounter] = (0, react_1.useState)({signBtn: 0,downloadBtn: 0,replyBtn: 0,thkBtn: 0,}); // 防止按钮重复点击(0, react_1.useEffect)(() => {if (!user) {(0, lib_1.creatUser)(username, formhash).then((user) => {(0, lib_1.launch)(user); // 启动自动签到、投票、加载原图等setUser(user);});}}, [username, formhash, user]);return (react_1.default.createElement("div", { className: "fixed z-50" }, showHome ? (user && (react_1.default.createElement(Home_1.Home, { setShowHome: () => {setShowHome(!showHome);}, user: user, counter: counter, setCounter: setCounter }))) : (react_1.default.createElement("button", { className: "h-12 w-12 fixed -left-8 top-1/2 block text-white bg-transparent vertical transition ease-in-out delay-150 hover:translate-x-9 hover:scale-110 duration-300 bg-cover bg-center hover:rotate-[360deg]", style: { backgroundImage: `url(${commonMeta.icon})` }, onClick: () => {if (user) {setShowHome(!showHome);}else {new lib_1.MessageBox('未获取到用户,请稍后再试');}} }))));};exports["default"] = App;/***/ }),/***/ 321:/***/ ((__unused_webpack_module, exports) => {"use strict";/* eslint-disable @typescript-eslint/no-explicit-any */Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Status = exports.RunStatus = exports.Mood = void 0;var Mood;(function (Mood) {Mood["kaixin"] = "kx";Mood["nanguo"] = "ng";Mood["yumen"] = "ym";Mood["wuliao"] = "wl";Mood["fennu"] = "nu";Mood["cahan"] = "ch";Mood["fendou"] = "fd";Mood["yonglan"] = "yl";Mood["shuai"] = "shuai";})(Mood = exports.Mood || (exports.Mood = {}));var Status;(function (Status) {Status["online"] = "online";Status["offline"] = "offline";})(Status || (Status = {}));exports.Status = Status;var RunStatus;(function (RunStatus) {RunStatus["NotRunning"] = "\u672A\u8FD0\u884C";RunStatus["Waiting"] = "\u7B49\u5F85\u4E2D";RunStatus["Running"] = "\u8FD0\u884C\u4E2D";RunStatus["Error"] = "\u9519\u8BEF";})(RunStatus || (RunStatus = {}));exports.RunStatus = RunStatus;/***/ }),/***/ 237:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __rest = (this && this.__rest) || function (s, e) {var t = {};for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)t[p] = s[p];if (s != null && typeof Object.getOwnPropertySymbols === "function")for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))t[p[i]] = s[p[i]];}return t;};var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Button = void 0;const react_1 = __importDefault(__webpack_require__(995));const Button = (_a) => {var { text, title = '', onClick, disabled } = _a, rest = __rest(_a, ["text", "title", "onClick", "disabled"]);return (react_1.default.createElement("button", Object.assign({}, rest, { title: title, type: "button", "data-mdb-ripple": "true", "data-mdb-ripple-color": "light", disabled: disabled, className: `mx-1 my-1 px-2 py-1 text-xs font-medium text-center text-white inline-block leading-tight uppercase rounded shadow-md ${disabled? ' cursor-not-allowed bg-indigo-400 ': 'bg-indigo-600 hover:bg-indigo-700 hover:shadow-lg focus:bg-indigo-700 focus:shadow-lg active:bg-indigo-800 active:shadow-lg transition duration-150 ease-in-out  focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500'}`, onClick: onClick }), text));};exports.Button = Button;/***/ }),/***/ 84:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __rest = (this && this.__rest) || function (s, e) {var t = {};for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)t[p] = s[p];if (s != null && typeof Object.getOwnPropertySymbols === "function")for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))t[p[i]] = s[p[i]];}return t;};var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Input = void 0;const react_1 = __importDefault(__webpack_require__(995));const Input = (_a) => {var { label, placeholder, autoComplete, value, type = 'text' } = _a, args = __rest(_a, ["label", "placeholder", "autoComplete", "value", "type"]);return (react_1.default.createElement(react_1.default.Fragment, null,label ? (react_1.default.createElement("label", { htmlFor: 'input' + label, className: "block m-1 text-xs font-medium text-gray-900" }, label)) : (''),react_1.default.createElement("input", Object.assign({}, args, { autoComplete: autoComplete, type: type, id: label ? 'input' + label : '', placeholder: placeholder, value: value, className: "py-1 pl-2 block w-full text-gray-900 bg-gray-50 rounded-lg border sm:text-xs focus:ring-blue-500 focus:border-blue-500 " }))));};exports.Input = Input;/***/ }),/***/ 653:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Modal = void 0;const react_1 = __importDefault(__webpack_require__(995));const Modal = ({ header, footer, children, width, height, isShow = false, onClose }) => {if (!isShow) {return react_1.default.createElement(react_1.default.Fragment, null);}return (react_1.default.createElement("div", { className: "fixed top-0 right-0 h-full w-full left-0 z-50 overflow-y-auto overflow-x-hidden items-center justify-center flex bg-gray-900 bg-opacity-50" },react_1.default.createElement("div", { className: `relative rounded-lg bg-white shadow m-4 flex flex-col ${width} ${height}` },react_1.default.createElement("div", { className: "flex items-start justify-between rounded-t  border-gray-300 border-solid border-0 border-b p-5" },react_1.default.createElement("h3", { className: "text-xl font-medium text-gray-900 " }, header),react_1.default.createElement("button", { "aria-label": "Close", className: "ml-auto inline-flex items-center rounded-lg bg-transparent p-1.5 text-sm text-gray-400 hover:bg-gray-200 hover:text-gray-900 ", type: "button", onClick: onClose },react_1.default.createElement("svg", { stroke: "currentColor", fill: "none", strokeWidth: "0", viewBox: "0 0 24 24", "aria-hidden": "true", className: "h-5 w-5", height: "1em", width: "1em", xmlns: "http://www.w3.org/2000/svg" },react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M6 18L18 6M6 6l12 12" })))),react_1.default.createElement("div", { className: "p-6 h-full overflow-auto" }, children),react_1.default.createElement("div", { className: "flex items-center rounded-b p-6 border-gray-300 border-solid border-0 border-t" }, footer))));};exports.Modal = Modal;/***/ }),/***/ 414:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Panel = void 0;const react_1 = __importDefault(__webpack_require__(995));const Panel = ({ title, children }) => {return (react_1.default.createElement("div", { className: "border-b py-1" },react_1.default.createElement("p", { className: "text-center font-bold" }, title),react_1.default.createElement("div", { className: "flex flex-wrap" }, children)));};exports.Panel = Panel;/***/ }),/***/ 420:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};Object.defineProperty(exports, "__esModule", ({ value: true }));/* eslint-disable react/jsx-key */const commonType_1 = __webpack_require__(321);const tools_1 = __webpack_require__(633);const react_1 = __importStar(__webpack_require__(995));const react_table_1 = __webpack_require__(282);const Button_1 = __webpack_require__(237);const Toggle_1 = __webpack_require__(219);const EditableCell = ({ value: initialValue, row: { index }, column: { id }, updateMyData, // This is a custom function that we supplied to our table instance}) => {// We need to keep and update the state of the cell normallyconst [value, setValue] = (0, react_1.useState)(initialValue);const onChange = (e) => {setValue(e.target.value);};// We'll only update the external data when the input is blurredconst onBlur = () => {updateMyData(index, id, value);};// If the initialValue is changed external, sync it up with our state(0, react_1.useEffect)(() => {setValue(initialValue);}, [initialValue]);return (react_1.default.createElement("div", null,react_1.default.createElement("input", { className: "w-6 mx-1", value: value, onChange: onChange, onBlur: onBlur }),"\u5206\u949F/\u70B9\u51FB"));};const ToggleCell = ({ value, row: { index }, column: { id }, updateMyData, // This is a custom function that we supplied to our table instance}) => {const update = () => {updateMyData(index, id, value === commonType_1.Status.online ? commonType_1.Status.offline : commonType_1.Status.online);};return (react_1.default.createElement(Toggle_1.Toggle, { mykey: `${id}-${index}-${value}`, label: value === commonType_1.Status.online ? '已启用' : '未启用', onClick: update, checked: value === commonType_1.Status.online }));};const LightCell = ({ value }) => {const getLightColor = (value) => {switch (true) {case value === commonType_1.RunStatus.Running:return 'bg-green-400';case value === commonType_1.RunStatus.NotRunning:return 'bg-gray-400';case value === commonType_1.RunStatus.Error:return 'bg-red-400';case value === commonType_1.RunStatus.Waiting:return 'bg-blue-400';default:break;}};return (react_1.default.createElement("div", { title: "\u72B6\u6001\u4E3A\u2018\u7B49\u5F85\u4E2D\u2019\u65F6\u4E3A\u672A\u5230\u6267\u884C\u65F6\u95F4\u6BB5\uFF0C\u72B6\u6001\u4E3A\u2018\u9519\u8BEF\u2019\u65F6\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u65B0\u8FD0\u884C", className: `flex items-center w-16 cursor-help` },react_1.default.createElement("span", { className: `rounded-md px-2 py-1 font-bold text-white ${getLightColor(value)}` }, value)));};const DeleteCell = ({ row: { index }, deleteData, // This is a custom function that we supplied to our table instance}) => {return react_1.default.createElement(Button_1.Button, { text: '删除', onClick: () => deleteData(index) });};function ReactTableCard({ title, data, updateMyData, deleteData, skipPageReset = true, searchBar = true, }) {const colHeader = (headerItem) => {if (headerItem === 'title') {return {Header: '标题',accessor: headerItem,Cell: (props) => {return (react_1.default.createElement("strong", { title: props.value, className: "block whitespace-nowrap overflow-hidden overflow-ellipsis mx-1" }, props.value));},};}else if (headerItem === 'status') {return {Header: '启用状态',accessor: headerItem,Cell: ToggleCell,};}else if (headerItem === 'runStatus') {return {Header: '运行状态',accessor: headerItem,Cell: LightCell,};}else if (headerItem === 'cycle') {return {Header: '点击间隔时间',accessor: headerItem,Cell: EditableCell,};}else if (headerItem === 'delete') {return {Header: '操作',accessor: headerItem,Cell: DeleteCell,};}else if (headerItem === 'url') {return {Header: '帖子ID',accessor: headerItem,Cell: ({ value }) => {return (react_1.default.createElement("a", { className: "border-b", title: value, target: "_blank", href: value, rel: "noreferrer" }, (0, tools_1.getTid)(value)));},};}else if (headerItem === 'times') {return {Header: '点击次数',accessor: headerItem,Cell: ({ value }) => {return react_1.default.createElement("span", null, value + ' 次');},};}else if (headerItem === 'nextClickTime') {return {Header: '下次点击',accessor: headerItem,Cell: ({ value }) => {return react_1.default.createElement("span", null, new Date(value).toLocaleString());},};}else if (headerItem === 'retry') {return {Header: '重试次数',accessor: headerItem,Cell: ({ value }) => {return react_1.default.createElement("span", null, value);},};}else if (headerItem === 'runTime') {return {Header: '运行时段',accessor: headerItem,Cell: ({ value }) => {return react_1.default.createElement("span", null, value ? value.startTime + ':00~' + value.endTime + ':59' : '24h');},};}else {return {Header: headerItem,accessor: headerItem,};}};const memoColumns = (0, react_1.useMemo)(() => {const headers = Object.keys(data[0]).map(colHeader);// push columnsreturn headers;}, [data]);const memoData = (0, react_1.useMemo)(() => data, [data]);const memoTitle = (0, react_1.useMemo)(() => title, [title]);const defaultSort = () => {const headers = Object.keys(data[0]).map(colHeader);return headers.filter((col) => (col.Header === 'name' ? { id: 'total', desc: true } : { id: 'sum', desc: true }));};const defaultColumn = {Cell: EditableCell,};const tableInstance = (0, react_table_1.useTable)({columns: memoColumns,data: memoData,initialState: {// sortBy: [defaultSort()],pageSize: 20,},// defaultColumn,autoResetPage: !skipPageReset,disableSortRemove: true,updateMyData,deleteData,}, react_table_1.useGlobalFilter, react_table_1.useSortBy, react_table_1.usePagination);const { getTableProps, getTableBodyProps, headerGroups, prepareRow, setGlobalFilter, page, canPreviousPage, canNextPage, pageOptions, pageCount, gotoPage, nextPage, previousPage, setPageSize, state: { pageIndex, pageSize, globalFilter }, } = tableInstance;return (react_1.default.createElement("div", null,react_1.default.createElement("div", { className: "bg-white px-2 py-4" },react_1.default.createElement("h3", { className: "text-lg px-2 py-2 leading-6 font-medium text-gray-900" }, memoTitle),searchBar ? (react_1.default.createElement("div", { className: "mx-2 flex-1 relative text-gray-500 focus-within:text-gray-400" },react_1.default.createElement("div", { className: "absolute inset-y-0 left-0 pl-1 flex items-center pointer-events-none" },react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", className: "h-4 w-4", height: "25", width: "25" },react_1.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: "2", d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" }))),react_1.default.createElement("input", { className: "pl-5 block shadow-sm border-2 transition text-gray-900 disabled:opacity-25 focus:border-gray-100 focus:outline-none focus:ring-0 duration-150 ease-in-out sm:text-sm sm:leading-5", type: "text", value: globalFilter || '', onChange: (e) => setGlobalFilter(e.target.value) }))) : (''),react_1.default.createElement("table", Object.assign({}, getTableProps(), { className: "mb-4 min-w-full divide-y divide-gray-100 table-auto" }),react_1.default.createElement("thead", { className: "bg-gray-50 text-xs uppercase text-gray-700 " }, headerGroups.map((headerGroup) => (react_1.default.createElement("tr", Object.assign({}, headerGroup.getHeaderGroupProps()), headerGroup.headers.map((column) => (react_1.default.createElement("th", Object.assign({}, column.getHeaderProps(column.getSortByToggleProps()), { className: "px-2 py-3 text-left text-xs text-gray-500 uppercase tracking-wider" }),react_1.default.createElement("div", { className: "flex" },column.render('Header'),column.isSorted ? (column.isSortedDesc ? (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", className: "h-4 w-4", height: "16", width: "16" },react_1.default.createElement("path", { fillRule: "evenodd", d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z", clipRule: "evenodd" }))) : (react_1.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", className: "h-4 w-4", height: "16", width: "16" },react_1.default.createElement("path", { fillRule: "evenodd", d: "M14.707 12.707a1 1 0 01-1.414 0L10 9.414l-3.293 3.293a1 1 0 01-1.414-1.414l4-4a1 1 0 011.414 0l4 4a1 1 0 010 1.414z", clipRule: "evenodd" })))) : (''))))))))),react_1.default.createElement("tbody", Object.assign({ className: "w-full divide-y text-left text-sm text-gray-500 ", role: "table" }, getTableBodyProps()), page.map((row) => {prepareRow(row);return (react_1.default.createElement("tr", Object.assign({}, row.getRowProps(), { className: "hover:bg-gray-200 bg-white" }), row.cells.map((cell) => {return (react_1.default.createElement("td", Object.assign({}, cell.getCellProps(), { className: "text-xs p-0 h-8 whitespace-nowrap font-medium text-gray-900 max-w-[150px] overflow-hidden text-ellipsis" }), cell.render('Cell')));})));}))),react_1.default.createElement("div", { className: "flex justify-center bg-gray-100" },react_1.default.createElement("div", { className: "px-2 text-left text-xs text-gray-500 tracking-wider" },react_1.default.createElement("button", { className: "bg-gray-200 hover:bg-gray-100 font-bold py-1 px-2 border-b-2 border-gray-400 hover:border-gray-200 rounded", onClick: () => gotoPage(0), disabled: !canPreviousPage }, '<< 第一页'),' ',react_1.default.createElement("button", { className: "bg-gray-200 hover:bg-gray-100 font-bold py-1 px-2 border-b-2 border-gray-400 hover:border-gray-200 rounded", onClick: () => previousPage(), disabled: !canPreviousPage }, '< 上一页'),' ',react_1.default.createElement("button", { className: "bg-gray-200 hover:bg-gray-100 font-bold py-1 px-2 border-b-2 border-gray-400 hover:border-gray-200 rounded", onClick: () => nextPage(), disabled: !canNextPage }, '下一页 >'),' ',react_1.default.createElement("button", { className: "bg-gray-200 hover:bg-gray-100 font-bold py-1 px-2 border-b-2 border-gray-400 hover:border-gray-200 rounded", onClick: () => gotoPage(pageCount - 1), disabled: !canNextPage }, '最后一页 >>'),' ',react_1.default.createElement("span", null,"| \u7B2C",' ',react_1.default.createElement("strong", null,pageIndex + 1," \u9875\uFF0C\u5171 ",pageOptions.length," \u9875"),' '),react_1.default.createElement("span", null,"| \u8DF3\u8F6C\u5230\u7B2C",' ',react_1.default.createElement("input", { className: "w-8 bg-gray-100 hover:bg-gray-200", type: "number", defaultValue: pageIndex + 1, onChange: (e) => {const page = e.target.value ? Number(e.target.value) - 1 : 0;gotoPage(page);} }),' ',"\u9875"),' ',react_1.default.createElement("select", { className: "bg-gray-100 hover:bg-gray-200 pl-1", value: pageSize, onChange: (e) => {setPageSize(Number(e.target.value));} }, [10, 20, 50].map((pageSize) => (react_1.default.createElement("option", { key: pageSize, value: pageSize },"\u663E\u793A",pageSize,"\u6761")))))))));}exports["default"] = ReactTableCard;/***/ }),/***/ 815:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.TextArea = void 0;const react_1 = __importDefault(__webpack_require__(995));const TextArea = ({ label, placeholder, onChange, value, rows = 3, cols }) => {return (react_1.default.createElement(react_1.default.Fragment, null,react_1.default.createElement("label", { htmlFor: 'textarea' + label, className: "block m-1 text-xs font-medium text-gray-900 " }, label),react_1.default.createElement("textarea", { className: "px-2 block w-full text-gray-900 bg-gray-50 rounded-lg border sm:text-xs focus:ring-blue-500 focus:border-blue-500 ", id: 'textarea' + label, rows: rows, cols: cols, placeholder: placeholder, onChange: (e) => {onChange(e.target.value);}, value: value })));};exports.TextArea = TextArea;/***/ }),/***/ 219:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Toggle = void 0;const react_1 = __importStar(__webpack_require__(995));const Toggle = ({ label, checked, title, mykey = '-', onClick }) => {const [selected, setSelected] = (0, react_1.useState)(checked);(0, react_1.useEffect)(() => {setSelected(checked);}, [checked]);return (react_1.default.createElement(react_1.default.Fragment, null,react_1.default.createElement("label", { key: label + mykey, title: title, htmlFor: 'toggle-' + mykey + label, className: "mx-1 my-1 flex items-center cursor-pointer relative" },react_1.default.createElement("input", { type: "checkbox", id: 'toggle-' + mykey + label, className: "sr-only", checked: selected, onClick: () => {setSelected(!selected);}, onChange: (e) => {onClick(e.target.checked);} }),react_1.default.createElement("div", { className: "toggle-bg bg-gray-300 border-2 border-gray-200 h-4 w-7 rounded-full" }),react_1.default.createElement("span", { className: "ml-1 text-gray-900 text-xs" }, label))));};exports.Toggle = Toggle;/***/ }),/***/ 740:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Toggle = exports.TextArea = exports.ReactTableCard = exports.Panel = exports.Modal = exports.Input = exports.Button = void 0;var Button_1 = __webpack_require__(237);Object.defineProperty(exports, "Button", ({ enumerable: true, get: function () { return Button_1.Button; } }));var Input_1 = __webpack_require__(84);Object.defineProperty(exports, "Input", ({ enumerable: true, get: function () { return Input_1.Input; } }));var Modal_1 = __webpack_require__(653);Object.defineProperty(exports, "Modal", ({ enumerable: true, get: function () { return Modal_1.Modal; } }));var Panel_1 = __webpack_require__(414);Object.defineProperty(exports, "Panel", ({ enumerable: true, get: function () { return Panel_1.Panel; } }));var Table_1 = __webpack_require__(420);Object.defineProperty(exports, "ReactTableCard", ({ enumerable: true, get: function () { return __importDefault(Table_1).default; } }));var TextArea_1 = __webpack_require__(815);Object.defineProperty(exports, "TextArea", ({ enumerable: true, get: function () { return TextArea_1.TextArea; } }));var Toggle_1 = __webpack_require__(219);Object.defineProperty(exports, "Toggle", ({ enumerable: true, get: function () { return Toggle_1.Toggle; } }));/***/ }),/***/ 629:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));const app_1 = __importDefault(__webpack_require__(632));const lib_1 = __webpack_require__(915);__webpack_require__(466); // 定时器不会因为窗口隐藏而降频const react_1 = __importDefault(__webpack_require__(995));const client_1 = __webpack_require__(745);const start = () => {(0, lib_1.skipPhoneValidate)();const username = (0, lib_1.getUserName)();const formhash = (0, lib_1.getFormhash)();if (username && formhash) {Promise.resolve().then(() => __importStar(__webpack_require__(19)));// 初始化消息盒子lib_1.MessageBox.generate();// 添加根元素const rootDiv = document.createElement('div');rootDiv.id = 'jkforum-helper';document.body.prepend(rootDiv);const root = (0, client_1.createRoot)(rootDiv); // createRoot(container!) if you use TypeScriptroot.render(react_1.default.createElement(app_1.default, { username: username, formhash: formhash }));}};if (true) {start();}else {}/***/ }),/***/ 516:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.postDataCdata = exports.postData = exports.getData = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);// GM_xmlhttpRequest GET异步通用模块function getData(url, type = "document" /* DOCUMENT */, usermethod = "GET" /* GET */) {return new Promise((resolve, reject) => {GM_xmlhttpRequest({method: usermethod,url: url,responseType: type,timeout: 5 * 60 * 1000,onload: function (response) {if (response.status >= 200 && response.status < 400) {resolve(response.response);}else {reject(response);}},onerror: function (error) {new _1.MessageBox('网络错误');reject(error);},ontimeout: () => {new _1.MessageBox('网络超时', 'none', "LOG_POP_GM" /* LOG_POP_GM */);reject('timeout');},});});}exports.getData = getData;function postDataCdata(url, postData, responseType = "document" /* DOCUMENT */, usermethod = "POST" /* POST */, contentType = "application/x-www-form-urlencoded" /* FORM */) {return new Promise((resolve, reject) => {GM_xmlhttpRequest({method: usermethod,url: url,headers: {'Content-Type': contentType,},data: postData,responseType: responseType,timeout: 1 * 60 * 1000,onload: function (response) {if (response.status >= 200 && response.status < 400) {resolve((0, tools_1.turnCdata)(response.response));}else {new _1.MessageBox('请求错误:' + response.status);reject(response.status);}},onerror: function (error) {new _1.MessageBox('网络错误');reject(error);},ontimeout: () => {new _1.MessageBox('网络超时', 'none', "LOG_POP_GM" /* LOG_POP_GM */);reject('timeout');},});});}exports.postDataCdata = postDataCdata;// 正常的postfunction postData(url, data, { responseType = "document" /* DOCUMENT */, usermethod = "POST" /* POST */, contentType = "application/x-www-form-urlencoded" /* FORM */, authorization, cookie, } = {responseType: "document" /* DOCUMENT */,usermethod: "POST" /* POST */,contentType: "application/x-www-form-urlencoded" /* FORM */,}) {const headers = {'content-type': contentType,};if (authorization) {headers.authorization = authorization;}if (cookie) {headers.cookie = cookie;}return new Promise((resolve, reject) => {GM_xmlhttpRequest({method: usermethod,url,headers,data,responseType: responseType,timeout: 1 * 60 * 1000,onload: function (response) {if (response.status >= 200 && response.status < 400) {resolve(response.response);}else {reject(response);}},onerror: function (error) {reject(error);},ontimeout: () => {new _1.MessageBox('网络超时', 'none', "LOG_POP_GM" /* LOG_POP_GM */);reject('timeout');},});});}exports.postData = postData;/***/ }),/***/ 342:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.autoPost = void 0;const tools_1 = __webpack_require__(633);const ajax_1 = __webpack_require__(516);const message_1 = __webpack_require__(244);const autoPost = (user) => __awaiter(void 0, void 0, void 0, function* () {var _a, _b;if ((_a = user.posts) === null || _a === void 0 ? void 0 : _a.length) {if (confirm('已有历史文章,是否使用历史文章发文')) {if (!((_b = user.posts) === null || _b === void 0 ? void 0 : _b.length)) {return alert('没有读取到文章');}const post = user.posts[user.posts.length - 1];yield newThread(post, user.formhash);return;}}if (!location.href.includes('mod=post&action=newthread')) {return alert('请进入发表文章页面,输入好文章后再点击自动发文,第一次发文后会保存,之后发文无需再次进入发表文章页面');}const form = document.querySelector('#postform');if (!form) {return alert('未找到发帖输入框');}const inputTime = prompt('请输入回帖间隔时间(单位分钟,默认361分钟)', '361');if (!Number.isInteger(Number(inputTime))) {return alert('时间未输入或者数值错误');}if (!form.message.value || !form.message.value) {return alert('请输入文章内容');}const newPost = {typeid: form.typeid.value,subject: form.subject.value,message: form.message.value,allownoticeauthor: form.allownoticeauthor.value,postUrl: location.href + '&extra=&topicsubmit=yes',postTime: Number(inputTime) * 60 * 1000,};if (!user.posts) {user.posts = [];}user.posts.push(newPost);GM_setValue(user.username, user); //保存当天日// today 初始化yield newThread(newPost, user.formhash);});exports.autoPost = autoPost;const newThread = (post, formhash) => __awaiter(void 0, void 0, void 0, function* () {var _c;const currentUnixTimestamp = Math.floor(Date.now() / 1000);const data = (0, tools_1.urlSearchParams)({formhash: formhash,posttime: currentUnixTimestamp,wysiwyg: '1',typeid: post.typeid,subject: post.subject,message: post.message,accept_checkbox: 'on','localid[]': 1,'imglocalid[]': 1,uploadalbum: -2,usesig: 1,allownoticeauthor: post.allownoticeauthor,}).toString();try {const res = yield (0, ajax_1.postData)(post.postUrl, data, {responseType: "document" /* DOCUMENT */,usermethod: "POST" /* POST */,contentType: "application/x-www-form-urlencoded" /* FORM */,});const msg = (_c = res === null || res === void 0 ? void 0 : res.querySelector('#messagetext p')) === null || _c === void 0 ? void 0 : _c.textContent;if (msg) {new message_1.MessageBox(msg);}else {new message_1.MessageBox(`发文成功,到设置时间(${post.postTime / 1000 / 60}分钟)后将会再次自动发表文章`);setTimeout(() => {newThread(post, formhash);}, post.postTime);}}catch (error) {new message_1.MessageBox('发文失败:' + JSON.stringify(error));}});/***/ }),/***/ 134:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __importDefault = (this && this.__importDefault) || function (mod) {return (mod && mod.__esModule) ? mod : { "default": mod };};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.noDisplayPic = exports.downloadImgs = void 0;const ConcurrencyPromisePool_1 = __webpack_require__(287);const file_saver_1 = __webpack_require__(581);const jszip_1 = __importDefault(__webpack_require__(583));const _1 = __webpack_require__(915);function downloadImgs(user, counter, setCounter) {var _a;// 防重复点击setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 1 }));const imgsUrls = []; // 图片下载链接const imgsTitles = []; // 图片名称const foName = document.querySelector('.title-cont h1');if (!foName) {new _1.MessageBox('没有帖子标题!');return setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));}const folderName = foName.innerHTML.trim().replace(/\.+/g, '-');const pcbImg = document.querySelectorAll('.pcb img'); // 所有帖子楼层的图片,逐个过滤if (pcbImg.length) {for (let i = 0; i < pcbImg.length; i++) {//遍历图片列表const img = pcbImg[i];if (img.title && img.getAttribute('file') && ((_a = img.getAttribute('file')) === null || _a === void 0 ? void 0 : _a.includes('mymypic.net'))) {const reg = /\./g;if (!reg.test(img.title)) {// 文件格式校验if (reg.test(img.alt)) {// 文件格式修复img.title = img.alt;}else {new _1.MessageBox('获取图片名失败!');setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));return;}}const imgTitles = img.title.split('.');const title = `${imgTitles[imgTitles.length - 2]}-${i + 1}.${imgTitles[imgTitles.length - 1]}`; // 标题 +i.jpg,防重名!imgsTitles.push(title); // 保存下载名称到数组const imgAtrrFile = img.getAttribute('file');imgAtrrFile && imgsUrls.push(imgAtrrFile.split('.thumb.')[0]); // 保存下载链接到数组}else if (!img.getAttribute('file') && img.src.includes('mymypic.net')) {const nameSrc = img.src.split('/');imgsTitles.push(nameSrc[nameSrc.length - 1]); // 保存下载名称到数组imgsUrls.push(img.src.split('.thumb.')[0]); // 保存下载链接到数组}else {// console.log(img.src, '跨域请求,不可下载外链图片!');// new MessageBox('跨域请求,不可下载外链图片!');}}if (imgsUrls.length && imgsTitles.length) {batchDownload(imgsUrls, imgsTitles, folderName, user, counter, setCounter);}else {new _1.MessageBox('没有可下载的图片!');setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));return 0;}}else {new _1.MessageBox('没有图片!');setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));return 0;}}exports.downloadImgs = downloadImgs;// 批量下载 顺序function batchDownload(imgsUrls, imgsTitles, folderName, user, counter, setCounter) {const zip = new jszip_1.default();const promises = [];const mesIdH = new _1.MessageBox('正在下载...', 'none'); // 永久消息const mesIdP = new _1.MessageBox('...', 'none'); // 永久消息for (let index = 0; index < imgsUrls.length; index++) {const item = imgsUrls[index];// 包装成 promiseconst promise = () => {const file_name = imgsTitles[index]; // 获取文件名mesIdH.update(`正在下载:第 ${index + 1} / ${imgsUrls.length} 张,文件名:${file_name}`);return (0, _1.getData)(item, "blob" /* BLOB */).then((blob) => {const data = blob;// 下载文件, 并存成ArrayBuffer对象zip.file(file_name, data, {binary: true,}); // 逐个添加文件mesIdP.update(`第 ${index + 1} 张,文件名:${file_name},大小:${(data.size / ####).toFixed(0)} Kb,下载完成!等待压缩...`);}).catch((err) => {// 移除消息;if (err.responseText) {const domParser = new DOMParser();const xmlDoc = domParser.parseFromString(err.responseText, 'text/html');mesIdP.update(`第 ${index + 1} 张,请求错误:${xmlDoc.body.innerHTML}`);}else if (err.status) {console.error(err.status);}else {console.error(err);}return -1; // 错误处理, 标记错误并返回});};promises.push(promise);}const pool = new ConcurrencyPromisePool_1.ConcurrencyPromisePool(user.limit);pool.all(promises).then((r###lts) => {mesIdH.remove();counter.downloadBtn = 0;for (let i = 0; i < r###lts.length; i++) {if (r###lts[i] == -1) {// new MessageBox("文件缺失!")counter.downloadBtn++;}}if (r###lts.length == counter.downloadBtn) {new _1.MessageBox('全部图片下载失败!');mesIdP.remove();setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));return;}if (counter.downloadBtn) {if (!confirm(`检测到文件缺失 ${counter.downloadBtn} 张,是否继续压缩?`)) {mesIdP.remove();setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));return;}}mesIdP.update('正在压缩打包,大文件请耐心等待...');zip.generateAsync({type: 'blob',}).then((content) => {// 生成二进制流mesIdP.remove();setCounter(Object.assign(Object.assign({}, counter), { downloadBtn: 0 }));(0, file_saver_1.saveAs)(content, `${folderName} [${imgsUrls.length}P]`); // 利用file-saver保存文件,大文件需等待很久});});}function noDisplayPic() {var _a;const pcbImg = document.querySelectorAll('.pcb img'); // 所有帖子楼层的图片,逐个过滤if (pcbImg.length) {for (let i = 0; i < pcbImg.length; i++) {//遍历图片列表const img = pcbImg[i];// 前10张if (img.title && img.getAttribute('file') && ((_a = img.getAttribute('file')) === null || _a === void 0 ? void 0 : _a.includes('mymypic.net'))) {img.src = 'https://www.jkforum.net/static/image/common/none.gif';// new MessageBox("屏蔽图片成功");// 懒加载部分const observer = new MutationObserver(() => {// 监听元素子节点属性变化,然后屏蔽链接if (img.src != 'https://www.jkforum.net/static/image/common/none.gif') {observer.disconnect(); // 断开监听console.log('屏蔽图片成功:', img.src);img.src = 'https://www.jkforum.net/static/image/common/none.gif';}}); // 建立监听器observer.observe(img, {// 开始监听attributes: true,});}}new _1.MessageBox('屏蔽图片完成!');}else {new _1.MessageBox('没有图片!');}}exports.noDisplayPic = noDisplayPic;/***/ }),/***/ 662:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.setFastReply = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);function setFastReply(user) {return __awaiter(this, void 0, void 0, function* () {// 设置快速回复try {const htmlData = yield (0, _1.getData)(user.fastReplyUrl);const options = htmlData.querySelectorAll('#rqcss select option');const fastReply = []; //返回数组if (options.length) {options.forEach((option) => {if (option.value) {//去掉空值fastReply.push((0, tools_1.replaceHtml)(option.value)); //去掉需要转义的内容}});}else {new _1.MessageBox('获取快速回复失败!');return user;}if (fastReply.length) {user.fastReply = fastReply;new _1.MessageBox('获取快速回复成功!');}else {new _1.MessageBox('获取快速回复失败!');}return user;}catch (e) {console.error(e);return user;}});}exports.setFastReply = setFastReply;/***/ }),/***/ 825:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.skipPhoneValidate = void 0;const _1 = __webpack_require__(915);const AccessTokenUrl = 'https://jkf.hare200.com/gapi/pan.general.member.MemberServiceV2/AccessToken';const SigninUrl = 'https://www.jkforum.net/api/pan/sso_signin.php';const genButton = (text, foo) => {const b = document.createElement('button');b.textContent = text;b.style.cssText = 'margin:16px 10px 0px 0px;float:left';if (foo) {b.addEventListener('click', foo);}return b;};const skipPhoneValidate = () => {var _a;if (location.href.includes('https://www.jkforum.net/member.php')) {(_a = document.querySelector('.status_loginned')) === null || _a === void 0 ? void 0 : _a.append(genButton('登录前点击按钮跳过手机验证', hackLogin));}};exports.skipPhoneValidate = skipPhoneValidate;const hackLogin = () => {const xhrSend = XMLHttpRequest.prototype.send;let isAuthMethod = false;XMLHttpRequest.prototype.send = function (...args) {return __awaiter(this, void 0, void 0, function* () {if (isAuthMethod) {const authBase64 = args[0];const response = yield (0, _1.postData)(AccessTokenUrl, authBase64, {contentType: "application/grpc-web-text" /* GRCP */,responseType: "application/grpc-web-text" /* GRCP */,usermethod: "POST" /* POST */,});const reg = /[ey].*�/;const r###lts = response.match(reg);if (r###lts) {const jwt = r###lts[0].replace(/�/, '');yield (0, _1.postData)(SigninUrl, undefined, {contentType: "application/grpc-web-text" /* GRCP */,authorization: 'Bearer ' + jwt,responseType: "application/grpc-web-text" /* GRCP */,});window.location.reload();}}return xhrSend.apply(this, args);});};const xhrOpen = XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open = function (method, url) {if (url === AccessTokenUrl) {isAuthMethod = true;}else {isAuthMethod = false;}return xhrOpen.apply(this, [method, url, true]);};};/***/ }),/***/ 915:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.setTimeoutWorker = exports.setIntervalWorker = exports.autoVoted = exports.getUserName = exports.getUserFromName = exports.getFormhash = exports.creatUser = exports.User = exports.autoThk = exports.timeControl = exports.sign = exports.resetReplyData = exports.replyOrThk = exports.addPageBatch = exports.addOnePage = exports.autoPlay = exports.addPlayEvent = exports.autoPay = exports.loadOriginImage = exports.autofillCaptcha = exports.MessageBox = exports.swThk = exports.swRePic = exports.swPay = exports.swDailyTask = exports.checkUpdate = exports.launch = exports.autoDailyTasks = exports.skipPhoneValidate = exports.setFastReply = exports.noDisplayPic = exports.downloadImgs = exports.postDataCdata = exports.postData = exports.getData = void 0;var ajax_1 = __webpack_require__(516);Object.defineProperty(exports, "getData", ({ enumerable: true, get: function () { return ajax_1.getData; } }));Object.defineProperty(exports, "postData", ({ enumerable: true, get: function () { return ajax_1.postData; } }));Object.defineProperty(exports, "postDataCdata", ({ enumerable: true, get: function () { return ajax_1.postDataCdata; } }));var downloadPicture_1 = __webpack_require__(134);Object.defineProperty(exports, "downloadImgs", ({ enumerable: true, get: function () { return downloadPicture_1.downloadImgs; } }));Object.defineProperty(exports, "noDisplayPic", ({ enumerable: true, get: function () { return downloadPicture_1.noDisplayPic; } }));var fastReply_1 = __webpack_require__(662);Object.defineProperty(exports, "setFastReply", ({ enumerable: true, get: function () { return fastReply_1.setFastReply; } }));var hackLogin_1 = __webpack_require__(825);Object.defineProperty(exports, "skipPhoneValidate", ({ enumerable: true, get: function () { return hackLogin_1.skipPhoneValidate; } }));var launch_1 = __webpack_require__(450);Object.defineProperty(exports, "autoDailyTasks", ({ enumerable: true, get: function () { return launch_1.autoDailyTasks; } }));Object.defineProperty(exports, "launch", ({ enumerable: true, get: function () { return launch_1.launch; } }));var menuCommand_1 = __webpack_require__(817);Object.defineProperty(exports, "checkUpdate", ({ enumerable: true, get: function () { return menuCommand_1.checkUpdate; } }));Object.defineProperty(exports, "swDailyTask", ({ enumerable: true, get: function () { return menuCommand_1.swDailyTask; } }));Object.defineProperty(exports, "swPay", ({ enumerable: true, get: function () { return menuCommand_1.swPay; } }));Object.defineProperty(exports, "swRePic", ({ enumerable: true, get: function () { return menuCommand_1.swRePic; } }));Object.defineProperty(exports, "swThk", ({ enumerable: true, get: function () { return menuCommand_1.swThk; } }));var message_1 = __webpack_require__(244);Object.defineProperty(exports, "MessageBox", ({ enumerable: true, get: function () { return message_1.MessageBox; } }));var ocr_1 = __webpack_require__(2);Object.defineProperty(exports, "autofillCaptcha", ({ enumerable: true, get: function () { return ocr_1.autofillCaptcha; } }));var originImage_1 = __webpack_require__(87);Object.defineProperty(exports, "loadOriginImage", ({ enumerable: true, get: function () { return originImage_1.loadOriginImage; } }));var pay_1 = __webpack_require__(363);Object.defineProperty(exports, "autoPay", ({ enumerable: true, get: function () { return pay_1.autoPay; } }));var play_1 = __webpack_require__(687);Object.defineProperty(exports, "addPlayEvent", ({ enumerable: true, get: function () { return play_1.addPlayEvent; } }));Object.defineProperty(exports, "autoPlay", ({ enumerable: true, get: function () { return play_1.autoPlay; } }));var replyAndThank_1 = __webpack_require__(872);Object.defineProperty(exports, "addOnePage", ({ enumerable: true, get: function () { return replyAndThank_1.addOnePage; } }));Object.defineProperty(exports, "addPageBatch", ({ enumerable: true, get: function () { return replyAndThank_1.addPageBatch; } }));Object.defineProperty(exports, "replyOrThk", ({ enumerable: true, get: function () { return replyAndThank_1.replyOrThk; } }));var resetReplyData_1 = __webpack_require__(821);Object.defineProperty(exports, "resetReplyData", ({ enumerable: true, get: function () { return resetReplyData_1.resetReplyData; } }));var sign_1 = __webpack_require__(943);Object.defineProperty(exports, "sign", ({ enumerable: true, get: function () { return sign_1.sign; } }));Object.defineProperty(exports, "timeControl", ({ enumerable: true, get: function () { return sign_1.timeControl; } }));var thank_1 = __webpack_require__(226);Object.defineProperty(exports, "autoThk", ({ enumerable: true, get: function () { return thank_1.autoThk; } }));var user_1 = __webpack_require__(506);Object.defineProperty(exports, "User", ({ enumerable: true, get: function () { return user_1.User; } }));Object.defineProperty(exports, "creatUser", ({ enumerable: true, get: function () { return user_1.creatUser; } }));Object.defineProperty(exports, "getFormhash", ({ enumerable: true, get: function () { return user_1.getFormhash; } }));Object.defineProperty(exports, "getUserFromName", ({ enumerable: true, get: function () { return user_1.getUserFromName; } }));Object.defineProperty(exports, "getUserName", ({ enumerable: true, get: function () { return user_1.getUserName; } }));var vote_1 = __webpack_require__(608);Object.defineProperty(exports, "autoVoted", ({ enumerable: true, get: function () { return vote_1.autoVoted; } }));var webWorker_1 = __webpack_require__(67);Object.defineProperty(exports, "setIntervalWorker", ({ enumerable: true, get: function () { return webWorker_1.setIntervalWorker; } }));Object.defineProperty(exports, "setTimeoutWorker", ({ enumerable: true, get: function () { return webWorker_1.setTimeoutWorker; } }));/***/ }),/***/ 450:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.launch = exports.autoDailyTasks = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);// 启动function launch(user) {return __awaiter(this, void 0, void 0, function* () {try {// 增加路由地址判断,只执行对应函数const localUrl = location.href;if (localUrl.includes('thread')) {if (user.autoThkSw) {// 自动感谢当前贴yield (0, _1.autoThk)(user);}if (user.autoPaySw) {// 自动购买当前贴yield (0, _1.autoPay)(user);}if (user.autoRePicSw) {// 自动加载原图;(0, _1.loadOriginImage)();}// 自动播放图片const counter = {playBtn: 0,playFlag: 0,};(0, _1.addPlayEvent)(counter, user);}else if (localUrl.includes('/forum-') ||localUrl.includes('/type-')// || localUrl.includes('forum.php?mod=forumdisplay') //  图片模式只有一个页面,不需要) {// 去掉高亮标题const hightLightTitles = document.querySelectorAll('[style="color: #2B65B7"]');if (hightLightTitles.length) {hightLightTitles.forEach((e) => {e.style.color = '';});}}// 天变动则签到\投票const now = new tools_1.NowTime();if (user.today != now.day) {user.today = now.day;yield Promise.all([(0, _1.sign)(user), (0, _1.autoVoted)(user)]);}// 异步启动定时每日任务if (user.autoDailyTask) {autoDailyTasks(user);}}catch (e) {GM_setValue(user.username, user); //保存当天日// today 初始化console.error(e);}});}exports.launch = launch;const autoDailyTasks = (user) => __awaiter(void 0, void 0, void 0, function* () {yield (0, tools_1.waitFor)(86400000);yield Promise.all([(0, _1.sign)(user), (0, _1.autoVoted)(user)]);yield autoDailyTasks(user);});exports.autoDailyTasks = autoDailyTasks;/***/ }),/***/ 817:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.swThk = exports.swRePic = exports.swPay = exports.swDailyTask = exports.checkUpdate = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);function swRePic(user) {if (user.autoRePicSw) {user.autoRePicSw = false;GM_setValue(user.username, user);new _1.MessageBox('已关闭加载原图');}else {user.autoRePicSw = true;GM_setValue(user.username, user);new _1.MessageBox('已开启加载原图');}}exports.swRePic = swRePic;function swPay(user) {if (user.autoPaySw) {user.autoPaySw = false;GM_setValue(user.username, user);new _1.MessageBox('已关闭自动购买');}else {user.autoPaySw = true;GM_setValue(user.username, user);new _1.MessageBox('已开启自动购买');}}exports.swPay = swPay;function swThk(user) {if (user.autoThkSw) {user.autoThkSw = false;GM_setValue(user.username, user);new _1.MessageBox('已关闭自动感谢');}else {user.autoThkSw = true;GM_setValue(user.username, user);new _1.MessageBox('已开启自动感谢');}}exports.swThk = swThk;function swDailyTask(user) {if (user.autoDailyTask) {user.autoDailyTask = false;GM_setValue(user.username, user);new _1.MessageBox('已关闭定时每日任务,刷新页面后生效');}else {user.autoDailyTask = true;GM_setValue(user.username, user);new _1.MessageBox('已开启定时每日任务,刷新页面后生效');}}exports.swDailyTask = swDailyTask;function checkUpdate(user) {return __awaiter(this, void 0, void 0, function* () {const msg = new _1.MessageBox('正在检查更新...', 'none');const data = yield (0, _1.getData)(user.greasyforkUrl);const version = data.querySelectorAll('.script-show-version span')[1].innerHTML;if ((0, tools_1.getVersionNum)(user.version) < (0, tools_1.getVersionNum)(version)) {GM_openInTab(`${user.greasyforkUrl}-jkforum-%E5%8A%A9%E6%89%8B/code/JKForum%20%E5%8A%A9%E6%89%8B.user.js`);}else {new _1.MessageBox('已是最新版本!');}msg.remove();});}exports.checkUpdate = checkUpdate;/***/ }),/***/ 244:/***/ ((__unused_webpack_module, exports) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.MessageBox = void 0;/*** 消息通知类:不依赖框架* @example* 0.先在入口文件中调用静态方法 generate() 方法初始化消息弹出窗口;* 1. new MessageBox('hello')* 2.空初始化时调用 show() 显示消息;* 3.setTime:ms,非数字时为永久消息,需手动调用 update() 刷新消息,remove() 移除消息;* 4.importance:LOG_POP:log+自定义弹窗;LOG_POP_GM:log+自定义弹窗+GM系统提示;POP:自定义弹窗;*/class MessageBox {constructor(text, setTime = 5000, importance = "LOG_POP" /* LOG_POP */) {this._msg = null; // 永久显示标记,和元素地址this._text = text;this._setTime = setTime;this._importance = importance;this._timer = 0; // 计数器// 非空初始化,立即执行;if (text !== undefined && text !== null) {this.show();}}// 静态方法,初始化消息盒子,先调用本方法初始化消息弹出窗口static generate() {// 添加样式GM_addStyle(`#messageBox {width: 222px;position: fixed;right: 5%;bottom: 20px;z-index: 999}#messageBox div {width: 100%;background-color: #64ce83;float: left;padding: 5px 10px;margin-top: 10px;border-radius: 10px;color: #fff;box-shadow: 0px 0px 1px 3px #ffffff}`);this._msgBox = document.createElement('div'); // 创建类型为div的DOM对象this._msgBox.id = 'messageBox';document.body.append(this._msgBox); // 消息盒子添加到body}// 显示消息show(text = this._text, setTime = this._setTime, importance = this._importance) {if (this._msg !== null) {throw new Error('先移除上条消息,才可再次添加!');}if (text === undefined || text === null) {throw new Error('未输入消息');}this._text = text;this._setTime = setTime;this._importance = importance;this._msg = document.createElement('div');this._msg.textContent = text;MessageBox._msgBox.append(this._msg); // 显示消息switch (importance) {case "LOG_POP" /* LOG_POP */: {console.log(text);break;}case "LOG_POP_GM" /* LOG_POP_GM */: {console.log(text);GM_notification(text);break;}default: {break;}}if (setTime && !isNaN(Number(setTime))) {// 默认5秒删掉消息,可设置时间,none一直显示setTimeout(() => {this.remove();}, Number(setTime));}}update(text) {if (isNaN(Number(this._setTime)) && this._msg) {this._msg.textContent = text;console.log(text);switch (this._importance) {case "LOG_POP" /* LOG_POP */: {break;}case "LOG_POP_GM" /* LOG_POP_GM */: {console.log(text);GM_notification(text);break;}default: {break;}}}else {throw new Error('只有弹窗永久消息支持刷新内容:' + this._setTime);}}// 移除方法,没有元素则等待setTime 5秒再试5次remove() {if (this._msg) {this._msg.remove();this._msg = null; // 清除标志位}else {// 空初始化时,消息异步发送,导致先执行移除而获取不到元素,默认 setTime=5000// 消息发出后,box 非空,可以移除,不会执行 setTime="none"if (this._timer == 4) {throw new Error('移除的元素不存在:' + this._msg);}this._timer++;setTimeout(() => {this.remove();}, Number(this._setTime));}}}exports.MessageBox = MessageBox;/***/ }),/***/ 2:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.autofillCaptcha = exports.RETRY = void 0;const commonType_1 = __webpack_require__(321);const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);/*** OCR*/exports.RETRY = 'retry';function captcha(thread, user) {return __awaiter(this, void 0, void 0, function* () {const tid = (0, tools_1.getTid)(thread.url);const url = `${user.votedUrl}id=topthreads:setstatus&tid=${tid}&handlekey=k_setstatus&infloat=1&freeon=yes&inajax=1`;return new Promise((resolve, reject) => {const image = document.createElement('img');image.id = 'captcha';image.src = 'https://www.jkforum.net/captcha/code.php' + '?' + new Date().getMilliseconds();image.width = 120;image.crossOrigin = 'anonymous';document.body.append(image);image.onload = function () {return __awaiter(this, void 0, void 0, function* () {const base64Img = (0, tools_1.getBase64Image)(image);if (!base64Img) {new _1.MessageBox('图片转码失败,正在重试...');return reject(exports.RETRY);}//文件的Base64字符串获取验证码const code = yield readImage(base64Img, user);if (image.parentNode) {image.parentNode.removeChild(image);}if (typeof code === 'object') {if (code.error_msg === '服务器内部错误') {// 服务器错误自动重试,resolve不受10次重试次数显示new _1.MessageBox(`服务器内部错误,将在 ${thread.cycle} 分钟后自动重试,多次重试未恢复请联系管理员`, 60000 * Number(thread.cycle), "LOG_POP_GM" /* LOG_POP_GM */);return resolve(code.error_msg);}else {// 令牌错误不重试new _1.MessageBox('运行错误,请手动重试或联系管理员:' + code.error_msg, 'none', "LOG_POP_GM" /* LOG_POP_GM */);return reject(code);}}const response = yield (0, _1.postData)(url, (0, tools_1.urlSearchParams)({ captcha_input: code }).toString()).catch((e) => {console.log(e);return exports.RETRY;});if (!response) {new _1.MessageBox(tid + ',无效的帖子ID,请检查帖子状态', 'none', 'LOG_POP_GM');return reject(response);}const r###lt = (0, tools_1.turnCdata)(response);if (r###lt === exports.RETRY) {new _1.MessageBox(tid + ',验证码发送失败,正在重试...');return reject(exports.RETRY);}else if (r###lt === '更新完成!若狀態仍沒更新,請嘗試刷新頁面') {new _1.MessageBox(tid + ',更新完成!自動‘現在有空’中,請不要刷新頁面!');return resolve(r###lt);}else if (r###lt === 'Access denied.') {new _1.MessageBox(tid + ',无此帖子的访问权限,请检查帖子状态', 'none', 'LOG_POP_GM');return reject(r###lt);}else {new _1.MessageBox(tid + ',验证码错误,正在重试...');return reject(exports.RETRY);}});};image.onerror = function (error) {console.log(error);if (image.parentNode) {image.parentNode.removeChild(image);}new _1.MessageBox(tid + ',验证码图片加载失败,正在重试...');return reject(exports.RETRY);};});});}function readImage(base64, user) {return __awaiter(this, void 0, void 0, function* () {const body = (0, tools_1.urlSearchParams)({ image: base64, token: user.token }).toString();const response = yield (0, _1.postData)(user.ocrUrl, body, {responseType: "json" /* JSON */,usermethod: "POST" /* POST */,contentType: "application/x-www-form-urlencoded" /* FORM */,}).catch((e) => {var _a;// 导致提示信息错误return { error_msg: ((_a = e.response) === null || _a === void 0 ? void 0 : _a.message) ? e.response.message : e.statusText, error_code: 0 };});const ocrR###lts = response;if ('words_r###lt' in ocrR###lts) {const words = ocrR###lts.words_r###lt[0].words.replace(/g/gi, '6');if (words.length < 4) {return String((0, tools_1.rdNum)(0, 10)) + words;}else if (words.length > 4) {return words.slice(1, 5);}else {return words;}}else if ('error_msg' in ocrR###lts) {return ocrR###lts;}return String((0, tools_1.rdNum)(1000, 10000));});}function autofillCaptcha(t, user, setNextClickTime, saveStatusData, triggerNextClick) {var _a;return __awaiter(this, void 0, void 0, function* () {try {// 在异步请求前设置好时间,防止时间错误let timeInterval = 60000 * Number(t.cycle);let skip = false;const now = new Date();if (t.runTime) {const hours = (0, tools_1.hoursUntilTimeRange)(t.runTime.startTime, t.runTime.endTime);if (hours !== 0) {const overMinutes = now.getMinutes() * 60000 + now.getSeconds() * 1000 - (0, tools_1.rdNum)(0, 10000);timeInterval = hours * 3600000 - overMinutes;skip = true;}}const nextClickTime = now.getTime() + timeInterval;t.nextClickTime = nextClickTime;if (!skip) {saveStatusData(t.url, commonType_1.RunStatus.Running);yield captcha(t, user);t.retry = 0;}else {saveStatusData(t.url, commonType_1.RunStatus.Waiting);}// 调用计数和存入时间setNextClickTime(t, skip);setTimeout(() => {triggerNextClick(t);}, timeInterval);}catch (e) {if (typeof e === 'string') {if (e === exports.RETRY) {const timeInterval = 1000 + (0, tools_1.rdNum)(0, 5000);const nextClickTime = new Date().getTime() + timeInterval;t.nextClickTime = nextClickTime;t.retry = ((_a = t.retry) !== null && _a !== void 0 ? _a : 0) + 1;// 调用计数setNextClickTime(t);setTimeout(() => {triggerNextClick(t);}, timeInterval); // 重试频率限制}else {// 错误则改变状态saveStatusData(t.url, commonType_1.RunStatus.Error);}}else {saveStatusData(t.url, commonType_1.RunStatus.Error);}}});}exports.autofillCaptcha = autofillCaptcha;/***/ }),/***/ 87:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.loadOriginImage = void 0;const _1 = __webpack_require__(915);// 加载原图,自动播放function loadOriginImage() {return __awaiter(this, void 0, void 0, function* () {const tfImg = document.querySelectorAll('.t_f ignore_js_op img'); //获取图片列表,附件也是ignore_js_opif (tfImg) {// 加载原图开关let count = 0;for (let i = 0; i < tfImg.length; i++) {//遍历图片列表const img = tfImg[i];img.setAttribute('onmouseover', ''); // 去掉下载原图提示const file = img.getAttribute('file');if (img.src.includes('.thumb.') && file) {// 去掉缩略图 加载部分img.src = file.split('.thumb.')[0];console.log('加载原图成功 thumb:', img.src);count++;}else if (img.src.includes('static/image/common/none.gif') && img.getAttribute('file')) {// 懒加载部分if (file === null || file === void 0 ? void 0 : file.includes('.thumb.')) {img.setAttribute('file', file.split('.thumb.')[0]); // 网站自带forum_viewthread.js  attachimgshow(pid, onlyinpost) 从file延迟加载console.log('加载原图成功 none.gif:', img.getAttribute('file'));count++;}}}if (count) {new _1.MessageBox(`加载原图成功 ${count} 张!`);}}});}exports.loadOriginImage = loadOriginImage;/***/ }),/***/ 363:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.autoPay = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);// 自动支付function autoPay(user) {var _a;return __awaiter(this, void 0, void 0, function* () {if (document.querySelector('.viewpay')) {const url = user.payUrl;const referer = location.href;const pData = `formhash=${user.formhash}&referer=${(0, tools_1.turnUrl)(referer)}&tid=${(0, tools_1.getTid)(referer)}&handlekey=pay`;const stringOrHtml = yield (0, _1.postDataCdata)(url, pData);if ((0, tools_1.checkHtml)(stringOrHtml)) {// 确认htmlconst info = (_a = stringOrHtml.querySelector('script')) === null || _a === void 0 ? void 0 : _a.innerHTML.split(`', `)[1].slice(1);new _1.MessageBox(info);location.reload();}else {new _1.MessageBox(stringOrHtml); //其它情况直接输出}}});}exports.autoPay = autoPay;/***/ }),/***/ 687:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.addPlayEvent = exports.autoPlay = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);const addPlayEvent = (counter, user) => {const zoomimgs = document.querySelectorAll(`img[zoomfile]`); //获取图片列表if (zoomimgs) {// 自动播放for (let i = 0; i < zoomimgs.length; i++) {//遍历图片列表zoomimgs[i].addEventListener('click', () => {autoPlay(counter, user);}, {once: true,});}}const onclickzoomimgs = document.querySelectorAll(`img[onclick="zoom(this, this.src, 0, 0, 0)"]`); //获取图片列表if (onclickzoomimgs) {// 自动播放for (let i = 0; i < onclickzoomimgs.length; i++) {//遍历图片列表onclickzoomimgs[i].addEventListener('click', () => {autoPlay(counter, user);}, {once: true,});}}};exports.addPlayEvent = addPlayEvent;// 自动播放图片function autoPlay(counter, user) {return __awaiter(this, void 0, void 0, function* () {const append_parent = document.querySelector('#append_parent'); // 监听子节点if (counter.playBtn || !append_parent) {// 防重复点击、添加return;}counter.playBtn = 1; // 已添加标志const observer = new MutationObserver(() => {// 监听元素子节点变化,然后添加节点const imgzoom_y = document.querySelector('#imgzoom .y');if (imgzoom_y) {// 按钮也是延迟加载,监听是否有 .yobserver.disconnect(); // 断开监听addAutoPlay(counter, user); // 添加按钮}}); // 建立监听器observer.observe(append_parent, {// 开始监听 append_parentchildList: true,});});}exports.autoPlay = autoPlay;// 添加播放图片按钮、事件function addAutoPlay(counter, user) {var _a;const append_parent = document.querySelector('#append_parent');if (!append_parent)return;const imgzoom = append_parent.querySelector('#imgzoom');const imgzoom_cover = append_parent.querySelector('#imgzoom_cover');if (!imgzoom)return;const y = imgzoom.querySelector('.y');const a = document.createElement('a');a.title = '自动播放/停止播放';a.innerHTML = '自动播放/停止播放';a.href = 'javascript:void(0);';a.addEventListener('click', play); // 添加监听播放事件a.style.cssText = `background: url(../../template/yibai_city1/style/common/arw_l.gif) rgb(241, 196, 15) center no-repeat;transform: rotate(180deg);width: 60px;height: 18px;overflow: hidden;`;if (!y)return;y.prepend(a); // 添加按钮// 遮挡暂停window.onblur = function () {counter.playFlag = 0;};// 点击背景层暂停imgzoom_cover === null || imgzoom_cover === void 0 ? void 0 : imgzoom_cover.addEventListener('click', () => {counter.playFlag = 0;});// 关闭按钮暂停(_a = y.querySelector('.imgclose')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => {counter.playFlag = 0;});function play() {return __awaiter(this, void 0, void 0, function* () {if (!counter.playFlag && !counter.playObserver) {// 再次点击暂停,只运行一个监听器counter.playFlag = 1;const imgzoom_waiting = append_parent === null || append_parent === void 0 ? void 0 : append_parent.querySelector('#imgzoom_waiting');const zimg_next = imgzoom === null || imgzoom === void 0 ? void 0 : imgzoom.querySelector('.zimg_next'); // 是否有下一张if (!zimg_next || !imgzoom_waiting) {counter.playFlag = 0;new _1.MessageBox('只有一张图!');return;}counter.playObserver = new MutationObserver(() => __awaiter(this, void 0, void 0, function* () {var _a;const display = imgzoom_waiting.style.display;if (display == 'none') {yield (0, tools_1.waitFor)(user.autoPlayDiff); // 延迟,然后判断是否停止if (counter.playFlag == 0 && counter.playObserver) {counter.playObserver.disconnect();counter.playObserver = undefined; // disconnect()并没有清空监听器return;}(_a = imgzoom === null || imgzoom === void 0 ? void 0 : imgzoom.querySelector('.zimg_next')) === null || _a === void 0 ? void 0 : _a.click(); // 刷新NodeList}}));counter.playObserver.observe(imgzoom_waiting, {attributes: true,});// 开始点击下一张yield (0, tools_1.waitFor)(user.autoPlayDiff);zimg_next.click();}else {counter.playFlag = 0;}});}}/***/ }),/***/ 960:/***/ ((__unused_webpack_module, exports) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.reCaptcha = void 0;const reCaptcha = () => {Window.prototype.onloadCaptchaCallback = function () {const onCaptchaChange = (token) => {GM_setValue('CaptchaValue', token);};grecaptcha.render('reCaptcha', {sitekey: '6LfxHOIUAAAAAJ-E2oORT8_zgG3Ia0QM1sg9Pe2s',callback: onCaptchaChange,hl: 'zh-TW',});};const script = document.createElement('script');script.src = 'https://www.google.com/recaptcha/api.js?onload=onloadCaptchaCallback&render=explicit';script.async = true;script.defer = true;document.head.append(script);};exports.reCaptcha = reCaptcha;/***/ }),/***/ 872:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.replyOrThk = exports.addPageBatch = exports.addOnePage = void 0;const lib_1 = __webpack_require__(915);const tools_1 = __webpack_require__(633);function chooceReply(user, value) {if (value) {let replyLen = 0; // 统计长度,用于在 user.userReplyMessage 中定位下标value.split(';').forEach((element) => {// 中文分号分隔字符串if (element) {user.userReplyMessage.push(element); // 存储自定义回帖内容replyLen++;}});GM_setValue(user.username, user);new lib_1.MessageBox('已使用自定义回复');return replyLen;}else {if (user.fastReply.length && confirm('确认使用快速回复?否则使用历史回复')) {GM_setValue(user.username, user);new lib_1.MessageBox('已使用快速回复');return user.fastReply.length;}else if (user.userReplyMessage.length && confirm('确认使用历史自定义回复?')) {GM_setValue(user.username, user);new lib_1.MessageBox('已使用历史自定义回复');return user.userReplyMessage.length;}else {alert('没有获取到任何回复,请确认有浏览可快速回贴的版块的权限!否则需要手动输入回帖内容!');return -1;}}}function addOnePage(user, inputValue) {const currentHref = location.href; // 获取当前页地址const reg = /(type-)|(forum-)/;// const reg = /(forum-)/;if (!reg.test(currentHref)) {new lib_1.MessageBox('不支持的页面,仅支持在地址为 forum-x-x 和 type-x-x 的板块页面使用');return;}const fid = currentHref.split('-')[1]; // 获取板块fidconst page = currentHref.split('-')[2].split('.')[0]; // 获取页码if (currentHref.includes('type-')) {addPageBatch(user, `${fid}-${page}-${page}`, inputValue, 'type');new lib_1.MessageBox('type-x-x 地址板块仅支持添加第一页');}else {addPageBatch(user, `${fid}-${page}-${page}`, inputValue);}}exports.addOnePage = addOnePage;function addPageBatch(user, pageCode, inputValue, type = null) {return __awaiter(this, void 0, void 0, function* () {const reg = new RegExp(/^\d+-\d+-\d+$/);let forumPage = '';if (reg.test(pageCode)) {// 如果输入了正确地址单页forumPage = pageCode;}else {new lib_1.MessageBox('未获取到页码');return;}if (reg.test(forumPage)) {// 如果输入了正确地址则进行批量处理user.page = forumPage;GM_setValue(user.username, user);let pageFrom = parseInt(forumPage.split('-')[1]); // 获取起点页码const pageEnd = parseInt(forumPage.split('-')[2]); // 获取终点页码const fid = forumPage.split('-')[0]; // 获取版块代码if (pageFrom > pageEnd) {new lib_1.MessageBox('页码错误:起点页不能大于终点页!');return;}const msId = new lib_1.MessageBox('正在添加:' + forumPage, 'none');const replyLen = chooceReply(user, inputValue); //如果输入了值则使用用户值,如果没有则使用默认值;没有默认值则返回错误if (replyLen <= 0) {new lib_1.MessageBox('获取回帖内容失败!');msId.remove();return '获取回帖内容失败!';}while (pageFrom <= pageEnd) {let currentHref = '';if (type != null) {currentHref = 'https://www.jkforum.net/' + type + '-' + fid + '-' + pageFrom + '.html'; //生成帖子列表地址}else {currentHref = 'https://www.jkforum.net/forum-' + fid + '-' + pageFrom + '.html'; //生成帖子列表地址}new lib_1.MessageBox('当前地址:' + currentHref + ',页码:' + pageFrom);let data = yield (0, lib_1.getData)(currentHref);// 判断是否需要切换到列表模式。while (data.querySelector(`[class="chked"]`)) {yield (0, lib_1.getData)('https://www.jkforum.net/forum.php?mod=forumdisplay&fid=' + fid + '&forumdefstyle=yes'); // 切换到列表模式,同步请求。new lib_1.MessageBox('已切换到列表模式');data = yield (0, lib_1.getData)(currentHref);}// 添加回帖任务setThreadsTask(user, data, fid, replyLen); // 设置任务列表pageFrom++;}msId.remove();}else {new lib_1.MessageBox('请输入回帖列表页码,格式:版块代码-起点页-终点页 ;例如:640-1-2 ;版块代码见版块URL中间数字:forum-640-1', 10000);}});}exports.addPageBatch = addPageBatch;// 添加任务列表function setThreadsTask(user, htmlData, fid, replyLen) {//帖子类名 40个a标签数组const hrefs = htmlData.querySelectorAll('.s');// 获取作者昵称和 UIDconst cites = htmlData.querySelectorAll('cite a');// 以 fid 创建对象,如果fid存在则写入fid的数组的fidthreads属性的数组内;否则创建新的 fidthreads,自我调用const fidthreads = {fid: fid,fidTime: 0,fidRepIndex: 0,fidThkIndex: 0,fidthreads: [],};let fidTime = 0; // 统计总时间function newFid() {if (user.replyThreads.length) {for (let i = 0; i < user.replyThreads.length; i++) {if (user.replyThreads[i].fid == fid) {addThrInfo(user.replyThreads[i]);user.replyThreads[i].fidTime += fidTime; // 累加时间GM_setValue(user.username, user);return; // 匹配到则退出循环 // 传入对应对象}}// 如果没匹配到同样增加user.replyThreads.push(fidthreads);newFid();}else {user.replyThreads.push(fidthreads); // 初始化threadsnewFid();}}function addThrInfo(elem) {// 回帖变量随即范围限制let start = 0;if (replyLen == user.fastReply.length || replyLen == user.userReplyMessage.length) {// 判断起始位置}else {start = user.userReplyMessage.length - replyLen; // 用户数组长-增加的数据长=起始位置;replyLen = user.userReplyMessage.length; // 结束位置}const msId = new lib_1.MessageBox('...', 'none');let count = 0; // 贴数统计// 遍历去除回帖用户for (let i = 0; i < cites.length; i += 2) {// 加入数组const touser = cites[i].innerHTML;const touseruid = cites[i].href.split('uid=')[1]; // href="home.php?mod=space&uid=1123445"const href = hrefs[i / 2].href;const tid = (0, tools_1.getTid)(href);let noSkip = true; // 跳过标识for (let index = 0; index < elem.fidthreads.length; index++) {// 确保帖子的唯一性const element = elem.fidthreads[index];if (element.tid == tid) {noSkip = false;msId.update(`${fid}:任务列表:${index},thread-${tid}-1-1 :已在任务列表,已跳过此贴!`);break;}}if (noSkip) {const replyIndex = (0, tools_1.rdNum)(start, replyLen - 1); // 从返回的输入长度获取随机值const randomTime = (0, tools_1.rdNum)(user.interval, user.differ + user.interval);const thread = {tid: tid,touseruid: touseruid,touser: touser,replyIndex: replyIndex,replyLen: replyLen,randomTime: randomTime, // 回帖时间随机数};fidTime += randomTime;elem.fidthreads.push(thread); // 给对象数组添加count++;}}GM_setValue(user.username, user);msId.remove();new lib_1.MessageBox(`${fid}:任务列表成功添加 ${count} 贴!`, 10000);}newFid(); // 启动}// 回帖\感谢函数function replyOrThk(counter, user, type = "reply" /* REPLY */, setCounter) {var _a, _b;return __awaiter(this, void 0, void 0, function* () {let fidIndex = 0; // 当前回帖版块序号let thkFidIndex = 0; // 当前感谢版块序号// 初始化永久消息const mesIdRep = new lib_1.MessageBox();const mesIdRepContent = new lib_1.MessageBox();const mesIdThk = new lib_1.MessageBox();if (!user.replyThreads.length) {new lib_1.MessageBox('任务列表为空,请先添加任务!');return;}else if (type == "reply" /* REPLY */) {setCounter(Object.assign(Object.assign({}, counter), { replyBtn: 1 }));mesIdRep.show('开始回帖...', 'none');mesIdRepContent.show('...', 'none');}else {setCounter(Object.assign(Object.assign({}, counter), { thkBtn: 1 })); // 防止重复点击mesIdThk.show('开始感谢...', 'none');}while ((type == "reply" /* REPLY */ && fidIndex < user.replyThreads.length) ||(type == "thk" /* THANK */ && thkFidIndex < user.replyThreads.length)) {// 分别处理感谢和回帖const elementForum = user.replyThreads[type == "reply" /* REPLY */ ? fidIndex : thkFidIndex];const fid = elementForum.fid;let fidRepIndex = elementForum.fidRepIndex; // 上次回复位置let fidThkIndex = elementForum.fidThkIndex; // 上次感谢位置while ((elementForum.fidthreads.length > fidRepIndex && type == "reply" /* REPLY */) ||(elementForum.fidthreads.length > fidThkIndex && type == "thk" /* THANK */)) {// 分别处理感谢和回帖switch (type) {case "reply" /* REPLY */: {mesIdRep.update(fid +'-版块,当前位置:' +fidRepIndex +' ,总数:' +elementForum.fidthreads.length +',预计总耗时:' +(elementForum.fidTime / 1000 / 60).toFixed(1) +' 分钟时间'); // 显示永久消息const elementThr = elementForum.fidthreads[fidRepIndex];const tid = elementThr.tid;const replyIndex = elementThr.replyIndex;const replyLen = elementThr.replyLen;const randomTime = elementThr.randomTime;// 回帖链接const replyUrlParamsData = (0, tools_1.urlSearchParams)({fid: fid,tid: tid,extra: 'page%3D1',replysubmit: 'yes',infloat: 'yes',inflohandlekeyat: 'fastpost',inajax: 1,});// 拼接回帖报文const date = new Date();const posttime = (date.getTime() / 1000).toFixed(0); // 生产时间戳const replyParamsObj = {message: '',posttime: posttime,formhash: user.formhash,usesig: 1,subject: '',}; // 回帖数据对象if (replyLen == user.fastReply.length) {replyParamsObj.message = user.fastReply[replyIndex];}else if (replyLen <= user.userReplyMessage.length + 1) {replyParamsObj.message = user.userReplyMessage[replyIndex];}else {new lib_1.MessageBox('回帖数据错误,请重置回帖数据', 'none');return;}const replyParamsData = (0, tools_1.urlSearchParams)(replyParamsObj);// 发送数据const data = yield (0, lib_1.postDataCdata)(user.replyUrl + replyUrlParamsData.toString(), replyParamsData.toString());if ((0, tools_1.checkHtml)(data)) {// 确认htmlconst info = (_a = data.querySelector('script')) === null || _a === void 0 ? void 0 : _a.innerHTML.split(`, `)[1];if (!info) {throw new Error("querySelector('script') 错误:" + info);}new lib_1.MessageBox(info.split(',')[0].slice(1) + ',' + info.split(',')[1] + '!'); // 返回html成功消息}else {new lib_1.MessageBox(data, 'none'); //其它情况直接输出}mesIdRepContent.update('序号:' +fidRepIndex +',随机号:' +replyIndex +',用时:' +randomTime +',帖子:' +tid +',内容:' +replyParamsData.get('message')); //测试使用elementForum.fidRepIndex = ++fidRepIndex;GM_setValue(user.username, user);yield (0, tools_1.waitFor)(randomTime); // 等待指定时间break;}case "thk" /* THANK */: {const elementThr = elementForum.fidthreads[fidThkIndex];const thkParamsData = (0, tools_1.urlSearchParams)({formhash: user.formhash,tid: elementThr.tid,touser: elementThr.touser,touseruid: elementThr.touseruid,handlekey: 'k_thankauthor',addsubmit: 'true',});const data = yield (0, lib_1.postDataCdata)(user.thkUrl, thkParamsData.toString()); //post感谢数据if ((0, tools_1.checkHtml)(data)) {const info = (_b = data.querySelector('.alert_info')) === null || _b === void 0 ? void 0 : _b.innerHTML.split('<')[0].trim(); //去除html,返回字符串new lib_1.MessageBox(info, 1000);}else {new lib_1.MessageBox(data, 1000); //其它情况直接输出}mesIdThk.update(fid +'-版块,当前位置:' +fidThkIndex +' ,总数:' +elementForum.fidthreads.length +',帖子ID:' +thkParamsData.get('tid')); // 刷新永久消息elementForum.fidThkIndex = ++fidThkIndex;GM_setValue(user.username, user);yield (0, tools_1.waitFor)(user.thkDiffer); // 等待指定时间break;}default:console.log('参数不在范围');break;}}if (type == "thk" /* THANK */) {thkFidIndex++; // 翻页}else if (type == "reply" /* REPLY */) {fidIndex++; // 翻页}GM_setValue(user.username, user);}if (type == "thk" /* THANK */) {mesIdThk.remove(); // 移除永久消息new lib_1.MessageBox('全部感谢完成!', 10000, "LOG_POP_GM" /* LOG_POP_GM */);setCounter(Object.assign(Object.assign({}, counter), { thkBtn: 0 }));}else if (type == "reply" /* REPLY */) {mesIdRep.remove(); // 移除永久消息mesIdRepContent.remove();new lib_1.MessageBox('全部回帖完成!', 10000, "LOG_POP_GM" /* LOG_POP_GM */);setCounter(Object.assign(Object.assign({}, counter), { replyBtn: 0 }));}});}exports.replyOrThk = replyOrThk;/***/ }),/***/ 821:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.resetReplyData = void 0;const message_1 = __webpack_require__(244);const resetReplyData = (user) => {user.replyThreads = [];user.fastReply = [];user.userReplyMessage = [];GM_setValue(user.username, user);new message_1.MessageBox('重置回帖数据成功');};exports.resetReplyData = resetReplyData;/***/ }),/***/ 943:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.timeControl = exports.sign = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);// 定时签到function timeControl(counter, setCounter, user) {const signtime = user.signtime; // 设定签到时间// 初始化永久消息通知const msIdSig = new _1.MessageBox();const msIdTime = new _1.MessageBox();let timer = 0;function control() {return __awaiter(this, void 0, void 0, function* () {const now = new tools_1.NowTime(); // 获取当前时间,到秒if (now.seconds == signtime) {clearInterval(timer); // timer=1 未知原因setCounter(Object.assign(Object.assign({}, counter), { signBtn: 0 }));// 移除永久消息通知msIdSig.remove();msIdTime.update('执行中....');for (let i = 0; i < user.signNum; i++) {//重试次数sign(user);msIdTime.update('执行第' + (i + 1) + '次');yield (0, tools_1.waitFor)(user.interTime); //重试间隔}msIdTime.remove();}else {msIdTime.update('时间没有到:' + signtime + ',目前时间:' + now.seconds);}});}if (!counter.signBtn) {// 防重复点击msIdSig.show('定时签到中,请勿退出...', 'none');msIdTime.show('...', 'none'); // 占位消息,给刷新用timer = window.setInterval(control, 500);setCounter(Object.assign(Object.assign({}, counter), { signBtn: timer })); // 运行自动签到}}}exports.timeControl = timeControl;function sign(user) {var _a;return __awaiter(this, void 0, void 0, function* () {const signParamsData = (0, tools_1.urlSearchParams)({formhash: user.formhash,qdxq: user.mood,qdmode: 1,todaysay: user.todaysay,fastreply: 1,}).toString();const stringOrHtml = yield (0, _1.postDataCdata)(user.signUrl, signParamsData); // 直接post签到数据if ((0, tools_1.checkHtml)(stringOrHtml)) {// 确认htmlconst info = (_a = stringOrHtml.querySelector('.c')) === null || _a === void 0 ? void 0 : _a.innerHTML.split('<')[0].trim(); // 解析html,返回字符串new _1.MessageBox(info);}else {new _1.MessageBox(stringOrHtml); //其它情况直接输出}});}exports.sign = sign;/***/ }),/***/ 226:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.autoThk = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);// 自动感谢function autoThk(user) {var _a;return __awaiter(this, void 0, void 0, function* () {const forms = document.forms;if (!(forms === null || forms === void 0 ? void 0 : forms.thankform)) {return;}const thankform = forms.thankform;const thkParamsData = (0, tools_1.urlSearchParams)({formhash: user.formhash,tid: thankform.tid.value,touser: thankform.touser.value,touseruid: thankform.touseruid.value,handlekey: 'k_thankauthor',addsubmit: 'true',}).toString();const xmlData = yield (0, _1.postDataCdata)(user.thkUrl, thkParamsData); //post感谢数据if (xmlData && (0, tools_1.checkHtml)(xmlData)) {const info = (_a = xmlData.querySelector('.alert_info')) === null || _a === void 0 ? void 0 : _a.innerHTML.split('<')[0].trim(); //去除html,返回字符串new _1.MessageBox(info);}else {new _1.MessageBox(xmlData); //其它情况直接输出}if (document.querySelectorAll('#k_thankauthor').length == 2) {//感谢可见location.reload();}});}exports.autoThk = autoThk;/***/ }),/***/ 506:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.getUserName = exports.getUserFromName = exports.getFormhash = exports.creatUser = exports.User = void 0;const commonType_1 = __webpack_require__(321);const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);class User {constructor(username, formhash) {this.version = GM_info.script.version;this.today = ''; // 签到日期this.signtime = '23:59:59'; // 定时签到时间this.signNum = 10; // 定时签到重试次数this.interTime = 200; // 定时签到重试间隔时间msthis.todaysay = '簽到'; // 签到输入内容this.mood = commonType_1.Mood.fendou; // 签到心情this.autoPlayDiff = 2000; // 自动播放图片间隔时间msthis.autoPaySw = true; // 自动支付开关this.autoThkSw = true; // 自动感谢开关this.autoRePicSw = true; // 自动加载原图开关this.autoDailyTask = false; // 定时每日任务开关this.differ = 10000; // 回帖随机间隔时间msthis.interval = 20000; // 回帖基础间隔时间msthis.thkDiffer = 1000; // 批量感谢间隔时间msthis.limit = 2; // 并发下载图片数量限制this.page = ''; // 批量回帖页码this.token = ''; // OCR tokenthis.freeTime = 3300000; // 现在有空间隔this.freeTid = ''; // 自动现在有空 帖子ID,一个账号一个贴子this.freeData = [];this.votedMessage = '+1'; // 投票输入内容this.ocrUrl = 'https://jkf.iknow.fun/api/ocr/numbers';this.votedUrl = 'https://www.jkforum.net/plugin.php?';this.applyVotedUrl = 'https://www.jkforum.net/home.php?mod=task&do=apply&id=59';this.taskDoneUrl = 'https://www.jkforum.net/home.php?mod=task&do=draw&id=59';this.signUrl = 'https://www.jkforum.net/plugin/?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1';this.thkUrl = 'https://www.jkforum.net/plugin/?id=thankauthor:thank&inajax=1';this.payUrl = 'https://www.jkforum.net/forum.php?mod=misc&action=pay&paysubmit=yes&infloat=yes&inajax=1';this.fastReplyUrl = 'https://www.jkforum.net/thread-8364615-1-1.html';this.replyUrl = 'https://www.jkforum.net/forum.php?mod=post&action=reply&';this.greasyforkUrl = 'https://greasyfork.org/zh-CN/scripts/427246';this.userReplyMessage = []; // 用户保存的回复,历史回帖内容this.fastReply = []; // 保存的快速回复,快速回帖内容this.replyThreads = []; // 回帖任务数据this.username = username;this.formhash = formhash;}}exports.User = User;const getUserName = () => {var _a;return (_a = document.querySelector('.avatar_info a')) === null || _a === void 0 ? void 0 : _a.innerHTML;};exports.getUserName = getUserName;const getUserFromName = () => {const userName = getUserName();return userName ? GM_getValue(userName) : null;};exports.getUserFromName = getUserFromName;const getFormhash = () => {var _a;return new URLSearchParams((_a = document.querySelector('.listmenu li a')) === null || _a === void 0 ? void 0 : _a.href).get('formhash');};exports.getFormhash = getFormhash;const creatUser = (username, formhash) => __awaiter(void 0, void 0, void 0, function* () {let user = GM_getValue(username);const userMod = new User(username, formhash);if (!user) {// 空则写入,或版本变动写入user = userMod;user = yield (0, _1.setFastReply)(user); // 设置快速回复GM_setValue(username, user);new _1.MessageBox('添加用户成功!');}else if (user.version !== GM_info.script.version) {const compa = (0, tools_1.isSameObjKey)(userMod, user); // 比较key// 更新所有 Url 参数user = (0, tools_1.updateUserUrl)(user, userMod); // new对User赋值// key相同 只改变版本user.version = GM_info.script.version; // 记录新版本if (!compa) {// key不同user = (0, tools_1.mergeObjValue)(userMod, user); // new对User赋值new _1.MessageBox('数据更新成功!');}user = yield (0, _1.setFastReply)(user); // 设置快速回复GM_setValue(username, user);new _1.MessageBox('版本更新成功!请阅读使用说明。');}if (user.formhash !== formhash) {// formhash 变动存储user.formhash = formhash;GM_setValue(username, user);}return user;});exports.creatUser = creatUser;/***/ }),/***/ 608:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.autoVoted = void 0;const tools_1 = __webpack_require__(633);const _1 = __webpack_require__(915);function autoVoted(user) {var _a;return __awaiter(this, void 0, void 0, function* () {yield (0, _1.getData)(user.applyVotedUrl); // 申请任务const msId = new _1.MessageBox('申请投票任务执行成功!正在投票请勿退出页面...', 'none');// 投票请求链接const votedUrlParams = (0, tools_1.urlSearchParams)({id: 'voted',}).toString();const htmlData = yield (0, _1.getData)(user.votedUrl + votedUrlParams);const vidUrl = (_a = htmlData.querySelector('.voted a')) === null || _a === void 0 ? void 0 : _a.href; // 找到链接const vid = vidUrl.split('&')[2].split('=')[1]; // 纯数字// 分解链接const hrefHtmlData = yield (0, _1.getData)(vidUrl);const aidUrl = hrefHtmlData.querySelector('.hp_s_c a').href; // 找到链接const aid = aidUrl.split('&')[2].split('=')[1]; // 纯数字// 分解链接// 投票请求链接数据const votedParams = (0, tools_1.urlSearchParams)({id: 'voted',ac: 'dian',aid: aid,vid: vid,qr: '',inajax: 1,}).toString();// Post 数据const votedParamsData = (0, tools_1.urlSearchParams)({formhash: user.formhash,inajax: 1,handlekey: 'dian',sid: 0,message: user.votedMessage,}).toString();// 投票const votedMessage = yield (0, _1.postDataCdata)(user.votedUrl + votedParams, votedParamsData);if ((0, tools_1.checkHtml)(votedMessage)) {let info = '';const alertInfo = votedMessage.querySelector('.alert_info');const script = votedMessage.querySelector('script');if (alertInfo) {info = alertInfo.innerHTML; // 解析html,返回字符串,失败警告new _1.MessageBox(info);}else if (script) {info = script.innerHTML.split(`', `)[1].slice(1); // 解析html,获取字符串,成功消息new _1.MessageBox(info);yield (0, _1.getData)(user.taskDoneUrl); // 执行#奖励new _1.MessageBox('#取投票奖励成功!');}}else {new _1.MessageBox(votedMessage); //其它情况直接输出}msId.remove();GM_setValue(user.username, user); //保存当天日// today 初始化});}exports.autoVoted = autoVoted;/***/ }),/***/ 67:/***/ ((__unused_webpack_module, exports) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.setTimeoutWorker = exports.setIntervalWorker = void 0;function setIntervalWorker(callback, interval) {const workerBlob = new Blob([`setInterval(() => { postMessage('') }, ${interval})`]);const workerURL = URL.createObjectURL(workerBlob);const worker = new Worker(workerURL);worker.onmessage = () => {callback();};return worker;}exports.setIntervalWorker = setIntervalWorker;function setTimeoutWorker(callback, timeout) {const workerBlob = new Blob([`setTimeout(() => { postMessage('') }, ${timeout})`]);const workerURL = URL.createObjectURL(workerBlob);const worker = new Worker(workerURL);worker.onmessage = () => {callback();worker.terminate();};return worker;}exports.setTimeoutWorker = setTimeoutWorker;/***/ }),/***/ 287:/***/ ((__unused_webpack_module, exports) => {"use strict";/* eslint-disable @typescript-eslint/no-explicit-any *//*NodeJS Promise并发控制https://xin-tan.com/2020-09-13-bing-fa-kong-zhi/*/Object.defineProperty(exports, "__esModule", ({ value: true }));exports.ConcurrencyPromisePool = void 0;class ConcurrencyPromisePool {constructor(limit) {this.limit = limit;this.runningNum = 0;this.queue = [];this.r###lts = [];}all(promises = []) {return new Promise((resolve, reject) => {for (const promise of promises) {// 发送所有 promisethis._run(promise, resolve, reject);}});}_run(promise, resolve, reject) {// 超出限制的 promise 入队if (this.runningNum >= this.limit) {// console.log(">>> 达到上限,入队:", promise);this.queue.push(promise);return;}// 正在运行的 promise++this.runningNum;promise().then((res) => {this.r###lts.push(res);--this.runningNum;// 运行结束条件:队列长度 && 正在运行的数量if (this.queue.length === 0 && this.runningNum === 0) {// promise返回结果, 然后递归结束;const r###lts = [...this.r###lts];// 清空结果,方便重复使用this.r###lts = [];return resolve(r###lts);}// 队列还有则,出队,然后递归调用if (this.queue.length) {// eslint-disable-next-line @typescript-eslint/no-non-null-assertionthis._run(this.queue.shift(), resolve, reject);}}).catch(reject);}}exports.ConcurrencyPromisePool = ConcurrencyPromisePool;/***/ }),/***/ 19:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));const tailwindStyles = __webpack_require__(600);// 导出的是 GM_addStyle 的值// delete css conflictsexports["default"] = GM_addStyle(tailwindStyles.replace(/\nimg,\nvideo {\n {2}max-width: 100%;\n {2}height: auto;\n}\n/, '').replace(/\*,\n::before,\n::after \{\n {2}box-sizing: border-box;\n {2}\/\* 1 \*\/\n {2}border-width: 0;\n {2}\/\* 2 \*\/\n {2}border-style: solid;\n {2}\/\* 2 \*\/\n {2}border-color: #e5e7eb;\n {2}\/\* 2 \*\/\n}/, '').replace(/-webkit-appearance: button;\n {2}\/\* 1 \*\/\n {2}background-color: transparent;\n {2}\/\* 2 \*\/\n {2}background-image: none;\n {2}\/\* 2 \*\//, '').replace(/display: block;\n {2}\/\* 1 \*\//, '').replace(/padding-top: 0.5rem;\n {2}padding-right: 0.75rem;\n {2}padding-bottom: 0.5rem;\n {2}padding-left: 0.75rem;/, '').replace(/font-size: inherit;\n {2}font-weight: inherit;/, ''));/***/ }),/***/ 633:/***/ ((__unused_webpack_module, exports, __webpack_require__) => {"use strict";Object.defineProperty(exports, "__esModule", ({ value: true }));exports.waitFor = exports.urlSearchParams = exports.updateUserUrl = exports.turnUrl = exports.turnCdata = exports.replaceHtml = exports.rdNum = exports.preciseSetTimeout = exports.preciseSetInterval = exports.mergeObjValue = exports.isSameObjKey = exports.hoursUntilTimeRange = exports.getVersionNum = exports.getUuiD = exports.getTid = exports.getBase64Image = exports.checkHtml = exports.NowTime = void 0;const lib_1 = __webpack_require__(915);// POST返回 xml数据类型转换成 字符串或html 模块function turnCdata(xmlRepo) {var _a;const data = (_a = xmlRepo.querySelector('root')) === null || _a === void 0 ? void 0 : _a.textContent;if (!data)return '';// 如果判断去掉html是否还有文字,否则返回htmlif (replaceHtml(data)) {return replaceHtml(data); // 去掉html内容,返回文字}else {const domParser = new DOMParser();const htmlData = domParser.parseFromString(data, 'text/html');return htmlData;}}exports.turnCdata = turnCdata;// URL 参数添加器function urlSearchParams(object) {const searchParamsData = new URLSearchParams();for (const key in object) {searchParamsData.append(key, String(object[key]));}return searchParamsData;}exports.urlSearchParams = urlSearchParams;// 编码统一资源定位符模块function turnUrl(data, type) {if (type) {return decodeURI(data);}else {return encodeURI(data);}}exports.turnUrl = turnUrl;// 判断html和字符串是不是htmlfunction checkHtml(htmlStr) {if (htmlStr instanceof Document) {return true;}else {const reg = /<[^>]+>/g;return reg.test(htmlStr);}}exports.checkHtml = checkHtml;// 过滤html标签、前后空格、特殊符号function replaceHtml(txt) {const reg3 = /[\r|\n|\b|\f|\t|\v]+/g; //去掉特殊符号const reg = /<.+>/g; //去掉所有<>内内容// 先reg3,\n特殊符号会影响reg的匹配return txt.replace(reg3, '').replace(reg, '').trim();}exports.replaceHtml = replaceHtml;// promise 等待模块const waitFor = (ms) => new Promise((r) => setTimeout(r, ms));exports.waitFor = waitFor;// n, m 范围随机整数生成function rdNum(n, m) {const c = m - n + 1;return Math.floor(Math.random() * c + n);}exports.rdNum = rdNum;class NowTime {constructor() {const date = new Date();this.day = date.toLocaleDateString();this.seconds = date.toTimeString().split(' ')[0];this.date = date;}}exports.NowTime = NowTime;// 比较键function isSameObjKey(source, target) {if (Object.keys(target).length === Object.keys(source).length) {// 用户数据匹配for (const key of Object.keys(source)) {// https://stackoverflow.com/questions/39282873/object-hasownproperty-yields-the-eslint-no-prototype-builtins-error-how-toif (!Object.prototype.hasOwnProperty.call(target, key)) {return false;}}return true;}else {return false;}}exports.isSameObjKey = isSameObjKey;// 赋值对象的值function mergeObjValue(target, source) {Object.keys(source).forEach((key) => {if (source[key] && Object.prototype.hasOwnProperty.call(target, key)) {target[key] = source[key];}});return target;}exports.mergeObjValue = mergeObjValue;// 更新User对象的URL值,自动有空间隔时间function updateUserUrl(target, source) {Object.keys(source).forEach((key) => {if (key.includes('Url') || key === 'freeTime') {target[key] = source[key];}});return target;}exports.updateUserUrl = updateUserUrl;/*** 生成不重复的ID* @param { Number } randomLength*/function getUuiD(randomLength) {return Number(Math.random().toString().substr(2, randomLength) + Date.now()).toString(36);}exports.getUuiD = getUuiD;const getVersionNum = (ver) => {return Number(ver.replace(/\./g, ''));};exports.getVersionNum = getVersionNum;const getTid = (url) => {let tid = url.split('-')[1];if (!tid) {tid = new URLSearchParams(url).get('tid'); // 用于获取分类贴链接下的 tidif (!tid) {new lib_1.MessageBox('没有找到Tid: ' + url);throw new Error('没有找到Tid: ' + url);}}return tid;};exports.getTid = getTid;const preciseSetInterval = (handler, delay, timeout = 0) => {let baseTime = Date.now();const callHandler = () => {if (Math.abs(Date.now() - baseTime) <= delay + timeout) {baseTime = Date.now();handler();}};return window.setInterval(callHandler, delay);};exports.preciseSetInterval = preciseSetInterval;const preciseSetTimeout = (handler, delay, timeout = 0) => {let baseTime = Date.now();const callHandler = () => {if (Math.abs(Date.now() - baseTime) <= delay + timeout) {baseTime = Date.now();handler();}};return window.setTimeout(callHandler, delay);};exports.preciseSetTimeout = preciseSetTimeout;function hoursUntilTimeRange(startHour, endHour) {const date = new Date();const currentHour = date.getHours();if (startHour <= endHour) {// 范围在同一天的情况if (currentHour >= startHour && currentHour <= endHour) {return 0;}else if (currentHour < startHour) {return startHour - currentHour;}else {return 24 - currentHour + startHour;}}else {// 范围跨越两天的情况if (currentHour >= startHour || currentHour <= endHour) {return 0;}else {return startHour - currentHour;}}}exports.hoursUntilTimeRange = hoursUntilTimeRange;/*** 图像转Base64*/function getBase64Image(img) {const canvas = document.createElement('canvas');canvas.width = img.width;canvas.height = img.height;const ctx = canvas.getContext('2d');if (!ctx) {return;}ctx.drawImage(img, 0, 0, img.width, img.height);const imgd = ctx.getImageData(0, 0, img.width, img.height);// const threshold = 250;const imgData = imgd.data;const len = imgData.length - 1;for (let i = 0; i <= len; i += 4) {const R = imgData[i];const G = imgData[i + 1];const B = imgData[i + 2];// const Alpha = imgData[i + 3];const avg = (R + G + B) / 3;// if (avg > threshold) {//   imgData[i] = 255;//   imgData[i + 1] = 255;//   imgData[i + 2] = 255;// } else {//   imgData[i] = 0;//   imgData[i + 1] = 0;//   imgData[i + 2] = 0;// }imgData[i] = avg;imgData[i + 1] = avg;imgData[i + 2] = avg;}ctx.putImageData(imgd, 0, 0);// const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase();const dataURL = canvas.toDataURL('image/jpeg');return dataURL;}exports.getBase64Image = getBase64Image;/***/ }),/***/ 699:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.AutoClickManage = void 0;const commonType_1 = __webpack_require__(321);const components_1 = __webpack_require__(740);const lib_1 = __webpack_require__(915);const ConcurrencyPromisePool_1 = __webpack_require__(287);const tools_1 = __webpack_require__(633);const react_1 = __importStar(__webpack_require__(995));const AutoClickManage = ({ onClose, user }) => {var _a, _b, _c, _d;const [data, setData] = (0, react_1.useState)(user.freeData ? user.freeData.map((d) => (Object.assign(Object.assign({}, d), { runStatus: commonType_1.RunStatus.NotRunning }))) : []);const [token, setToken] = (0, react_1.useState)(user.token);const [threadUrl, setThreadUrl] = (0, react_1.useState)('');const [running, setRunning] = (0, react_1.useState)(false);const [startTime, setStartTime] = (0, react_1.useState)(((_b = (_a = user.freeData) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.runTime) ? String(user.freeData[0].runTime.startTime) : '0');const [endTime, setEndTime] = (0, react_1.useState)(((_d = (_c = user.freeData) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.runTime) ? String(user.freeData[0].runTime.endTime) : '23');const [pool] = (0, react_1.useState)(new ConcurrencyPromisePool_1.ConcurrencyPromisePool(1));const isInitialMount = (0, react_1.useRef)(true);// When our cell renderer calls updateMyData, we'll use the rowIndex, columnId and new value to update the original dataconst updateMyData = (rowIndex, columnId, value) => {setData((old) => old.map((row, index) => {if (index === rowIndex) {return Object.assign(Object.assign({}, old[rowIndex]), { [columnId]: value });}return row;}));};const deleteData = (rowId) => {// We also turn on the flag to not reset the pagesetData((old) => {old.splice(rowId, 1);return [...old];});};const addThread = () => __awaiter(void 0, void 0, void 0, function* () {var _e, _f, _g, _h;if (!threadUrl) {return alert('请输入帖子链接');}const tid = (0, tools_1.getTid)(threadUrl);if (!tid) {return alert(`帖子地址错误,未找到帖子ID:${threadUrl}`);}if (data.some((t) => (0, tools_1.getTid)(t.url) === tid)) {return alert(tid + ',帖子已存在!');}if (!threadUrl.includes('thread')) {return alert(`帖子地址错误:${threadUrl}`);}const docu = yield (0, lib_1.getData)(threadUrl);const topthreadStatus = docu.querySelector('#topthread_status');if (!topthreadStatus) {return alert('未找到帖子的自动有空元素,请检查帖子');}const titleCont = docu.querySelector('.title-cont');if (!titleCont) {return alert('未找到帖子标题');}const title = ((_f = (_e = titleCont.querySelector('.z')) === null || _e === void 0 ? void 0 : _e.textContent) !== null && _f !== void 0 ? _f : '') + ((_h = (_g = titleCont.querySelector('h1')) === null || _g === void 0 ? void 0 : _g.textContent) !== null && _h !== void 0 ? _h : '');if (!title) {return alert('未找到帖子标题');}setData([...data,{status: commonType_1.Status.online,runStatus: commonType_1.RunStatus.NotRunning,runTime: { startTime: Number(startTime), endTime: Number(endTime) },title,url: threadUrl,cycle: '55',times: 0,nextClickTime: 0,retry: 0,delete: '',},]);});const saveData = (0, react_1.useCallback)(() => {user.freeData = data;if (token && token.length === 36) {user.token !== token ? (user.token = token) : null;}else {new lib_1.MessageBox('没有输入令牌 or 令牌无效', 1000);}GM_setValue(user.username, user);}, [data, token, user]);const setNextClickTime = (t, skip) => {setData((old) => old.map((row) => {if (row.url === t.url) {return Object.assign(Object.assign({}, row), { times: skip ? row.times : row.times + 1, nextClickTime: t.nextClickTime, retry: t.retry });}return row;}));};const triggerNextClick = (t) => {const onThread = data.find((onlineThread) => onlineThread.status === 'online' && t.url === onlineThread.url);if (!onThread) {return;}// 点击时间校验,防止点击时间错乱const diff = Math.abs(t.nextClickTime - new Date().getTime());// 时间精度过高,误差等于网络超时时间,设置误差60秒if (diff < 60000 && t.retry < 10) {// 添加任务,在此处开始闭包,递归调用pool.all([() => (0, lib_1.autofillCaptcha)(onThread, user, setNextClickTime, saveStatusData, triggerNextClick)]);}else if (t.retry >= 10) {saveStatusData(onThread.url, commonType_1.RunStatus.Error);new lib_1.MessageBox(`帖子ID:${(0, tools_1.getTid)(onThread.url)},连续重试次数过多:${onThread.retry}次,自动现在有空已停止运行!`, 'none', 'LOG_POP_GM');}else {saveStatusData(onThread.url, commonType_1.RunStatus.Error);new lib_1.MessageBox(`帖子ID:${(0, tools_1.getTid)(onThread.url)},已错过点击时间,自动现在有空已停止运行!预设点击时间:${new Date(t.nextClickTime).toLocaleString()},实际时间:${new Date().toLocaleString()}`, 'none', 'LOG_POP_GM');}};const saveStatusData = (url, runStatus) => {setData((old) => old.map((row) => {if (row.url === url) {return Object.assign(Object.assign({}, row), { runStatus });}return row;}));};const start = () => __awaiter(void 0, void 0, void 0, function* () {if (!token) {return alert('请输入令牌');}const onThreads = data.filter((t) => t.status === commonType_1.Status.online);if (!onThreads.length) {return alert('请将需要执行的帖子‘启用状态’设为已启用');}setRunning(true);const promises = onThreads.map((t) => () => (0, lib_1.autofillCaptcha)(Object.assign(Object.assign({}, t), { retry: 0 }), user, setNextClickTime, saveStatusData, triggerNextClick));pool.all(promises);});(0, react_1.useEffect)(() => {// only on updateif (isInitialMount.current) {isInitialMount.current = false;}else {saveData();if (running && data.every((t) => t.runStatus === commonType_1.RunStatus.NotRunning || t.runStatus === commonType_1.RunStatus.Error)) {setRunning(false);}}}, [data, running, saveData]);const setRunTime = () => {const startTimeNum = Number(startTime);const endTimeNum = Number(endTime);if (startTimeNum > 23 || startTimeNum < 0 || endTimeNum > 23 || endTimeNum < 0 || startTimeNum === endTimeNum) {return alert('时间必须大于等于0点,小于等于23点');}setData(data.map((d) => (Object.assign(Object.assign({}, d), { runTime: { startTime: startTimeNum, endTime: endTimeNum } }))));};return (react_1.default.createElement(components_1.Modal, { isShow: true, width: "w-full", height: "max-h-[95%]", header: react_1.default.createElement(react_1.default.Fragment, null, "\u81EA\u52A8\u70B9\u51FB\u73B0\u5728\u6709\u7A7A\u7BA1\u7406\u9875\u9762"), footer: react_1.default.createElement(react_1.default.Fragment, null,react_1.default.createElement(components_1.Button, { text: '开始执行', onClick: start, disabled: running }),react_1.default.createElement(components_1.Button, { title: "\u4E0D\u4F7F\u7528\u65F6\u8BF7\u505C\u6B62\u8FD0\u884C\uFF0C\u4FEE\u6539\u8BBE\u7F6E\u540E\u9700\u8981\u505C\u6B62\u91CD\u65B0\u8FD0\u884C", text: '停止自动现在有空', onClick: () => {location.reload();} }),react_1.default.createElement(components_1.Button, { title: "\u505C\u6B62\u8FD0\u884C\u81EA\u52A8\u73B0\u5728\u6709\u7A7A\u540E\u53EF\u5173\u95ED", text: '关闭页面', onClick: onClose, disabled: running })), onClose: () => {if (running) {alert('停止运行自动现在有空后可关闭');}else {onClose();}} },react_1.default.createElement(react_1.default.Fragment, null,react_1.default.createElement("span", { className: "text-red-500" },"\u76EE\u524D\u672C\u9875\u9762\u4EC5\u652F\u6301\u7BA1\u7406\u4E00\u4E2AJKF\u8D26\u53F7\u7684\u591A\u4E2A\u5E16\u5B50\uFF0C\u591A\u4E2A\u8D26\u53F7\u8BF7",react_1.default.createElement("a", { className: "text-blue-500 border-b", target: "_blank", href: "https://iknow.fun/2023/06/23/chrome-tong-shi-deng-lu-duo-ge-zhang-hao-wang-zhan-duo-kai-jiao-cheng/", rel: "noreferrer" }, "\u591A\u5F00\u6D4F\u89C8\u5668"),"\u3002"),react_1.default.createElement("div", { className: "flex items-end" },react_1.default.createElement("div", { className: "w-64 pr-4" },react_1.default.createElement(components_1.Input, { autoComplete: "off", label: "\u8F93\u5165\u4EE4\u724C\uFF1A", type: "password", onChange: (e) => setToken(e.target.value), placeholder: "\u8BF7\u8F93\u5165\u4EE4\u724C", value: token })),react_1.default.createElement("span", null, "\u8FD8\u6CA1\u6709\u4EE4\u724C\uFF1F"),react_1.default.createElement(components_1.Button, { title: "https://jkf.iknow.fun", text: '获取令牌', onClick: () => window.open('https://jkf.iknow.fun') })),react_1.default.createElement("div", { className: "flex items-end" },react_1.default.createElement("div", { className: "w-64" },react_1.default.createElement(components_1.Input, { label: "\u5E16\u5B50\u94FE\u63A5\uFF1A", onChange: (e) => setThreadUrl(e.target.value), placeholder: "\u8BF7\u8F93\u5165\u5E16\u5B50\u94FE\u63A5", value: threadUrl })),react_1.default.createElement("div", { className: "ml-4" },react_1.default.createElement(components_1.Button, { text: '添加', onClick: addThread }))),react_1.default.createElement("div", { className: "flex items-end justify-between w-80 mt-2" },react_1.default.createElement("span", { title: "\u8BBE\u7F6E\u81EA\u52A8\u70B9\u51FB\u4EC5\u5728\u8BE5\u65F6\u95F4\u6BB5\u5185\u8FD0\u884C\uFF0C\u91CD\u65B0\u8FD0\u884C\u540E\u751F\u6548", className: "cursor-help" }, "\u8FD0\u884C\u65F6\u95F4\u6BB5\uFF1A"),react_1.default.createElement("div", { className: "w-8" },react_1.default.createElement(components_1.Input, { type: "number", min: 0, max: 23, onChange: (e) => setStartTime(e.target.value), placeholder: "0", value: startTime })),react_1.default.createElement("span", null, "\u70B9 ~ "),react_1.default.createElement("div", { className: "w-8" },react_1.default.createElement(components_1.Input, { type: "number", min: 0, max: 23, onChange: (e) => setEndTime(e.target.value), placeholder: "23", value: endTime })),react_1.default.createElement("span", { className: "pl-2" }, ":59\u5206"),react_1.default.createElement(components_1.Button, { text: '保存', title: "\u91CD\u65B0\u8FD0\u884C\u540E\u751F\u6548", onClick: setRunTime })),react_1.default.createElement("div", { className: "overflow-auto" }, data.length ? (react_1.default.createElement(components_1.ReactTableCard, { searchBar: false, title: '帖子管理', data: data.map((t) => ({status: t.status,runStatus: t.runStatus,runTime: t.runTime,title: t.title,url: t.url,cycle: t.cycle,times: t.times,nextClickTime: t.nextClickTime,retry: t.retry,delete: '',})), updateMyData: updateMyData, deleteData: deleteData })) : ('')))));};exports.AutoClickManage = AutoClickManage;/***/ }),/***/ 818:/***/ (function(__unused_webpack_module, exports, __webpack_require__) {"use strict";var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {if (k2 === undefined) k2 = k;var desc = Object.getOwnPropertyDescriptor(m, k);if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {desc = { enumerable: true, get: function() { return m[k]; } };}Object.defineProperty(o, k2, desc);}) : (function(o, m, k, k2) {if (k2 === undefined) k2 = k;o[k2] = m[k];}));var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {Object.defineProperty(o, "default", { enumerable: true, value: v });}) : function(o, v) {o["default"] = v;});var __importStar = (this && this.__importStar) || function (mod) {if (mod && mod.__esModule) return mod;var r###lt = {};if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(r###lt, mod, k);__setModuleDefault(r###lt, mod);return r###lt;};var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }return new (P || (P = Promise))(function (resolve, reject) {function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }function step(r###lt) { r###lt.done ? resolve(r###lt.value) : adopt(r###lt.value).then(fulfilled, rejected); }step((generator = generator.apply(thisArg, _arguments || [])).next());});};Object.defineProperty(exports, "__esModule", ({ value: true }));exports.Home = void 0;const components_1 = __webpack_require__(740);const lib_1 = __webpack_require__(915);const autoPost_1 = __webpack_require__(342);const reCaptcha_1 = __webpack_require__(960);const react_1 = __importStar(__webpack_require__(995));const react_copy_to_clipboard_1 = __webpack_require__(950);const AutoClickManage_1 = __webpack_require__(699);const Home = ({ user, setShowHome, counter, setCounter }) => {const mask = (0, react_1.useRef)(null);const [replyValue, setReplyValue] = (0, react_1.useState)('');const [pageValue, setPageValue] = (0, react_1.useState)('');const [showModal, setShowModal] = (0, react_1.useState)(false);const [showCaptcha, setShowCaptcha] = (0, react_1.useState)(false);const [recapchaToken, setRecapchaToken] = (0, react_1.useState)('');(0, react_1.useEffect)(() => {GM_addValueChangeListener('CaptchaValue', (name, oldValue, newValue) => __awaiter(void 0, void 0, void 0, function* () {if (newValue) {setRecapchaToken(newValue);}}));}, []);return (react_1.default.createElement("div", { ref: mask, className: "fixed top-0 w-screen h-screen flex flex-col justify-center", onClick: (e) => {if (mask.current && mask.current === e.target) {setShowHome();}} },react_1.default.createElement("div", { className: "h-fit w-72 p-2 m-2 bg-gray-50 shadow-md rounded-md flex flex-col border" },react_1.default.createElement("h3", { className: "text-sm text-center font-bold border-b" }, "JKForum Helper"),react_1.default.createElement(components_1.Panel, { title: "\u901A\u7528\u8BBE\u7F6E" },react_1.default.createElement(components_1.Toggle, { label: '自动感谢', onClick: () => {(0, lib_1.swThk)(user);}, checked: user.autoThkSw }),react_1.default.createElement(components_1.Toggle, { label: '自动购买', onClick: () => {(0, lib_1.swPay)(user);}, checked: user.autoPaySw }),react_1.default.createElement(components_1.Toggle, { label: '加载原图', onClick: () => {(0, lib_1.swRePic)(user);}, checked: user.autoRePicSw }),react_1.default.createElement(components_1.Toggle, { title: '在不刷新网页的情况下,定时检测是否需要执行每日任务', label: '定时每日任务', onClick: () => {(0, lib_1.swDailyTask)(user);}, checked: user.autoDailyTask })),react_1.default.createElement(components_1.Panel, { title: "\u6279\u5904\u7406" },react_1.default.createElement(components_1.TextArea, { label: '输入回复:', placeholder: '中文分号 ;分隔每条回帖内容,可输入论坛的富文本格式', onChange: setReplyValue, value: replyValue, rows: 2 }),react_1.default.createElement(components_1.Input, { label: '输入页码:', placeholder: '板块号-起始页-终止页', onChange: (e) => setPageValue(e.target.value), value: pageValue }),react_1.default.createElement(components_1.Button, { text: '添加当前页', onClick: () => {(0, lib_1.addOnePage)(user, replyValue);} }),react_1.default.createElement(components_1.Button, { text: '添加页码页', onClick: () => {(0, lib_1.addPageBatch)(user, pageValue, replyValue);} }),react_1.default.createElement(components_1.Button, { text: '获取快速回复', onClick: () => {(0, lib_1.setFastReply)(user);} }),react_1.default.createElement(components_1.Button, { text: '重置回帖数据', onClick: () => {(0, lib_1.resetReplyData)(user);} }),react_1.default.createElement(components_1.Button, { text: '一键回帖', disabled: !!counter.replyBtn, onClick: () => {(0, lib_1.replyOrThk)(counter, user, "reply" /* REPLY */, setCounter);} }),react_1.default.createElement(components_1.Button, { text: '一键感谢', disabled: !!counter.thkBtn, onClick: () => {(0, lib_1.replyOrThk)(counter, user, "thk" /* THANK */, setCounter);} })),react_1.default.createElement(components_1.Panel, { title: "\u9AD8\u7EA7\u529F\u80FD" },react_1.default.createElement(components_1.Button, { text: '定时签到', disabled: !!counter.signBtn, onClick: () => {(0, lib_1.timeControl)(counter, setCounter, user);} }),react_1.default.createElement(components_1.Button, { text: '下载图片', disabled: !!counter.downloadBtn, onClick: () => {(0, lib_1.downloadImgs)(user, counter, setCounter);} }),react_1.default.createElement(components_1.Button, { text: '自动发文', onClick: () => {(0, autoPost_1.autoPost)(user);} }),react_1.default.createElement(components_1.Button, { text: '现在有空', onClick: () => {setShowModal(true);} }),react_1.default.createElement(components_1.Button, { text: '屏蔽图片', onClick: () => {(0, lib_1.noDisplayPic)();} }),react_1.default.createElement(components_1.Button, { title: "\u670D\u52A1\u5668\u6258\u7BA1\u767B\u5F55\u8D26\u53F7\u65F6\u4F7F\u7528", text: '获取验证码', onClick: () => {setShowCaptcha(true);(0, reCaptcha_1.reCaptcha)();} }),react_1.default.createElement(components_1.Button, { text: '检查更新', onClick: () => {(0, lib_1.checkUpdate)(user);} })),react_1.default.createElement("br", null),react_1.default.createElement(components_1.Button, { text: 'close', onClick: setShowHome }),react_1.default.createElement(components_1.Modal, { isShow: showCaptcha, header: react_1.default.createElement("div", { className: "flex w-80" }, "\u670D\u52A1\u5668\u6258\u7BA1\u767B\u5F55\u8D26\u53F7\u65F6\u4F7F\u7528"), footer: react_1.default.createElement("div", { className: "flex justify-evenly w-full" },react_1.default.createElement(components_1.Button, { text: '刷新验证码', onClick: () => {setRecapchaToken('');grecaptcha.reset();} }),react_1.default.createElement(react_copy_to_clipboard_1.CopyToClipboard, { text: recapchaToken, onCopy: () => new lib_1.MessageBox('复制验证码成功') },react_1.default.createElement(components_1.Button, { disabled: !recapchaToken, text: '复制验证码', onClick: () => '' }))), onClose: function () {setShowCaptcha(false);} },react_1.default.createElement("div", { className: "w-40 h-20", id: "reCaptcha" })),showModal ? react_1.default.createElement(AutoClickManage_1.AutoClickManage, { user: user, onClose: () => setShowModal(false) }) : '')));};exports.Home = Home;/***/ }),/***/ 950:/***/ ((module) => {"use strict";module.exports = CopyToClipboard;/***/ }),/***/ 583:/***/ ((module) => {"use strict";module.exports = JSZip;/***/ }),/***/ 995:/***/ ((module) => {"use strict";module.exports = React;/***/ }),/***/ 533:/***/ ((module) => {"use strict";module.exports = ReactDOM;/***/ }),/***/ 282:/***/ ((module) => {"use strict";module.exports = ReactTable;/***/ }),/***/ 581:/***/ ((module) => {"use strict";module.exports = saveAs;/***/ }),/***/ 419:/***/ ((module) => {"use strict";module.exports = JSON.parse('{"name":"JKForum 助手","name:en":"JKForum Helper","name:zh-TW":"JKForum 助手","name:ja":"JKForum 助手","name:ko":"JKForum 조수","namespace":"https://github.com/Eished/jkforum_helper","version":"0.9.2","description":"JKF 捷克论坛助手:自动签到、定时签到、自动感谢、自动加载原图、自动播放图片、自动支付购买主题贴、自动完成投票任务,优化浏览体验,一键批量回帖/感谢,一键打包下载帖子图片,自动识别验证码,自动现在有空,自动点击置顶广告,登录时跳过绑定手机号验证码,自动发文","description:en":"JKF JKForum Helper: Auto-sign-in, timed sign-in, auto-thank you, auto-load original image, auto-play image, auto-pay to buy theme post, auto-complete voting task, optimize browsing experience, one-click bulk reply/thank you, one-click package to download post image,Skip mobile verification code when logging in","description:zh-TW":"JKF 捷克論壇助手:自動簽到、定時簽到、自動感謝、自動加載原圖、自動播放圖片、自動支付購買主題貼、自動完成投票任務,優化瀏覽體驗,一鍵批量回帖/感謝,一鍵打包下載帖子圖片,自動識別驗證碼,自動現在有空,自動點擊置頂廣告,登錄時跳過綁定手機號驗證碼,自動發文","description:ja":"JKF チェコ語フォーラム助手:自動チェックイン、時限式チェックイン、オートサンキュー、オリジナル画像の自動読み込み、画像の自動再生、トピック投稿の自動支払い、ポールタスクの自動完了、ブラウジングエクスペリエンスの最適化、ワンクリックでの一括返信/サンキュー、ワンクリックでの投稿画像のパッケージダウンロード,ログイン時にモバイル認証コードをスキップ","description:ko":"JKF 체코 포럼 조수: 자동 로그인, 정기 로그인, 자동 감사, 원본 사진 자동로드, 테마 스티커 구매 자동 결제, 투표 작업 자동 완료, 최적화 된 브라우징 경험, 원 클릭 일괄 회신 / 감사, 원 클릭 포스트 사진의 패키지 다운로드 클릭다운로드하십시오,로그인 시 모바일 인증 코드 건너뛰기","author":"Eished","copyright":"Eished","license":"MIT","match":["*://*.jkforum.net/*"],"run-at":"document-idle","supportURL":"https://github.com/Eished/jkforum_helper/issues","homepage":"https://github.com/Eished/jkforum_helper","grant":["GM_getValue","GM_setValue","GM_deleteValue","GM_info","GM_xmlhttpRequest","GM_openInTab","GM_registerMenuCommand","GM_addElement","GM_addStyle","GM_notification","GM_addValueChangeListener"],"connect":["mymypic.net","jkf.iknow.fun","cdn.jsdelivr.net","github.com","greasyfork.org","jkf.hare200.com"],"require":["https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js","https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js","https://cdn.jsdelivr.net/npm/[email protected]/dist/react-table.production.min.js","https://cdn.jsdelivr.net/npm/[email protected]/dist/FileSaver.min.js","https://cdn.jsdelivr.net/npm/[email protected]/dist/jszip.min.js","https://cdn.jsdelivr.net/npm/[email protected]/build/react-copy-to-clipboard.min.js"],"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDExNi4xNjQ2NTUsIDIwMjEvMDEvMjYtMTU6NDE6MjAgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6YzYwNmI3NGQtODA4Zi03YjQ3LWI4NGYtYjNlZmJiMTM4NDIwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkM3MzFDMzYyRUE5MzExRUJCOTU4RkY3NUMxOTY5MDdGIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkM3MzFDMzYxRUE5MzExRUJCOTU4RkY3NUMxOTY5MDdGIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMS4yIChXaW5kb3dzKSI+IDx4bXBNTTpEZ###dmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA2MWY1NjgyLTk5OTctNDU0OS04NjIzLWZhNzY0MmVjMTM5MSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpjNjA2Yjc0ZC04MDhmLTdiNDctYjg0Zi1iM2VmYmIxMzg0MjAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5urL1nAAAJJUlEQVR42uxba2wU1xX+ZnZ2vYvX4BpDCYVA6xgKkR0wlYlJnyK1iiweVlqgGFpKK6qWAuYtQgitoYANGCTqRnJIQbQ/sJoAKsESMkrTitSQpuJhUBwVHCC21QeCgh17vevd6Tkzs+uZfXgftsevHOvT7twd35lz7rnnfufcGUGWZQxnETH###gbQLpy5UpfX0MgjCAkExwabBpEDT4NbkIHoZ3QRviUv/Msbff0/o1ZLBbl5npL0gkZhCkavkj4gtaeqhnArilu6aYfr2YEF6GV8EgS8J/ffh9NaSlo8PlQLwr4iNBAaBUT1YCMKtkdPTJAGuF5wrcIeYQvE0b3hQs5k4CmUmAkm9Kj3Dz/NRJuEP5CWrxDfnS###2KRnJsBoDNCSneKUPIJywjvEj4vBnzVCClPqXJMZL9olObVgIm0udEUqTAR8p4fbjmlfGmRcApyYI7QjRDyGo3sQZBGgP8hPAB4TyhyCzlu1VAU5CngVXCDLuEPaT4NZcHx9weTAtEoB6uAvMItYTXCc8N2HCuGYNG3+mw4ceiiL9T4PxVp5fijpCYAThYHSZUE2YOmnVN8wwyRLLDildpavyZvGFqJCOI3QS4twnFg3aB1zwiyYrnaVq82+6mQC3EZoCRhD8Rvj0kmI6sxIdxkoi3yRNmBBtBDENaThBeGFJ0TzUCe/UfPZ30KUQ2wFpC4ZDkvGQEmxXPUEwoV/I/IdQAvK7uHurc3ybhh+QFXwvnAVu1+T90hUaelkf+eEX2dTE7aKRmxaBRxBqd4EQUotJWES92+pBlFVDnN8ACwqiouTOZTxC6ruyjzCRSQYUzLb10d264/+HrWK1WtLe3h5xXd5dSRXcC2R+N/nMTlIAokgG+S65Q5//tnI5cRsThw4fl+vr6APLz8yOeW1VVZTh36tSp3fa9evVqw/l37tyRCwsLld9S7JCby8h+vyNUQn52fPR7DQciRmo/b0DuqMAV7xspgqRlcF+JxYKTJ08GKRI4Tk1NjXjulClTDOc6HI6I52ZnZ+PIkSOGc86cOYNz586FH8kE3d8iGr5PpxXhaW7KjjWxcbuNfuf1eiOe29HRETIFwondbseJEycMyt+6dQsrV65EZ2dnxOwwEWmlW5K7Eignfc1mD5jRg5DSY9m/fz9mzuxKNVpbW1FUVIQnT57E3EdBFiGHlIsSF6wUYlJHqLUnQV0VstgA0/pL+fnz52P9+vWGtjVr1uD69etx9fP1TOBnC7QCWjRxacU3dcgzJa10ZbqMHz8elZWVhraKigqcPHky7r5cHq2C2B73v07kGDCuPwzAyo8b13Xp2tpabNq0ydR7oFiSzgb4nNnKb9iwAQUFBYHjBw8eYPny5SGBs88NQMyXDZBsjrXVSTdr1izs27fP8NuqVavQ0NBgvhsKcLAB7GZcy+PxKMzu+PHjSEpKCrTv3r074nrf56mBDLuoywf6VHh527FjB7KysgJtZ8+exa5du/otpSAyZJFgwvZYW1sb5s2bh23bthnajx07ht7YnLVJmh97oydC8BmrP5IZJEiSJOzdu1dhfXopKSlBTU1NCMOMV07WAu9/Av+eQUR5heJuzjNQN+A0C5hiAJvNhrS0tJD2nJwcrF27FocOHepR/x/+S0U0+dELdE1LV21AgMm7w1evXg2ZBjt37sSkSZNMub4YZrdI0pr63AtaWlqUBOfGjRtYuHAh5syZo7SPGjUKpaWlWLp0acJ9pzsJKYi6JzjSrjtHUL9KZo3+unXrFOVZNm/ejEuXLikFFpYlS5Yoy+OFCxcS6vsX36T5/T2NDndb0IG676xvM8bFvhOmuvrvnALrpby8PCRIxuzapAWvZ9EQnEbzAiRGj53GYBZrPSBY9OTHP/cfPnwYOJ4+fTo2btyYKKHpesSiOwRNEZ8PPlG3KESVsWPHGo4fP36csEc0Nzdjz549hrbt27cjIyPDPCZIE0KMPnMQCFZc5vILV2saGxt7dAOc/t68eTNw7HQ6cfDgQTOzQRcbIKbSS2FhIdLT0wPH9+7dU9ATYQLEAVEvixYtUgolJuUCrWyA/3Y3V1nmzp2LsrIyQ9v58+d7zOBYOPKfPn3a0MbEKDnZlCT1IRvA4MdMWfnJsaqqKpw6dQqXL1/GxYsXMWbMmMA5XKs/evRor90FkyPOF/ySmZmJrVu3muEBzWyAfwbT09zcXCxevFhZn2fPnh3yj8XFxbh9+3av3Qj3FUyHt2zZYiir95E0sAHq9MvctGmRa6T379/HihUrQmp54STYhYN3ioLlwIEDhpjCZXLOFm22JPj6gqmo/PdDZoJcguVyooNTU87Z8/LyMGHCBCUeuFwu3L17V2Fu1dXVePToUUz98wjqgyb3EY0qM0XW1wvYaDa6B5+rl0tlgsIBmMTU+VPif0DdIBmQkkIE8aMS4Kl0lbZlvEy++6Dr95e/A/x6OWIri2sGoFX8Y8GW8qykMcF3B7IBgqVkAS1drV3HeV+Kh85pLNaH92wi2v3JEK9D6wa85to2Z9E3ghJ5j4Z4qDPpzLmBv5v3CDcHiwcouzttOnjim/+dXjRJImqgsyNPg3IMB5EVD3iN4msrZKMj/YGLNkNaeRp9jxeNlD5X6OsB+pn083jS48GmPPMJCn4bJAv+F3jOOOi0y7yED1XXd3fiN0lWvKmvC4Qrih4hlA01/V0evGWVUCxEeVI0kJ8QXh0Kbs+D3e7G78ntl1lEYn9ybAZg4YcmXyI0DVblabnroJHfRm7/AzKAO1zVONq+ABOkXEJlnKtt/wY7WXH5Ggp4X3VYUaZUgyOUzGPZGGkm/FQzxHHC44GotEJvucjnwTu01C20WZBPI/9BgEFGkHj2Ba4RVhF+yZUrqA9Vs1FG9JfCrJjyvpAX9aR8NTVXWS14PzDicuxdJSqTob4xxg8f50B9bS69t/V10DA1lwKp6ltjrsAbY8DfCH8lP75Omrjj0oaNY7VDGD26V990486ehvrgFYOfQH9KMwo/iut/edKmeZ+oux2vFmfcGsNvIfDGwb9tEhqX5eITZxI+5ioO6dlEo+zWvzOYyC57ksMJgZ/PMVEsOuX9O9P+LUufxkL9RjCo1OJS3T3W1wJjEZFIgfDZ2+PDXP4vwABKHSZ0zSd04wAAAABJRU5ErkJggg=="}');/***/ })/******/ 	});/************************************************************************//******/ 	// The module cache/******/ 	var __webpack_module_cache__ = {};/******//******/ 	// The require function/******/ 	function __webpack_require__(moduleId) {/******/ 		// Check if module is in cache/******/ 		var cachedModule = __webpack_module_cache__[moduleId];/******/ 		if (cachedModule !== undefined) {/******/ 			return cachedModule.exports;/******/ 		}/******/ 		// Create a new module (and put it into the cache)/******/ 		var module = __webpack_module_cache__[moduleId] = {/******/ 			id: moduleId,/******/ 			// no module.loaded needed/******/ 			exports: {}/******/ 		};/******//******/ 		// Execute the module function/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);/******//******/ 		// Return the exports of the module/******/ 		return module.exports;/******/ 	}/******//************************************************************************//******//******/ 	// startup/******/ 	// Load entry module and return exports/******/ 	// This entry module is referenced by other modules so it can't be inlined/******/ 	var __webpack_exports__ = __webpack_require__(629);/******//******/ })();