diff --git a/.github/ISSUE_TEMPLATE/-----bug-report-.md b/.github/ISSUE_TEMPLATE/-----bug-report-.md index 769fbef4c9..9202b7df2d 100644 --- a/.github/ISSUE_TEMPLATE/-----bug-report-.md +++ b/.github/ISSUE_TEMPLATE/-----bug-report-.md @@ -7,7 +7,9 @@ assignees: '' --- -请附上助手软件目录下的`asst.log`日志文件,是可以直接拖拽进来的。 +!!!请尽可能详细的描述你遇到的问题,并附上助手软件目录下的 `asst.log` 日志文件!!! + +!!!日志文件是可以直接拖拽进来的,没有日志文件的 bug 反馈我会直接关掉!!! 最好再能说明下使用的模拟器、并附上出错时的游戏和软件的截图(要是没截到就算啦_(:з」∠)_ diff --git a/.github/workflows/maa-doc-azure-deploy.yaml b/.github/workflows/maa-doc-azure-deploy.yaml new file mode 100644 index 0000000000..f71103aa47 --- /dev/null +++ b/.github/workflows/maa-doc-azure-deploy.yaml @@ -0,0 +1,30 @@ +name: Azure Static Web Apps CI/CD + +on: + push: + branches: + - master + paths: + - "docs/*" + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + name: Build and Deploy Job + if: github.repository_owner == 'MaaAssistantArknights' + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_GENTLE_DESERT_00290F400 }} + repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) + action: "upload" + ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### + # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig + app_location: "/docs" # App source code path + api_location: "" # Api source code path - optional + output_location: ".vuepress/dist" # Built app content directory - optional diff --git a/.gitignore b/.gitignore index ffada5046b..b3f724fcad 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# docs +docs/node_modules +docs/.vuepress/.temp # Prerequisites *.d diff --git a/3rdparty/include/meojson/json.hpp b/3rdparty/include/meojson/json.hpp index cae2541caf..5a7b2f99af 100644 --- a/3rdparty/include/meojson/json.hpp +++ b/3rdparty/include/meojson/json.hpp @@ -1022,10 +1022,9 @@ namespace json static_assert( std::is_constructible::value, "Parameter can't be used to construct a json::value"); - _array_data.reserve(arr.size()); - for (auto&& ele : arr) { - _array_data.emplace_back(std::move(ele)); - } + _array_data.assign( + std::make_move_iterator(arr.begin()), + std::make_move_iterator(arr.end())); } MEOJSON_INLINE const value& array::at(size_t pos) const @@ -1835,10 +1834,9 @@ namespace json typename MapType::value_type>::value, "Parameter can't be used to construct a " "object::raw_object::value_type"); - _object_data.reserve(map.size()); - for (auto&& ele : map) { - _object_data.emplace(std::move(ele)); - } + _object_data.insert( + std::make_move_iterator(map.begin()), + std::make_move_iterator(map.end())); } // ************************* diff --git a/3rdparty/include/penguin-stats-recognize/core.hpp b/3rdparty/include/penguin-stats-recognize/core.hpp index 449ec208a6..59ab79bca2 100644 --- a/3rdparty/include/penguin-stats-recognize/core.hpp +++ b/3rdparty/include/penguin-stats-recognize/core.hpp @@ -61,11 +61,11 @@ public: static Resource instance; return instance; } - void add(std::string key, std::any src) + void add(const std::string& key, const std::any& src) { if (!key.empty()) { - _resource[std::move(key)] = std::move(src); + _resource.insert_or_assign(key, src); } } template diff --git a/3rdparty/include/penguin-stats-recognize/recognize.hpp b/3rdparty/include/penguin-stats-recognize/recognize.hpp index 02a406d2fe..bd0327d908 100644 --- a/3rdparty/include/penguin-stats-recognize/recognize.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognize.hpp @@ -162,10 +162,10 @@ public: _templ_list.emplace_back(templ); } } - ItemTemplates(const std::string stage_code) + ItemTemplates(const std::string& stage_code, const std::string& difficulty = "NORMAL") { const auto& stage_drop = - resource.get("stage_index")[stage_code]["drops"]; + resource.get("stage_index")[stage_code][difficulty]["drops"]; const auto& item_templs = resource.get>("item_templs"); for (const auto& [_, itemId] : stage_drop.items()) diff --git a/3rdparty/include/penguin-stats-recognize/recognizer.hpp b/3rdparty/include/penguin-stats-recognize/recognizer.hpp index 3538fc2b7a..070664a2c2 100644 --- a/3rdparty/include/penguin-stats-recognize/recognizer.hpp +++ b/3rdparty/include/penguin-stats-recognize/recognizer.hpp @@ -18,25 +18,19 @@ #include "depot.hpp" #include "result.hpp" -static const std::string version = "4.1.1"; +static const std::string version = "4.2.3"; static const std::string opencv_version = CV_VERSION; cv::Mat decode(std::string JSarrayBuffer) { - std::vector buf(std::make_move_iterator(JSarrayBuffer.begin()), - std::make_move_iterator(JSarrayBuffer.end())); - return cv::imdecode(buf, cv::IMREAD_COLOR); -} - -cv::Mat decode(uint8_t* buffer, size_t size) -{ - std::vector buf(buffer, buffer + size); + std::vector buf(std::make_move_iterator(JSarrayBuffer.begin()), + std::make_move_iterator(JSarrayBuffer.end())); return cv::imdecode(buf, cv::IMREAD_COLOR); } void load_server(std::string server) { - penguin::server = std::move(server); + penguin::server = server; } void load_stage_index() // local @@ -44,14 +38,13 @@ void load_stage_index() // local dict stage_index; std::ifstream f("../resources/json/stage_index.json"); f >> stage_index; - f.close(); - penguin::resource.add("stage_index", std::move(stage_index)); + penguin::resource.add("stage_index", stage_index); } void wload_stage_index(std::string stage_index) // wasm { auto& resource = penguin::resource; - resource.add("stage_index", dict::parse(std::move(stage_index))); + resource.add("stage_index", dict::parse(stage_index)); } void load_hash_index() // local @@ -59,14 +52,13 @@ void load_hash_index() // local dict hash_index; std::ifstream f("../resources/json/hash_index.json"); f >> hash_index; - f.close(); - penguin::resource.add("hash_index", std::move(hash_index)); + penguin::resource.add("hash_index", hash_index); } void wload_hash_index(std::string hash_index) // wasm { auto& resource = penguin::resource; - resource.add("hash_index", dict::parse(std::move(hash_index))); + resource.add("hash_index", dict::parse(hash_index)); } void load_templs() // local @@ -77,9 +69,9 @@ void load_templs() // local { std::string itemId = templ.path().stem().string(); cv::Mat templimg = cv::imread(templ.path().string()); - item_templs[std::move(itemId)] = templimg; // cv::Mat is a shallow copy + item_templs.insert_or_assign(itemId, templimg); } - penguin::resource.add("item_templs", std::move(item_templs)); + penguin::resource.add("item_templs", item_templs); } void wload_templs(std::string itemId, std::string JSarrayBuffer) // wasm @@ -91,7 +83,7 @@ void wload_templs(std::string itemId, std::string JSarrayBuffer) // wasm } auto& item_templs = resource.get>("item_templs"); - item_templs[std::move(itemId)] = decode(std::move(JSarrayBuffer)); + item_templs.insert_or_assign(itemId, decode(std::move(JSarrayBuffer))); } const bool env_check() @@ -103,9 +95,7 @@ class Recognizer { public: Recognizer(std::string mode) - : _mode(std::move(mode)) - { - } + : _mode(mode) {} dict recognize(cv::Mat img, bool detail = false) { @@ -115,7 +105,7 @@ public: } std::string wrecognize(std::string JSarrayBuffer, bool detail, bool pretty_print) { - _wset_img(std::move(JSarrayBuffer)); + _wset_img(JSarrayBuffer); _recognize(); return _wget_report(detail, pretty_print); } diff --git a/3rdparty/include/penguin-stats-recognize/result.hpp b/3rdparty/include/penguin-stats-recognize/result.hpp index 769634fd32..0d9a639550 100644 --- a/3rdparty/include/penguin-stats-recognize/result.hpp +++ b/3rdparty/include/penguin-stats-recognize/result.hpp @@ -13,6 +13,12 @@ #include "core.hpp" #include "recognize.hpp" +#if defined(__GLIBCXX__) || defined(__GLIBCPP__) +#define Widget_container std::deque +#else +#define Widget_container std::vector +#endif + using dict = nlohmann::ordered_json; // extern void show_img(cv::Mat src); @@ -123,13 +129,13 @@ private: void _get_is_result() { auto& self = *this; - auto resultrect = cv::boundingRect(_img); - self._relate(resultrect.tl()); - if (resultrect.empty()) + auto result_rect = cv::boundingRect(_img); + self._relate(result_rect.tl()); + if (result_rect.empty()) { return; } - _img = _img(resultrect); + _img = _img(result_rect); auto result_img = _img; _hash = shash(result_img, ResizeFlags::RESIZE_W32_H8); std::string hash_std = @@ -146,6 +152,90 @@ private: } }; +class Widget_Stars : public Widget +{ +public: + const bool is_3stars() const { return _stars == 3; } + Widget_Stars() = default; + Widget_Stars(Widget* const parent_widget) + : Widget("stars", parent_widget) {} + Widget_Stars(const cv::Mat& img, Widget* const parent_widget = nullptr) + : Widget("stars", parent_widget) + { + set_img(img); + } + void set_img(const cv::Mat& img) + { + Widget::set_img(img); + if (_img.channels() == 3) + { + cv::cvtColor(_img, _img, cv::COLOR_BGR2GRAY); + cv::threshold(_img, _img, 127, 255, cv::THRESH_BINARY); + } + } + Widget_Stars& analyze() + { + if (!_img.empty()) + { + _get_is_3stars(); + } + if (_stars != 3) + { + push_exception(ERROR, ExcSubtypeFlags::EXC_FALSE); + } + return *this; + } + const dict report(bool debug = false) + { + dict rpt = dict::object(); + rpt.merge_patch(Widget::report(debug)); + if (!debug) + { + rpt["count"] = _stars; + } + else + { + rpt["count"] = _stars; + } + return rpt; + } + +private: + size_t _stars = 0; + void _get_is_3stars() + { + auto& self = *this; + auto star_img = _img; + auto sp_ = separate(star_img, DirectionFlags::RIGHT, 1); + auto laststar_range = separate(star_img, DirectionFlags::RIGHT, 1)[0]; + auto laststar = star_img(cv::Range(0, height), laststar_range); + auto star_rect = cv::boundingRect(laststar); + if (star_rect.empty()) + { + return; + } + auto sp = separate(star_img(cv::Rect(0, 0, width, height / 2)), DirectionFlags::LEFT); + for (auto it = sp.cbegin(); it != sp.cend();) + { + const auto& range = *it; + if (const auto length = range.end - range.start; + length < height * STAR_WIDTH_PROP) + { + it = sp.erase(it); + } + else + { + ++it; + } + } + star_rect.x = sp.front().start; + star_rect.width = sp.back().end - star_rect.x; + _img = star_img = star_img(star_rect); + self._relate(star_rect.tl()); + _stars = sp.size(); + } +}; + class Widget_Stage : public WidgetWithCandidate, int> { public: @@ -181,7 +271,7 @@ public: push_exception(ERROR, ExcSubtypeFlags::EXC_NOTFOUND); } else if (const auto& stage_index = resource.get("stage_index"); - stage_index[_stage_code()]["existence"] == false) + stage_index[_stage_code()][_difficulty]["existence"] == false) { push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } @@ -229,11 +319,17 @@ public: } return rpt; } + // for temporary workaround + void _set_difficulty(const std::string& difficulty) + { + _difficulty = difficulty; + } private: const int _CANDIDATES_COUNT = 5; bool _existance = false; - std::vector _stage_chrs; + std::string _difficulty = "NORMAL"; // for temporary workaround + Widget_container _stage_chrs; const std::string _stage_code() const { return _stage_code(_candidate_index); @@ -260,7 +356,7 @@ private: if (const auto& stage_index = resource.get("stage_index"); stage_index.contains(stage_code)) { - return (std::string)stage_index[stage_code]["stageId"]; + return (std::string)stage_index[stage_code][_difficulty]["stageId"]; } else { @@ -317,8 +413,8 @@ private: } void _get_candidates() { - auto comp = [](std::vector a, - std::vector b) { + auto comp = [](Widget_container a, + Widget_container b) { int dist_a = 0, dist_b = 0; for (const auto& chr : a) { @@ -331,8 +427,8 @@ private: return dist_a > dist_b; }; std::priority_queue< - std::vector, - std::vector>, + Widget_container, + std::vector>, decltype(comp)> q(comp); auto last_pop = _stage_chrs; @@ -359,36 +455,31 @@ private: } }; -class Widget_Stars : public Widget +class Widget_Difficulty : public Widget { public: - const bool is_3stars() const { return _stars == 3; } - Widget_Stars() = default; - Widget_Stars(Widget* const parent_widget) - : Widget("stars", parent_widget) {} - Widget_Stars(const cv::Mat& img, Widget* const parent_widget = nullptr) - : Widget("stars", parent_widget) + const std::string difficulty() const { return _difficulty; } + Widget_Difficulty() = default; + Widget_Difficulty(Widget* const parent_widget) + : Widget("difficulty", parent_widget) {} + Widget_Difficulty(const cv::Mat& img, Widget* const parent_widget = nullptr) + : Widget("difficulty", parent_widget) { set_img(img); } void set_img(const cv::Mat& img) { Widget::set_img(img); - if (_img.channels() == 3) - { - cv::cvtColor(_img, _img, cv::COLOR_BGR2GRAY); - cv::threshold(_img, _img, 127, 255, cv::THRESH_BINARY); - } } - Widget_Stars& analyze() + Widget_Difficulty& analyze() { if (!_img.empty()) { - _get_is_3stars(); + _get_difficulty(); } - if (_stars != 3) + if (_difficulty.empty()) { - push_exception(ERROR, ExcSubtypeFlags::EXC_FALSE); + push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } return *this; } @@ -398,48 +489,63 @@ public: rpt.merge_patch(Widget::report(debug)); if (!debug) { - rpt["count"] = _stars; + rpt["difficulty"] = _difficulty; } else { - rpt["count"] = _stars; + rpt["difficulty"] = _difficulty; } return rpt; } private: - int _stars = 0; - void _get_is_3stars() + std::string _difficulty; + void _get_difficulty() { - auto& self = *this; - auto star_img = _img; - auto sp_ = separate(star_img, DirectionFlags::RIGHT, 1); - auto laststar_range = separate(star_img, DirectionFlags::RIGHT, 1)[0]; - auto laststar = star_img(cv::Range(0, height), laststar_range); - auto starrect = cv::boundingRect(laststar); - if (starrect.empty()) + auto img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); + auto diff_rect = cv::boundingRect(img_bin); + if (diff_rect.empty()) { return; } - auto sp = separate(star_img(cv::Rect(0, 0, width, height / 2)), DirectionFlags::LEFT); - for (auto it = sp.cbegin(); it != sp.cend();) + _img = _img(diff_rect); + auto& self = *this; + self._relate(diff_rect.tl()); + + size_t diff_count = 0; + + if (!(height < width / 6)) { - const auto& range = *it; - if (auto length = range.end - range.start; - length < height * STAR_WIDTH_PROP) - { - it = sp.erase(it); - } - else - { - ++it; - } + img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); + int inspction_line = static_cast(0.8 * cv::boundingRect(img_bin).y); + int offset = img_bin.rows; + + img_bin = _img; + cv::cvtColor(img_bin, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); + auto diff_img = img_bin(cv::Rect(0, inspction_line, width, 1)); + diff_count = separate(diff_img, DirectionFlags::LEFT).size(); + + _img.adjustROI(static_cast(1.2 * offset), static_cast(1.2 * offset), 0, 0); + y = y - static_cast(1.2 * offset); + } + + switch (diff_count) + { + case 0: + case 2: + _difficulty = "NORMAL"; + break; + case 3: + _difficulty = "TOUGH"; + break; + default: + break; } - starrect.x = sp.front().start; - starrect.width = sp.back().end - starrect.x; - _img = star_img = star_img(starrect); - self._relate(starrect.tl()); - _stars = static_cast(sp.size()); } }; @@ -627,13 +733,13 @@ private: self.y++; } } - auto droptextrect = cv::boundingRect(droptextimg); - if (droptextrect.empty()) + auto droptext_rect = cv::boundingRect(droptextimg); + if (droptext_rect.empty()) { return; } - droptextimg = droptextimg(droptextrect); - self._relate(droptextrect.tl()); + droptextimg = droptextimg(droptext_rect); + self._relate(droptext_rect.tl()); } }; @@ -719,9 +825,10 @@ public: Widget_DropArea() = default; Widget_DropArea(Widget* const parent_widget) : Widget("dropArea", parent_widget) {} - Widget_DropArea(const cv::Mat& img, [[maybe_unused]] const std::string& stage, Widget* const parent_widget = nullptr) + Widget_DropArea(const cv::Mat& img, Widget* const parent_widget = nullptr) : Widget(img, "dropArea", parent_widget) {} - Widget_DropArea& analyze(const std::string& stage) + Widget_DropArea& analyze(const std::string& stage, + const std::string& difficulty) { if (!_img.empty()) { @@ -742,7 +849,7 @@ public: widget_label = "droptypes"; push_exception(ERROR, ExcSubtypeFlags::EXC_ILLEGAL); } - _get_drops(stage); + _get_drops(stage, difficulty); } else { @@ -763,12 +870,12 @@ public: rpt["drops"] = dict::array(); size_t droptypes_count = _droptype_list.size(); // will move in "for" in C++20 - for (size_t i = 0; i < droptypes_count; i++) + for (int i = 0; i < droptypes_count; i++) { rpt["dropTypes"].push_back(_droptype_list[i].report(debug)); } size_t drops_count = _drop_list.size(); // will move in "for" in C++20 - for (size_t i = 0; i < drops_count; i++) + for (int i = 0; i < drops_count; i++) { rpt["drops"].push_back( {{"dropType", Droptype2Str[_drop_list[i].droptype]}}); @@ -781,7 +888,7 @@ public: private: dict _drops_data; std::vector _drop_list; - std::vector _droptype_list; + Widget_container _droptype_list; auto _get_separate() { cv::Mat img_bin = _img; @@ -818,7 +925,8 @@ private: for (auto it = sp.cbegin(); it != sp.cend();) { const auto& range = *it; - if (auto length = range.end - range.start; length < item_diameter) + if (const auto length = range.end - range.start; + length < item_diameter) { it = sp.erase(it); } @@ -858,8 +966,8 @@ private: } void _next_droptype_candidate() { - auto comp = [](std::vector a, - std::vector b) { + auto comp = [](Widget_container a, + Widget_container b) { int dist_a = 0, dist_b = 0; for (const auto& type : a) { @@ -872,8 +980,8 @@ private: return dist_a > dist_b; }; std::priority_queue< - std::vector, - std::vector>, + Widget_container, + std::vector>, decltype(comp)> q(comp); auto last_pop = _droptype_list; @@ -887,7 +995,7 @@ private: _droptype_list = q.top(); } - void _get_drops(std::string stage) + void _get_drops(const std::string& stage, [[maybe_unused]] const std::string& difficulty) { if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) { @@ -1111,7 +1219,7 @@ private: cv::Range(static_cast(bv.y + bv.height * DROP_AREA_Y_PROP), bv.y + bv.height), cv::Range(static_cast(bv.x + bv.height * DROP_AREA_X_PROP), width)); _drop_area.set_img(drop_area_img); - _drop_area.analyze(_stage.stage_code()); + _drop_area.analyze(_stage.stage_code(), "NORMAL"); } }; @@ -1127,6 +1235,8 @@ public: _get_result_label(); _get_stars(); _get_stage(); + _get_difficulty(); + _stage._set_difficulty(_difficutly.difficulty()); _get_drop_area(); return *this; } @@ -1146,6 +1256,7 @@ public: { rpt["resultLabel"] = _result_label.report()["isResult"]; rpt["stage"] = _stage.report(); + rpt["difficulty"] = _difficutly.report()["difficulty"]; rpt["stars"] = _stars.report()["count"]; rpt["dropArea"] = _drop_area.report(); } @@ -1153,6 +1264,7 @@ public: { rpt["resultLabel"] = _result_label.report(debug); rpt["stage"] = _stage.report(debug); + rpt["difficulty"] = _difficutly.report(debug); rpt["stars"] = _stars.report(debug); rpt["dropArea"] = _drop_area.report(debug); } @@ -1161,8 +1273,9 @@ public: private: Widget _baseline_v {this}; - Widget_Stage _stage {this}; Widget_Stars _stars {this}; + Widget_Stage _stage {this}; + Widget_Difficulty _difficutly {this}; Widget_ResultLabel _result_label {this}; Widget_DropArea _drop_area {this}; @@ -1186,6 +1299,10 @@ private: { cv::Mat img_temp = img_bin(cv::Range(0, img_bin.rows), range); auto sp2 = separate(img_temp, DirectionFlags::TOP); + if (sp2.size() < 2) + { + break; + } int first_height = sp2.front().end - sp2.front().start; int last_height = sp2.back().end - sp2.back().start; if (abs(img_temp.cols - first_height) <= 1 && @@ -1302,8 +1419,9 @@ private: return; } const auto& bv = _baseline_v; - auto result_img = _img(cv::Rect(bv.x + bv.width, bv.y, - static_cast(1.6 * bv.height), bv.height)); + int left_margin = bv.x + bv.width; + auto result_img = _img(cv::Range(bv.y, bv.y + bv.height / 2), + cv::Range(left_margin, static_cast(left_margin + 1.5 * bv.height))); cv::Mat img_bin; cv::cvtColor(result_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1319,8 +1437,9 @@ private: return; } const auto& bv = _baseline_v; - auto star_img = _img(cv::Rect(bv.x + bv.width, bv.y, - static_cast(1.2 * bv.height), bv.height)); + int left_margin = bv.x + bv.width; + auto star_img = _img(cv::Range(bv.y + bv.height / 2, bv.y + bv.height), + cv::Range(left_margin, static_cast(left_margin + 1.2 * bv.height))); cv::Mat img_bin; cv::cvtColor(star_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 127, 255, cv::THRESH_BINARY); @@ -1336,11 +1455,10 @@ private: return; } const auto& bv = _baseline_v; - auto stage_img = _img(cv::Rect( - static_cast(bv.x + bv.width + 0.43 * bv.height), - 0, - static_cast(1.6 * bv.height), - bv.y)); + int left_margin = bv.x + bv.width; + auto stage_img = _img(cv::Range(0, bv.y), + cv::Range(static_cast(left_margin + 0.43 * bv.height), + static_cast(left_margin + 1.5 * bv.height))); cv::Mat img_bin; cv::cvtColor(stage_img, img_bin, cv::COLOR_BGR2GRAY); cv::threshold(img_bin, img_bin, 200, 255, cv::THRESH_BINARY); @@ -1349,6 +1467,24 @@ private: _stage.set_img(stage_img); _stage.analyze(); } + void _get_difficulty() + { + if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) + { + return; + } + const auto& bv = _baseline_v; + int left_margin = bv.x + bv.width; + auto diff_img = _img(cv::Range(0, bv.y), + cv::Range(left_margin, static_cast(left_margin + 0.43 * bv.height))); + cv::Mat img_bin; + cv::cvtColor(diff_img, img_bin, cv::COLOR_BGR2GRAY); + cv::threshold(img_bin, img_bin, 64, 255, cv::THRESH_BINARY); + diff_img = diff_img(separate(img_bin, DirectionFlags::TOP, 1)[0], + cv::Range(0, img_bin.cols)); + _difficutly.set_img(diff_img); + _difficutly.analyze(); + } void _get_drop_area() { if (_status == StatusFlags::HAS_ERROR || _status == StatusFlags::ERROR) @@ -1366,7 +1502,7 @@ private: cv::Range(top_margin + static_cast(bv.height * DROP_AREA_Y_PROP), top_margin + bv.height), cv::Range(bv.x + bv.width, width)); _drop_area.set_img(drop_area_img); - _drop_area.analyze(_stage.stage_code()); + _drop_area.analyze(_stage.stage_code(), _difficutly.difficulty()); } }; } // namespace penguin diff --git a/CMakeLists.txt b/CMakeLists.txt index 901c4cec36..ea22e04514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,6 @@ set(CMAKE_CXX_STANDARD 17) add_library(MeoAssistant SHARED ${SRC}) find_library(PaddleOCR_LIB NAMES ppocr PATHS 3rdparty/lib) -find_library(Penguin_LIB NAMES penguin-stats-recognize PATHS 3rdparty/lib) if (WIN32) find_library(OpenCV NAMES opencv_world453 PATHS 3rdparty/lib) @@ -33,7 +32,7 @@ else () find_package(ZLIB REQUIRED) endif () -target_link_libraries(MeoAssistant ${OpenCV} ${PaddleOCR_LIB} ${Penguin_LIB} ${ZLIB}) +target_link_libraries(MeoAssistant ${OpenCV} ${PaddleOCR_LIB} ${ZLIB}) if (BUILD_JNI) find_package(JNI REQUIRED) diff --git a/README.md b/README.md index 7a9335c55a..b4e655280a 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ MAA 的意思是 MAA Assistant Arknights - 图像识别库:[opencv](https://github.com/opencv/opencv.git) - ~~文字识别库:[chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~ - 文字识别库:[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) -- 关卡掉落识别:[企鹅物流识别](https://github.com/KumoSiunaus/penguin-stats-recognize-v3) +- 关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer) - 地图格子识别:[Arknights-Tile-Pos](https://github.com/yuanyan3060/Arknights-Tile-Pos) - C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) @@ -100,19 +100,15 @@ MAA 的意思是 MAA Assistant Arknights ### 贡献/参与者 -感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! -这里仅列出对 MAA 提供了巨大帮助的大佬们 (*´▽`)ノノ +感谢所有参与到开发/测试中的朋友们,是大家的帮助让 MAA 越来越好! (*´▽`)ノノ -- 感谢 [tcyh035](https://github.com/tcyh035) 帮忙设计重构 WPF 图形界面 -- 感谢 [LoveLoliii](https://github.com/LoveLoliii) 提供公开招募算法及数据 -- 感谢 [dantmnf](https://github.com/dantmnf) 提供各种 adb 及其他逻辑处理思路 -- 感谢 [泰迪](https://github.com/yuanyan3060) 提供的地图格子识别算法及开源库 +[![Contributors](https://contributors-img.web.app/image?repo=MaaAssistantArknights/MaaAssistantArknights)](https://github.com/MaaAssistantArknights/MaaAssistantArknights/graphs/contributors) ## 开发相关 ### Windows -直接使用 Visual Studio 2019 或更高版本打开 `MeoAssistantArknights.sln` 即可,所有环境都是配置好的 +直接使用 Visual Studio 2022 ~~或更高版本~~ 打开 `MeoAssistantArknights.sln` 即可,所有环境都是配置好的 ### Linux | macOS diff --git a/appveyor.yml b/appveyor.yml index c3e4a5f2a2..89b811f78a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,5 @@ -version: 0.8.{build} +version: 0.9.{build} +image: Visual Studio 2022 configuration: - RelWithDebInfo - Release @@ -20,4 +21,4 @@ notifications: on_build_failure: true on_build_status_changed: false on_failure: -- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) \ No newline at end of file +- ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts new file mode 100644 index 0000000000..cc3ed42d34 --- /dev/null +++ b/docs/.vuepress/config.ts @@ -0,0 +1,24 @@ +const { defaultTheme } = require('@vuepress/theme-default') +const { searchPlugin } = require('@vuepress/plugin-search') + +module.exports = { + lang: 'zh-CN', + title: 'MaaAssistantArknights', + description: 'MAA', + theme: defaultTheme({ + repo: 'MaaAssistantArknights/MaaAssistantArknights', + sidebarDepth: 5, + docsBranch: 'lr', + docsDir: 'docs', + // editLinkPattern: ':repo/edit/:branch/:path' + navbar: [{ text: '必读', link: '/guide.html' }], + }), + markdown: { + extractHeaders: { + level: [2, 3, 4, 5], + }, + }, + plugins: [ + searchPlugin({ }) + ], +} diff --git a/docs/Linux编译教程.md b/docs/Linux编译教程.md index 3a81d76218..a10863e56f 100644 --- a/docs/Linux编译教程.md +++ b/docs/Linux编译教程.md @@ -17,7 +17,7 @@ 1. 使用我魔改了接口的版本:https://github.com/MistEO/PaddleOCR 2. 参考 [这个教程](https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.3/deploy/cpp_infer#readme) 3. 额外依赖的 `PaddlePaddle` 直接 [下载](https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html) 即可。其中 `avx` 和 `mkl` 两者都可以提高计算效率,建议选择。但如果 CPU 不支持,则只能选择 `noavx` 和 `openblas` 的兼容性版本(一般稍微新一点的 CPU 都支持两者了,AMD 的也没关系)。 `cuda` 和 `cudnn` 是 GPU 加速库,在 `PaddleOCR` 上可能比较麻烦,我没折腾过,有兴趣可以尝试下 -4. 若 `cmake` 找不到 `Opencv` ,可尝试修改 [Opencv 的查找路径](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/CMakeLists.txt#L49) +4. 若 `cmake` 找不到 `Opencv` ,可尝试修改 [Opencv 的查找路径](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/CMakeLists.txt#L49) 5. 若您使用 `MKL` 版本,可修改 [MKL 宏定义](https://github.com/MistEO/PaddleOCR/blob/release/2.3/deploy/cpp_infer/include/ocr_defines.h#L9) 为 `true` 以提高性能 编译选项参考 @@ -27,13 +27,9 @@ cmake ../ -DPADDLE_LIB=/your_path/paddle_inference/ -DOpenCV_DIR=/your_path_to_o # 若设备不支持 MKL, 可再额外添加 -DWITH_MKL=OFF 选项,并下载对应的 PaddlePaddle 预测库版本 ``` -### penguin-stats-recognize-v3 - -使用我魔改了接口的版本:https://github.com/MistEO/penguin-stats-recognize-v3 - ### zlib -Ubuntu 下: +Ubuntu 下: ```bash sudo apt update && sudo apt install zlib1g-dev diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..0b68a2aba8 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,24 @@ +--- +home: true + +actions: + - text: Link Start! + link: /readme.html + type: primary + +# features: +# - title: 多设备兼容 +# details: 手机真机、手机虚拟机、云手机、模拟器全部支持。免ROOT,适配异形屏。 +# - title: 完全托管 +# details: 定时启动、自动热更新、多账号管理、原创QQ通知服务,助你远离明日方舟。 +# - title: 高性能 +# details: 极致耗时优化,快过手操。每日任务速通、源石锭速刷冠军。 +# - title: 高效率 +# details: 根据实际基建情况,穷举计算最优基建排班,不套用固定组合。 +# - title: 高自定义 +# details: 多账号独立设置、信用商品优先级、抢登次数设置、自动吃到期理智药... +# - title: 允许商用 +# details: 遵循GPL3.0协议,不限商用。修改代码后商用必须开源。 + + +--- diff --git a/docs/package.json b/docs/package.json new file mode 100644 index 0000000000..95db32f446 --- /dev/null +++ b/docs/package.json @@ -0,0 +1,20 @@ +{ + "name": "maa-docs", + "version": "1.0.0", + "description": "manual for MaaAssistantArknights", + "main": "index.js", + "repository": "https://github.com/MaaAssistantArknights/MaaAssistantArknights", + "author": "bakashigure ", + "license": "AGPL-3.0", + "dependencies": { + "@vuepress/plugin-docsearch": "^2.0.0-beta.43", + "@vuepress/plugin-search": "^2.0.0-beta.43" + }, + "devDependencies": { + "vuepress": "^2.0.0-beta.43" + }, + "scripts": { + "dev": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress dev .", + "build": ": > readme.md | cat 详细介绍.md 常见问题.md 模拟器支持.md 回调消息协议.md >> readme.md | vuepress build ." + } +} diff --git a/docs/readme.md b/docs/readme.md new file mode 100644 index 0000000000..dd113830ab --- /dev/null +++ b/docs/readme.md @@ -0,0 +1,600 @@ +# MAA使用说明 + +## 详细介绍 + +### 刷理智 + +- 若选项中没有你需要的关卡,请手动进入游戏 **蓝色开始按钮** 界面,并选择 `当前关卡`。 +- 主界面上的 `吃理智`、`吃石头`、`指定次数` 三个选项为短路开关,即三个选项中的任一条件达到,均会视为任务完成,停止刷理智。 + - 举例1:设置 `吃理智药` : `999`、`吃石头` : `10`、`指定次数` : `1`。则在刷完 **一次** 后,由于满足了 `指定次数`:`1` 的条件,视为任务完成,停止刷理智。 + - 举例2:不勾选 `吃理智药`、不勾选 `吃石头`,设置 `指定次数` : `100`。则在当前可用理智全部刷完后(可能只刷了几次),由于满足了 `不吃理智药`、`不吃石头` 的条件,视为任务完成,停止刷理智。 +- 刷完自动上传 [企鹅物流数据统计](https://penguin-stats.cn/) +- 可自定义企鹅物流 ID +- 识别并显示材料掉落 +- 掉线后会重连,继续刷上次的图 +- 凌晨 4 点刷新后也会重连,继续刷上次的图 +- 支持剿灭模式 +- 支持打完升级了的情况 +- 支持代理失败的情况,会自动放弃本次行动 + +### 基建换班 + +#### 换班策略 + +自动计算并选择 **单设施内的最优解**,支持所有通用类技能和特殊技能组合;支持识别经验书、赤金、原石碎片、芯片,分别使用不同的干员组合! + +#### 宿舍入驻心情阈值 + +识别心情进度条的百分比;心情小于该阈值的干员,不会再去上班,直接进驻宿舍。 + +#### 特殊说明 + +- 基建换班目前均为单设施最优解,但非跨设施的全局最优解。例如:`巫恋+龙舌兰`、`红云+稀音` 等这类单设施内的组合,都是可以正常识别并使用的;`迷迭香`、`红松骑士团` 这类多个设施间联动的体系,暂不支持使用。 +- 若 `无人机用途` 选择 `贸易站-龙门币` ,则将额外识别是否有 `巫恋组`,并优先为其使用。 +- 会客室仅缺一个线索时,会选择对应流派的干员;否则会选择通用干员。 +- 会客室仅当自有线索满时,才会送出线索,并且只送三个。有需要的同学可自行修改 `resource/tasks.json` 中 `SelectClue` - `maxTimes` 字段,自定义送出个数。 +- 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 +- 部分异格干员会在基建内产生冲突,请留意辅助界面上是否有提示 “干员冲突”,若有请手动再查看下基建换班情况(可能会有某个设施没人) + +### 信用商店随缘买 + +从左到右依次买,但不会买 `碳` 和 `家具零件` 。有需要的同学可自行修改 `resource/tasks.json` 中 `CreditShop-NotToBuy` - `text` 字段,自定义不买的物品。后续版本会尝试开放界面选项 + +### 公开招募识别 + +- 自动公招和公招识别是两个独立的功能! +- 自动公招支持使用 `加急许可`,全自动连续公招!请进入设置中选择~ +- 出 5、6 星都会有弹窗提示 + +### 自动肉鸽功能 + +- 设置中的三个选项 + - 尽可能往后打:用于刷蜡烛 + - 刷源石锭投资,第一层商店后直接退出:刷源石锭最高效的模式,建议手动选择 `古堡观光` (简单)模式 + - 刷源石锭投资,投资后退出:兼顾刷蜡烛和刷源石锭投资的模式 +- 肉鸽使用干员是可以自定义的,默认的干员是作者根据自己的练度随手写的,如果经常作战失败,建议按你自己的练度修改一下,请参考 [肉鸽自定义选人方法](https://github.com/MistEO/MeoAssistantArknights/issues/167)。后期将优化这里的选人逻辑 +- 支持掉线重连、支持凌晨 4 点更新后继续回去刷 +- 如果软件出现 bug 卡住了,会自动放弃当次探索并重试。但如果经常在某个地方卡住然后放弃、严重影响效率的,欢迎提个 issue 反馈一下~ + + +### 其他乱七八糟的说明 + +- 主界面上要执行的任务,是可以拖动改变顺序的。同样设置中基建换班的顺序,也是可以拖动改变的。 +- 新的活动关卡刚上线的时候可能无法正常识别,一般一两天内软件会自动 OTA 更新资源,更新后即可正常识别。 +- 活动关卡掉落识别到的 `未知材料`,一般就是活动商店的票据。 +- `resource/config.json` 中有一些自定义选项,可以尝试根据自己的需要进行修改。 +- 所有点击操作,都是点击按钮内随机位置,并模拟泊松分布(按钮偏中间位置点的概率大,越往旁边点到的概率越小)。 +- 底层算法纯 C++ 开发,并设计了多重的缓存技术,最大限度降低 CPU 和内存占用。 +- 软件支持自动更新✿✿ヽ(°▽°)ノ✿ 推荐非杠精的同学使用测试版,一般来说更新快且 bug 少(什么 MIUI (╯‵□′)╯︵┻━┻ +- 如果新版本自动下载失败,可手动下载后,直接把压缩包放到同目录下,会自动更新的。 + +### 我是国际服玩家,可以使用么? + +可以!但是目前只支持少部分功能,请参考 [这个链接](../resource/international/) + +### I'm an international server player, could I use it? + +Yes, but there are few supported features, please refer to [this link](../resource/international/) +## 模拟器支持 + +### 蓝叠模拟器 + +完美支持。需要在模拟器 `设置` - `引擎设置` 中打开 `允许ADB连接` + +### 蓝叠模拟器国际版(推荐使用) + +完美支持。需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥` + +### 蓝叠模拟器 Hyper-V 版本 + +支持 + +1. 在模拟器 `设定` - `进阶` 中打开 `Android调试桥` +2. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +3. 在软件 `设置` - `连接设置` 中填写蓝叠安装目录下 `bluestacks.conf` 文件的完整路径 + +### 夜神模拟器 + +完美支持 + +### 夜神模拟器 安卓 9 + +完美支持 + +### MuMu 模拟器 + +支持。但是可能会 + +- 一直连接出错:暂时不知道是什么原因,可尝试使用自定义连接 +- 卡在主界面无法识别,过一会提示任务出错:和 MuMu 的渲染方式有关,推荐换模拟器( + +### MuMu 手游助手(星云引擎) + +不支持。没开放 adb 端口 + +### MuMu 模拟器 安卓 9 + +不支持。adb 截图出来是黑的,不知道怎么整 + +### 雷电模拟器 + +勉强支持。雷电总有莫名其妙的问题,可以试试看,不保证能用( + +### 逍遥模拟器 + +支持。但可能有莫名其妙的识别错误问题 + +### 腾讯手游助手 + +不支持。没开放 adb 端口 + +### Win11 WSA + +不支持。WSA 目前没有实现 AOSP screencap 需要的接口,无法进行截图。等微软支持后会尝试适配 + +### AVD + +支持。 + +### 自定义连接 + +1. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +2. 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) + +**注意 :** 若是使用手机,在非 `16:9` 分辨率下,部分功能不稳定(但也凑合能用),尤其是基建,几乎是不可用状态,正在进一步适配中。推荐使用 `16:9` 分辨率,经过的测试验证最多,也最稳定。 +## 常见问题 + +### 软件一打开就闪退 + +- 可能性 1: 运行库问题。 + 请尝试安装 [Visual C++ Redistributable](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-160#visual-studio-2015-2017-2019-and-2022)、[.NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48) 后重新运行本软件。 +- 可能性 2: CPU 指令集不支持。 + 项目使用 `PaddleOCR` 对游戏部分界面进行识别。`PaddleOCR` 用到了较新发布的 CPU 才支持的 `AVX` 指令集,而一些较老的 CPU 可能并不支持该指令集。 + 您可以尝试下载 [NoAVX](../3rdparty/ppocr_noavx.zip) 版本的 `PaddleOCR`, 解压后替换本软件中同名的文件。这是对于使用不支持 `AVX` 指令集的 CPU 的用户的性能降低的替代方案,如非必要,请不要使用。 + (具体可以下载 [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html),查看“指令集”中有无 `AVX` 这一项来判断) +- 若上述均没有效果,请提 issue。 + +### 软件可以正常启动,但一点击开始运行就闪退 + +设置中的`bluestacks.conf`, 是给 [蓝叠模拟器 Hyper-V 版本](https://github.com/MistEO/MeoAssistantArknights/blob/master/docs/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%94%AF%E6%8C%81.md#%E8%93%9D%E5%8F%A0%E6%A8%A1%E6%8B%9F%E5%99%A8-hyper-v-%E7%89%88%E6%9C%AC) 使用的,若非该版本,请不要填写该项。如果确定不是这个问题,请再提 issue ~ + +### 连接错误/捕获模拟器窗口错误 + +提示 : 请根据 [使用说明](../README.md#使用说明) 确定您的模拟器及打开方式正确 + +- 方法 1: 使用 [自定义连接](#自定义连接) 的方式连接模拟器 +- 方法 2: 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit +- 方法 3: _根本解决方法_ 编辑 `resource/config.json`, 修改(最好是新增)模拟器窗口句柄名,并修改对应的 adb 设置。若您修改后可以提 PR 给我,我会感激不尽的_(:з」∠)_ + +### 识别错误/任务开始后一直不动、没有反应 + +提示 : 依次进行,若问题解决,则无需往下 + +1. 请根据 [模拟器支持情况](模拟器支持.md) 确定您的模拟器是受支持的 +2. 修改模拟器分辨率设置,`320 dpi` +3. 修改模拟器分辨率设置,横屏 `1280 * 720` 分辨率 +4. 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit ( 请注意蓝叠需要在模拟器设置里开启 adb ) +5. 若仍有问题,请提 issue + +### 自定义连接 + +- 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 +- 进入软件 `设置` - `连接设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) + +### 环境变量中已有 adb, 可以不再下载一份么? + +可以!请手动修改 `resource\config.json` - `Custom` - `adb` - `path` 为 `adb.exe`, 或其他 adb 的路径 +## 回调消息协议 + +### 回调函数原型 + +```c++ +typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom_arg); +``` + +### 参数总览 + +- `int msg` + 消息类型 + + ```c++ + enum class AsstMsg + { + /* Global Info */ + InternalError = 0, // 内部错误 + InitFailed, // 初始化失败 + ConnectionError, // 连接相关错误 + AllTasksCompleted, // 全部任务完成 + /* TaskChain Info */ + TaskChainError = 10000, // 任务链执行/识别错误 + TaskChainStart, // 任务链开始 + TaskChainCompleted, // 任务链完成 + TaskChainExtraInfo, // 任务链额外信息 + /* SubTask Info */ + SubTaskError = 20000, // 原子任务执行/识别错误 + SubTaskStart, // 原子任务开始 + SubTaskCompleted, // 原子任务完成 + SubTaskExtraInfo // 原子任务额外信息 + }; + ``` + +- `const char* details` + 消息详情,json 字符串,详见 [字段解释](#字段解释) +- `void* custom_arg` + 调用方自定义参数,会原样传出 `AsstCreateEx` 接口中的 `custom_arg` 参数,C 系语言可利用该参数传出 `this` 指针 + +### 字段解释 + +#### InternalError + +Todo + +#### InitFailed + +```jsonc +{ + "what": string, // 错误类型 + "details": object, // 错误详情 +} +``` + +#### ConnectionError + +Todo + +#### AllTasksCompleted + +```jsonc +{ + "taskchain": string, // 最后的任务链 + "pre_taskchain": string // 上一个任务链 +} +``` + +##### 常见 `taskchain` 字段 + +- `StartUp` + 开始唤醒 +- `Fight` + 刷理智 +- `Mall` + 信用点及购物 +- `Recruit` + 自动公招 +- `RecruitCalc` + 公招识别 +- `Infrast` + 基建换班 +- `Roguelike` + 无限刷肉鸽 +- `Debug` + 调试 + +#### TaskChain 相关消息 + +```jsonc +{ + "taskchain": string, // 当前的任务链 + "pre_taskchain": string // 上一个任务链 +} +``` + +#### TaskChainExtraInfo + +Todo + +#### SubTask 相关消息 + +```jsonc +{ + "subtask": string, // 子任务名 + "class": string, // 子任务符号名 + "taskchain": string, // 当前任务链 + "details": object, // 详情 +} +``` + +##### 常见 `subtask` 字段 + +- `ProcessTask` + + ```jsonc + // 对应的 details 字段举例 + { + "task": "StartButton2", // 任务名 + "action": 512, + "exec_times": 1, // 已执行次数 + "max_times": 999, // 最大执行次数 + "algorithm": 0 + } + ``` + +- Todo 其他 + +###### 常见 `task` 字段 + +- `StartButton2` + 开始战斗 +- `MedicineConfirm` + 使用理智药 +- `StoneConfirm` + 碎石 +- `RecruitRefreshConfirm` + 公招刷新标签 +- `RecruitConfirm` + 公招确认招募 +- `RecruitNowConfirm` + 公招使用加急许可 +- `ReportToPenguinStats` + 汇报到企鹅数据统计 +- `InfrastDormDoubleConfirmButton` + 基建宿舍的二次确认按钮,仅当干员冲突时才会有,请提示用户 +- `Roguelike1Start` + 肉鸽开始探索 +- `Roguelike1StageTraderInvestConfirm` + 肉鸽投资了源石锭 +- `Roguelike1StageTraderInvestSystemFull` + 肉鸽投资达到了游戏上限 +- `Roguelike1ExitThenAbandon` + 肉鸽放弃了本次探索 +- `Roguelike1MissionCompletedFlag` + 肉鸽战斗完成 +- `Roguelike1MissionFailedFlag` + 肉鸽战斗失败 +- `Roguelike1StageSafeHouseEnter` + 肉鸽关卡:诡异行商 +- `Roguelike1StageSafeHouseEnter` + 肉鸽关卡:安全的角落 +- `Roguelike1StageEncounterEnter` + 肉鸽关卡:不期而遇/古堡馈赠 +- `Roguelike1StageCambatDpsEnter` + 肉鸽关卡:普通作战 +- `Roguelike1StageEmergencyDps` + 肉鸽关卡:紧急作战 +- `Roguelike1StageDreadfulFoe` + 肉鸽关卡:险路恶敌 +- Todo 其他 + +#### SubTaskExtraInfo + +```jsonc +{ + "taskchain": string, // 当前任务链 + "class": string, // 子任务类型 + "what": string, // 信息类型 + "details": object, // 信息详情 +} +``` + +##### 常见 `what` 及 `details` 字段 + +- `StageDrops` + 关卡材料掉落信息 + + ```jsonc + // 对应的 details 字段举例 + { + "exceptions": [], + "resultLabel": true, + "drops": [ // 本次识别到的掉落材料 + { + "dropType": "NORMAL_DROP", + "itemId": "3301", + "quantity": 2, + "itemName": "技巧概要·卷1" + }, + { + "dropType": "NORMAL_DROP", + "itemId": "3302", + "quantity": 1, + "itemName": "技巧概要·卷2" + }, + { + "dropType": "NORMAL_DROP", + "itemId": "3303", + "quantity": 2, + "itemName": "技巧概要·卷3" + } + ], + "dropTypes": [ + { + "dropTypes": "LMB" + }, + { + "dropTypes": "NORMAL_DROP" + } + ], + "stage": { // 关卡信息 + "stageCode": "CA-5", + "stageId": "wk_fly_5" + }, + "stars": 3, // 行动结束星级 + "fingerprint": "e464bafaa3f92877bbc4fb20209e4169ae49d587499c8d2e72026b96356c591f6a17477a5b345518a00b23be78252e0825070585d33f2109390807672c252a0b", + "md5": "b40ea51ec7802afa2e86951bffbbc21f", + "cost": 6.0624, + "stats": [ // 本次执行期间总的材料掉落 + { + "itemId": "3301", + "itemName": "技巧概要·卷1", + "quantity": 4 + }, + { + "itemId": "3302", + "itemName": "技巧概要·卷2", + "quantity": 3 + }, + { + "itemId": "3303", + "itemName": "技巧概要·卷3", + "quantity": 4 + } + ] + } + ``` + +- `RecruitTagsDetected` + 公招识别到了 Tags + + ```jsonc + // 对应的 details 字段举例 + { + "tags": [ + "费用回复", + "防护", + "先锋干员", + "辅助干员", + "近战位" + ] + } + ``` + +- `RecruitSpecialTag` + 公招识别到了特殊 Tag + + ```jsonc + // 对应的 details 字段举例 + { + "tag": "高级资深干员" + } + ``` + +- `RecruitResult` + 公招识别结果 + + ```jsonc + // 对应的 details 字段举例 + { + "level": 4, // 总的星级 + "result": [ + { + "tags": [ + "削弱" + ], + "level": 4, // 这组 tags 的星级 + "opers": [ + { + "name": "初雪", + "level": 5 // 干员星级 + }, + { + "name": "陨星", + "level": 5 + }, + { + "name": "槐琥", + "level": 5 + }, + { + "name": "夜烟", + "level": 4 + }, + { + "name": "流星", + "level": 4 + } + ] + }, + { + "tags": [ + "减速", + "术师干员" + ], + "level": 4, + "opers": [ + { + "name": "夜魔", + "level": 5 + }, + { + "name": "格雷伊", + "level": 4 + } + ] + }, + { + "tags": [ + "削弱", + "术师干员" + ], + "level": 4, + "opers": [ + { + "name": "夜烟", + "level": 4 + } + ] + } + ] + } + ``` + +- `RecruitTagsSelected` + 公招选择了 Tags + + ```jsonc + // 对应的 details 字段举例 + { + "tags": [ + "减速", + "术师干员" + ] + } + ``` + +- `EnterFacility` + 基建进入了设施 + + ```jsonc + // 对应的 details 字段举例 + { + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `NotEnoughStaff` + 基建可用干员不足 + + ```jsonc + // 对应的 details 字段举例 + { + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `ProductOfFacility` + 基建产物 + + ```jsonc + // 对应的 details 字段举例 + { + "product": "Money", // 产物名 + "facility": "Mfg", // 设施名 + "index": 0 // 设施序号 + } + ``` + +- `StageInfo` + 自动作战关卡信息 + + ```jsonc + // 对应的 details 字段举例 + { + "name": string // 关卡名 + } + ``` + +- `StageInfoError` + 自动作战关卡识别错误 + +- `PenguinId` + 企鹅物流 ID + + ```jsonc + // 对应的 details 字段举例 + { + "id": string + } + ``` + diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 0000000000..cc8d545d3b --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,1657 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.5.2.tgz#ec0178e07b44fd74a057728ac157291b26cecf37" + integrity sha512-DY0bhyczFSS1b/CqJlTE/nQRtnTAHl6IemIkBy0nEWnhDzRDdtdx4p5Uuk3vwAFxwEEgi1WqKwgSSMx6DpNL4A== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" + +"@algolia/autocomplete-preset-algolia@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.2.tgz#36c5638cc6dba6ea46a86e5a0314637ca40a77ca" + integrity sha512-3MRYnYQFJyovANzSX2CToS6/5cfVjbLLqFsZTKcvF3abhQzxbqwwaMBlJtt620uBUOeMzhdfasKhCc40+RHiZw== + dependencies: + "@algolia/autocomplete-shared" "1.5.2" + +"@algolia/autocomplete-shared@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.2.tgz#e157f9ad624ab8fd940ff28bd2094cdf199cdd79" + integrity sha512-ylQAYv5H0YKMfHgVWX0j0NmL8XBcAeeeVQUmppnnMtzDbDnca6CzhKj3Q8eF9cHCgcdTDdb5K+3aKyGWA0obug== + +"@algolia/cache-browser-local-storage@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.13.0.tgz#f8aa4fe31104b19d616ea392f9ed5c2ea847d964" + integrity sha512-nj1vHRZauTqP/bluwkRIgEADEimqojJgoTRCel5f6q8WCa9Y8QeI4bpDQP28FoeKnDRYa3J5CauDlN466jqRhg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/cache-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.13.0.tgz#27b83fd3939d08d72261b36a07eeafc4cb4d2113" + integrity sha512-f9mdZjskCui/dA/fA/5a+6hZ7xnHaaZI5tM/Rw9X8rRB39SUlF/+o3P47onZ33n/AwkpSbi5QOyhs16wHd55kA== + +"@algolia/cache-in-memory@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.13.0.tgz#10801a74550cbabb64b59ff08c56bce9c278ff2d" + integrity sha512-hHdc+ahPiMM92CQMljmObE75laYzNFYLrNOu0Q3/eyvubZZRtY2SUsEEgyUEyzXruNdzrkcDxFYa7YpWBJYHAg== + dependencies: + "@algolia/cache-common" "4.13.0" + +"@algolia/client-account@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.13.0.tgz#f8646dd40d1e9e3353e10abbd5d6c293ea92a8e2" + integrity sha512-FzFqFt9b0g/LKszBDoEsW+dVBuUe1K3scp2Yf7q6pgHWM1WqyqUlARwVpLxqyc+LoyJkTxQftOKjyFUqddnPKA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-analytics@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.13.0.tgz#a00bd02df45d71becb9dd4c5c993d805f2e1786d" + integrity sha512-klmnoq2FIiiMHImkzOm+cGxqRLLu9CMHqFhbgSy9wtXZrqb8BBUIUE2VyBe7azzv1wKcxZV2RUyNOMpFqmnRZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.13.0.tgz#8bc373d164dbdcce38b4586912bbe162492bcb86" + integrity sha512-GoXfTp0kVcbgfSXOjfrxx+slSipMqGO9WnNWgeMmru5Ra09MDjrcdunsiiuzF0wua6INbIpBQFTC2Mi5lUNqGA== + dependencies: + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-personalization@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.13.0.tgz#10fb7af356422551f11a67222b39c52306f1512c" + integrity sha512-KneLz2WaehJmNfdr5yt2HQETpLaCYagRdWwIwkTqRVFCv4DxRQ2ChPVW9jeTj4YfAAhfzE6F8hn7wkQ/Jfj6ZA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/client-search@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.13.0.tgz#2d8ff8e755c4a37ec89968f3f9b358eed005c7f0" + integrity sha512-blgCKYbZh1NgJWzeGf+caKE32mo3j54NprOf0LZVCubQb3Kx37tk1Hc8SDs9bCAE8hUvf3cazMPIg7wscSxspA== + dependencies: + "@algolia/client-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/transporter" "4.13.0" + +"@algolia/logger-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.13.0.tgz#be2606e71aae618a1ff1ea9a1b5f5a74284b35a8" + integrity sha512-8yqXk7rMtmQJ9wZiHOt/6d4/JDEg5VCk83gJ39I+X/pwUPzIsbKy9QiK4uJ3aJELKyoIiDT1hpYVt+5ia+94IA== + +"@algolia/logger-console@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.13.0.tgz#f28028a760e3d9191e28a10b12925e48f6c9afde" + integrity sha512-YepRg7w2/87L0vSXRfMND6VJ5d6699sFJBRWzZPOlek2p5fLxxK7O0VncYuc/IbVHEgeApvgXx0WgCEa38GVuQ== + dependencies: + "@algolia/logger-common" "4.13.0" + +"@algolia/requester-browser-xhr@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.13.0.tgz#e2483f4e8d7f09e27cd0daf6c77711d15c5a919f" + integrity sha512-Dj+bnoWR5MotrnjblzGKZ2kCdQi2cK/VzPURPnE616NU/il7Ypy6U6DLGZ/ZYz+tnwPa0yypNf21uqt84fOgrg== + dependencies: + "@algolia/requester-common" "4.13.0" + +"@algolia/requester-common@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.13.0.tgz#47fb3464cfb26b55ba43676d13f295d812830596" + integrity sha512-BRTDj53ecK+gn7ugukDWOOcBRul59C4NblCHqj4Zm5msd5UnHFjd/sGX+RLOEoFMhetILAnmg6wMrRrQVac9vw== + +"@algolia/requester-node-http@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.13.0.tgz#7d981bbd31492f51dd11820a665f9d8906793c37" + integrity sha512-9b+3O4QFU4azLhGMrZAr/uZPydvzOR4aEZfSL8ZrpLZ7fbbqTO0S/5EVko+QIgglRAtVwxvf8UJ1wzTD2jvKxQ== + dependencies: + "@algolia/requester-common" "4.13.0" + +"@algolia/transporter@4.13.0": + version "4.13.0" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.13.0.tgz#f6379e5329efa2127da68c914d1141f5f21dbd07" + integrity sha512-8tSQYE+ykQENAdeZdofvtkOr5uJ9VcQSWgRhQ9h01AehtBIPAczk/b2CLrMsw5yQZziLs5cZ3pJ3478yI+urhA== + dependencies: + "@algolia/cache-common" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/requester-common" "4.13.0" + +"@babel/parser@^7.16.4": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== + +"@docsearch/css@3.0.0", "@docsearch/css@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.0.0.tgz#fe57b474802ffd706d3246eab25d52fac8aa3698" + integrity sha512-1kkV7tkAsiuEd0shunYRByKJe3xQDG2q7wYg24SOw1nV9/2lwEd4WrUYRJC/ukGTl2/kHeFxsaUvtiOy0y6fFA== + +"@docsearch/js@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.0.0.tgz#394a99f68895503d57faf523ecec0b25b02f638c" + integrity sha512-j3tUJWlgW3slYqzGB8fm7y05kh2qqrIK1dZOXHeMUm/5gdKE85fiz/ltfCPMDFb/MXF+bLZChJXSMzqY0Ck30Q== + dependencies: + "@docsearch/react" "3.0.0" + preact "^10.0.0" + +"@docsearch/react@3.0.0", "@docsearch/react@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.0.0.tgz#d02ebdc67573412185a6a4df13bc254c7c0da491" + integrity sha512-yhMacqS6TVQYoBh/o603zszIb5Bl8MIXuOc6Vy617I74pirisDzzcNh0NEaYQt50fVVR3khUbeEhUEWEWipESg== + dependencies: + "@algolia/autocomplete-core" "1.5.2" + "@algolia/autocomplete-preset-algolia" "1.5.2" + "@docsearch/css" "3.0.0" + algoliasearch "^4.0.0" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@types/debug@^4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@types/ms" "*" + +"@types/fs-extra@^9.0.13": + version "9.0.13" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.13.tgz#7594fbae04fe7f1918ce8b3d213f74ff44ac1f45" + integrity sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA== + dependencies: + "@types/node" "*" + +"@types/linkify-it@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" + integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + +"@types/markdown-it@^12.2.3": + version "12.2.3" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" + integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*": + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/react@^17.0.43": + version "17.0.44" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7" + integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/scheduler@*": + version "0.16.2" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + +"@vitejs/plugin-vue@^2.3.1": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.2.tgz#12ea7a42e6c83d5ea48e14dc41fd2bbb5806ee37" + integrity sha512-umyypfSHS4kQLdYAnJHhaASq7FRzNCdvcRoQ3uYGNk1/M4a+hXUd7ysN7BLhCrWH6uBokyCkFeUAaFDzSaaSrQ== + +"@vue/compiler-core@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59" + integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec" + integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ== + dependencies: + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/compiler-sfc@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d" + integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-ssr" "3.2.33" + "@vue/reactivity-transform" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71" + integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ== + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" + integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== + +"@vue/reactivity-transform@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699" + integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.33" + "@vue/shared" "3.2.33" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673" + integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ== + dependencies: + "@vue/shared" "3.2.33" + +"@vue/runtime-core@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2" + integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw== + dependencies: + "@vue/reactivity" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/runtime-dom@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848" + integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw== + dependencies: + "@vue/runtime-core" "3.2.33" + "@vue/shared" "3.2.33" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979" + integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew== + dependencies: + "@vue/compiler-ssr" "3.2.33" + "@vue/shared" "3.2.33" + +"@vue/shared@3.2.33", "@vue/shared@^3.2.33": + version "3.2.33" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e" + integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg== + +"@vuepress/bundler-vite@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/bundler-vite/-/bundler-vite-2.0.0-beta.43.tgz#9f07e155f057439a8cbb3c85aeb8eefa333d61c2" + integrity sha512-bNUanrWymNPex1pJ5HSWqyv8s2bTXkPjXDRppe5tQI2qY7DiL+2hwZfWtlKuLzR6jrEX6CHH/DGbZJdaxR30Wg== + dependencies: + "@vitejs/plugin-vue" "^2.3.1" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + autoprefixer "^10.4.5" + connect-history-api-fallback "^1.6.0" + postcss "^8.4.13" + rollup "^2.71.1" + vite "~2.9.6" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/cli@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/cli/-/cli-2.0.0-beta.43.tgz#824050b979b6b18ad8fa5ede70ea0c42ff5aa725" + integrity sha512-NEJbGnVO09AxuO0kgkDIDQ6u81jVbrgUYG7kPWlEKT2bbbkKJQ4gppMTIPjmh4GwxNYjX5UWC8y3nXFT2X198g== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + cac "^6.7.12" + chokidar "^3.5.3" + envinfo "^7.8.1" + esbuild "^0.14.36" + +"@vuepress/client@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/client/-/client-2.0.0-beta.43.tgz#cdf30641fb7ab868b16a14a424c1a81f272c638c" + integrity sha512-G7rb/Jj1C1fj22+rcdbp0mF2y+1me3GSpPcF2k/9Lo+6U4V7AchhsM6kiCbGWcIWSmrV0IpyLjNEJbYO1PniUw== + dependencies: + "@vue/devtools-api" "^6.1.4" + "@vuepress/shared" "2.0.0-beta.43" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/core@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-2.0.0-beta.43.tgz#e452fbed38b11cc080201a2b790ef0c64f3740bb" + integrity sha512-WvphpFV7ctoCcsNzvKyj+U2kgr28AZkoWEYIvqOv60KlBozAuQVDD8k47yZ+XKt+778OcJ3QqKzNDJnRps9sQw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + gray-matter "^4.0.3" + toml "^3.0.0" + vue "^3.2.33" + +"@vuepress/markdown@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-2.0.0-beta.43.tgz#b6fed2b268bc82ae2f99234c59565e6f785e1980" + integrity sha512-jyT/AvxFjY8fRAX/AmewwOfyRYPhSwa2z9/eosOZCotcqyw6gGwnFhtXXMIEgD4whoS7a9PPYUelhedlpzMVdw== + dependencies: + "@types/markdown-it" "^12.2.3" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + markdown-it "^13.0.0" + markdown-it-anchor "^8.4.1" + markdown-it-emoji "^2.0.0" + mdurl "^1.0.1" + +"@vuepress/plugin-active-header-links@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-2.0.0-beta.43.tgz#5bf11b6855aef3df5cd92e3bedafd4fbd83284d5" + integrity sha512-I3dzOVO6zD7z31U0SuRYOwE5bLpFN0Crdwurr3PoSK6MJwAJ4IkKplKfGAJnhQFUXzYteg6I8PJS34AFrLrxnQ== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-back-to-top@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-back-to-top/-/plugin-back-to-top-2.0.0-beta.43.tgz#338c7221876d06007cbde4e918d36d289958ab84" + integrity sha512-HU/ioh9W2bKDNMU8zZ+oJLfqfhEboglkSiGxc95TgI9VwqpLoo6Gzxdu2Mz8d+ha5aTraffhKo4EKRtEG4oT+w== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + +"@vuepress/plugin-container@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-container/-/plugin-container-2.0.0-beta.43.tgz#e9d2f1eca45ace686e4179e28a62555e7c76d379" + integrity sha512-VEylRRgt8+dvQDUWQSneNbkJEZN4lqs9z9hwjfVJq+ZEy18P204GtAsOzi+EmRX4urFpaliQoWzxZtcFzq3R0Q== + dependencies: + "@types/markdown-it" "^12.2.3" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + markdown-it "^13.0.0" + markdown-it-container "^3.0.0" + +"@vuepress/plugin-docsearch@^2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-docsearch/-/plugin-docsearch-2.0.0-beta.43.tgz#07d800f1c471bdcc7cc00beb2217568118cb6a01" + integrity sha512-qThQeTr9hGO9W1bgZp+v4yst2EDvqOMohWabdjpmQSf9/3d80oNJMK7Sz+97zpXwumK7xwsKcVDX4LlFZMEjLg== + dependencies: + "@docsearch/css" "^3.0.0" + "@docsearch/js" "^3.0.0" + "@docsearch/react" "^3.0.0" + "@types/react" "^17.0.43" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + ts-debounce "^4.0.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-external-link-icon@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-external-link-icon/-/plugin-external-link-icon-2.0.0-beta.43.tgz#2abf86fc1bf8f9e35d9a217d1fbaf3ab523acc2f" + integrity sha512-xNp61yPZeGgcc3YDVMb0eu/VDdno/tJE1heNF0m9N8l/YwhdkQ3AuZvATGgWh9fMKBNHnbO9neTuJSaG4FzZjw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/markdown" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + +"@vuepress/plugin-git@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-git/-/plugin-git-2.0.0-beta.43.tgz#dfeac73b6a17d575716fced54a3a0fad4de9f46e" + integrity sha512-fcYyoqGE3KXY+vucOOwYab2Q/m0afovg1CVetlYnKoRhfqLLJjghIHfEOikp48mm7j5LkcFzb6UBuc8XqYV/MA== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + execa "^5.1.1" + +"@vuepress/plugin-medium-zoom@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-medium-zoom/-/plugin-medium-zoom-2.0.0-beta.43.tgz#537435250e6c9be84bfd83b1467f7a61f9caf548" + integrity sha512-p/wQVX/k7RV6gu6yt4NombLmUdHjhvP6NEVy3vXfLDroTU0jsG9YMC2bh7i+Ht1tqjGUK8Jea+6JX0prEPzMow== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + medium-zoom "^1.0.6" + vue "^3.2.33" + +"@vuepress/plugin-nprogress@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-2.0.0-beta.43.tgz#984749493c8d8ab17fa5f458ccf5989e229299c9" + integrity sha512-NMqk8RFUh+JxgMvWKyFn1Xb/9OkWeQQqmxW9MZB7X845GlVacp41rxbJGe3Sw4JKJ6/PnVbRNlBVJX/JO4Ok2w== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-palette@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-palette/-/plugin-palette-2.0.0-beta.43.tgz#77b802a6e6a8a81904832f5b22f7a39ccd523d8a" + integrity sha512-9ijmk5Qpfx0ncdEHhdoPZP4LABzlj5ot9r0KU9IR+OVMySB/39dc4kElfrZCpfnXMx9CYZMd5drhlLj4TUsxnw== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + chokidar "^3.5.3" + +"@vuepress/plugin-prismjs@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-prismjs/-/plugin-prismjs-2.0.0-beta.43.tgz#f7e59bf411e7a0b798d36574aab30e374e69e1ac" + integrity sha512-u5ARmX0pr26tcJBbXri1/04hWsy6neaG9oUY1L8D28L/Sb9+7dvzfzvfWPonQLSe7sYs2w8xNvmuFvguldb5mA== + dependencies: + "@vuepress/core" "2.0.0-beta.43" + prismjs "^1.27.0" + +"@vuepress/plugin-search@^2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-2.0.0-beta.43.tgz#bb05ae8a552d0b493f314868cdba779cf274619e" + integrity sha512-q1py7LajaFFDM12zWjcWw6i8vOn3s3nT05+4zTVH+zf4qa4M3gabPa/M2Jx/hUU3wYXzviZMMjw3KFYM1CGNjw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + chokidar "^3.5.3" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/plugin-theme-data@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-theme-data/-/plugin-theme-data-2.0.0-beta.43.tgz#15aaf2671ac8bc59e0fdb86393f6b05cc80ad750" + integrity sha512-Y3uFcCdgCZrqZl0Blc+7v3DJivJVrdzqG4/ul74Bmu2IbgsP6RYCtMGrMvslTu9vhW/gEeNsL2v7kSVkUyjTvA== + dependencies: + "@vue/devtools-api" "^6.1.4" + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + vue "^3.2.33" + +"@vuepress/shared@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/shared/-/shared-2.0.0-beta.43.tgz#18a8d150118ace3499aeb62ef849ecb4c56a67a1" + integrity sha512-MzO81IMmwmoJiU5g+U3+RhXCsQ5rdv/WQxj8xqozl3hRNpmzmF0Pi/Kc06P+5bZb2kVqv1eZIdQ9U91K9mi8HA== + dependencies: + "@vue/shared" "^3.2.33" + +"@vuepress/theme-default@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-2.0.0-beta.43.tgz#5fe3caf055f497b3625e525f33458e3cd4bf60df" + integrity sha512-4aHcBH7vCD7VHl6RrMq7A8kb4U+j8URJE/PVElXabdAsSAzC9rQCa+KTsbLab32xUDzm8o5eGkrMdLaL424BAw== + dependencies: + "@vuepress/client" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/plugin-active-header-links" "2.0.0-beta.43" + "@vuepress/plugin-back-to-top" "2.0.0-beta.43" + "@vuepress/plugin-container" "2.0.0-beta.43" + "@vuepress/plugin-external-link-icon" "2.0.0-beta.43" + "@vuepress/plugin-git" "2.0.0-beta.43" + "@vuepress/plugin-medium-zoom" "2.0.0-beta.43" + "@vuepress/plugin-nprogress" "2.0.0-beta.43" + "@vuepress/plugin-palette" "2.0.0-beta.43" + "@vuepress/plugin-prismjs" "2.0.0-beta.43" + "@vuepress/plugin-theme-data" "2.0.0-beta.43" + "@vuepress/shared" "2.0.0-beta.43" + "@vuepress/utils" "2.0.0-beta.43" + "@vueuse/core" "^8.2.1" + sass "^1.51.0" + vue "^3.2.33" + vue-router "^4.0.14" + +"@vuepress/utils@2.0.0-beta.43": + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/@vuepress/utils/-/utils-2.0.0-beta.43.tgz#3c0c6b34c33e79368268c9e89166143d774db5a3" + integrity sha512-T56eQJdj5U7ZZLvL9zwH2rMrhQkba3YxEtrQehtKqfQ75NYfG8l+SjF9I1cMb/ujbFsv2YWBFsOyjZYtSiR8rA== + dependencies: + "@types/debug" "^4.1.7" + "@types/fs-extra" "^9.0.13" + "@vuepress/shared" "2.0.0-beta.43" + chalk "^4.1.2" + debug "^4.3.4" + fs-extra "^10.0.1" + globby "^11.0.4" + hash-sum "^2.0.0" + ora "^5.4.1" + upath "^2.0.1" + +"@vueuse/core@^8.2.1": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-8.4.2.tgz#e5be73f40394150e6a1b6abd59e5adb7c6bb6c1f" + integrity sha512-dUVU96lii1ZdWoNJXauQNt+4QrHz1DKbuW+y6pDR2N10q7rGZJMDU7pQeMcC2XeosX7kMODfaBuqsF03NozzLg== + dependencies: + "@vueuse/metadata" "8.4.2" + "@vueuse/shared" "8.4.2" + vue-demi "*" + +"@vueuse/metadata@8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-8.4.2.tgz#b33e6b7bd5ca69e3f24ea41b149267118bcd566f" + integrity sha512-2BIj++7P0/I5dfMsEe8q7Kw0HqVAjVcyNOd9+G22/ILUC9TVLTeYOuJ1kwa1Gpr+0LWKHc6GqHiLWNL33+exoQ== + +"@vueuse/shared@8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-8.4.2.tgz#5900f06ff78bd8b6df4cbf48f8ca82dd6d9747d1" + integrity sha512-hILXMEjL8YQhj1LHN/HZ49UThyfk8irTjhele2nW+L3N55ElFUBGB/f4w0rg8EW+/suhqv7kJJPTZzvHCqxlIw== + dependencies: + vue-demi "*" + +algoliasearch@^4.0.0: + version "4.13.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.13.0.tgz#e36611fda82b1fc548c156ae7929a7f486e4b663" + integrity sha512-oHv4faI1Vl2s+YC0YquwkK/TsaJs79g2JFg5FDm2rKN12VItPTAeQ7hyJMHarOPPYuCnNC5kixbtcqvb21wchw== + dependencies: + "@algolia/cache-browser-local-storage" "4.13.0" + "@algolia/cache-common" "4.13.0" + "@algolia/cache-in-memory" "4.13.0" + "@algolia/client-account" "4.13.0" + "@algolia/client-analytics" "4.13.0" + "@algolia/client-common" "4.13.0" + "@algolia/client-personalization" "4.13.0" + "@algolia/client-search" "4.13.0" + "@algolia/logger-common" "4.13.0" + "@algolia/logger-console" "4.13.0" + "@algolia/requester-browser-xhr" "4.13.0" + "@algolia/requester-common" "4.13.0" + "@algolia/requester-node-http" "4.13.0" + "@algolia/transporter" "4.13.0" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +autoprefixer@^10.4.5: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== + dependencies: + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== + dependencies: + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" + escalade "^3.1.1" + node-releases "^2.0.3" + picocolors "^1.0.0" + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +cac@^6.7.12: + version "6.7.12" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.12.tgz#6fb5ea2ff50bd01490dbda497f4ae75a99415193" + integrity sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA== + +caniuse-lite@^1.0.30001332, caniuse-lite@^1.0.30001335: + version "1.0.30001338" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001338.tgz#b5dd7a7941a51a16480bdf6ff82bded1628eec0d" + integrity sha512-1gLHWyfVoRDsHieO+CaeYe7jSo/MT7D7lhaXUiwwbuR5BwQxORs0f1tAwUSQr3YbxRXJvxHM/PA5FfPQRnsPeQ== + +chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^2.6.8: + version "2.6.20" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" + integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + +csstype@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.11.tgz#d66700c5eacfac1940deb4e3ee5642792d85cd33" + integrity sha512-sa6P2wJ+CAbgyy4KFssIb/JNMLxFvKF1pCYCSXS8ZMuqZnMsrxqI2E5sPyoTpxoPU/gVZMzr2zjOfg8GIZOMsw== + +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +electron-to-chromium@^1.4.118: + version "1.4.136" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.136.tgz#b6a3595a9c29d6d8f60e092d40ac24f997e4e7ef" + integrity sha512-GnITX8rHnUrIVnTxU9UlsTnSemHUA2iF+6QrRqxFbp/mf0vfuSc/goEyyQhUX3TUUCE3mv/4BNuXOtaJ4ur0eA== + +entities@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" + integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== + +envinfo@^7.8.1: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +esbuild-android-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64" + integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw== + +esbuild-android-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8" + integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA== + +esbuild-darwin-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46" + integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA== + +esbuild-darwin-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9" + integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ== + +esbuild-freebsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e" + integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig== + +esbuild-freebsd-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6" + integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ== + +esbuild-linux-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70" + integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g== + +esbuild-linux-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519" + integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q== + +esbuild-linux-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a" + integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA== + +esbuild-linux-arm@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986" + integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA== + +esbuild-linux-mips64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5" + integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ== + +esbuild-linux-ppc64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47" + integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q== + +esbuild-linux-riscv64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2" + integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ== + +esbuild-linux-s390x@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0" + integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ== + +esbuild-netbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95" + integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q== + +esbuild-openbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd" + integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ== + +esbuild-sunos-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b" + integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA== + +esbuild-windows-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1" + integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw== + +esbuild-windows-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107" + integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw== + +esbuild-windows-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54" + integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw== + +esbuild@^0.14.27, esbuild@^0.14.36: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30" + integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA== + optionalDependencies: + esbuild-android-64 "0.14.38" + esbuild-android-arm64 "0.14.38" + esbuild-darwin-64 "0.14.38" + esbuild-darwin-arm64 "0.14.38" + esbuild-freebsd-64 "0.14.38" + esbuild-freebsd-arm64 "0.14.38" + esbuild-linux-32 "0.14.38" + esbuild-linux-64 "0.14.38" + esbuild-linux-arm "0.14.38" + esbuild-linux-arm64 "0.14.38" + esbuild-linux-mips64le "0.14.38" + esbuild-linux-ppc64le "0.14.38" + esbuild-linux-riscv64 "0.14.38" + esbuild-linux-s390x "0.14.38" + esbuild-netbsd-64 "0.14.38" + esbuild-openbsd-64 "0.14.38" + esbuild-sunos-64 "0.14.38" + esbuild-windows-32 "0.14.38" + esbuild-windows-64 "0.14.38" + esbuild-windows-arm64 "0.14.38" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs-extra@^10.0.1: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.3.tgz#e893c064825de73ea1f5f7d88c7a9f7274288798" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-sum@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-2.0.0.tgz#81d01bb5de8ea4a214ad5d6ead1b523460b0b45a" + integrity sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +linkify-it@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec" + integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw== + dependencies: + uc.micro "^1.0.1" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +markdown-it-anchor@^8.4.1: + version "8.6.3" + resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.3.tgz#70418e91dc6fcfbe25b896f7223147225b46abee" + integrity sha512-3IiHYh/kJHY2IcuKv5qv+IKNxDwXjVoYQ5FvbBUPywcwCQ4ICLIw5z0QrhYBtcD7h88MfFK3zKAkABTvPMxm7A== + +markdown-it-container@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-container/-/markdown-it-container-3.0.0.tgz#1d19b06040a020f9a827577bb7dbf67aa5de9a5b" + integrity sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw== + +markdown-it-emoji@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz#cd42421c2fda1537d9cc12b9923f5c8aeb9029c8" + integrity sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ== + +markdown-it@^13.0.0: + version "13.0.1" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430" + integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q== + dependencies: + argparse "^2.0.1" + entities "~3.0.1" + linkify-it "^4.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +medium-zoom@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/medium-zoom/-/medium-zoom-1.0.6.tgz#9247f21ca9313d8bbe9420aca153a410df08d027" + integrity sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.3: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.1.10, postcss@^8.4.13: + version "8.4.13" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.13.tgz#7c87bc268e79f7f86524235821dfdf9f73e5d575" + integrity sha512-jtL6eTBrza5MPzy8oJLFuUscHDXTV5KcLlqAWHl5q5WYRfnNRGSmOZmOZ1T6Gy7A99mOZfqungmZMpMmCVJ8ZA== + dependencies: + nanoid "^3.3.3" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.0.0: + version "10.7.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.7.1.tgz#bdd2b2dce91a5842c3b9b34dfe050e5401068c9e" + integrity sha512-MufnRFz39aIhs9AMFisonjzTud1PK1bY+jcJLo6m2T9Uh8AqjD77w11eAAawmjUogoGOnipECq7e/1RClIKsxg== + +prismjs@^1.27.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.28.0.tgz#0d8f561fa0f7cf6ebca901747828b149147044b6" + integrity sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^2.59.0, rollup@^2.71.1: + version "2.72.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.72.0.tgz#f94280b003bcf9f2f1f2594059a9db5abced371e" + integrity sha512-KqtR2YcO35/KKijg4nx4STO3569aqCUeGRkKWnJ6r+AvBBrVY9L4pmf4NHVrQr4mTOq6msbohflxr2kpihhaOA== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sass@^1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +ts-debounce@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ts-debounce/-/ts-debounce-4.0.0.tgz#33440ef64fab53793c3d546a8ca6ae539ec15841" + integrity sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg== + +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +vite@~2.9.6: + version "2.9.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.8.tgz#2c2cb0790beb0fbe4b8c0995b80fe691a91c2545" + integrity sha512-zsBGwn5UT3YS0NLSJ7hnR54+vUKfgzMUh/Z9CxF1YKEBVIe213+63jrFLmZphgGI5zXwQCSmqIdbPuE8NJywPw== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@*: + version "0.12.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" + integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== + +vue-router@^4.0.14: + version "4.0.15" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.15.tgz#b4a0661efe197f8c724e0f233308f8776e2c3667" + integrity sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg== + dependencies: + "@vue/devtools-api" "^6.0.0" + +vue@^3.2.33: + version "3.2.33" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2" + integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ== + dependencies: + "@vue/compiler-dom" "3.2.33" + "@vue/compiler-sfc" "3.2.33" + "@vue/runtime-dom" "3.2.33" + "@vue/server-renderer" "3.2.33" + "@vue/shared" "3.2.33" + +vuepress-vite@2.0.0-beta.43: + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/vuepress-vite/-/vuepress-vite-2.0.0-beta.43.tgz#d830c37c3bf997f3ff5855c923ff26e52942b7a0" + integrity sha512-AJQJ60eKZE+tqB1A+079Zu2mssOuM95/I1qA5a5ORqjm+3gKf+opzqs8beXJDu/POOoAaWYgif4Ak9mVKGygHQ== + dependencies: + "@vuepress/bundler-vite" "2.0.0-beta.43" + "@vuepress/cli" "2.0.0-beta.43" + "@vuepress/core" "2.0.0-beta.43" + "@vuepress/theme-default" "2.0.0-beta.43" + +vuepress@^2.0.0-beta.43: + version "2.0.0-beta.43" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-2.0.0-beta.43.tgz#f2a98bef84f446f92b759df4e3a0f7fd7c51fed9" + integrity sha512-O60rL6UNw/zqNUK/nx9nU/ztR1x3vhik7zxa1MgA6z92NRuHILVYZKkJMMyjM3bK5z6YDUHuwvpYFTrIN6cWDQ== + dependencies: + vuepress-vite "2.0.0-beta.43" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" diff --git a/docs/回调消息协议.md b/docs/回调消息协议.md index 8f8132eb2f..9a3e22a484 100644 --- a/docs/回调消息协议.md +++ b/docs/回调消息协议.md @@ -1,12 +1,12 @@ -# 回调消息协议 +## 回调消息协议 -## 回调函数原型 +### 回调函数原型 ```c++ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom_arg); ``` -## 参数总览 +### 参数总览 - `int msg` 消息类型 @@ -37,13 +37,13 @@ typedef void(ASST_CALL* AsstCallback)(int msg, const char* details, void* custom - `void* custom_arg` 调用方自定义参数,会原样传出 `AsstCreateEx` 接口中的 `custom_arg` 参数,C 系语言可利用该参数传出 `this` 指针 -## 字段解释 +### 字段解释 -### InternalError +#### InternalError Todo -### InitFailed +#### InitFailed ```jsonc { @@ -80,7 +80,7 @@ Todo - `UnsupportedResolution` 分辨率不被支持 -### AllTasksCompleted +#### AllTasksCompleted ```jsonc { @@ -89,7 +89,7 @@ Todo } ``` -#### 常见 `taskchain` 字段 +##### 常见 `taskchain` 字段 - `StartUp` 开始唤醒 @@ -108,7 +108,7 @@ Todo - `Debug` 调试 -### TaskChain 相关消息 +#### TaskChain 相关消息 ```jsonc { @@ -118,11 +118,11 @@ Todo } ``` -### TaskChainExtraInfo +#### TaskChainExtraInfo Todo -### SubTask 相关消息 +#### SubTask 相关消息 ```jsonc { @@ -135,7 +135,7 @@ Todo } ``` -#### 常见 `subtask` 字段 +##### 常见 `subtask` 字段 - `ProcessTask` @@ -152,7 +152,7 @@ Todo - Todo 其他 -##### 常见 `task` 字段 +###### 常见 `task` 字段 - `StartButton2` 开始战斗 @@ -196,7 +196,7 @@ Todo 肉鸽关卡:险路恶敌 - Todo 其他 -### SubTaskExtraInfo +#### SubTaskExtraInfo ```jsonc { @@ -208,7 +208,7 @@ Todo } ``` -#### 常见 `what` 及 `details` 字段 +##### 常见 `what` 及 `details` 字段 - `StageDrops` 关卡材料掉落信息 diff --git a/docs/常见问题.md b/docs/常见问题.md index 42267a354d..33c9cfaecd 100644 --- a/docs/常见问题.md +++ b/docs/常见问题.md @@ -1,6 +1,6 @@ -# 常见问题 +## 常见问题 -## 软件一打开就闪退 +### 软件一打开就闪退 - 可能性 1: 运行库问题。 请尝试安装 [Visual C++ Redistributable](https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-160#visual-studio-2015-2017-2019-and-2022)、[.NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48) 后重新运行本软件。 @@ -10,11 +10,11 @@ (具体可以下载 [CPU-Z](https://www.cpuid.com/softwares/cpu-z.html),查看“指令集”中有无 `AVX` 这一项来判断) - 若上述均没有效果,请提 issue。 -## 软件可以正常启动,但一点击开始运行就闪退 +### 软件可以正常启动,但一点击开始运行就闪退 设置中的`bluestacks.conf`, 是给 [蓝叠模拟器 Hyper-V 版本](https://github.com/MistEO/MeoAssistantArknights/blob/master/docs/%E6%A8%A1%E6%8B%9F%E5%99%A8%E6%94%AF%E6%8C%81.md#%E8%93%9D%E5%8F%A0%E6%A8%A1%E6%8B%9F%E5%99%A8-hyper-v-%E7%89%88%E6%9C%AC) 使用的。若非该版本、或不清楚自己是不是 Hyper-V, 不知道 Hyper-V 是什么,请不要填写该项!!! -## 连接错误/捕获模拟器窗口错误 +### 连接错误/捕获模拟器窗口错误 提示 : 请根据 [使用说明](../README.md#使用说明) 确定您的模拟器及打开方式正确 @@ -22,7 +22,7 @@ - 方法 2: 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit - 方法 3: _根本解决方法_ 编辑 `resource/config.json`, 修改(最好是新增)模拟器窗口句柄名,并修改对应的 adb 设置。若您修改后可以提 PR 给我,我会感激不尽的_(:з」∠)_ -## 识别错误/任务开始后一直不动、没有反应 +### 识别错误/任务开始后一直不动、没有反应 提示 : 依次进行,若问题解决,则无需往下 @@ -32,11 +32,11 @@ 4. 换模拟器,推荐 [蓝叠国际版](https://www.bluestacks.com/download.html) Nougat 64 bit ( 请注意蓝叠需要在模拟器设置里开启 adb ) 5. 若仍有问题,请提 issue -## 自定义连接 +### 自定义连接 - 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 - 进入软件 `设置` - `调试设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) -## 环境变量中已有 adb, 可以不再下载一份么? +### 环境变量中已有 adb, 可以不再下载一份么? 可以!请手动修改 `resource\config.json` - `Custom` - `adb` - `path` 为 `adb.exe`, 或其他 adb 的路径 diff --git a/docs/模拟器支持.md b/docs/模拟器支持.md index 0860ca0827..506a0f41c7 100644 --- a/docs/模拟器支持.md +++ b/docs/模拟器支持.md @@ -1,14 +1,14 @@ -# 模拟器支持 +## 模拟器支持 -## 蓝叠模拟器 +### 蓝叠模拟器 完美支持。需要在模拟器 `设置` - `引擎设置` 中打开 `允许ADB连接` -## 蓝叠模拟器国际版(推荐使用) +### 蓝叠模拟器国际版(推荐使用) 完美支持。需要在模拟器 `设定` - `进阶` 中打开 `Android调试桥` -## 蓝叠模拟器 Hyper-V 版本 +### 蓝叠模拟器 Hyper-V 版本 支持 @@ -16,50 +16,50 @@ 2. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 3. 在软件 `设置` - `调试设置` 中填写蓝叠安装目录下 `bluestacks.conf` 文件的完整路径 -## 夜神模拟器 +### 夜神模拟器 完美支持 -## 夜神模拟器 安卓 9 +### 夜神模拟器 安卓 9 完美支持 -## MuMu 模拟器 +### MuMu 模拟器 支持。但是可能会 - 一直连接出错:暂时不知道是什么原因,可尝试使用自定义连接 - 卡在主界面无法识别,过一会提示任务出错:和 MuMu 的渲染方式有关,推荐换模拟器( -## MuMu 手游助手(星云引擎) +### MuMu 手游助手(星云引擎) 不支持。没开放 adb 端口 -## MuMu 模拟器 安卓 9 +### MuMu 模拟器 安卓 9 不支持。adb 截图出来是黑的,不知道怎么整 -## 雷电模拟器 +### 雷电模拟器 勉强支持。雷电总有莫名其妙的问题,可以试试看,不保证能用( -## 逍遥模拟器 +### 逍遥模拟器 支持。但可能有莫名其妙的识别错误问题 -## 腾讯手游助手 +### 腾讯手游助手 不支持。没开放 adb 端口 -## Win11 WSA +### Win11 WSA 不支持。WSA 目前没有实现 AOSP screencap 需要的接口,无法进行截图。等微软支持后会尝试适配 -## AVD +### AVD 支持。 -## 自定义连接 +### 自定义连接 1. 下载 [adb](https://dl.google.com/android/repository/platform-tools-latest-windows.zip) ,将 `platform-tools` 文件夹解压到 `MeoAsstGui.exe` 的同级目录 2. 进入软件 `设置` - `调试设置`,填写自定义 adb 地址(需要填写 IP + 端口,例如 `127.0.0.1:5555` ) diff --git a/docs/详细介绍.md b/docs/详细介绍.md index cedf3d0190..bd355f3278 100644 --- a/docs/详细介绍.md +++ b/docs/详细介绍.md @@ -1,6 +1,8 @@ -# 详细介绍 +# MAA使用说明 -## 刷理智 +## 详细介绍 + +### 刷理智 - 若选项中没有你需要的关卡,请手动进入游戏 **蓝色开始按钮** 界面,并选择 `当前关卡`。 - 主界面上的 `吃理智`、`吃石头`、`指定次数` 三个选项为短路开关,即三个选项中的任一条件达到,均会视为任务完成,停止刷理智。 @@ -15,17 +17,17 @@ - 支持打完升级了的情况 - 支持代理失败的情况,会自动放弃本次行动 -## 基建换班 +### 基建换班 -### 换班策略 +#### 换班策略 自动计算并选择 **单设施内的最优解**,支持所有通用类技能和特殊技能组合;支持识别经验书、赤金、原石碎片、芯片,分别使用不同的干员组合! -### 宿舍入驻心情阈值 +#### 宿舍入驻心情阈值 识别心情进度条的百分比;心情小于该阈值的干员,不会再去上班,直接进驻宿舍。 -### 特殊说明 +#### 特殊说明 - 基建换班目前均为单设施最优解,但非跨设施的全局最优解。例如:`巫恋+龙舌兰`、`红云+稀音` 等这类单设施内的组合,都是可以正常识别并使用的;`迷迭香`、`红松骑士团` 这类多个设施间联动的体系,暂不支持使用。 - 若 `无人机用途` 选择 `贸易站-龙门币` ,则将额外识别是否有 `巫恋组`,并优先为其使用。 @@ -34,17 +36,17 @@ - 控制中枢策略太过复杂,目前只考虑 `阿米娅`、`诗怀雅`、`凯尔希`、`彩虹小队` 及其他心情 +0.05 的干员,后续逐步优化。 - 部分异格干员会在基建内产生冲突,请留意辅助界面上是否有提示 “干员冲突”,若有请手动再查看下基建换班情况(可能会有某个设施没人) -## 信用商店随缘买 +### 信用商店随缘买 从左到右依次买,但不会买 `碳` 和 `家具零件` 。有需要的同学可自行修改 `resource/tasks.json` 中 `CreditShop-NotToBuy` - `text` 字段,自定义不买的物品。后续版本会尝试开放界面选项 -## 公开招募识别 +### 公开招募识别 - 自动公招和公招识别是两个独立的功能! - 自动公招支持使用 `加急许可`,全自动连续公招!请进入设置中选择~ - 出 5、6 星都会有弹窗提示 -## 自动肉鸽功能 +### 自动肉鸽功能 - 设置中的三个选项 - 尽可能往后打:用于刷蜡烛 @@ -55,7 +57,7 @@ - 如果软件出现 bug 卡住了,会自动放弃当次探索并重试。但如果经常在某个地方卡住然后放弃、严重影响效率的,欢迎提个 issue 反馈一下~ -## 其他乱七八糟的说明 +### 其他乱七八糟的说明 - 主界面上要执行的任务,是可以拖动改变顺序的。同样设置中基建换班的顺序,也是可以拖动改变的。 - 新的活动关卡刚上线的时候可能无法正常识别,一般一两天内软件会自动 OTA 更新资源,更新后即可正常识别。 @@ -66,10 +68,10 @@ - 软件支持自动更新✿✿ヽ(°▽°)ノ✿ 推荐非杠精的同学使用测试版,一般来说更新快且 bug 少(什么 MIUI (╯‵□′)╯︵┻━┻ - 如果新版本自动下载失败,可手动下载后,直接把压缩包放到同目录下,会自动更新的。 -## 我是国际服玩家,可以使用么? +### 我是国际服玩家,可以使用么? 可以!但是目前只支持少部分功能,请参考 [这个链接](../resource/international/) -## I'm an international server player, could I use it? +### I'm an international server player, could I use it? Yes, but there are few supported features, please refer to [this link](../resource/international/) diff --git a/resource/config.json b/resource/config.json index f7cdd70a63..79d48f64c1 100644 --- a/resource/config.json +++ b/resource/config.json @@ -113,4 +113,4 @@ "release": "[Adb] kill-server" } } -} \ No newline at end of file +} diff --git a/resource/tasks.json b/resource/tasks.json index e2727d7680..727bac7e1d 100644 --- a/resource/tasks.json +++ b/resource/tasks.json @@ -1,27 +1,382 @@ { + "SN-8": { + "algorithm": "JustReturn", + "action": "DoNothing", + "next": [ + "SNToSN-8" + ] + }, + "SNToSN-8": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter2ToSN-8", + "SNToSN-8" + ] + }, + "SNChapter2ToSN-8": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-Chapter2.png", + "roi": [ + 114, + 406, + 330, + 166 + ], + "next": [ + "StageSN-8", + "SNChapter2ToSN-8", + "SwipeRightToStageSN-8" + ] + }, + "SwipeRightToStageSN-8": { + "algorithm": "JustReturn", + "action": "SwipeToTheRight", + "next": [ + "StageSN-8", + "SwipeRightToStageSN-8" + ] + }, + "StageSN-8": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-8.png", + "roi": [ + 296, + 93, + 171, + 195 + ] + }, + "SN-9": { + "algorithm": "JustReturn", + "action": "DoNothing", + "next": [ + "SNToSN-9" + ] + }, + "SNToSN-9": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter3ToSN-9", + "SNToSN-9" + ] + }, + "SNChapter3ToSN-9": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-Chapter3.png", + "roi": [ + 205, + 487, + 254, + 165 + ], + "next": [ + "StageSN-9", + "SNChapter3ToSN-9", + "SwipeLeftToStageSN-9" + ] + }, + "SwipeLeftToStageSN-9": { + "algorithm": "JustReturn", + "action": "SwipeToTheLeft", + "next": [ + "StageSN-9", + "SwipeLeftToStageSN-9" + ] + }, + "StageSN-9": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-9.png", + "roi": [ + 610, + 328, + 176, + 198 + ] + }, + "SN-10": { + "algorithm": "JustReturn", + "action": "DoNothing", + "next": [ + "SNToSN-10" + ] + }, + "SNToSN-10": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "已开放" + ], + "roi": [ + 40, + 481, + 308, + 139 + ], + "next": [ + "SNChapter3ToSN-10", + "SNToSN-10" + ] + }, + "SNChapter3ToSN-10": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-Chapter3.png", + "roi": [ + 205, + 487, + 254, + 165 + ], + "next": [ + "StageSN-10", + "SNChapter3ToSN-10", + "SwipeLeftToStageSN-10" + ] + }, + "SwipeLeftToStageSN-10": { + "algorithm": "JustReturn", + "action": "SwipeToTheLeft", + "next": [ + "StageSN-10", + "SwipeLeftToStageSN-10" + ] + }, + "StageSN-10": { + "algorithm": "MatchTemplate", + "action": "ClickSelf", + "template": "SN-10.png", + "roi": [ + 678, + 220, + 173, + 200 + ] + }, "StartUp": { "algorithm": "JustReturn", "action": "DoNothing", "next": [ "GameStart", "StartToWakeUp", + "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "TodaysSupplies", "ReturnToTerminal", - "OfflineConfirm" + "OfflineConfirm", + "StageSNFlag" ] }, - "LS-5": { + "1-7": { "algorithm": "JustReturn", "action": "DoNothing", "next": [ - "StageResourceToLS5", - "StageLS", - "StageLS5" + "StageThemeTo1-7", + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7", + "Stage1-7" ] }, - "StageResourceToLS5": { + "StageThemeTo1-7": { + "template": "StageTheme.png", + "roi": [ + 200, + 640, + 300, + 60 + ], + "action": "ClickSelf", + "next": [ + "StageThemeChapter3ToChapter2To1-7", + "StageThemeChapter2ToChapter1To1-7", + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7" + ] + }, + "StageThemeChapter3ToChapter2To1-7": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "幻灭" + ], + "roi": [ + 200, + 120, + 80, + 32 + ], + "cache": false, + "next": [ + "StageThemeChapter2ToChapter1To1-7" + ] + }, + "StageThemeChapter2ToChapter1To1-7": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "觉醒" + ], + "roi": [ + 200, + 120, + 80, + 32 + ], + "cache": false, + "next": [ + "StageThemeEpisode3ToEpisode1To1-7", + "StageThemeEpisode2ToEpisode1To1-7", + "StageThemeEpisode1To1-7" + ] + }, + "StageThemeEpisode3ToEpisode1To1-7": { + "action": "ClickSelf", + "roi": [ + 250, + 320, + 155, + 200 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7" + ] + }, + "StageThemeEpisode2ToEpisode1To1-7": { + "action": "ClickSelf", + "roi": [ + 480, + 230, + 280, + 300 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7" + ] + }, + "StageThemeEpisode1To1-7": { + "action": "ClickSelf", + "roi": [ + 750, + 160, + 400, + 400 + ], + "cache": false, + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7" + ] + }, + "SwipeLeftToStage1-7": { + "algorithm": "OcrDetect", + "action": "SlowlySwipeToTheLeft", + "fullMatch": true, + "text": [ + "1-8", + "TR-10", + "1-9", + "1-10", + "1-11", + "1-12" + ], + "cache": false, + "roi": [ + 0, + 120, + 1080, + 480 + ], + "next": [ + "Stage1-7", + "SwipeLeftToStage1-7", + "SwipeRightToStage1-7" + ] + }, + "SwipeRightToStage1-7": { + "algorithm": "OcrDetect", + "action": "SlowlySwipeToTheRight", + "fullMatch": true, + "text": [ + "1-1", + "1-2", + "1-3", + "1-4", + "1-5", + "TR-8", + "1-6", + "TR-9" + ], + "cache": false, + "roi": [ + 0, + 120, + 1080, + 480 + ], + "next": [ + "Stage1-7", + "SwipeRightToStage1-7", + "SwipeLeftToStage1-7" + ] + }, + "Stage1-7": { + "algorithm": "OcrDetect", + "action": "ClickSelf", + "text": [ + "1-7" + ], + "cache": false, + "roi": [ + 0, + 190, + 1080, + 60 + ] + }, + "LS-6": { + "algorithm": "JustReturn", + "action": "DoNothing", + "next": [ + "StageResourceToLS", + "StageLSToLS", + "StageLS6" + ] + }, + "StageResourceToLS": { "template": "StageResource.png", "roi": [ 640, @@ -38,12 +393,44 @@ "algorithm": "JustReturn", "action": "SwipeToTheLeft", "next": [ - "StageLS" + "StageLSToLS" ] }, - "StageLS": { + "StageLSToLS": { + "template": "StageLS.png", "action": "ClickSelf", "cache": false, + "next": [ + "StageLS6" + ] + }, + "StageLS6": { + "action": "ClickSelf", + "cache": false, + "roi": [ + 936, + 101, + 243, + 143 + ], + "next": [ + "UnableToAgentLS6", + "AgentLS6" + ] + }, + "AgentLS6": { + "algorithm": "JustReturn", + "action": "DoNothing" + }, + "UnableToAgentLS6": { + "template": "UnableToAgent.png", + "action": "SwipeToTheLeft", + "roi": [ + 994, + 535, + 286, + 143 + ], "next": [ "StageLS5" ] @@ -274,16 +661,16 @@ 220 ] }, - "CE-5": { + "CE-6": { "algorithm": "JustReturn", "action": "DoNothing", "next": [ - "StageResourceToCE5", - "StageCE", - "StageCE5" + "StageResourceToCE", + "StageCEToCE", + "StageCE6" ] }, - "StageResourceToCE5": { + "StageResourceToCE": { "template": "StageResource.png", "roi": [ 640, @@ -300,12 +687,44 @@ "algorithm": "JustReturn", "action": "SwipeToTheLeft", "next": [ - "StageCE" + "StageCEToCE" ] }, - "StageCE": { + "StageCEToCE": { + "template": "StageCE.png", "action": "ClickSelf", "cache": false, + "next": [ + "StageCE6" + ] + }, + "StageCE6": { + "action": "ClickSelf", + "cache": false, + "roi": [ + 936, + 101, + 243, + 143 + ], + "next": [ + "UnableToAgentCE6", + "AgentCE6" + ] + }, + "AgentCE6": { + "algorithm": "JustReturn", + "action": "DoNothing" + }, + "UnableToAgentCE6": { + "template": "UnableToAgent.png", + "action": "SwipeToTheLeft", + "roi": [ + 994, + 535, + 286, + 143 + ], "next": [ "StageCE5" ] @@ -342,7 +761,8 @@ "next": [ "ReturnToTerminal", "Terminal", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "FightBegin": { @@ -350,6 +770,7 @@ "action": "DoNothing", "next": [ "UsePrts", + "UsePrts-StageSN", "StartButton1", "PRTS", "PRTS2", @@ -364,6 +785,7 @@ 200, 120 ], + "cache": false, "templThreshold": 0.7, "rearDelay": 3000, "maskRange": [ @@ -373,6 +795,7 @@ "next": [ "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "OfflineConfirm", @@ -380,7 +803,7 @@ ] }, "StartUpConnectingFlag": { - "action": "DoNothing", + "action": "ClickSelf", "roi": [ 0, 635, @@ -388,6 +811,8 @@ 85 ], "next": [ + "StartToWakeUp", + "StartLoginBServer", "StartUpConnectingFlag", "Terminal", "CloseAnno", @@ -395,6 +820,23 @@ "TodaysSupplies" ] }, + "StartLoginBServer": { + "action": "ClickSelf", + "roi": [ + 440, + 370, + 400, + 80 + ], + "next": [ + "StartUpConnectingFlag", + "StartLoginBServer", + "Terminal", + "CloseAnno", + "OfflineConfirm", + "TodaysSupplies" + ] + }, "ReturnToTerminal": { "template": "Return.png", "action": "ClickSelf", @@ -408,7 +850,8 @@ "ReturnToTerminal", "Terminal", "ReturnToTerminalConfirm", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "ReturnToTerminalConfirm": { @@ -423,7 +866,8 @@ "next": [ "ReturnToTerminal", "Terminal", - "CloseAnno" + "CloseAnno", + "StageSNReturnToTerminal" ] }, "UsePrts": { @@ -439,6 +883,20 @@ "StartButton1" ] }, + "UsePrts-StageSN": { + "Doc": "三周年活动关卡“愚人号”代理指挥按钮", + "action": "ClickSelf", + "roi": [ + 1010, + 508, + 270, + 143 + ], + "cache": false, + "next": [ + "StartButton1" + ] + }, "StartButton1": { "algorithm": "OcrDetect", "text": [ @@ -446,18 +904,194 @@ ], "cache": false, "preDelay": 500, - "roi": [ - 1000, - 600, - 280, + "roi": [ + 1000, + 600, + 280, 120 ], + "exceededNext": [ + "StageSNReturnFlag", + "Stop" + ], "action": "ClickSelf", "next": [ "StartButton2", "UseMedicine", "UseStone", - "NoStone" + "NoStone", + "OfflineConfirm" + ] + }, + "StageSNFlag": { + "template": "StageSNReturnFlag.png", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "action": "DoNothing" + }, + "StageSNReturnFlag": { + "Doc": "三周年活动关卡“愚人号”的“开始行动”界面,没有返回按钮,点一下返回后面任务出错", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "Stop" + ] + }, + "StageSNReturnToAward": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToAward" + ] + }, + "StageSNReturnToFriends": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToFriends" + ] + }, + "StageSNReturnToInfrast": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToInfrast" + ] + }, + "StageSNReturnToMall": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToMall" + ] + }, + "StageSNReturnToRecruit": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToRecruit" + ] + }, + "StageSNReturnToRoguelike1": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToRoguelike1" + ] + }, + "StageSNReturnToTerminal": { + "template": "StageSNReturnFlag.png", + "action": "ClickRect", + "cache": false, + "roi": [ + 284, + 509, + 242, + 141 + ], + "specificRect": [ + 20, + 20, + 135, + 35 + ], + "next": [ + "ReturnToTerminal" ] }, "StartButton2": { @@ -555,15 +1189,11 @@ }, "EndOfAction": { "Doc": "本任务注册了插件 StageDropsTaskPlugin", - "algorithm": "OcrDetect", - "text": [ - "行动结束" - ], "roi": [ - 0, - 120, - 440, - 600 + 11, + 357, + 153, + 143 ], "action": "DoNothing", "next": [ @@ -681,6 +1311,7 @@ 400 ], "next": [ + "StageSNReturnFlag", "Stop" ] }, @@ -713,6 +1344,8 @@ "FightMissionFailed", "EndOfAction", "StartToWakeUp", + "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "StartButton1" ] @@ -732,6 +1365,8 @@ "next": [ "EndOfAction", "StartToWakeUp", + "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "StartButton1" ] @@ -750,7 +1385,9 @@ "PRTS2", "PrtsErrorConfirm", "OfflineConfirm", - "StartToWakeUp" + "StartToWakeUp", + "StartUpConnectingFlag", + "StartLoginBServer" ] }, "OfflineConfirm": { @@ -769,6 +1406,7 @@ "CloseAnno", "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "OfflineConfirm", "TodaysSupplies" ] @@ -784,6 +1422,7 @@ "next": [ "StartToWakeUp", "StartUpConnectingFlag", + "StartLoginBServer", "Terminal", "CloseAnno", "OfflineConfirm", @@ -873,6 +1512,7 @@ "action": "ClickSelf", "next": [ "UsePrts", + "UsePrts-StageSN", "StartButton1" ] }, @@ -884,7 +1524,8 @@ "RecruitFlag", "Recruit", "ReturnToRecruit", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruit": { @@ -900,7 +1541,8 @@ "Recruit", "ReturnToRecruit", "ReturnToRecruitConfirm", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruitConfirm": { @@ -915,7 +1557,8 @@ "next": [ "Recruit", "ReturnToRecruit", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToRecruit" ] }, "ReturnToRecruitCloseAnno": { @@ -931,7 +1574,8 @@ "next": [ "Recruit", "ReturnToRecruitCloseAnno", - "ReturnToRecruit" + "ReturnToRecruit", + "StageSNReturnToRecruit" ] }, "Recruit": { @@ -953,7 +1597,7 @@ }, "RecruitBeginLoading": { "algorithm": "OcrDetect", - "action": "doNothing", + "action": "DoNothing", "text": [ "正在提交", "反馈至神经" @@ -989,7 +1633,7 @@ }, "RecruitFinishLoading": { "algorithm": "OcrDetect", - "action": "doNothing", + "action": "DoNothing", "text": [ "正在提交", "反馈至神经" @@ -1102,7 +1746,8 @@ "ReceiveAward", "DailyTask", "WeeklyTask", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "Award": { @@ -1214,7 +1859,8 @@ "Award", "ReturnToAward", "ReturnToAwardConfirm", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "ReturnToAwardConfirm": { @@ -1229,7 +1875,8 @@ "next": [ "Award", "ReturnToAward", - "ReturnToRecruitCloseAnno" + "ReturnToRecruitCloseAnno", + "StageSNReturnToAward" ] }, "ReturnToAwardCloseAnno": { @@ -1245,7 +1892,8 @@ "next": [ "Award", "ReturnToRecruitCloseAnno", - "ReturnToAward" + "ReturnToAward", + "StageSNReturnToAward" ] }, "VisitBegin": { @@ -1258,7 +1906,8 @@ "VisitNext", "VisitNextBlack", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriends": { @@ -1274,7 +1923,8 @@ "Friends", "ReturnToFriends", "ReturnToFriendsConfirm", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriendsConfirm": { @@ -1289,7 +1939,8 @@ "next": [ "Friends", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "ReturnToFriendsCloseAnno": { @@ -1305,7 +1956,8 @@ "next": [ "Friends", "ReturnToFriends", - "ReturnToFriendsCloseAnno" + "ReturnToFriendsCloseAnno", + "StageSNReturnToFriends" ] }, "Friends": { @@ -1407,7 +2059,8 @@ "next": [ "ReturnToMall", "Mall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMall": { @@ -1423,7 +2076,8 @@ "Mall", "ReturnToMallConfirm", "ReturnToMall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMallConfirm": { @@ -1438,7 +2092,8 @@ "next": [ "ReturnToMall", "Mall", - "ReturnToMallCloseAnno" + "ReturnToMallCloseAnno", + "StageSNReturnToMall" ] }, "ReturnToMallCloseAnno": { @@ -1454,7 +2109,8 @@ "next": [ "Mall", "ReturnToMallCloseAnno", - "ReturnToMall" + "ReturnToMall", + "StageSNReturnToMall" ] }, "Mall": { @@ -1784,7 +2440,7 @@ }, "SleepThenStop": { "algorithm": "JustReturn", - "action": "doNothing", + "action": "DoNothing", "rearDelay": 2000 }, "RecruitCheckTimeUnreduced": { @@ -1813,7 +2469,7 @@ }, "RecruitConfirmLoading": { "algorithm": "OcrDetect", - "action": "doNothing", + "action": "DoNothing", "text": [ "正在提交", "反馈至神经" @@ -1837,7 +2493,8 @@ "InfrastEnteredFlag", "InfrastNotification", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrast": { @@ -1855,7 +2512,8 @@ "InfrastEnteredFlag", "ReturnToInfrast", "ReturnToInfrastConfirm", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrastConfirm": { @@ -1872,7 +2530,8 @@ "InfrastNotification", "InfrastEnteredFlag", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "ReturnToInfrastCloseAnno": { @@ -1890,7 +2549,8 @@ "InfrastNotification", "InfrastEnteredFlag", "ReturnToInfrast", - "ReturnToInfrastCloseAnno" + "ReturnToInfrastCloseAnno", + "StageSNReturnToInfrast" ] }, "Return": { @@ -1992,7 +2652,8 @@ "Doc": "不同于贸易站,制造站的无人机是一次性全用掉的,所以只执行一次就够了", "next": [ "DroneMax", - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneAssistTrade": { @@ -2006,7 +2667,8 @@ ], "next": [ "DroneMax", - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneMax": { @@ -2018,17 +2680,19 @@ 80 ], "next": [ - "DroneConfirm" + "DroneConfirm", + "DroneCancel" ] }, "DroneConfirm": { "action": "ClickSelf", "rearDelay": 3500, + "cache": false, "roi": [ - 630, - 500, - 650, - 150 + 778, + 501, + 377, + 165 ], "next": [ "DroneConfirmLoading", @@ -2037,9 +2701,19 @@ "DroneAssistMfg" ] }, + "DroneCancel": { + "action": "ClickSelf", + "cache": false, + "roi": [ + 85, + 498, + 452, + 162 + ] + }, "DroneConfirmLoading": { "algorithm": "OcrDetect", - "action": "doNothing", + "action": "DoNothing", "text": [ "正在提交", "反馈至神经" @@ -2249,6 +2923,29 @@ 300 ] }, + "ProcessTaskSlowlySwipeRightRect": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [ + 1080, + 200, + 100, + 300 + ], + "preDelay": 1500, + "rearDelay": 300, + "Doc": "这里的preDelay作为滑动duration使用,rearDelay作为滑动额外延时使用" + }, + "ProcessTaskSlowlySwipeLeftRect": { + "algorithm": "JustReturn", + "action": "ClickRect", + "specificRect": [ + 200, + 200, + 100, + 300 + ] + }, "InfrastOperListSwipeToTheLeftBegin": { "algorithm": "JustReturn", "action": "ClickRect", @@ -3206,7 +3903,7 @@ }, "ClueGiveLoading": { "algorithm": "OcrDetect", - "action": "doNothing", + "action": "DoNothing", "text": [ "正在提交", "反馈至神经" @@ -3644,17 +4341,6 @@ 90 ] }, - "BattleOperRetreat": { - "algorithm": "JustReturn", - "action": "ClickRect", - "rearDelay": 500, - "specificRect": [ - 563, - 190, - 80, - 60 - ] - }, "BattleUseOper": { "algorithm": "JustReturn", "preDelay": 500, @@ -4001,6 +4687,33 @@ 90 ] }, + "BattleOperRetreatBegin": { + "algorithm": "JustReturn", + "rearDelay": 500, + "next": [ + "BattleOperRetreat" + ] + }, + "BattleOperRetreat": { + "algorithm": "OcrDetect", + "text": [ + "角色" + ], + "roi": [ + 900, + 500, + 380, + 150 + ], + "rearDelay": 500, + "action": "ClickRect", + "specificRect": [ + 563, + 190, + 80, + 60 + ] + }, "StartToWakeUpToRoguelike1": { "template": "StartToWakeUp.png", "action": "ClickSelf", @@ -4011,6 +4724,25 @@ 100 ], "next": [ + "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", + "TerminalToRoguelike1", + "CloseAnnoToRoguelike1", + "TodaysSuppliesToRoguelike1" + ] + }, + "StartUpConnectingToRoguelike1": { + "template": "StartUpConnectingFlag.png", + "action": "DoNothing", + "roi": [ + 520, + 460, + 240, + 100 + ], + "next": [ + "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", "TerminalToRoguelike1", "CloseAnnoToRoguelike1", "TodaysSuppliesToRoguelike1" @@ -4102,7 +4834,8 @@ "TerminalToRoguelike1", "ReturnToRoguelike1", "ReturnToRoguelike1Confirm", - "CloseAnnoToRoguelike1" + "CloseAnnoToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "ReturnToRoguelike1Confirm": { @@ -4117,7 +4850,8 @@ "next": [ "TerminalToRoguelike1", "ReturnToRoguelike1", - "CloseAnnoToRoguelike1" + "CloseAnnoToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "OfflineConfirmToRoguelike1": { @@ -4132,6 +4866,7 @@ "next": [ "CloseAnnoToRoguelike1", "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", "OfflineConfirmToRoguelike1" ] }, @@ -4148,7 +4883,9 @@ "ReturnToRoguelike1", "ReturnToRoguelike1Confirm", "OfflineConfirmToRoguelike1", - "StartToWakeUpToRoguelike1" + "StartToWakeUpToRoguelike1", + "StartUpConnectingToRoguelike1", + "StageSNReturnToRoguelike1" ] }, "Roguelike1Continue": { @@ -4297,7 +5034,7 @@ ] }, "Roguelike1CloseCollection": { - "action": "clickSelf", + "action": "ClickSelf", "cache": false, "roi": [ 569, @@ -4372,7 +5109,7 @@ "rearDelay": 1000 }, "Roguelike1RecruitCloseGuide": { - "action": "clickSelf", + "action": "ClickSelf", "roi": [ 56, 41, @@ -4435,6 +5172,22 @@ [ "赤赤黑大", "赫默" + ], + [ + ".+刺", + "棘刺" + ], + [ + "姜哦", + "嵯峨" + ], + [ + "健影", + "傀影" + ], + [ + "^灵鲨", + "幽灵鲨" ] ], "roi": [ @@ -4702,6 +5455,9 @@ "Roguelike1StageTraderInvestSystemFull": { "algorithm": "OcrDetect", "cache": false, + "reduceOtherTimes": [ + "Roguelike1StageTraderInvestConfirm" + ], "text": [ "当前储备余额已达上限", "当前", @@ -4713,9 +5469,6 @@ 298, 289 ], - "reduceOtherTimes": [ - "Roguelike1StageTraderInvestConfirm" - ], "next": [ "Roguelike1StageTraderInvestCancel" ] @@ -4907,7 +5660,7 @@ 700 ], "preDelay": 500, - "templThreshold": 0.99, + "templThreshold": 0.97, "next": [ "Roguelike1StageEncounterLeaveConfirm" ] @@ -5433,6 +6186,13 @@ ], "next": [ "Roguelike1Start", + "Roguelike1StageTrader", + "Roguelike1StageSafeHouse", + "Roguelike1StageEncounter", + "Roguelike1StageBoons", + "Roguelike1StageCambatDps", + "Roguelike1StageEmergencyDps", + "Roguelike1StageDreadfulFoe", "Roguelike1ClickToStartPoint" ] } diff --git a/resource/template/DroneCancel.png b/resource/template/DroneCancel.png new file mode 100644 index 0000000000..c6b4ca4434 Binary files /dev/null and b/resource/template/DroneCancel.png differ diff --git a/resource/template/DroneConfirm.png b/resource/template/DroneConfirm.png index 36ba8df862..92374d9c6a 100644 Binary files a/resource/template/DroneConfirm.png and b/resource/template/DroneConfirm.png differ diff --git a/resource/template/EndOfAction.png b/resource/template/EndOfAction.png new file mode 100644 index 0000000000..26c77a7fe3 Binary files /dev/null and b/resource/template/EndOfAction.png differ diff --git a/resource/template/SN-10.png b/resource/template/SN-10.png new file mode 100644 index 0000000000..267d2e3659 Binary files /dev/null and b/resource/template/SN-10.png differ diff --git a/resource/template/SN-8.png b/resource/template/SN-8.png new file mode 100644 index 0000000000..959decb61e Binary files /dev/null and b/resource/template/SN-8.png differ diff --git a/resource/template/SN-9.png b/resource/template/SN-9.png new file mode 100644 index 0000000000..a3dbd929fe Binary files /dev/null and b/resource/template/SN-9.png differ diff --git a/resource/template/SN-Chapter2.png b/resource/template/SN-Chapter2.png new file mode 100644 index 0000000000..66d06e1754 Binary files /dev/null and b/resource/template/SN-Chapter2.png differ diff --git a/resource/template/SN-Chapter3.png b/resource/template/SN-Chapter3.png new file mode 100644 index 0000000000..0c3a442747 Binary files /dev/null and b/resource/template/SN-Chapter3.png differ diff --git a/resource/template/SN-Open.png b/resource/template/SN-Open.png new file mode 100644 index 0000000000..4e99857e15 Binary files /dev/null and b/resource/template/SN-Open.png differ diff --git a/resource/template/StageCE6.png b/resource/template/StageCE6.png new file mode 100644 index 0000000000..bfbfb20355 Binary files /dev/null and b/resource/template/StageCE6.png differ diff --git a/resource/template/StageLS6.png b/resource/template/StageLS6.png new file mode 100644 index 0000000000..b4d112f7dc Binary files /dev/null and b/resource/template/StageLS6.png differ diff --git a/resource/template/StageSNReturnFlag.png b/resource/template/StageSNReturnFlag.png new file mode 100644 index 0000000000..8752133f50 Binary files /dev/null and b/resource/template/StageSNReturnFlag.png differ diff --git a/resource/template/StageTheme.png b/resource/template/StageTheme.png new file mode 100644 index 0000000000..64cfad2c7b Binary files /dev/null and b/resource/template/StageTheme.png differ diff --git a/resource/template/StageThemeEpisode1To1-7.png b/resource/template/StageThemeEpisode1To1-7.png new file mode 100644 index 0000000000..82be31b98b Binary files /dev/null and b/resource/template/StageThemeEpisode1To1-7.png differ diff --git a/resource/template/StageThemeEpisode2ToEpisode1To1-7.png b/resource/template/StageThemeEpisode2ToEpisode1To1-7.png new file mode 100644 index 0000000000..237c6ee44b Binary files /dev/null and b/resource/template/StageThemeEpisode2ToEpisode1To1-7.png differ diff --git a/resource/template/StageThemeEpisode3ToEpisode1To1-7.png b/resource/template/StageThemeEpisode3ToEpisode1To1-7.png new file mode 100644 index 0000000000..8d8d750232 Binary files /dev/null and b/resource/template/StageThemeEpisode3ToEpisode1To1-7.png differ diff --git a/resource/template/StartLoginBServer.png b/resource/template/StartLoginBServer.png new file mode 100644 index 0000000000..7964baea7d Binary files /dev/null and b/resource/template/StartLoginBServer.png differ diff --git a/resource/template/UnableToAgent.png b/resource/template/UnableToAgent.png new file mode 100644 index 0000000000..c6c33591cd Binary files /dev/null and b/resource/template/UnableToAgent.png differ diff --git a/resource/template/UsePrts-StageSN.png b/resource/template/UsePrts-StageSN.png new file mode 100644 index 0000000000..9fccad13dd Binary files /dev/null and b/resource/template/UsePrts-StageSN.png differ diff --git a/src/MeoAssistant/AsstTypes.h b/src/MeoAssistant/AsstTypes.h index 8d0589e90f..9dd8bc8948 100644 --- a/src/MeoAssistant/AsstTypes.h +++ b/src/MeoAssistant/AsstTypes.h @@ -204,8 +204,10 @@ namespace asst DoNothing = 0x200, // 什么都不做 Stop = 0x400, // 停止当前Task BasicSwipe = 0x1000, - SwipeToTheLeft = BasicSwipe | 1, // 往左划一下 - SwipeToTheRight = BasicSwipe | 2, // 往右划一下 + SwipeToTheLeft = BasicSwipe | 1, // 往左划一下 + SwipeToTheRight = BasicSwipe | 2, // 往右划一下 + SlowlySwipeToTheLeft = SwipeToTheLeft | 4, // 慢慢的往左划一下 + SlowlySwipeToTheRight = SwipeToTheRight | 8 // 慢慢的往右划一下 }; // 任务信息 diff --git a/src/MeoAssistant/AsstUtils.hpp b/src/MeoAssistant/AsstUtils.hpp index 2d3ce27916..475679fdab 100644 --- a/src/MeoAssistant/AsstUtils.hpp +++ b/src/MeoAssistant/AsstUtils.hpp @@ -307,5 +307,5 @@ namespace asst // } // return str; //} - } -} + } + } diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index 1e468fe1ad..02f1a77af6 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -261,11 +261,11 @@ std::optional> asst::Controller::call_command(const s read_num = read(m_pipe_out[PIPE_READ], m_pipe_buffer.get(), PipeBuffSize); }; } while (::waitpid(m_child, &exit_ret, WNOHANG) == 0 && !check_timeout()); -} + } else { // failed to create child process return std::nullopt; -} + } #endif Log.trace("Call `", cmd, "` ret", exit_ret, ", output size:", pipe_data.size()); @@ -819,20 +819,21 @@ bool asst::Controller::connect(const std::string& adb_path, const std::string& a bool asst::Controller::disconnect() { #ifndef _WIN32 - if (m_child) { + if (m_child) #else - if (true) { + if (true) #endif + { return call_command(m_adb.release).has_value(); } - } +} const std::string& asst::Controller::get_uuid() const { return m_uuid; } -cv::Mat asst::Controller::get_image() +cv::Mat asst::Controller::get_image(bool raw) { // 有些模拟器adb偶尔会莫名其妙截图失败,多试几次 for (int i = 0; i != 20; ++i) { @@ -841,6 +842,12 @@ cv::Mat asst::Controller::get_image() } } + if (raw) { + std::shared_lock image_lock(m_image_mutex); + cv::Mat copy = m_cache_image.clone(); + return copy; + } + return get_resized_image(); } diff --git a/src/MeoAssistant/Controller.h b/src/MeoAssistant/Controller.h index b3842fb6fc..b446379ec9 100644 --- a/src/MeoAssistant/Controller.h +++ b/src/MeoAssistant/Controller.h @@ -34,7 +34,7 @@ namespace asst bool disconnect(); const std::string& get_uuid() const; - cv::Mat get_image(); + cv::Mat get_image(bool raw = false); std::vector get_image_encode() const; // 点击和滑动都是异步执行,返回该任务的id diff --git a/src/MeoAssistant/GeneralConfiger.cpp b/src/MeoAssistant/GeneralConfiger.cpp index 751c6e8b3d..9af27cee4f 100644 --- a/src/MeoAssistant/GeneralConfiger.cpp +++ b/src/MeoAssistant/GeneralConfiger.cpp @@ -51,4 +51,4 @@ bool asst::GeneralConfiger::parse(const json::value& json) } return true; -} \ No newline at end of file +} diff --git a/src/MeoAssistant/InfrastProductionTask.cpp b/src/MeoAssistant/InfrastProductionTask.cpp index 2e49ab3199..342f1d18f5 100644 --- a/src/MeoAssistant/InfrastProductionTask.cpp +++ b/src/MeoAssistant/InfrastProductionTask.cpp @@ -200,6 +200,14 @@ size_t asst::InfrastProductionTask::opers_detect() --cur_available_num; continue; } + { + std::string skills_str = "["; + for (const auto& skill : cur_oper.skills) { + skills_str += skill.id + ", "; + } + skills_str += "]"; + Log.trace(skills_str, "mood", cur_oper.mood_ratio, "threshold", m_mood_threshold); + } // 心情过低的干员则不可用 if (cur_oper.mood_ratio < m_mood_threshold) { //--cur_available_num; diff --git a/src/MeoAssistant/MeoAssistant.vcxproj b/src/MeoAssistant/MeoAssistant.vcxproj index 112881ec99..bbc718157e 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj +++ b/src/MeoAssistant/MeoAssistant.vcxproj @@ -1,316 +1,316 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 16.0 - Win32Proj - {362d1e30-f5ae-4279-9985-65c27b3ba300} - MeoAssistant - 10.0 - - - - DynamicLibrary - false - v142 - true - Unicode - - - DynamicLibrary - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - false - $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) - $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - MaxSpeed - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 16.0 + Win32Proj + {362d1e30-f5ae-4279-9985-65c27b3ba300} + MeoAssistant + 10.0 + + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + false + $(SolutionDir)include;$(SolutionDir)3rdparty\include;$(IncludePath) + $(TargetDir);$(SolutionDir)\3rdparty\lib;$(LibraryPath) + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + MaxSpeed + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - Level4 - - - false - true - NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - true - EnableFastChecks - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) - RequireAdministrator - - - true - msvcrt.lib - - - - - - +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + Level4 + + + false + true + NDEBUG;_CONSOLE;ASST_DLL_EXPORTS;ASST_DEBUG;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + true + EnableFastChecks + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + ppocr.lib;opencv_world453.lib;zlibstatic.lib;%(AdditionalDependencies) + RequireAdministrator + + + true + msvcrt.lib + + + + + + xcopy /e /y /i /c $(SolutionDir)resource $(TargetDir)resource -xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource - - - copy resource - - - xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) - - - copy 3rd party dll - - - - - - - - - - - \ No newline at end of file +xcopy /e /y /i /c $(SolutionDir)3rdparty\resource $(TargetDir)resource + + + copy resource + + + xcopy /e /y /i /c $(SolutionDir)3rdparty\bin $(TargetDir) + + + copy 3rd party dll + + + + + + + + + + + diff --git a/src/MeoAssistant/MeoAssistant.vcxproj.filters b/src/MeoAssistant/MeoAssistant.vcxproj.filters index edecf4fcce..9fbd316f98 100644 --- a/src/MeoAssistant/MeoAssistant.vcxproj.filters +++ b/src/MeoAssistant/MeoAssistant.vcxproj.filters @@ -1,554 +1,554 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {81d86994-0d89-4cc2-aa6f-d726a0bd0490} - - - {3b93d9f2-728c-4a22-bc13-57ce7df5806c} - - - {1ef28df7-c174-4032-bbcf-9722ae53852d} - - - {557d6d96-11d9-46e1-b611-b2b8216abea6} - - - {1a8ffc31-8eb3-4af6-9065-634de2463a3e} - - - {c6a0898b-5dd7-4437-981c-00e53b30a60d} - - - {07a812fe-6b28-4be0-b6d4-33554824d3c5} - - - {74bd94e1-4973-412a-a17a-d8457de387af} - - - {87c9dee5-847b-41e6-818e-387a6385ea8b} - - - {51165426-1842-491a-b5d5-9d26c59facdd} - - - {c600668a-0d70-4694-b1e5-6a78cffd0b1a} - - - {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} - - - {6cd85910-b561-4cf3-85a2-20be3cd1dd76} - - - {de865908-2cef-4993-b3ab-1e20290d97b9} - - - {9a6160e3-cd35-4dda-ba04-23ede1878740} - - - {b552c32a-d0c4-4244-bc37-66960444f5f2} - - - {fc8aa302-89bb-4016-924d-10177dc8b334} - - - {f57d4124-f652-4b7b-ba65-4decfc69c619} - - - {d173e449-880b-4064-bbab-97007e3d090b} - - - {34a52261-b34b-49ac-8102-22b0125617f5} - - - {f5faaa93-ae82-472e-9c59-9eccc29294a0} - - - {b91b4a75-165e-422c-9892-20c1443447ec} - - - {a37e0b23-e8f8-499c-adf5-9990277e9ffe} - - - - - 头文件 - - - 头文件 - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Utils - - - 头文件\Caller - - - 头文件\Utils - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件\Resource - - - 头文件 - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\General - - - 头文件\ImageAnalyzer\Final\Infrast - - - 头文件\Resource - - - 头文件\ImageAnalyzer\Final\Infrast - - - 头文件 - - - 头文件\ImageAnalyzer\Final\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\Task\Sub\Infrast - - - 头文件\ImageAnalyzer\Final\Infrast - - - 头文件\Utils - - - 头文件\ImageAnalyzer\Final\Infrast - - - 头文件 - - - 头文件\Task\Sub\Infrast - - - 头文件\Requester - - - 头文件\Task\Plugin - - - 头文件\Task\Plugin - - - 头文件\Task\Plugin - - - 头文件\ImageAnalyzer\General - - - 头文件\Task\Plugin - - - 头文件\Task\Plugin - - - 头文件\Resource - - - 头文件\Task\Sub - - - 头文件\Task\Sub - - - 头文件\Task\Sub - - - 头文件\Task\Sub - - - 头文件\Task\Sub - - - 头文件\ImageAnalyzer\Final - - - 头文件\ImageAnalyzer\Final - - - 头文件\ImageAnalyzer\Final - - - 头文件\ImageAnalyzer\Final - - - 头文件\ImageAnalyzer\Final - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task - - - 头文件\Caller - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task\Sub - - - 头文件\Task - - - 头文件\Task - - - 头文件\Task\Plugin - - - 头文件\Task\Plugin - - - 头文件\Task\Plugin - - - 头文件\ImageAnalyzer\Final - - - 头文件\Task\Plugin - - - 头文件\Resource - - - 头文件\Task\Sub - - - 头文件\Task - - - 头文件\Task\Sub - - - 头文件\Resource - - - 头文件\Resource - - - - - 源文件 - - - 源文件 - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Caller - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件\Resource - - - 源文件 - - - 源文件\ImageAnalyzer\Final\Infrast - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\ImageAnalyzer\General - - - 源文件\Resource - - - 源文件\ImageAnalyzer\Final\Infrast - - - 源文件 - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\ImageAnalyzer\Final\Infrast - - - 源文件\ImageAnalyzer\Final\Infrast - - - 源文件\Task\Sub\Infrast - - - 源文件\ImageAnalyzer\Final\Infrast - - - 源文件 - - - 源文件\Task\Sub\Infrast - - - 源文件\Requester - - - 源文件\Task\Plugin - - - 源文件\Task\Plugin - - - 源文件\Task\Plugin - - - 源文件\ImageAnalyzer\General - - - 源文件\Task\Plugin - - - 源文件\Task\Plugin - - - 源文件\Resource - - - 源文件\Task\Sub - - - 源文件\Task\Sub - - - 源文件\Task\Sub - - - 源文件\Task\Sub - - - 源文件\Task\Sub - - - 源文件\ImageAnalyzer\Final - - - 源文件\ImageAnalyzer\Final - - - 源文件\ImageAnalyzer\Final - - - 源文件\ImageAnalyzer\Final - - - 源文件\ImageAnalyzer\Final - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task - - - 源文件\Task\Plugin - - - 源文件\Task\Plugin - - - 源文件\Task - - - 源文件\ImageAnalyzer\Final - - - 源文件\Task\Plugin - - - 源文件\Resource - - - 源文件\Task\Sub - - - 源文件\Task - - - 源文件\Task\Sub - - - 源文件\Resource - - - 源文件\Resource - - - - - 资源文件 - - - 资源文件 - - - 资源文件 - - - \ No newline at end of file + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + {81d86994-0d89-4cc2-aa6f-d726a0bd0490} + + + {3b93d9f2-728c-4a22-bc13-57ce7df5806c} + + + {1ef28df7-c174-4032-bbcf-9722ae53852d} + + + {557d6d96-11d9-46e1-b611-b2b8216abea6} + + + {1a8ffc31-8eb3-4af6-9065-634de2463a3e} + + + {c6a0898b-5dd7-4437-981c-00e53b30a60d} + + + {07a812fe-6b28-4be0-b6d4-33554824d3c5} + + + {74bd94e1-4973-412a-a17a-d8457de387af} + + + {87c9dee5-847b-41e6-818e-387a6385ea8b} + + + {51165426-1842-491a-b5d5-9d26c59facdd} + + + {c600668a-0d70-4694-b1e5-6a78cffd0b1a} + + + {a5c43813-70af-4b0e-94ac-9ddecc2e4a3c} + + + {6cd85910-b561-4cf3-85a2-20be3cd1dd76} + + + {de865908-2cef-4993-b3ab-1e20290d97b9} + + + {9a6160e3-cd35-4dda-ba04-23ede1878740} + + + {b552c32a-d0c4-4244-bc37-66960444f5f2} + + + {fc8aa302-89bb-4016-924d-10177dc8b334} + + + {f57d4124-f652-4b7b-ba65-4decfc69c619} + + + {d173e449-880b-4064-bbab-97007e3d090b} + + + {34a52261-b34b-49ac-8102-22b0125617f5} + + + {f5faaa93-ae82-472e-9c59-9eccc29294a0} + + + {b91b4a75-165e-422c-9892-20c1443447ec} + + + {a37e0b23-e8f8-499c-adf5-9990277e9ffe} + + + + + 头文件 + + + 头文件 + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Utils + + + 头文件\Caller + + + 头文件\Utils + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件\Resource + + + 头文件 + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\General + + + 头文件\ImageAnalyzer\Final\Infrast + + + 头文件\Resource + + + 头文件\ImageAnalyzer\Final\Infrast + + + 头文件 + + + 头文件\ImageAnalyzer\Final\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\Task\Sub\Infrast + + + 头文件\ImageAnalyzer\Final\Infrast + + + 头文件\Utils + + + 头文件\ImageAnalyzer\Final\Infrast + + + 头文件 + + + 头文件\Task\Sub\Infrast + + + 头文件\Requester + + + 头文件\Task\Plugin + + + 头文件\Task\Plugin + + + 头文件\Task\Plugin + + + 头文件\ImageAnalyzer\General + + + 头文件\Task\Plugin + + + 头文件\Task\Plugin + + + 头文件\Resource + + + 头文件\Task\Sub + + + 头文件\Task\Sub + + + 头文件\Task\Sub + + + 头文件\Task\Sub + + + 头文件\Task\Sub + + + 头文件\ImageAnalyzer\Final + + + 头文件\ImageAnalyzer\Final + + + 头文件\ImageAnalyzer\Final + + + 头文件\ImageAnalyzer\Final + + + 头文件\ImageAnalyzer\Final + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task + + + 头文件\Caller + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task\Sub + + + 头文件\Task + + + 头文件\Task + + + 头文件\Task\Plugin + + + 头文件\Task\Plugin + + + 头文件\Task\Plugin + + + 头文件\ImageAnalyzer\Final + + + 头文件\Task\Plugin + + + 头文件\Resource + + + 头文件\Task\Sub + + + 头文件\Task + + + 头文件\Task\Sub + + + 头文件\Resource + + + 头文件\Resource + + + + + 源文件 + + + 源文件 + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Caller + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件\Resource + + + 源文件 + + + 源文件\ImageAnalyzer\Final\Infrast + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\ImageAnalyzer\General + + + 源文件\Resource + + + 源文件\ImageAnalyzer\Final\Infrast + + + 源文件 + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\ImageAnalyzer\Final\Infrast + + + 源文件\ImageAnalyzer\Final\Infrast + + + 源文件\Task\Sub\Infrast + + + 源文件\ImageAnalyzer\Final\Infrast + + + 源文件 + + + 源文件\Task\Sub\Infrast + + + 源文件\Requester + + + 源文件\Task\Plugin + + + 源文件\Task\Plugin + + + 源文件\Task\Plugin + + + 源文件\ImageAnalyzer\General + + + 源文件\Task\Plugin + + + 源文件\Task\Plugin + + + 源文件\Resource + + + 源文件\Task\Sub + + + 源文件\Task\Sub + + + 源文件\Task\Sub + + + 源文件\Task\Sub + + + 源文件\Task\Sub + + + 源文件\ImageAnalyzer\Final + + + 源文件\ImageAnalyzer\Final + + + 源文件\ImageAnalyzer\Final + + + 源文件\ImageAnalyzer\Final + + + 源文件\ImageAnalyzer\Final + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task + + + 源文件\Task\Plugin + + + 源文件\Task\Plugin + + + 源文件\Task + + + 源文件\ImageAnalyzer\Final + + + 源文件\Task\Plugin + + + 源文件\Resource + + + 源文件\Task\Sub + + + 源文件\Task + + + 源文件\Task\Sub + + + 源文件\Resource + + + 源文件\Resource + + + + + 资源文件 + + + 资源文件 + + + 资源文件 + + + diff --git a/src/MeoAssistant/PenguinPack.cpp b/src/MeoAssistant/PenguinPack.cpp index 01169c72f1..de15e91626 100644 --- a/src/MeoAssistant/PenguinPack.cpp +++ b/src/MeoAssistant/PenguinPack.cpp @@ -71,14 +71,23 @@ bool asst::PenguinPack::load_json(const std::string& stage_path, const std::stri stage_dst["drops"] = json::array(std::move(drops_vector)); stage_dst["existence"] = stage_info.at("existence").at(m_language).at("exist"); - cvt_stage_json[std::move(key)] = std::move(stage_dst); + // 企鹅识别 4.2 新增的字段,为了区分第十章的 标准关卡 or 磨难关卡 + json::value difficulty_json; + if (stage_dst["stageId"].as_string().find("tough_") == 0) { + difficulty_json["TOUGH"] = std::move(stage_dst); + } + else { + difficulty_json["NORMAL"] = std::move(stage_dst); + } + cvt_stage_json[std::move(key)] |= std::move(difficulty_json.as_object()); } } catch (json::exception& e) { m_last_error = stage_path + " parsing error " + e.what(); return false; } - ::wload_stage_index(cvt_stage_json.to_string()); + std::string cvt_string = cvt_stage_json.to_string(); + ::wload_stage_index(std::move(cvt_stage_json.to_string())); ::wload_hash_index(utils::load_file_without_bom(hash_path)); return true; diff --git a/src/MeoAssistant/ProcessTask.cpp b/src/MeoAssistant/ProcessTask.cpp index 326eaafcf2..87a1c8ec36 100644 --- a/src/MeoAssistant/ProcessTask.cpp +++ b/src/MeoAssistant/ProcessTask.cpp @@ -101,9 +101,14 @@ bool ProcessTask::_run() Rect rect; std::shared_ptr cur_task_ptr = nullptr; + auto front_task_ptr = Task.get(m_cur_tasks_name.front()); + // 可能有配置错误,导致不存在对应的任务 + if (front_task_ptr == nullptr) { + Log.error("Invalid task", m_cur_tasks_name.front()); + return false; + } // 如果第一个任务是JustReturn的,那就没必要再截图并计算了 - if (auto front_task_ptr = Task.get(m_cur_tasks_name.front()); - front_task_ptr->algorithm == AlgorithmType::JustReturn) { + if (front_task_ptr->algorithm == AlgorithmType::JustReturn) { cur_task_ptr = front_task_ptr; } else { @@ -140,7 +145,12 @@ bool ProcessTask::_run() } if (exec_times >= max_times) { - Log.info("exec times exceeds the limit", info.to_string()); + info["details"] = json::object{ + { "task", cur_name }, + { "exec_times", exec_times }, + { "max_times", max_times } + }; + Log.info("exec times exceeded the limit", info.to_string()); m_cur_tasks_name = cur_task_ptr->exceeded_next; sleep(m_task_delay); continue; @@ -181,6 +191,10 @@ bool ProcessTask::_run() case ProcessTaskAction::SwipeToTheRight: exec_swipe_task(cur_task_ptr->action); break; + case ProcessTaskAction::SlowlySwipeToTheLeft: + case ProcessTaskAction::SlowlySwipeToTheRight: + exec_slowly_swipe_task(cur_task_ptr->action); + break; case ProcessTaskAction::DoNothing: break; case ProcessTaskAction::Stop: @@ -258,3 +272,23 @@ void asst::ProcessTask::exec_swipe_task(ProcessTaskAction action) break; } } + +void asst::ProcessTask::exec_slowly_swipe_task(ProcessTaskAction action) +{ + LogTraceFunction; + static Rect right_rect = Task.get("ProcessTaskSlowlySwipeRightRect")->specific_rect; + static Rect left_rect = Task.get("ProcessTaskSlowlySwipeLeftRect")->specific_rect; + static int duration = Task.get("ProcessTaskSlowlySwipeRightRect")->pre_delay; + static int extra_delay = Task.get("ProcessTaskSlowlySwipeRightRect")->rear_delay; + + switch (action) { + case asst::ProcessTaskAction::SlowlySwipeToTheLeft: + m_ctrler->swipe(left_rect, right_rect, duration, true, extra_delay, true); + break; + case asst::ProcessTaskAction::SlowlySwipeToTheRight: + m_ctrler->swipe(right_rect, left_rect, duration, true, extra_delay, true); + break; + default: // 走不到这里,TODO 报个错 + break; + } +} diff --git a/src/MeoAssistant/ProcessTask.h b/src/MeoAssistant/ProcessTask.h index 36088bc968..d30e03fdb1 100644 --- a/src/MeoAssistant/ProcessTask.h +++ b/src/MeoAssistant/ProcessTask.h @@ -27,6 +27,7 @@ namespace asst void exec_click_task(const Rect& matched_rect); void exec_swipe_task(ProcessTaskAction action); + void exec_slowly_swipe_task(ProcessTaskAction action); std::vector m_raw_tasks_name; std::vector m_cur_tasks_name; diff --git a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp index 6dc5954526..d10814e708 100644 --- a/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp +++ b/src/MeoAssistant/ProcessTaskImageAnalyzer.cpp @@ -109,6 +109,11 @@ bool asst::ProcessTaskImageAnalyzer::analyze() for (const std::string& task_name : m_tasks_name) { auto task_ptr = Task.get(task_name); + // 可能有配置错误,导致不存在对应的任务 + if (task_ptr == nullptr) { + Log.error("Invalid task", task_name); + continue; + } switch (task_ptr->algorithm) { case AlgorithmType::JustReturn: diff --git a/src/MeoAssistant/README.md b/src/MeoAssistant/README.md index a8c8de1326..e31aaee7dc 100644 --- a/src/MeoAssistant/README.md +++ b/src/MeoAssistant/README.md @@ -12,7 +12,7 @@ - 图像识别库:[opencv](https://github.com/opencv/opencv.git) - ~~文字识别库:[chineseocr_lite](https://github.com/DayBreak-u/chineseocr_lite.git)~~ - 文字识别库:[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) -- 关卡掉落识别:[企鹅物流识别](https://github.com/KumoSiunaus/penguin-stats-recognize-v3) +- 关卡掉落识别:[企鹅物流识别](https://github.com/penguin-statistics/recognizer) - C++ JSON库:[meojson](https://github.com/MistEO/meojson.git) - C++ 运算符解析器:[calculator](https://github.com/kimwalisch/calculator) - C++ base64编解码:[cpp-base64](https://github.com/ReneNyffenegger/cpp-base64) diff --git a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp index d33fc8bf29..f9a956f8cc 100644 --- a/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp +++ b/src/MeoAssistant/RoguelikeBattleTaskPlugin.cpp @@ -1,5 +1,7 @@ #include "RoguelikeBattleTaskPlugin.h" +#include + #include "BattleImageAnalyzer.h" #include "Controller.h" #include "TaskData.h" @@ -43,11 +45,24 @@ bool asst::RoguelikeBattleTaskPlugin::_run() return true; } + constexpr static auto time_limit = std::chrono::minutes(10); + + bool timeout = false; + auto start_time = std::chrono::steady_clock::now(); while (!need_exit()) { // 不在战斗场景,且已使用过了干员,说明已经打完了,就结束循环 if (!auto_battle() && m_opers_used) { break; } + if (std::chrono::steady_clock::now() - start_time > time_limit) { + timeout = true; + break; + } + } + // 超过时间限制了,一般是某个怪被干员卡住了,一直不结束。 + if (timeout) { + Log.info("Timeout, retreat!"); + all_melee_retreat(); } clear(); @@ -81,9 +96,9 @@ bool asst::RoguelikeBattleTaskPlugin::get_stage_info() if (side_info.empty()) { continue; } - m_side_tile_info = std::move(side_info); - m_normal_tile_info = tile.calc(tr.text, false); m_stage_name = tr.text; + m_side_tile_info = std::move(side_info); + m_normal_tile_info = tile.calc(m_stage_name, false); calced = true; break; } @@ -330,6 +345,28 @@ bool asst::RoguelikeBattleTaskPlugin::use_skill(const asst::Rect& rect) return task.run(); } +bool asst::RoguelikeBattleTaskPlugin::retreat(const Point& point) +{ + m_ctrler->click(point); + + ProcessTask task(*this, { "BattleOperRetreatBegin" }); + task.set_retry_times(0); + return task.run(); +} + +void asst::RoguelikeBattleTaskPlugin::all_melee_retreat() +{ + for (const auto& [loc, _] : m_used_tiles) { + auto& tile_info = m_normal_tile_info[loc]; + auto& type = tile_info.buildable; + if (type == Loc::Melee || type == Loc::All) { + if (!retreat(tile_info.pos)) { + return; + } + } + } +} + void asst::RoguelikeBattleTaskPlugin::clear() { m_opers_used = false; diff --git a/src/MeoAssistant/RoguelikeBattleTaskPlugin.h b/src/MeoAssistant/RoguelikeBattleTaskPlugin.h index fda6a12da3..4f6a799142 100644 --- a/src/MeoAssistant/RoguelikeBattleTaskPlugin.h +++ b/src/MeoAssistant/RoguelikeBattleTaskPlugin.h @@ -27,8 +27,10 @@ namespace asst bool get_stage_info(); bool auto_battle(); + void all_melee_retreat(); bool speed_up(); bool use_skill(const Rect& rect); + bool retreat(const Point& point); void clear(); // 通过资源文件离线计算可放置干员的位置,优先使用 diff --git a/src/MeoAssistant/StageDropsTaskPlugin.cpp b/src/MeoAssistant/StageDropsTaskPlugin.cpp index d9843353a0..3eb742638b 100644 --- a/src/MeoAssistant/StageDropsTaskPlugin.cpp +++ b/src/MeoAssistant/StageDropsTaskPlugin.cpp @@ -96,7 +96,7 @@ bool asst::StageDropsTaskPlugin::recognize_drops() } Resrc.penguin().set_language(m_server); - const cv::Mat image = m_ctrler->get_image(); + const cv::Mat image = m_ctrler->get_image(true); std::string res = Resrc.penguin().recognize(image); Log.trace("Results of penguin recognition:\n", res); diff --git a/src/MeoAssistant/TaskData.cpp b/src/MeoAssistant/TaskData.cpp index 5117eedc39..7ce41871d8 100644 --- a/src/MeoAssistant/TaskData.cpp +++ b/src/MeoAssistant/TaskData.cpp @@ -142,6 +142,12 @@ bool asst::TaskData::parse(const json::value& json) else if (action == "swipetotheright") { task_info_ptr->action = ProcessTaskAction::SwipeToTheRight; } + else if (action == "slowlyswipetotheleft") { + task_info_ptr->action = ProcessTaskAction::SlowlySwipeToTheLeft; + } + else if (action == "slowlyswipetotheright") { + task_info_ptr->action = ProcessTaskAction::SlowlySwipeToTheRight; + } else { m_last_error = "Task: " + name + " error: " + action; return false; diff --git a/src/MeoAsstGui/Helper/AsstProxy.cs b/src/MeoAsstGui/Helper/AsstProxy.cs index 992766ce56..5c95a481a6 100644 --- a/src/MeoAsstGui/Helper/AsstProxy.cs +++ b/src/MeoAsstGui/Helper/AsstProxy.cs @@ -274,6 +274,10 @@ namespace MeoAsstGui mainModel.AddLog("已碎石 " + execTimes + " 颗", "darkcyan"); break; + case "AbandonAction": + mainModel.AddLog("代理指挥失误", "darkred"); + break; + case "RecruitRefreshConfirm": mainModel.AddLog("已刷新标签", "darkcyan"); break; diff --git a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs index e4ce691f1f..7ebf6f4efa 100644 --- a/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs +++ b/src/MeoAsstGui/ViewModels/TaskQueueViewModel.cs @@ -70,14 +70,21 @@ namespace MeoAsstGui new CombData { Display = "当前关卡", Value = string.Empty }, new CombData { Display = "上次作战", Value = "LastBattle" }, new CombData { Display = "剿灭作战", Value = "Annihilation" }, - new CombData { Display = "龙门币-5", Value = "CE-5" }, + new CombData { Display = "龙门币-6/5", Value = "CE-6" }, + new CombData { Display = "经验-6/5", Value = "LS-6" }, new CombData { Display = "红票-5", Value = "AP-5" }, - new CombData { Display = "经验-5", Value = "LS-5" }, - new CombData { Display = "技能-5", Value = "CA-5" } + new CombData { Display = "技能-5", Value = "CA-5" }, + new CombData { Display = "1-7", Value = "1-7" }, + + // “愚人号” 活动关卡 + new CombData { Display = "SN-8", Value = "SN-8" }, + new CombData { Display = "SN-9", Value = "SN-9" }, + new CombData { Display = "SN-10", Value = "SN-10" }, + + //// “风雪过境” 活动关卡 + //new CombData { Display = "BI-7", Value = "BI-7" }, + //new CombData { Display = "BI-8", Value = "BI-8" } }; - // “风雪过境” 活动关卡 - //StageList.Add(new CombData { Display = "BI-7", Value = "BI-7" }); - //StageList.Add(new CombData { Display = "BI-8", Value = "BI-8" }); var now = DateTime.Now; var hour = now.Hour; @@ -123,6 +130,8 @@ namespace MeoAsstGui public async void LinkStart() { + Idle = false; + ClearLog(); SaveSettingValue(); @@ -138,6 +147,7 @@ namespace MeoAsstGui if (!catchd) { AddLog("连接模拟器失败\n请参考使用说明处理", "darkred"); + Idle = true; return; } @@ -197,9 +207,16 @@ namespace MeoAsstGui if (count == 0) { AddLog("未选择任务"); + Idle = true; return; } setPenguinId(); + + if (Idle) // 一般是点了“停止”按钮了 + { + return; + } + ret &= asstProxy.AsstStart(); if (ret) @@ -210,7 +227,6 @@ namespace MeoAsstGui { AddLog("出现未知错误"); } - Idle = !ret; } public void Stop() @@ -460,4 +476,4 @@ namespace MeoAsstGui } } } -} +} diff --git a/tools/TestCaller/TestCaller.vcxproj b/tools/TestCaller/TestCaller.vcxproj index 120a646b0d..3ac4232ba0 100644 --- a/tools/TestCaller/TestCaller.vcxproj +++ b/tools/TestCaller/TestCaller.vcxproj @@ -1,111 +1,111 @@ - - - - - Release - x64 - - - RelWithDebInfo - x64 - - - - - - - 16.0 - Win32Proj - {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} - Tools - 10.0 - TestCaller - - - - Application - false - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - $(SolutionDir)\include - $(TargetDir);$(LibraryPath) - - - false - $(SolutionDir)\include - $(TargetDir);$(LibraryPath) - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - MeoAssistant.lib;%(AdditionalDependencies) - $(TargetDir);%(AdditionalLibraryDirectories) - true - - - - - Level3 - true - false - true - LOG_TRACE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - stdc11 - MultiThreaded - Disabled - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - MeoAssistant.lib;%(AdditionalDependencies) - $(TargetDir);%(AdditionalLibraryDirectories) - true - - - - - + + + + + Release + x64 + + + RelWithDebInfo + x64 + + + + + + + 16.0 + Win32Proj + {63B4F1A2-291C-4C85-91E1-A1F6DAE30D64} + Tools + 10.0 + TestCaller + + + + Application + false + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + $(SolutionDir)\include + $(TargetDir);$(LibraryPath) + + + false + $(SolutionDir)\include + $(TargetDir);$(LibraryPath) + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + MeoAssistant.lib;%(AdditionalDependencies) + $(TargetDir);%(AdditionalLibraryDirectories) + true + + + + + Level3 + true + false + true + LOG_TRACE;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + stdc11 + MultiThreaded + Disabled + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + MeoAssistant.lib;%(AdditionalDependencies) + $(TargetDir);%(AdditionalLibraryDirectories) + true + + + + + \ No newline at end of file diff --git a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj index f3b6a494a6..3c1ac476c4 100644 --- a/tools/TransparentImageCvt/TransparentImageCvt.vcxproj +++ b/tools/TransparentImageCvt/TransparentImageCvt.vcxproj @@ -1,96 +1,96 @@ - - - - - Release - Win32 - - - Release - x64 - - - - 16.0 - Win32Proj - {093a3174-a27e-4d23-b64e-16f9448ad5ac} - TransparentImageCvt - 10.0 - - - - Application - false - v142 - true - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - false - - - false - $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) - $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level4 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - stdcpp17 - /utf-8 /MP %(AdditionalOptions) - - - Console - true - true - true - opencv_world453.lib;%(AdditionalDependencies) - - - - - - - - + + + + + Release + Win32 + + + Release + x64 + + + + 16.0 + Win32Proj + {093a3174-a27e-4d23-b64e-16f9448ad5ac} + TransparentImageCvt + 10.0 + + + + Application + false + v143 + true + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + false + + + false + $(SolutionDir)3rdparty\include;$(VC_IncludePath);$(WindowsSDK_IncludePath) + $(SolutionDir)3rdparty\lib;$(VC_LibraryPath_x64);$(WindowsSDK_LibraryPath_x64) + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level4 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp17 + /utf-8 /MP %(AdditionalOptions) + + + Console + true + true + true + opencv_world453.lib;%(AdditionalDependencies) + + + + + + + + \ No newline at end of file