diff --git a/.cargo/config.toml.mustache b/.cargo/config.toml.mustache deleted file mode 100644 index 8e682e1a..00000000 --- a/.cargo/config.toml.mustache +++ /dev/null @@ -1,34 +0,0 @@ -{{#isMacOS}} -[target.x86_64-apple-darwin] -rustflags = ["-Csplit-debuginfo=unpacked"] - -[target.aarch64-apple-darwin] -rustflags = ["-Csplit-debuginfo=unpacked"] -{{/isMacOS}} - -{{#isWin}} -[target.'cfg(windows)'] -rustflags = [ - "-C", - "link-args=/STACK:16777220" -] - -[target.x86_64-pc-windows-msvc] -{{#hasLLD}} -linker = "lld-link.exe" -{{/hasLLD}} -{{/isWin}} - -{{#isLinux}} -[target.x86_64-unknown-linux-gnu] -{{#hasLLD}} -linker = "clang" -rustflags = ["-C", "link-args=-fuse-ld={{{linker}}}"] -{{/hasLLD}} - -[target.aarch64-unknown-linux-gnu] -{{#hasLLD}} -linker = "clang" -rustflags = ["-C", "link-args=-fuse-ld={{{linker}}}"] -{{/hasLLD}} -{{/isLinux}} diff --git a/.clippy.toml b/.clippy.toml deleted file mode 100644 index 458dcafa..00000000 --- a/.clippy.toml +++ /dev/null @@ -1 +0,0 @@ -cognitive-complexity-threshold = 30 diff --git a/.env.template b/.env.template deleted file mode 100644 index b6c1a735..00000000 --- a/.env.template +++ /dev/null @@ -1,3 +0,0 @@ -# Used by sea-orm-cli -# DOES NOT AFFECT THE CODE -DATABASE_URL=sqlite:///path/to/user_data.db?mode=rwc diff --git a/.gemini/config.yml b/.gemini/config.yml deleted file mode 100644 index 73b80012..00000000 --- a/.gemini/config.yml +++ /dev/null @@ -1,4 +0,0 @@ -code_review: - comment_severity_threshold: LOW -ignore_patterns: - - '**/*.gen.ts' diff --git a/.github/actions/publish-artifacts/action.yml b/.github/actions/publish-artifacts/action.yml deleted file mode 100644 index 223d0751..00000000 --- a/.github/actions/publish-artifacts/action.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Publish Artifacts -description: Publish Artifacts -inputs: - target: - description: Target triples for build artifact - profile: - description: '''debug'' or ''release''' - os: - description: '''darwin'', ''windows'', or ''linux''' - arch: - description: '''x86_64'' or ''aarch64''' -runs: - using: node20 - main: dist/index.js diff --git a/.github/actions/publish-artifacts/dist/LICENSE b/.github/actions/publish-artifacts/dist/LICENSE deleted file mode 100644 index ff501b3b..00000000 --- a/.github/actions/publish-artifacts/dist/LICENSE +++ /dev/null @@ -1,3476 +0,0 @@ -@actions/artifact -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/core -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/github -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/glob -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@actions/http-client -MIT -Actions Http Client for Node.js - -Copyright (c) GitHub, Inc. - -All rights reserved. - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and -associated documentation files (the "Software"), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@actions/io -MIT -The MIT License (MIT) - -Copyright 2019 GitHub - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -@azure/abort-controller -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-auth -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-client -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-http-compat -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-lro -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-rest-pipeline -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-tracing -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-util -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/core-xml -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/logger -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@azure/storage-blob -MIT -The MIT License (MIT) - -Copyright (c) 2020 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@fastify/busboy -MIT -Copyright Brian White. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - -@octokit/auth-token -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/core -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/endpoint -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/graphql -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/plugin-paginate-rest -MIT -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@octokit/plugin-request-log -MIT -MIT License Copyright (c) 2020 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@octokit/plugin-rest-endpoint-methods -MIT -MIT License Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -@octokit/plugin-retry -MIT -MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -@octokit/request -MIT -The MIT License - -Copyright (c) 2018 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@octokit/request-error -MIT -The MIT License - -Copyright (c) 2019 Octokit contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -@protobuf-ts/runtime -(Apache-2.0 AND BSD-3-Clause) - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - -@protobuf-ts/runtime-rpc -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - -@vercel/ncc -MIT -Copyright 2018 ZEIT, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -abort-controller -MIT -MIT License - -Copyright (c) 2017 Toru Nagashima - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -agent-base -MIT -(The MIT License) - -Copyright (c) 2013 Nathan Rajlich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -archiver -MIT -Copyright (c) 2012-2014 Chris Talkington, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -archiver-utils -MIT -Copyright (c) 2015 Chris Talkington. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -async -MIT -Copyright (c) 2010-2018 Caolan McMahon - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -b4a -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -balanced-match -MIT -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -before-after-hook -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2018 Gregor Martynus and other contributors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -binary -MIT - -bottleneck -MIT -The MIT License (MIT) - -Copyright (c) 2014 Simon Grondin - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -brace-expansion -MIT -MIT License - -Copyright (c) 2013 Julian Gruber - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -buffer-crc32 -MIT -The MIT License - -Copyright (c) 2013-2024 Brian J. Brennan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE -FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -buffers - -chainsaw -MIT/X11 - -compress-commons -MIT -Copyright (c) 2014 Chris Talkington, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -concat-map -MIT -This software is released under the MIT license: - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -core-util-is -MIT -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. - - -crc-32 -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (C) 2014-present SheetJS LLC - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -crc32-stream -MIT -Copyright (c) 2014 Chris Talkington, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -debug -MIT -(The MIT License) - -Copyright (c) 2014-2017 TJ Holowaychuk -Copyright (c) 2018-2021 Josh Junon - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software -and associated documentation files (the 'Software'), to deal in the Software without restriction, -including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -deprecation -ISC -The ISC License - -Copyright (c) Gregor Martynus and contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -dot-object -MIT - -event-target-shim -MIT -The MIT License (MIT) - -Copyright (c) 2015 Toru Nagashima - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -fast-fifo -MIT -The MIT License (MIT) - -Copyright (c) 2019 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -fast-xml-parser -MIT -MIT License - -Copyright (c) 2017 Amit Kumar Gupta - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -glob -ISC -The ISC License - -Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -graceful-fs -ISC -The ISC License - -Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -has-flag -MIT -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -http-proxy-agent -MIT -(The MIT License) - -Copyright (c) 2013 Nathan Rajlich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -https-proxy-agent -MIT -(The MIT License) - -Copyright (c) 2013 Nathan Rajlich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -inherits -ISC -The ISC License - -Copyright (c) Isaac Z. Schlueter - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND -FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - - - -is-plain-object -MIT -The MIT License (MIT) - -Copyright (c) 2014-2017, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -is-stream -MIT -MIT License - -Copyright (c) Sindre Sorhus (https://sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -isarray -MIT - -jwt-decode -MIT -The MIT License (MIT) - -Copyright (c) 2015 Auth0, Inc. (http://auth0.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -lazystream -MIT -Copyright (c) 2013 J. Pommerening, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - - -lodash -MIT -Copyright OpenJS Foundation and other contributors - -Based on Underscore.js, copyright Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/lodash/lodash - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code displayed within the prose of the -documentation. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -Files located in the node_modules and vendor directories are externally -maintained libraries used by this software which have their own -licenses; we recommend you read them, as their terms may differ from the -terms above. - - -lru-cache -ISC -The ISC License - -Copyright (c) 2010-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -minimatch -ISC -The ISC License - -Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -minipass -ISC -The ISC License - -Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -mkdirp -MIT -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -ms -MIT -The MIT License (MIT) - -Copyright (c) 2016 Zeit, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -node-fetch -MIT -The MIT License (MIT) - -Copyright (c) 2016 David Frank - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - - -normalize-path -MIT -The MIT License (MIT) - -Copyright (c) 2014-2018, Jon Schlinkert. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -once -ISC -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -path-scurry -BlueOak-1.0.0 -# Blue Oak Model License - -Version 1.0.0 - -## Purpose - -This license gives everyone as much permission to work with -this software as possible, while protecting contributors -from liability. - -## Acceptance - -In order to receive this license, you must agree to its -rules. The rules of this license are both obligations -under that agreement and conditions to your license. -You must not do anything with this software that triggers -a rule that you cannot or will not follow. - -## Copyright - -Each contributor licenses you to do everything with this -software that would otherwise infringe that contributor's -copyright in it. - -## Notices - -You must ensure that everyone who gets a copy of -any part of this software from you, with or without -changes, also gets the text of this license or a link to -. - -## Excuse - -If anyone notifies you in writing that you have not -complied with [Notices](#notices), you can keep your -license by taking all practical steps to comply within 30 -days after the notice. If you do not do so, your license -ends immediately. - -## Patent - -Each contributor licenses you to do everything with this -software that would otherwise infringe any patent claims -they can license or become able to license. - -## Reliability - -No contributor can revoke this license. - -## No Liability - -***As far as the law allows, this software comes as is, -without any warranty or condition, and no contributor -will be liable to anyone for any damages related to this -software or this license, under any kind of legal claim.*** - - -process -MIT -(The MIT License) - -Copyright (c) 2013 Roman Shtylman - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -process-nextick-args -MIT -# Copyright (c) 2015 Calvin Metcalf - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.** - - -queue-tick -MIT -The MIT License (MIT) - -Copyright (c) 2021 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -readable-stream -MIT -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - - -readdir-glob -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2020 Yann Armelin - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -safe-buffer -MIT -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -streamx -MIT -The MIT License (MIT) - -Copyright (c) 2019 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -string_decoder -MIT -Node.js is licensed for use as follows: - -""" -Copyright Node.js contributors. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - -This license applies to parts of Node.js originating from the -https://github.com/joyent/node repository: - -""" -Copyright Joyent, Inc. and other Node contributors. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. -""" - - - -strnum -MIT -MIT License - -Copyright (c) 2021 Natural Intelligence - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -supports-color -MIT -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -tar-stream -MIT -The MIT License (MIT) - -Copyright (c) 2014 Mathias Buus - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -text-decoder -Apache-2.0 - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - -tr46 -MIT - -traverse -MIT/X11 -Copyright 2010 James Halliday (mail@substack.net) - -This project is free software released under the MIT/X11 license: -http://www.opensource.org/licenses/mit-license.php - -Copyright 2010 James Halliday (mail@substack.net) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -tslib -0BSD -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. - -tunnel -MIT -The MIT License (MIT) - -Copyright (c) 2012 Koichi Kobayashi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -twirp-ts -MIT - -undici -MIT -MIT License - -Copyright (c) Matteo Collina and Undici contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -universal-user-agent -ISC -# [ISC License](https://spdx.org/licenses/ISC) - -Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m) - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -unzip-stream -MIT -Copyright (c) 2017 Michal Hruby -Copyright (c) 2012 - 2013 Near Infinity Corporation - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -util-deprecate -MIT -(The MIT License) - -Copyright (c) 2014 Nathan Rajlich - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - - -uuid -MIT -The MIT License (MIT) - -Copyright (c) 2010-2020 Robert Kieffer and other contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -webidl-conversions -BSD-2-Clause -# The BSD 2-Clause License - -Copyright (c) 2014, Domenic Denicola -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -whatwg-url -MIT -The MIT License (MIT) - -Copyright (c) 2015–2016 Sebastian Mayr - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -wrappy -ISC -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -zip-stream -MIT -Copyright (c) 2014 Chris Talkington, contributors. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/.github/actions/publish-artifacts/dist/index.js b/.github/actions/publish-artifacts/dist/index.js deleted file mode 100644 index 8ac3b6ca..00000000 --- a/.github/actions/publish-artifacts/dist/index.js +++ /dev/null @@ -1,79 +0,0 @@ -(()=>{var __webpack_modules__={63572:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__exportStar||function(r,i){for(var s in r)if(s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s))a(i,r,s)};Object.defineProperty(i,"__esModule",{value:true});const c=s(15354);l(s(73105),i);l(s(14446),i);l(s(15354),i);const d=new c.DefaultArtifactClient;i["default"]=d},93132:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Timestamp=void 0;const a=s(4800);const l=s(4800);const c=s(4800);const d=s(4800);const p=s(4800);const A=s(4800);const u=s(4800);class Timestamp$Type extends u.MessageType{constructor(){super("google.protobuf.Timestamp",[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}])}now(){const r=this.create();const i=Date.now();r.seconds=A.PbLong.from(Math.floor(i/1e3)).toString();r.nanos=i%1e3*1e6;return r}toDate(r){return new Date(A.PbLong.from(r.seconds).toNumber()*1e3+Math.ceil(r.nanos/1e6))}fromDate(r){const i=this.create();const s=r.getTime();i.seconds=A.PbLong.from(Math.floor(s/1e3)).toString();i.nanos=s%1e3*1e6;return i}internalJsonWrite(r,i){let s=A.PbLong.from(r.seconds).toNumber()*1e3;if(sDate.parse("9999-12-31T23:59:59Z"))throw new Error("Unable to encode Timestamp to JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.");if(r.nanos<0)throw new Error("Unable to encode invalid Timestamp to JSON. Nanos must not be negative.");let a="Z";if(r.nanos>0){let i=(r.nanos+1e9).toString().substring(1);if(i.substring(3)==="000000")a="."+i.substring(0,3)+"Z";else if(i.substring(6)==="000")a="."+i.substring(0,6)+"Z";else a="."+i+"Z"}return new Date(s).toISOString().replace(".000Z",a)}internalJsonRead(r,i,s){if(typeof r!=="string")throw new Error("Unable to parse Timestamp from JSON "+(0,p.typeofJsonValue)(r)+".");let a=r.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!a)throw new Error("Unable to parse Timestamp from JSON. Invalid format.");let l=Date.parse(a[1]+"-"+a[2]+"-"+a[3]+"T"+a[4]+":"+a[5]+":"+a[6]+(a[8]?a[8]:"Z"));if(Number.isNaN(l))throw new Error("Unable to parse Timestamp from JSON. Invalid value.");if(lDate.parse("9999-12-31T23:59:59Z"))throw new globalThis.Error("Unable to parse Timestamp from JSON. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.");if(!s)s=this.create();s.seconds=A.PbLong.from(l/1e3).toString();s.nanos=0;if(a[7])s.nanos=parseInt("1"+a[7]+"0".repeat(9-a[7].length))-1e9;return s}create(r){const i={seconds:"0",nanos:0};globalThis.Object.defineProperty(i,d.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,c.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let c=a!==null&&a!==void 0?a:this.create(),d=r.pos+i;while(r.pos{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.BytesValue=i.StringValue=i.BoolValue=i.UInt32Value=i.Int32Value=i.UInt64Value=i.Int64Value=i.FloatValue=i.DoubleValue=void 0;const a=s(4800);const l=s(4800);const c=s(4800);const d=s(4800);const p=s(4800);const A=s(4800);const u=s(4800);class DoubleValue$Type extends u.MessageType{constructor(){super("google.protobuf.DoubleValue",[{no:1,name:"value",kind:"scalar",T:1}])}internalJsonWrite(r,i){return this.refJsonWriter.scalar(2,r.value,"value",false,true)}internalJsonRead(r,i,s){if(!s)s=this.create();s.value=this.refJsonReader.scalar(r,1,undefined,"value");return s}create(r){const i={value:0};globalThis.Object.defineProperty(i,A.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,p.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create(),c=r.pos+i;while(r.pos{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ArtifactService=i.DeleteArtifactResponse=i.DeleteArtifactRequest=i.GetSignedArtifactURLResponse=i.GetSignedArtifactURLRequest=i.ListArtifactsResponse_MonolithArtifact=i.ListArtifactsResponse=i.ListArtifactsRequest=i.FinalizeArtifactResponse=i.FinalizeArtifactRequest=i.CreateArtifactResponse=i.CreateArtifactRequest=void 0;const a=s(20499);const l=s(4800);const c=s(4800);const d=s(4800);const p=s(4800);const A=s(4800);const u=s(41794);const h=s(41794);const g=s(93132);class CreateArtifactRequest$Type extends A.MessageType{constructor(){super("github.actions.results.api.v1.CreateArtifactRequest",[{no:1,name:"workflow_run_backend_id",kind:"scalar",T:9},{no:2,name:"workflow_job_run_backend_id",kind:"scalar",T:9},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"expires_at",kind:"message",T:()=>g.Timestamp},{no:5,name:"version",kind:"scalar",T:5}])}create(r){const i={workflowRunBackendId:"",workflowJobRunBackendId:"",name:"",version:0};globalThis.Object.defineProperty(i,p.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,d.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create(),d=r.pos+i;while(r.posh.StringValue}])}create(r){const i={workflowRunBackendId:"",workflowJobRunBackendId:"",name:"",size:"0"};globalThis.Object.defineProperty(i,p.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,d.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create(),d=r.pos+i;while(r.posh.StringValue},{no:4,name:"id_filter",kind:"message",T:()=>u.Int64Value}])}create(r){const i={workflowRunBackendId:"",workflowJobRunBackendId:""};globalThis.Object.defineProperty(i,p.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,d.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create(),d=r.pos+i;while(r.posi.ListArtifactsResponse_MonolithArtifact}])}create(r){const i={artifacts:[]};globalThis.Object.defineProperty(i,p.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,d.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,s,a,l){let d=l!==null&&l!==void 0?l:this.create(),p=r.pos+s;while(r.posg.Timestamp}])}create(r){const i={workflowRunBackendId:"",workflowJobRunBackendId:"",databaseId:"0",name:"",size:"0"};globalThis.Object.defineProperty(i,p.MESSAGE_TYPE,{enumerable:false,value:this});if(r!==undefined)(0,d.reflectionMergePartial)(this,i,r);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create(),d=r.pos+i;while(r.posc.CreateArtifactResponse.fromJson(r,{ignoreUnknownFields:true})))}FinalizeArtifact(r){const i=c.FinalizeArtifactRequest.toJson(r,{useProtoFieldName:true,emitDefaultValues:false});const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","FinalizeArtifact","application/json",i);return s.then((r=>c.FinalizeArtifactResponse.fromJson(r,{ignoreUnknownFields:true})))}ListArtifacts(r){const i=c.ListArtifactsRequest.toJson(r,{useProtoFieldName:true,emitDefaultValues:false});const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","ListArtifacts","application/json",i);return s.then((r=>c.ListArtifactsResponse.fromJson(r,{ignoreUnknownFields:true})))}GetSignedArtifactURL(r){const i=c.GetSignedArtifactURLRequest.toJson(r,{useProtoFieldName:true,emitDefaultValues:false});const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","GetSignedArtifactURL","application/json",i);return s.then((r=>c.GetSignedArtifactURLResponse.fromJson(r,{ignoreUnknownFields:true})))}DeleteArtifact(r){const i=c.DeleteArtifactRequest.toJson(r,{useProtoFieldName:true,emitDefaultValues:false});const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","DeleteArtifact","application/json",i);return s.then((r=>c.DeleteArtifactResponse.fromJson(r,{ignoreUnknownFields:true})))}}i.ArtifactServiceClientJSON=ArtifactServiceClientJSON;class ArtifactServiceClientProtobuf{constructor(r){this.rpc=r;this.CreateArtifact.bind(this);this.FinalizeArtifact.bind(this);this.ListArtifacts.bind(this);this.GetSignedArtifactURL.bind(this);this.DeleteArtifact.bind(this)}CreateArtifact(r){const i=c.CreateArtifactRequest.toBinary(r);const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","CreateArtifact","application/protobuf",i);return s.then((r=>c.CreateArtifactResponse.fromBinary(r)))}FinalizeArtifact(r){const i=c.FinalizeArtifactRequest.toBinary(r);const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","FinalizeArtifact","application/protobuf",i);return s.then((r=>c.FinalizeArtifactResponse.fromBinary(r)))}ListArtifacts(r){const i=c.ListArtifactsRequest.toBinary(r);const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","ListArtifacts","application/protobuf",i);return s.then((r=>c.ListArtifactsResponse.fromBinary(r)))}GetSignedArtifactURL(r){const i=c.GetSignedArtifactURLRequest.toBinary(r);const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","GetSignedArtifactURL","application/protobuf",i);return s.then((r=>c.GetSignedArtifactURLResponse.fromBinary(r)))}DeleteArtifact(r){const i=c.DeleteArtifactRequest.toBinary(r);const s=this.rpc.request("github.actions.results.api.v1.ArtifactService","DeleteArtifact","application/protobuf",i);return s.then((r=>c.DeleteArtifactResponse.fromBinary(r)))}}i.ArtifactServiceClientProtobuf=ArtifactServiceClientProtobuf;var d;(function(r){r["CreateArtifact"]="CreateArtifact";r["FinalizeArtifact"]="FinalizeArtifact";r["ListArtifacts"]="ListArtifacts";r["GetSignedArtifactURL"]="GetSignedArtifactURL";r["DeleteArtifact"]="DeleteArtifact"})(d||(i.ArtifactServiceMethod=d={}));i.ArtifactServiceMethodList=[d.CreateArtifact,d.FinalizeArtifact,d.ListArtifacts,d.GetSignedArtifactURL,d.DeleteArtifact];function createArtifactServiceServer(r){return new l.TwirpServer({service:r,packageName:"github.actions.results.api.v1",serviceName:"ArtifactService",methodList:i.ArtifactServiceMethodList,matchRoute:matchArtifactServiceRoute})}i.createArtifactServiceServer=createArtifactServiceServer;function matchArtifactServiceRoute(r,i){switch(r){case"CreateArtifact":return(r,s,l,c)=>a(this,void 0,void 0,(function*(){r=Object.assign(Object.assign({},r),{methodName:"CreateArtifact"});yield i.onMatch(r);return handleArtifactServiceCreateArtifactRequest(r,s,l,c)}));case"FinalizeArtifact":return(r,s,l,c)=>a(this,void 0,void 0,(function*(){r=Object.assign(Object.assign({},r),{methodName:"FinalizeArtifact"});yield i.onMatch(r);return handleArtifactServiceFinalizeArtifactRequest(r,s,l,c)}));case"ListArtifacts":return(r,s,l,c)=>a(this,void 0,void 0,(function*(){r=Object.assign(Object.assign({},r),{methodName:"ListArtifacts"});yield i.onMatch(r);return handleArtifactServiceListArtifactsRequest(r,s,l,c)}));case"GetSignedArtifactURL":return(r,s,l,c)=>a(this,void 0,void 0,(function*(){r=Object.assign(Object.assign({},r),{methodName:"GetSignedArtifactURL"});yield i.onMatch(r);return handleArtifactServiceGetSignedArtifactURLRequest(r,s,l,c)}));case"DeleteArtifact":return(r,s,l,c)=>a(this,void 0,void 0,(function*(){r=Object.assign(Object.assign({},r),{methodName:"DeleteArtifact"});yield i.onMatch(r);return handleArtifactServiceDeleteArtifactRequest(r,s,l,c)}));default:i.onNotFound();const r=`no handler found`;throw new l.TwirpError(l.TwirpErrorCode.BadRoute,r)}}function handleArtifactServiceCreateArtifactRequest(r,i,s,a){switch(r.contentType){case l.TwirpContentType.JSON:return handleArtifactServiceCreateArtifactJSON(r,i,s,a);case l.TwirpContentType.Protobuf:return handleArtifactServiceCreateArtifactProtobuf(r,i,s,a);default:const c="unexpected Content-Type";throw new l.TwirpError(l.TwirpErrorCode.BadRoute,c)}}function handleArtifactServiceFinalizeArtifactRequest(r,i,s,a){switch(r.contentType){case l.TwirpContentType.JSON:return handleArtifactServiceFinalizeArtifactJSON(r,i,s,a);case l.TwirpContentType.Protobuf:return handleArtifactServiceFinalizeArtifactProtobuf(r,i,s,a);default:const c="unexpected Content-Type";throw new l.TwirpError(l.TwirpErrorCode.BadRoute,c)}}function handleArtifactServiceListArtifactsRequest(r,i,s,a){switch(r.contentType){case l.TwirpContentType.JSON:return handleArtifactServiceListArtifactsJSON(r,i,s,a);case l.TwirpContentType.Protobuf:return handleArtifactServiceListArtifactsProtobuf(r,i,s,a);default:const c="unexpected Content-Type";throw new l.TwirpError(l.TwirpErrorCode.BadRoute,c)}}function handleArtifactServiceGetSignedArtifactURLRequest(r,i,s,a){switch(r.contentType){case l.TwirpContentType.JSON:return handleArtifactServiceGetSignedArtifactURLJSON(r,i,s,a);case l.TwirpContentType.Protobuf:return handleArtifactServiceGetSignedArtifactURLProtobuf(r,i,s,a);default:const c="unexpected Content-Type";throw new l.TwirpError(l.TwirpErrorCode.BadRoute,c)}}function handleArtifactServiceDeleteArtifactRequest(r,i,s,a){switch(r.contentType){case l.TwirpContentType.JSON:return handleArtifactServiceDeleteArtifactJSON(r,i,s,a);case l.TwirpContentType.Protobuf:return handleArtifactServiceDeleteArtifactProtobuf(r,i,s,a);default:const c="unexpected Content-Type";throw new l.TwirpError(l.TwirpErrorCode.BadRoute,c)}}function handleArtifactServiceCreateArtifactJSON(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{const r=JSON.parse(s.toString()||"{}");a=c.CreateArtifactRequest.fromJson(r,{ignoreUnknownFields:true})}catch(r){if(r instanceof Error){const i="the json request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.CreateArtifact(r,s)))}else{p=yield i.CreateArtifact(r,a)}return JSON.stringify(c.CreateArtifactResponse.toJson(p,{useProtoFieldName:true,emitDefaultValues:false}))}))}function handleArtifactServiceFinalizeArtifactJSON(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{const r=JSON.parse(s.toString()||"{}");a=c.FinalizeArtifactRequest.fromJson(r,{ignoreUnknownFields:true})}catch(r){if(r instanceof Error){const i="the json request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.FinalizeArtifact(r,s)))}else{p=yield i.FinalizeArtifact(r,a)}return JSON.stringify(c.FinalizeArtifactResponse.toJson(p,{useProtoFieldName:true,emitDefaultValues:false}))}))}function handleArtifactServiceListArtifactsJSON(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{const r=JSON.parse(s.toString()||"{}");a=c.ListArtifactsRequest.fromJson(r,{ignoreUnknownFields:true})}catch(r){if(r instanceof Error){const i="the json request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.ListArtifacts(r,s)))}else{p=yield i.ListArtifacts(r,a)}return JSON.stringify(c.ListArtifactsResponse.toJson(p,{useProtoFieldName:true,emitDefaultValues:false}))}))}function handleArtifactServiceGetSignedArtifactURLJSON(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{const r=JSON.parse(s.toString()||"{}");a=c.GetSignedArtifactURLRequest.fromJson(r,{ignoreUnknownFields:true})}catch(r){if(r instanceof Error){const i="the json request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.GetSignedArtifactURL(r,s)))}else{p=yield i.GetSignedArtifactURL(r,a)}return JSON.stringify(c.GetSignedArtifactURLResponse.toJson(p,{useProtoFieldName:true,emitDefaultValues:false}))}))}function handleArtifactServiceDeleteArtifactJSON(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{const r=JSON.parse(s.toString()||"{}");a=c.DeleteArtifactRequest.fromJson(r,{ignoreUnknownFields:true})}catch(r){if(r instanceof Error){const i="the json request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.DeleteArtifact(r,s)))}else{p=yield i.DeleteArtifact(r,a)}return JSON.stringify(c.DeleteArtifactResponse.toJson(p,{useProtoFieldName:true,emitDefaultValues:false}))}))}function handleArtifactServiceCreateArtifactProtobuf(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{a=c.CreateArtifactRequest.fromBinary(s)}catch(r){if(r instanceof Error){const i="the protobuf request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.CreateArtifact(r,s)))}else{p=yield i.CreateArtifact(r,a)}return Buffer.from(c.CreateArtifactResponse.toBinary(p))}))}function handleArtifactServiceFinalizeArtifactProtobuf(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{a=c.FinalizeArtifactRequest.fromBinary(s)}catch(r){if(r instanceof Error){const i="the protobuf request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.FinalizeArtifact(r,s)))}else{p=yield i.FinalizeArtifact(r,a)}return Buffer.from(c.FinalizeArtifactResponse.toBinary(p))}))}function handleArtifactServiceListArtifactsProtobuf(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{a=c.ListArtifactsRequest.fromBinary(s)}catch(r){if(r instanceof Error){const i="the protobuf request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.ListArtifacts(r,s)))}else{p=yield i.ListArtifacts(r,a)}return Buffer.from(c.ListArtifactsResponse.toBinary(p))}))}function handleArtifactServiceGetSignedArtifactURLProtobuf(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{a=c.GetSignedArtifactURLRequest.fromBinary(s)}catch(r){if(r instanceof Error){const i="the protobuf request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.GetSignedArtifactURL(r,s)))}else{p=yield i.GetSignedArtifactURL(r,a)}return Buffer.from(c.GetSignedArtifactURLResponse.toBinary(p))}))}function handleArtifactServiceDeleteArtifactProtobuf(r,i,s,d){return a(this,void 0,void 0,(function*(){let a;let p;try{a=c.DeleteArtifactRequest.fromBinary(s)}catch(r){if(r instanceof Error){const i="the protobuf request could not be decoded";throw new l.TwirpError(l.TwirpErrorCode.Malformed,i).withCause(r,true)}}if(d&&d.length>0){const s=(0,l.chainInterceptors)(...d);p=yield s(r,a,((r,s)=>i.DeleteArtifact(r,s)))}else{p=yield i.DeleteArtifact(r,a)}return Buffer.from(c.DeleteArtifactResponse.toBinary(p))}))}},15354:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var l=this&&this.__rest||function(r,i){var s={};for(var a in r)if(Object.prototype.hasOwnProperty.call(r,a)&&i.indexOf(a)<0)s[a]=r[a];if(r!=null&&typeof Object.getOwnPropertySymbols==="function")for(var l=0,a=Object.getOwnPropertySymbols(r);l1){p=d.artifacts.sort(((r,i)=>Number(i.databaseId)-Number(r.databaseId)))[0];(0,l.debug)(`More than one artifact found for a single name, returning newest (id: ${p.databaseId})`)}const A={workflowRunBackendId:p.workflowRunBackendId,workflowJobRunBackendId:p.workflowJobRunBackendId,name:p.name};const u=yield i.DeleteArtifact(A);(0,l.info)(`Artifact '${r}' (ID: ${u.artifactId}) deleted`);return{id:Number(u.artifactId)}}))}i.deleteArtifactInternal=deleteArtifactInternal},98960:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var p=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.downloadArtifactInternal=i.downloadArtifactPublic=i.streamExtractExternal=void 0;const A=p(s(73292));const u=c(s(84425));const h=c(s(73949));const g=c(s(28382));const y=p(s(1865));const b=s(99194);const C=s(94373);const B=s(30549);const I=s(10141);const w=s(87762);const v=s(14446);const scrubQueryParameters=r=>{const i=new URL(r);i.search="";return i.toString()};function exists(r){return d(this,void 0,void 0,(function*(){try{yield A.default.access(r);return true}catch(r){if(r.code==="ENOENT"){return false}else{throw r}}}))}function streamExtract(r,i){return d(this,void 0,void 0,(function*(){let s=0;while(s<5){try{yield streamExtractExternal(r,i);return}catch(r){s++;h.debug(`Failed to download artifact after ${s} retries due to ${r.message}. Retrying in 5 seconds...`);yield new Promise((r=>setTimeout(r,5e3)))}}throw new Error(`Artifact download failed after ${s} retries.`)}))}function streamExtractExternal(r,i){return d(this,void 0,void 0,(function*(){const s=new g.HttpClient((0,b.getUserAgentString)());const a=yield s.get(r);if(a.message.statusCode!==200){throw new Error(`Unexpected HTTP response from blob storage: ${a.message.statusCode} ${a.message.statusMessage}`)}const l=30*1e3;return new Promise(((r,s)=>{const timerFn=()=>{a.message.destroy(new Error(`Blob storage chunk did not respond in ${l}ms`))};const c=setTimeout(timerFn,l);a.message.on("data",(()=>{c.refresh()})).on("error",(r=>{h.debug(`response.message: Artifact download failed: ${r.message}`);clearTimeout(c);s(r)})).pipe(y.default.Extract({path:i})).on("close",(()=>{clearTimeout(c);r()})).on("error",(r=>{s(r)}))}))}))}i.streamExtractExternal=streamExtractExternal;function downloadArtifactPublic(r,i,s,a,l){return d(this,void 0,void 0,(function*(){const c=yield resolveOrCreateDirectory(l===null||l===void 0?void 0:l.path);const d=u.getOctokit(a);h.info(`Downloading artifact '${r}' from '${i}/${s}'`);const{headers:p,status:A}=yield d.rest.actions.downloadArtifact({owner:i,repo:s,artifact_id:r,archive_format:"zip",request:{redirect:"manual"}});if(A!==302){throw new Error(`Unable to download artifact. Unexpected status: ${A}`)}const{location:g}=p;if(!g){throw new Error(`Unable to redirect to artifact download url`)}h.info(`Redirecting to blob download url: ${scrubQueryParameters(g)}`);try{h.info(`Starting download of artifact to: ${c}`);yield streamExtract(g,c);h.info(`Artifact download completed successfully.`)}catch(r){throw new Error(`Unable to download and extract artifact: ${r.message}`)}return{downloadPath:c}}))}i.downloadArtifactPublic=downloadArtifactPublic;function downloadArtifactInternal(r,i){return d(this,void 0,void 0,(function*(){const s=yield resolveOrCreateDirectory(i===null||i===void 0?void 0:i.path);const a=(0,B.internalArtifactTwirpClient)();const{workflowRunBackendId:l,workflowJobRunBackendId:c}=(0,w.getBackendIdsFromToken)();const d={workflowRunBackendId:l,workflowJobRunBackendId:c,idFilter:I.Int64Value.create({value:r.toString()})};const{artifacts:p}=yield a.ListArtifacts(d);if(p.length===0){throw new v.ArtifactNotFoundError(`No artifacts found for ID: ${r}\nAre you trying to download from a different run? Try specifying a github-token with \`actions:read\` scope.`)}if(p.length>1){h.warning("Multiple artifacts found, defaulting to first.")}const A={workflowRunBackendId:p[0].workflowRunBackendId,workflowJobRunBackendId:p[0].workflowJobRunBackendId,name:p[0].name};const{signedUrl:u}=yield a.GetSignedArtifactURL(A);h.info(`Redirecting to blob download url: ${scrubQueryParameters(u)}`);try{h.info(`Starting download of artifact to: ${s}`);yield streamExtract(u,s);h.info(`Artifact download completed successfully.`)}catch(r){throw new Error(`Unable to download and extract artifact: ${r.message}`)}return{downloadPath:s}}))}i.downloadArtifactInternal=downloadArtifactInternal;function resolveOrCreateDirectory(r=(0,C.getGitHubWorkspaceDir)()){return d(this,void 0,void 0,(function*(){if(!(yield exists(r))){h.debug(`Artifact destination folder does not exist, creating: ${r}`);yield A.default.mkdir(r,{recursive:true})}else{h.debug(`Artifact destination folder already exists: ${r}`)}return r}))}},91950:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.getArtifactInternal=i.getArtifactPublic=void 0;const p=s(84425);const A=s(65857);const u=c(s(73949));const h=s(26893);const g=s(52367);const y=s(52622);const b=s(87762);const C=s(99194);const B=s(30549);const I=s(10141);const w=s(14446);function getArtifactPublic(r,i,s,a,l){var c;return d(this,void 0,void 0,(function*(){const[d,b]=(0,g.getRetryOptions)(h.defaults);const B={log:undefined,userAgent:(0,C.getUserAgentString)(),previews:undefined,retry:d,request:b};const I=(0,p.getOctokit)(l,B,A.retry,y.requestLog);const v=yield I.request("GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts{?name}",{owner:s,repo:a,run_id:i,name:r});if(v.status!==200){throw new w.InvalidResponseError(`Invalid response from GitHub API: ${v.status} (${(c=v===null||v===void 0?void 0:v.headers)===null||c===void 0?void 0:c["x-github-request-id"]})`)}if(v.data.artifacts.length===0){throw new w.ArtifactNotFoundError(`Artifact not found for name: ${r}\n Please ensure that your artifact is not expired and the artifact was uploaded using a compatible version of toolkit/upload-artifact.\n For more information, visit the GitHub Artifacts FAQ: https://github.com/actions/toolkit/blob/main/packages/artifact/docs/faq.md`)}let S=v.data.artifacts[0];if(v.data.artifacts.length>1){S=v.data.artifacts.sort(((r,i)=>i.id-r.id))[0];u.debug(`More than one artifact found for a single name, returning newest (id: ${S.id})`)}return{artifact:{name:S.name,id:S.id,size:S.size_in_bytes,createdAt:S.created_at?new Date(S.created_at):undefined}}}))}i.getArtifactPublic=getArtifactPublic;function getArtifactInternal(r){return d(this,void 0,void 0,(function*(){const i=(0,B.internalArtifactTwirpClient)();const{workflowRunBackendId:s,workflowJobRunBackendId:a}=(0,b.getBackendIdsFromToken)();const l={workflowRunBackendId:s,workflowJobRunBackendId:a,nameFilter:I.StringValue.create({value:r})};const c=yield i.ListArtifacts(l);if(c.artifacts.length===0){throw new w.ArtifactNotFoundError(`Artifact not found for name: ${r}\n Please ensure that your artifact is not expired and the artifact was uploaded using a compatible version of toolkit/upload-artifact.\n For more information, visit the GitHub Artifacts FAQ: https://github.com/actions/toolkit/blob/main/packages/artifact/docs/faq.md`)}let d=c.artifacts[0];if(c.artifacts.length>1){d=c.artifacts.sort(((r,i)=>Number(i.databaseId)-Number(r.databaseId)))[0];u.debug(`More than one artifact found for a single name, returning newest (id: ${d.databaseId})`)}return{artifact:{name:d.name,id:Number(d.databaseId),size:Number(d.size),createdAt:d.createdAt?I.Timestamp.toDate(d.createdAt):undefined}}}))}i.getArtifactInternal=getArtifactInternal},83956:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.listArtifactsInternal=i.listArtifactsPublic=void 0;const l=s(73949);const c=s(84425);const d=s(99194);const p=s(52367);const A=s(26893);const u=s(52622);const h=s(65857);const g=s(30549);const y=s(87762);const b=s(10141);const C=1e3;const B=100;const I=C/B;function listArtifactsPublic(r,i,s,g,y=false){return a(this,void 0,void 0,(function*(){(0,l.info)(`Fetching artifact list for workflow run ${r} in repository ${i}/${s}`);let a=[];const[b,w]=(0,p.getRetryOptions)(A.defaults);const v={log:undefined,userAgent:(0,d.getUserAgentString)(),previews:undefined,retry:b,request:w};const S=(0,c.getOctokit)(g,v,h.retry,u.requestLog);let Q=1;const{data:N}=yield S.rest.actions.listWorkflowRunArtifacts({owner:i,repo:s,run_id:r,per_page:B,page:Q});let R=Math.ceil(N.total_count/B);const k=N.total_count;if(k>C){(0,l.warning)(`Workflow run ${r} has more than 1000 artifacts. Results will be incomplete as only the first ${C} artifacts will be returned`);R=I}for(const r of N.artifacts){a.push({name:r.name,id:r.id,size:r.size_in_bytes,createdAt:r.created_at?new Date(r.created_at):undefined})}for(Q;Q({name:r.name,id:Number(r.databaseId),size:Number(r.size),createdAt:r.createdAt?b.Timestamp.toDate(r.createdAt):undefined})));if(r){p=filterLatest(p)}(0,l.info)(`Found ${p.length} artifact(s)`);return{artifacts:p}}))}i.listArtifactsInternal=listArtifactsInternal;function filterLatest(r){r.sort(((r,i)=>i.id-r.id));const i=[];const s=new Set;for(const a of r){if(!s.has(a.name)){i.push(a);s.add(a.name)}}return i}},52367:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getRetryOptions=void 0;const d=c(s(73949));const p=5;const A=[400,401,403,404,422];function getRetryOptions(r,i=p,s=A){var a;if(i<=0){return[{enabled:false},r.request]}const l={enabled:true};if(s.length>0){l.doNotRetry=s}const c=Object.assign(Object.assign({},r.request),{retries:i});d.debug(`GitHub client configured with: (retries: ${c.retries}, retry-exempt-status-code: ${(a=l.doNotRetry)!==null&&a!==void 0?a:"octokit default: [400, 401, 403, 404, 422]"})`);return[l,c]}i.getRetryOptions=getRetryOptions},30549:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.internalArtifactTwirpClient=void 0;const l=s(28382);const c=s(35397);const d=s(73949);const p=s(10141);const A=s(94373);const u=s(99194);const h=s(14446);class ArtifactHttpClient{constructor(r,i,s,a){this.maxAttempts=5;this.baseRetryIntervalMilliseconds=3e3;this.retryMultiplier=1.5;const d=(0,A.getRuntimeToken)();this.baseUrl=(0,A.getResultsServiceUrl)();if(i){this.maxAttempts=i}if(s){this.baseRetryIntervalMilliseconds=s}if(a){this.retryMultiplier=a}this.httpClient=new l.HttpClient(r,[new c.BearerCredentialHandler(d)])}request(r,i,s,l){return a(this,void 0,void 0,(function*(){const c=new URL(`/twirp/${r}/${i}`,this.baseUrl).href;(0,d.debug)(`[Request] ${i} ${c}`);const p={"Content-Type":s};try{const{body:r}=yield this.retryableRequest((()=>a(this,void 0,void 0,(function*(){return this.httpClient.post(c,JSON.stringify(l),p)}))));return r}catch(r){throw new Error(`Failed to ${i}: ${r.message}`)}}))}retryableRequest(r){return a(this,void 0,void 0,(function*(){let i=0;let s="";let a="";while(i=200&&r<300}isRetryableHttpStatusCode(r){if(!r)return false;const i=[l.HttpCodes.BadGateway,l.HttpCodes.GatewayTimeout,l.HttpCodes.InternalServerError,l.HttpCodes.ServiceUnavailable,l.HttpCodes.TooManyRequests];return i.includes(r)}sleep(r){return a(this,void 0,void 0,(function*(){return new Promise((i=>setTimeout(i,r)))}))}getExponentialRetryTimeMilliseconds(r){if(r<0){throw new Error("attempt should be a positive integer")}if(r===0){return this.baseRetryIntervalMilliseconds}const i=this.baseRetryIntervalMilliseconds*Math.pow(this.retryMultiplier,r);const s=i*this.retryMultiplier;return Math.trunc(Math.random()*(s-i)+i)}}function internalArtifactTwirpClient(r){const i=new ArtifactHttpClient((0,u.getUserAgentString)(),r===null||r===void 0?void 0:r.maxAttempts,r===null||r===void 0?void 0:r.retryIntervalMs,r===null||r===void 0?void 0:r.retryMultiplier);return new p.ArtifactServiceClientJSON(i)}i.internalArtifactTwirpClient=internalArtifactTwirpClient},94373:function(r,i,s){"use strict";var a=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.getUploadChunkTimeout=i.getConcurrency=i.getGitHubWorkspaceDir=i.isGhes=i.getResultsServiceUrl=i.getRuntimeToken=i.getUploadChunkSize=void 0;const l=a(s(22037));function getUploadChunkSize(){return 8*1024*1024}i.getUploadChunkSize=getUploadChunkSize;function getRuntimeToken(){const r=process.env["ACTIONS_RUNTIME_TOKEN"];if(!r){throw new Error("Unable to get the ACTIONS_RUNTIME_TOKEN env variable")}return r}i.getRuntimeToken=getRuntimeToken;function getResultsServiceUrl(){const r=process.env["ACTIONS_RESULTS_URL"];if(!r){throw new Error("Unable to get the ACTIONS_RESULTS_URL env variable")}return new URL(r).origin}i.getResultsServiceUrl=getResultsServiceUrl;function isGhes(){const r=new URL(process.env["GITHUB_SERVER_URL"]||"https://github.com");const i=r.hostname.trimEnd().toUpperCase();const s=i==="GITHUB.COM";const a=i.endsWith(".GHE.COM");const l=i.endsWith(".LOCALHOST");return!s&&!a&&!l}i.isGhes=isGhes;function getGitHubWorkspaceDir(){const r=process.env["GITHUB_WORKSPACE"];if(!r){throw new Error("Unable to get the GITHUB_WORKSPACE env variable")}return r}i.getGitHubWorkspaceDir=getGitHubWorkspaceDir;function getConcurrency(){const r=l.default.cpus().length;if(r<=4){return 32}const i=16*r;return i>300?300:i}i.getConcurrency=getConcurrency;function getUploadChunkTimeout(){return 3e4}i.getUploadChunkTimeout=getUploadChunkTimeout},14446:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.UsageError=i.NetworkError=i.GHESNotSupportedError=i.ArtifactNotFoundError=i.InvalidResponseError=i.FilesNotFoundError=void 0;class FilesNotFoundError extends Error{constructor(r=[]){let i="No files were found to upload";if(r.length>0){i+=`: ${r.join(", ")}`}super(i);this.files=r;this.name="FilesNotFoundError"}}i.FilesNotFoundError=FilesNotFoundError;class InvalidResponseError extends Error{constructor(r){super(r);this.name="InvalidResponseError"}}i.InvalidResponseError=InvalidResponseError;class ArtifactNotFoundError extends Error{constructor(r="Artifact not found"){super(r);this.name="ArtifactNotFoundError"}}i.ArtifactNotFoundError=ArtifactNotFoundError;class GHESNotSupportedError extends Error{constructor(r="@actions/artifact v2.0.0+, upload-artifact@v4+ and download-artifact@v4+ are not currently supported on GHES."){super(r);this.name="GHESNotSupportedError"}}i.GHESNotSupportedError=GHESNotSupportedError;class NetworkError extends Error{constructor(r){const i=`Unable to make request: ${r}\nIf you are using self-hosted runners, please make sure your runner has access to all GitHub endpoints: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github`;super(i);this.code=r;this.name="NetworkError"}}i.NetworkError=NetworkError;NetworkError.isNetworkErrorCode=r=>{if(!r)return false;return["ECONNRESET","ENOTFOUND","ETIMEDOUT","ECONNREFUSED","EHOSTUNREACH"].includes(r)};class UsageError extends Error{constructor(){const r=`Artifact storage quota has been hit. Unable to upload any new artifacts. Usage is recalculated every 6-12 hours.\nMore info on storage limits: https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions#calculating-minute-and-storage-spending`;super(r);this.name="UsageError"}}i.UsageError=UsageError;UsageError.isUsageErrorMessage=r=>{if(!r)return false;return r.includes("insufficient usage")}},73105:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true})},99194:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getUserAgentString=void 0;const a=s(66843);function getUserAgentString(){return`@actions/artifact-${a.version}`}i.getUserAgentString=getUserAgentString},87762:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.getBackendIdsFromToken=void 0;const p=c(s(73949));const A=s(94373);const u=d(s(32364));const h=new Error("Failed to get backend IDs: The provided JWT token is invalid and/or missing claims");function getBackendIdsFromToken(){const r=(0,A.getRuntimeToken)();const i=(0,u.default)(r);if(!i.scp){throw h}const s=i.scp.split(" ");if(s.length===0){throw h}for(const r of s){const i=r.split(":");if((i===null||i===void 0?void 0:i[0])!=="Actions.Results"){continue}if(i.length!==3){throw h}const s={workflowRunBackendId:i[1],workflowJobRunBackendId:i[2]};p.debug(`Workflow Run Backend ID: ${s.workflowRunBackendId}`);p.debug(`Workflow Job Run Backend ID: ${s.workflowJobRunBackendId}`);return s}throw h}i.getBackendIdsFromToken=getBackendIdsFromToken},31479:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.uploadZipToBlobStorage=void 0;const p=s(27780);const A=s(94373);const u=c(s(73949));const h=c(s(6113));const g=c(s(12781));const y=s(14446);function uploadZipToBlobStorage(r,i){return d(this,void 0,void 0,(function*(){let s=0;let a=Date.now();const l=new AbortController;const chunkTimer=r=>d(this,void 0,void 0,(function*(){return new Promise(((i,s)=>{const c=setInterval((()=>{if(Date.now()-a>r){s(new Error("Upload progress stalled."))}}),r);l.signal.addEventListener("abort",(()=>{clearInterval(c);i()}))}))}));const c=(0,A.getConcurrency)();const b=(0,A.getUploadChunkSize)();const C=new p.BlobClient(r);const B=C.getBlockBlobClient();u.debug(`Uploading artifact zip to blob storage with maxConcurrency: ${c}, bufferSize: ${b}`);const uploadCallback=r=>{u.info(`Uploaded bytes ${r.loadedBytes}`);s=r.loadedBytes;a=Date.now()};const I={blobHTTPHeaders:{blobContentType:"zip"},onProgress:uploadCallback,abortSignal:l.signal};let w=undefined;const v=new g.PassThrough;const S=h.createHash("sha256");i.pipe(v);i.pipe(S).setEncoding("hex");u.info("Beginning upload of artifact content to blob storage");try{yield Promise.race([B.uploadStream(v,b,c,I),chunkTimer((0,A.getUploadChunkTimeout)())])}catch(r){if(y.NetworkError.isNetworkErrorCode(r===null||r===void 0?void 0:r.code)){throw new y.NetworkError(r===null||r===void 0?void 0:r.code)}throw r}finally{l.abort()}u.info("Finished uploading artifact content to blob storage!");S.end();w=S.read();u.info(`SHA256 hash of uploaded artifact zip is ${w}`);if(s===0){u.warning(`No data was uploaded to blob storage. Reported upload byte count is 0.`)}return{uploadSize:s,sha256Hash:w}}))}i.uploadZipToBlobStorage=uploadZipToBlobStorage},82055:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.validateFilePath=i.validateArtifactName=void 0;const a=s(73949);const l=new Map([['"',' Double quote "'],[":"," Colon :"],["<"," Less than <"],[">"," Greater than >"],["|"," Vertical bar |"],["*"," Asterisk *"],["?"," Question mark ?"],["\r"," Carriage return \\r"],["\n"," Line feed \\n"]]);const c=new Map([...l,["\\"," Backslash \\"],["/"," Forward slash /"]]);function validateArtifactName(r){if(!r){throw new Error(`Provided artifact name input during validation is empty`)}for(const[i,s]of c){if(r.includes(i)){throw new Error(`The artifact name is not valid: ${r}. Contains the following character: ${s}\n \nInvalid characters include: ${Array.from(c.values()).toString()}\n \nThese characters are not allowed in the artifact name due to limitations with certain file systems such as NTFS. To maintain file system agnostic behavior, these characters are intentionally not allowed to prevent potential problems with downloads on different file systems.`)}}(0,a.info)(`Artifact name is valid!`)}i.validateArtifactName=validateArtifactName;function validateFilePath(r){if(!r){throw new Error(`Provided file path input during validation is empty`)}for(const[i,s]of l){if(r.includes(i)){throw new Error(`The path for one of the files in artifact is not valid: ${r}. Contains the following character: ${s}\n \nInvalid characters include: ${Array.from(l.values()).toString()}\n \nThe following characters are not allowed in files that are uploaded due to limitations with certain file systems such as NTFS. To maintain file system agnostic behavior, these characters are intentionally not allowed to prevent potential problems with downloads on different file systems.\n `)}}}i.validateFilePath=validateFilePath},19462:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getExpiration=void 0;const d=s(10141);const p=c(s(73949));function getExpiration(r){if(!r){return undefined}const i=getRetentionDays();if(i&&ir.sourcePath?[r.sourcePath]:[])))}const c=(0,y.getBackendIdsFromToken)();const d=(0,h.internalArtifactTwirpClient)();const w={workflowRunBackendId:c.workflowRunBackendId,workflowJobRunBackendId:c.workflowJobRunBackendId,name:r,version:4};const v=(0,A.getExpiration)(a===null||a===void 0?void 0:a.retentionDays);if(v){w.expiresAt=v}const S=yield d.CreateArtifact(w);if(!S.ok){throw new I.InvalidResponseError("CreateArtifact: response from backend was not ok")}const Q=yield(0,C.createZipUploadStream)(l,a===null||a===void 0?void 0:a.compressionLevel);const N=yield(0,b.uploadZipToBlobStorage)(S.signedUploadUrl,Q);const R={workflowRunBackendId:c.workflowRunBackendId,workflowJobRunBackendId:c.workflowJobRunBackendId,name:r,size:N.uploadSize?N.uploadSize.toString():"0"};if(N.sha256Hash){R.hash=B.StringValue.create({value:`sha256:${N.sha256Hash}`})}p.info(`Finalizing artifact upload`);const k=yield d.FinalizeArtifact(R);if(!k.ok){throw new I.InvalidResponseError("FinalizeArtifact: response from backend was not ok")}const T=BigInt(k.artifactId);p.info(`Artifact ${r}.zip successfully finalized. Artifact ID ${T}`);return{size:N.uploadSize,id:Number(T)}}))}i.uploadArtifact=uploadArtifact},91225:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getUploadZipSpecification=i.validateRootDirectory=void 0;const d=c(s(57147));const p=s(73949);const A=s(71017);const u=s(82055);function validateRootDirectory(r){if(!d.existsSync(r)){throw new Error(`The provided rootDirectory ${r} does not exist`)}if(!d.statSync(r).isDirectory()){throw new Error(`The provided rootDirectory ${r} is not a valid directory`)}(0,p.info)(`Root directory input is valid!`)}i.validateRootDirectory=validateRootDirectory;function getUploadZipSpecification(r,i){const s=[];i=(0,A.normalize)(i);i=(0,A.resolve)(i);for(let a of r){if(!d.existsSync(a)){throw new Error(`File ${a} does not exist`)}if(!d.statSync(a).isDirectory()){a=(0,A.normalize)(a);a=(0,A.resolve)(a);if(!a.startsWith(i)){throw new Error(`The rootDirectory: ${i} is not a parent directory of the file: ${a}`)}const r=a.replace(i,"");(0,u.validateFilePath)(r);s.push({sourcePath:a,destinationPath:r})}else{const r=a.replace(i,"");(0,u.validateFilePath)(r);s.push({sourcePath:null,destinationPath:r})}}return s}i.getUploadZipSpecification=getUploadZipSpecification},44671:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.createZipUploadStream=i.ZipUploadStream=i.DEFAULT_COMPRESSION_LEVEL=void 0;const p=c(s(12781));const A=c(s(20153));const u=c(s(73949));const h=s(94373);i.DEFAULT_COMPRESSION_LEVEL=6;class ZipUploadStream extends p.Transform{constructor(r){super({highWaterMark:r})}_transform(r,i,s){s(null,r)}}i.ZipUploadStream=ZipUploadStream;function createZipUploadStream(r,s=i.DEFAULT_COMPRESSION_LEVEL){return d(this,void 0,void 0,(function*(){u.debug(`Creating Artifact archive with compressionLevel: ${s}`);const i=A.create("zip",{highWaterMark:(0,h.getUploadChunkSize)(),zlib:{level:s}});i.on("error",zipErrorCallback);i.on("warning",zipWarningCallback);i.on("finish",zipFinishCallback);i.on("end",zipEndCallback);for(const s of r){if(s.sourcePath!==null){i.file(s.sourcePath,{name:s.destinationPath})}else{i.append("",{name:s.destinationPath})}}const a=(0,h.getUploadChunkSize)();const l=new ZipUploadStream(a);u.debug(`Zip write high watermark value ${l.writableHighWaterMark}`);u.debug(`Zip read high watermark value ${l.readableHighWaterMark}`);i.pipe(l);i.finalize();return l}))}i.createZipUploadStream=createZipUploadStream;const zipErrorCallback=r=>{u.error("An error has occurred while creating the zip file for upload");u.info(r);throw new Error("An error has occurred during zip creation for the artifact")};const zipWarningCallback=r=>{if(r.code==="ENOENT"){u.warning("ENOENT warning during artifact zip creation. No such file or directory");u.info(r)}else{u.warning(`A non-blocking warning has occurred during artifact zip creation: ${r.code}`);u.info(r)}};const zipFinishCallback=()=>{u.debug("Zip stream for upload has finished.")};const zipEndCallback=()=>{u.debug("Zip stream for upload has ended.")}},38911:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.issue=i.issueCommand=void 0;const d=c(s(22037));const p=s(46657);function issueCommand(r,i,s){const a=new Command(r,i,s);process.stdout.write(a.toString()+d.EOL)}i.issueCommand=issueCommand;function issue(r,i=""){issueCommand(r,{},i)}i.issue=issue;const A="::";class Command{constructor(r,i,s){if(!r){r="missing.command"}this.command=r;this.properties=i;this.message=s}toString(){let r=A+this.command;if(this.properties&&Object.keys(this.properties).length>0){r+=" ";let i=true;for(const s in this.properties){if(this.properties.hasOwnProperty(s)){const a=this.properties[s];if(a){if(i){i=false}else{r+=","}r+=`${s}=${escapeProperty(a)}`}}}}r+=`${A}${escapeData(this.message)}`;return r}}function escapeData(r){return p.toCommandValue(r).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(r){return p.toCommandValue(r).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},73949:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.getIDToken=i.getState=i.saveState=i.group=i.endGroup=i.startGroup=i.info=i.notice=i.warning=i.error=i.debug=i.isDebug=i.setFailed=i.setCommandEcho=i.setOutput=i.getBooleanInput=i.getMultilineInput=i.getInput=i.addPath=i.setSecret=i.exportVariable=i.ExitCode=void 0;const p=s(38911);const A=s(10807);const u=s(46657);const h=c(s(22037));const g=c(s(71017));const y=s(67101);var b;(function(r){r[r["Success"]=0]="Success";r[r["Failure"]=1]="Failure"})(b=i.ExitCode||(i.ExitCode={}));function exportVariable(r,i){const s=u.toCommandValue(i);process.env[r]=s;const a=process.env["GITHUB_ENV"]||"";if(a){return A.issueFileCommand("ENV",A.prepareKeyValueMessage(r,i))}p.issueCommand("set-env",{name:r},s)}i.exportVariable=exportVariable;function setSecret(r){p.issueCommand("add-mask",{},r)}i.setSecret=setSecret;function addPath(r){const i=process.env["GITHUB_PATH"]||"";if(i){A.issueFileCommand("PATH",r)}else{p.issueCommand("add-path",{},r)}process.env["PATH"]=`${r}${g.delimiter}${process.env["PATH"]}`}i.addPath=addPath;function getInput(r,i){const s=process.env[`INPUT_${r.replace(/ /g,"_").toUpperCase()}`]||"";if(i&&i.required&&!s){throw new Error(`Input required and not supplied: ${r}`)}if(i&&i.trimWhitespace===false){return s}return s.trim()}i.getInput=getInput;function getMultilineInput(r,i){const s=getInput(r,i).split("\n").filter((r=>r!==""));if(i&&i.trimWhitespace===false){return s}return s.map((r=>r.trim()))}i.getMultilineInput=getMultilineInput;function getBooleanInput(r,i){const s=["true","True","TRUE"];const a=["false","False","FALSE"];const l=getInput(r,i);if(s.includes(l))return true;if(a.includes(l))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${r}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}i.getBooleanInput=getBooleanInput;function setOutput(r,i){const s=process.env["GITHUB_OUTPUT"]||"";if(s){return A.issueFileCommand("OUTPUT",A.prepareKeyValueMessage(r,i))}process.stdout.write(h.EOL);p.issueCommand("set-output",{name:r},u.toCommandValue(i))}i.setOutput=setOutput;function setCommandEcho(r){p.issue("echo",r?"on":"off")}i.setCommandEcho=setCommandEcho;function setFailed(r){process.exitCode=b.Failure;error(r)}i.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}i.isDebug=isDebug;function debug(r){p.issueCommand("debug",{},r)}i.debug=debug;function error(r,i={}){p.issueCommand("error",u.toCommandProperties(i),r instanceof Error?r.toString():r)}i.error=error;function warning(r,i={}){p.issueCommand("warning",u.toCommandProperties(i),r instanceof Error?r.toString():r)}i.warning=warning;function notice(r,i={}){p.issueCommand("notice",u.toCommandProperties(i),r instanceof Error?r.toString():r)}i.notice=notice;function info(r){process.stdout.write(r+h.EOL)}i.info=info;function startGroup(r){p.issue("group",r)}i.startGroup=startGroup;function endGroup(){p.issue("endgroup")}i.endGroup=endGroup;function group(r,i){return d(this,void 0,void 0,(function*(){startGroup(r);let s;try{s=yield i()}finally{endGroup()}return s}))}i.group=group;function saveState(r,i){const s=process.env["GITHUB_STATE"]||"";if(s){return A.issueFileCommand("STATE",A.prepareKeyValueMessage(r,i))}p.issueCommand("save-state",{name:r},u.toCommandValue(i))}i.saveState=saveState;function getState(r){return process.env[`STATE_${r}`]||""}i.getState=getState;function getIDToken(r){return d(this,void 0,void 0,(function*(){return yield y.OidcClient.getIDToken(r)}))}i.getIDToken=getIDToken;var C=s(43801);Object.defineProperty(i,"summary",{enumerable:true,get:function(){return C.summary}});var B=s(43801);Object.defineProperty(i,"markdownSummary",{enumerable:true,get:function(){return B.markdownSummary}});var I=s(58169);Object.defineProperty(i,"toPosixPath",{enumerable:true,get:function(){return I.toPosixPath}});Object.defineProperty(i,"toWin32Path",{enumerable:true,get:function(){return I.toWin32Path}});Object.defineProperty(i,"toPlatformPath",{enumerable:true,get:function(){return I.toPlatformPath}})},10807:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.prepareKeyValueMessage=i.issueFileCommand=void 0;const d=c(s(57147));const p=c(s(22037));const A=s(16328);const u=s(46657);function issueFileCommand(r,i){const s=process.env[`GITHUB_${r}`];if(!s){throw new Error(`Unable to find environment variable for file command ${r}`)}if(!d.existsSync(s)){throw new Error(`Missing file at path: ${s}`)}d.appendFileSync(s,`${u.toCommandValue(i)}${p.EOL}`,{encoding:"utf8"})}i.issueFileCommand=issueFileCommand;function prepareKeyValueMessage(r,i){const s=`ghadelimiter_${A.v4()}`;const a=u.toCommandValue(i);if(r.includes(s)){throw new Error(`Unexpected input: name should not contain the delimiter "${s}"`)}if(a.includes(s)){throw new Error(`Unexpected input: value should not contain the delimiter "${s}"`)}return`${r}<<${s}${p.EOL}${a}${p.EOL}${s}`}i.prepareKeyValueMessage=prepareKeyValueMessage},67101:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.OidcClient=void 0;const l=s(28382);const c=s(35397);const d=s(73949);class OidcClient{static createHttpClient(r=true,i=10){const s={allowRetries:r,maxRetries:i};return new l.HttpClient("actions/oidc-client",[new c.BearerCredentialHandler(OidcClient.getRequestToken())],s)}static getRequestToken(){const r=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!r){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return r}static getIDTokenUrl(){const r=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!r){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return r}static getCall(r){var i;return a(this,void 0,void 0,(function*(){const s=OidcClient.createHttpClient();const a=yield s.getJson(r).catch((r=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${r.statusCode}\n \n Error Message: ${r.message}`)}));const l=(i=a.result)===null||i===void 0?void 0:i.value;if(!l){throw new Error("Response json body do not have ID Token field")}return l}))}static getIDToken(r){return a(this,void 0,void 0,(function*(){try{let i=OidcClient.getIDTokenUrl();if(r){const s=encodeURIComponent(r);i=`${i}&audience=${s}`}d.debug(`ID token url is ${i}`);const s=yield OidcClient.getCall(i);d.setSecret(s);return s}catch(r){throw new Error(`Error message: ${r.message}`)}}))}}i.OidcClient=OidcClient},58169:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.toPlatformPath=i.toWin32Path=i.toPosixPath=void 0;const d=c(s(71017));function toPosixPath(r){return r.replace(/[\\]/g,"/")}i.toPosixPath=toPosixPath;function toWin32Path(r){return r.replace(/[/]/g,"\\")}i.toWin32Path=toWin32Path;function toPlatformPath(r){return r.replace(/[/\\]/g,d.sep)}i.toPlatformPath=toPlatformPath},43801:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.summary=i.markdownSummary=i.SUMMARY_DOCS_URL=i.SUMMARY_ENV_VAR=void 0;const l=s(22037);const c=s(57147);const{access:d,appendFile:p,writeFile:A}=c.promises;i.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";i.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return a(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const r=process.env[i.SUMMARY_ENV_VAR];if(!r){throw new Error(`Unable to find environment variable for $${i.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield d(r,c.constants.R_OK|c.constants.W_OK)}catch(i){throw new Error(`Unable to access summary file: '${r}'. Check if the file has correct read/write permissions.`)}this._filePath=r;return this._filePath}))}wrap(r,i,s={}){const a=Object.entries(s).map((([r,i])=>` ${r}="${i}"`)).join("");if(!i){return`<${r}${a}>`}return`<${r}${a}>${i}`}write(r){return a(this,void 0,void 0,(function*(){const i=!!(r===null||r===void 0?void 0:r.overwrite);const s=yield this.filePath();const a=i?A:p;yield a(s,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return a(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(r,i=false){this._buffer+=r;return i?this.addEOL():this}addEOL(){return this.addRaw(l.EOL)}addCodeBlock(r,i){const s=Object.assign({},i&&{lang:i});const a=this.wrap("pre",this.wrap("code",r),s);return this.addRaw(a).addEOL()}addList(r,i=false){const s=i?"ol":"ul";const a=r.map((r=>this.wrap("li",r))).join("");const l=this.wrap(s,a);return this.addRaw(l).addEOL()}addTable(r){const i=r.map((r=>{const i=r.map((r=>{if(typeof r==="string"){return this.wrap("td",r)}const{header:i,data:s,colspan:a,rowspan:l}=r;const c=i?"th":"td";const d=Object.assign(Object.assign({},a&&{colspan:a}),l&&{rowspan:l});return this.wrap(c,s,d)})).join("");return this.wrap("tr",i)})).join("");const s=this.wrap("table",i);return this.addRaw(s).addEOL()}addDetails(r,i){const s=this.wrap("details",this.wrap("summary",r)+i);return this.addRaw(s).addEOL()}addImage(r,i,s){const{width:a,height:l}=s||{};const c=Object.assign(Object.assign({},a&&{width:a}),l&&{height:l});const d=this.wrap("img",null,Object.assign({src:r,alt:i},c));return this.addRaw(d).addEOL()}addHeading(r,i){const s=`h${i}`;const a=["h1","h2","h3","h4","h5","h6"].includes(s)?s:"h1";const l=this.wrap(a,r);return this.addRaw(l).addEOL()}addSeparator(){const r=this.wrap("hr",null);return this.addRaw(r).addEOL()}addBreak(){const r=this.wrap("br",null);return this.addRaw(r).addEOL()}addQuote(r,i){const s=Object.assign({},i&&{cite:i});const a=this.wrap("blockquote",r,s);return this.addRaw(a).addEOL()}addLink(r,i){const s=this.wrap("a",r,{href:i});return this.addRaw(s).addEOL()}}const u=new Summary;i.markdownSummary=u;i.summary=u},46657:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.toCommandProperties=i.toCommandValue=void 0;function toCommandValue(r){if(r===null||r===undefined){return""}else if(typeof r==="string"||r instanceof String){return r}return JSON.stringify(r)}i.toCommandValue=toCommandValue;function toCommandProperties(r){if(!Object.keys(r).length){return{}}return{title:r.title,file:r.file,line:r.startLine,endLine:r.endLine,col:r.startColumn,endColumn:r.endColumn}}i.toCommandProperties=toCommandProperties},85420:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Context=void 0;const a=s(57147);const l=s(22037);class Context{constructor(){var r,i,s;this.payload={};if(process.env.GITHUB_EVENT_PATH){if(a.existsSync(process.env.GITHUB_EVENT_PATH)){this.payload=JSON.parse(a.readFileSync(process.env.GITHUB_EVENT_PATH,{encoding:"utf8"}))}else{const r=process.env.GITHUB_EVENT_PATH;process.stdout.write(`GITHUB_EVENT_PATH ${r} does not exist${l.EOL}`)}}this.eventName=process.env.GITHUB_EVENT_NAME;this.sha=process.env.GITHUB_SHA;this.ref=process.env.GITHUB_REF;this.workflow=process.env.GITHUB_WORKFLOW;this.action=process.env.GITHUB_ACTION;this.actor=process.env.GITHUB_ACTOR;this.job=process.env.GITHUB_JOB;this.runNumber=parseInt(process.env.GITHUB_RUN_NUMBER,10);this.runId=parseInt(process.env.GITHUB_RUN_ID,10);this.apiUrl=(r=process.env.GITHUB_API_URL)!==null&&r!==void 0?r:`https://api.github.com`;this.serverUrl=(i=process.env.GITHUB_SERVER_URL)!==null&&i!==void 0?i:`https://github.com`;this.graphqlUrl=(s=process.env.GITHUB_GRAPHQL_URL)!==null&&s!==void 0?s:`https://api.github.com/graphql`}get issue(){const r=this.payload;return Object.assign(Object.assign({},this.repo),{number:(r.issue||r.pull_request||r).number})}get repo(){if(process.env.GITHUB_REPOSITORY){const[r,i]=process.env.GITHUB_REPOSITORY.split("/");return{owner:r,repo:i}}if(this.payload.repository){return{owner:this.payload.repository.owner.login,repo:this.payload.repository.name}}throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'")}}i.Context=Context},84425:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getOctokit=i.context=void 0;const d=c(s(85420));const p=s(26893);i.context=new d.Context;function getOctokit(r,i,...s){const a=p.GitHub.plugin(...s);return new a(p.getOctokitOptions(r,i))}i.getOctokit=getOctokit},84522:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getApiBaseUrl=i.getProxyAgent=i.getAuthString=void 0;const d=c(s(28382));function getAuthString(r,i){if(!r&&!i.auth){throw new Error("Parameter token or opts.auth is required")}else if(r&&i.auth){throw new Error("Parameters token and opts.auth may not both be specified")}return typeof i.auth==="string"?i.auth:`token ${r}`}i.getAuthString=getAuthString;function getProxyAgent(r){const i=new d.HttpClient;return i.getAgent(r)}i.getProxyAgent=getProxyAgent;function getApiBaseUrl(){return process.env["GITHUB_API_URL"]||"https://api.github.com"}i.getApiBaseUrl=getApiBaseUrl},26893:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getOctokitOptions=i.GitHub=i.defaults=i.context=void 0;const d=c(s(85420));const p=c(s(84522));const A=s(22205);const u=s(47874);const h=s(25485);i.context=new d.Context;const g=p.getApiBaseUrl();i.defaults={baseUrl:g,request:{agent:p.getProxyAgent(g)}};i.GitHub=A.Octokit.plugin(u.restEndpointMethods,h.paginateRest).defaults(i.defaults);function getOctokitOptions(r,i){const s=Object.assign({},i||{});const a=p.getAuthString(r,s);if(a){s.auth=a}return s}i.getOctokitOptions=getOctokitOptions},10623:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.hashFiles=i.create=void 0;const l=s(1630);const c=s(91161);function create(r,i){return a(this,void 0,void 0,(function*(){return yield l.DefaultGlobber.create(r,i)}))}i.create=create;function hashFiles(r,i="",s,l=false){return a(this,void 0,void 0,(function*(){let a=true;if(s&&typeof s.followSymbolicLinks==="boolean"){a=s.followSymbolicLinks}const d=yield create(r,{followSymbolicLinks:a});return(0,c.hashFiles)(d,i,l)}))}i.hashFiles=hashFiles},34671:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.getOptions=void 0;const d=c(s(73949));function getOptions(r){const i={followSymbolicLinks:true,implicitDescendants:true,matchDirectories:true,omitBrokenSymbolicLinks:true,excludeHiddenFiles:false};if(r){if(typeof r.followSymbolicLinks==="boolean"){i.followSymbolicLinks=r.followSymbolicLinks;d.debug(`followSymbolicLinks '${i.followSymbolicLinks}'`)}if(typeof r.implicitDescendants==="boolean"){i.implicitDescendants=r.implicitDescendants;d.debug(`implicitDescendants '${i.implicitDescendants}'`)}if(typeof r.matchDirectories==="boolean"){i.matchDirectories=r.matchDirectories;d.debug(`matchDirectories '${i.matchDirectories}'`)}if(typeof r.omitBrokenSymbolicLinks==="boolean"){i.omitBrokenSymbolicLinks=r.omitBrokenSymbolicLinks;d.debug(`omitBrokenSymbolicLinks '${i.omitBrokenSymbolicLinks}'`)}if(typeof r.excludeHiddenFiles==="boolean"){i.excludeHiddenFiles=r.excludeHiddenFiles;d.debug(`excludeHiddenFiles '${i.excludeHiddenFiles}'`)}}return i}i.getOptions=getOptions},1630:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var p=this&&this.__asyncValues||function(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r[Symbol.asyncIterator],s;return i?i.call(r):(r=typeof __values==="function"?__values(r):r[Symbol.iterator](),s={},verb("next"),verb("throw"),verb("return"),s[Symbol.asyncIterator]=function(){return this},s);function verb(i){s[i]=r[i]&&function(s){return new Promise((function(a,l){s=r[i](s),settle(a,l,s.done,s.value)}))}}function settle(r,i,s,a){Promise.resolve(a).then((function(i){r({value:i,done:s})}),i)}};var A=this&&this.__await||function(r){return this instanceof A?(this.v=r,this):new A(r)};var u=this&&this.__asyncGenerator||function(r,i,s){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var a=s.apply(r,i||[]),l,c=[];return l={},verb("next"),verb("throw"),verb("return"),l[Symbol.asyncIterator]=function(){return this},l;function verb(r){if(a[r])l[r]=function(i){return new Promise((function(s,a){c.push([r,i,s,a])>1||resume(r,i)}))}}function resume(r,i){try{step(a[r](i))}catch(r){settle(c[0][3],r)}}function step(r){r.value instanceof A?Promise.resolve(r.value.v).then(fulfill,reject):settle(c[0][2],r)}function fulfill(r){resume("next",r)}function reject(r){resume("throw",r)}function settle(r,i){if(r(i),c.shift(),c.length)resume(c[0][0],c[0][1])}};Object.defineProperty(i,"__esModule",{value:true});i.DefaultGlobber=void 0;const h=c(s(73949));const g=c(s(57147));const y=c(s(34671));const b=c(s(71017));const C=c(s(8182));const B=s(24280);const I=s(6259);const w=s(58477);const v=process.platform==="win32";class DefaultGlobber{constructor(r){this.patterns=[];this.searchPaths=[];this.options=y.getOptions(r)}getSearchPaths(){return this.searchPaths.slice()}glob(){var r,i,s,a;return d(this,void 0,void 0,(function*(){const l=[];try{for(var c=true,d=p(this.globGenerator()),A;A=yield d.next(),r=A.done,!r;c=true){a=A.value;c=false;const r=a;l.push(r)}}catch(r){i={error:r}}finally{try{if(!c&&!r&&(s=d.return))yield s.call(d)}finally{if(i)throw i.error}}return l}))}globGenerator(){return u(this,arguments,(function*globGenerator_1(){const r=y.getOptions(this.options);const i=[];for(const s of this.patterns){i.push(s);if(r.implicitDescendants&&(s.trailingSeparator||s.segments[s.segments.length-1]!=="**")){i.push(new I.Pattern(s.negate,true,s.segments.concat("**")))}}const s=[];for(const r of C.getSearchPaths(i)){h.debug(`Search path '${r}'`);try{yield A(g.promises.lstat(r))}catch(r){if(r.code==="ENOENT"){continue}throw r}s.unshift(new w.SearchState(r,1))}const a=[];while(s.length){const l=s.pop();const c=C.match(i,l.path);const d=!!c||C.partialMatch(i,l.path);if(!c&&!d){continue}const p=yield A(DefaultGlobber.stat(l,r,a));if(!p){continue}if(r.excludeHiddenFiles&&b.basename(l.path).match(/^\./)){continue}if(p.isDirectory()){if(c&B.MatchKind.Directory&&r.matchDirectories){yield yield A(l.path)}else if(!d){continue}const i=l.level+1;const a=(yield A(g.promises.readdir(l.path))).map((r=>new w.SearchState(b.join(l.path,r),i)));s.push(...a.reverse())}else if(c&B.MatchKind.File){yield yield A(l.path)}}}))}static create(r,i){return d(this,void 0,void 0,(function*(){const s=new DefaultGlobber(i);if(v){r=r.replace(/\r\n/g,"\n");r=r.replace(/\r/g,"\n")}const a=r.split("\n").map((r=>r.trim()));for(const r of a){if(!r||r.startsWith("#")){continue}else{s.patterns.push(new I.Pattern(r))}}s.searchPaths.push(...C.getSearchPaths(s.patterns));return s}))}static stat(r,i,s){return d(this,void 0,void 0,(function*(){let a;if(i.followSymbolicLinks){try{a=yield g.promises.stat(r.path)}catch(s){if(s.code==="ENOENT"){if(i.omitBrokenSymbolicLinks){h.debug(`Broken symlink '${r.path}'`);return undefined}throw new Error(`No information found for the path '${r.path}'. This may indicate a broken symbolic link.`)}throw s}}else{a=yield g.promises.lstat(r.path)}if(a.isDirectory()&&i.followSymbolicLinks){const i=yield g.promises.realpath(r.path);while(s.length>=r.level){s.pop()}if(s.some((r=>r===i))){h.debug(`Symlink cycle detected for path '${r.path}' and realpath '${i}'`);return undefined}s.push(i)}return a}))}}i.DefaultGlobber=DefaultGlobber},91161:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var p=this&&this.__asyncValues||function(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r[Symbol.asyncIterator],s;return i?i.call(r):(r=typeof __values==="function"?__values(r):r[Symbol.iterator](),s={},verb("next"),verb("throw"),verb("return"),s[Symbol.asyncIterator]=function(){return this},s);function verb(i){s[i]=r[i]&&function(s){return new Promise((function(a,l){s=r[i](s),settle(a,l,s.done,s.value)}))}}function settle(r,i,s,a){Promise.resolve(a).then((function(i){r({value:i,done:s})}),i)}};Object.defineProperty(i,"__esModule",{value:true});i.hashFiles=void 0;const A=c(s(6113));const u=c(s(73949));const h=c(s(57147));const g=c(s(12781));const y=c(s(73837));const b=c(s(71017));function hashFiles(r,i,s=false){var a,l,c,C;var B;return d(this,void 0,void 0,(function*(){const d=s?u.info:u.debug;let I=false;const w=i?i:(B=process.env["GITHUB_WORKSPACE"])!==null&&B!==void 0?B:process.cwd();const v=A.createHash("sha256");let S=0;try{for(var Q=true,N=p(r.globGenerator()),R;R=yield N.next(),a=R.done,!a;Q=true){C=R.value;Q=false;const r=C;d(r);if(!r.startsWith(`${w}${b.sep}`)){d(`Ignore '${r}' since it is not under GITHUB_WORKSPACE.`);continue}if(h.statSync(r).isDirectory()){d(`Skip directory '${r}'.`);continue}const i=A.createHash("sha256");const s=y.promisify(g.pipeline);yield s(h.createReadStream(r),i);v.write(i.digest());S++;if(!I){I=true}}}catch(r){l={error:r}}finally{try{if(!Q&&!a&&(c=N.return))yield c.call(N)}finally{if(l)throw l.error}}v.end();if(I){d(`Found ${S} files to hash.`);return v.digest("hex")}else{d(`No matches found for glob`);return""}}))}i.hashFiles=hashFiles},24280:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.MatchKind=void 0;var s;(function(r){r[r["None"]=0]="None";r[r["Directory"]=1]="Directory";r[r["File"]=2]="File";r[r["All"]=3]="All"})(s||(i.MatchKind=s={}))},74481:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.safeTrimTrailingSeparator=i.normalizeSeparators=i.hasRoot=i.hasAbsoluteRoot=i.ensureAbsoluteRoot=i.dirname=void 0;const p=c(s(71017));const A=d(s(39491));const u=process.platform==="win32";function dirname(r){r=safeTrimTrailingSeparator(r);if(u&&/^\\\\[^\\]+(\\[^\\]+)?$/.test(r)){return r}let i=p.dirname(r);if(u&&/^\\\\[^\\]+\\[^\\]+\\$/.test(i)){i=safeTrimTrailingSeparator(i)}return i}i.dirname=dirname;function ensureAbsoluteRoot(r,i){(0,A.default)(r,`ensureAbsoluteRoot parameter 'root' must not be empty`);(0,A.default)(i,`ensureAbsoluteRoot parameter 'itemPath' must not be empty`);if(hasAbsoluteRoot(i)){return i}if(u){if(i.match(/^[A-Z]:[^\\/]|^[A-Z]:$/i)){let r=process.cwd();(0,A.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`);if(i[0].toUpperCase()===r[0].toUpperCase()){if(i.length===2){return`${i[0]}:\\${r.substr(3)}`}else{if(!r.endsWith("\\")){r+="\\"}return`${i[0]}:\\${r.substr(3)}${i.substr(2)}`}}else{return`${i[0]}:\\${i.substr(2)}`}}else if(normalizeSeparators(i).match(/^\\$|^\\[^\\]/)){const r=process.cwd();(0,A.default)(r.match(/^[A-Z]:\\/i),`Expected current directory to start with an absolute drive root. Actual '${r}'`);return`${r[0]}:\\${i.substr(1)}`}}(0,A.default)(hasAbsoluteRoot(r),`ensureAbsoluteRoot parameter 'root' must have an absolute root`);if(r.endsWith("/")||u&&r.endsWith("\\")){}else{r+=p.sep}return r+i}i.ensureAbsoluteRoot=ensureAbsoluteRoot;function hasAbsoluteRoot(r){(0,A.default)(r,`hasAbsoluteRoot parameter 'itemPath' must not be empty`);r=normalizeSeparators(r);if(u){return r.startsWith("\\\\")||/^[A-Z]:\\/i.test(r)}return r.startsWith("/")}i.hasAbsoluteRoot=hasAbsoluteRoot;function hasRoot(r){(0,A.default)(r,`isRooted parameter 'itemPath' must not be empty`);r=normalizeSeparators(r);if(u){return r.startsWith("\\")||/^[A-Z]:/i.test(r)}return r.startsWith("/")}i.hasRoot=hasRoot;function normalizeSeparators(r){r=r||"";if(u){r=r.replace(/\//g,"\\");const i=/^\\\\+[^\\]/.test(r);return(i?"\\":"")+r.replace(/\\\\+/g,"\\")}return r.replace(/\/\/+/g,"/")}i.normalizeSeparators=normalizeSeparators;function safeTrimTrailingSeparator(r){if(!r){return""}r=normalizeSeparators(r);if(!r.endsWith(p.sep)){return r}if(r===p.sep){return r}if(u&&/^[A-Z]:\\$/i.test(r)){return r}return r.substr(0,r.length-1)}i.safeTrimTrailingSeparator=safeTrimTrailingSeparator},11722:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.Path=void 0;const p=c(s(71017));const A=c(s(74481));const u=d(s(39491));const h=process.platform==="win32";class Path{constructor(r){this.segments=[];if(typeof r==="string"){(0,u.default)(r,`Parameter 'itemPath' must not be empty`);r=A.safeTrimTrailingSeparator(r);if(!A.hasRoot(r)){this.segments=r.split(p.sep)}else{let i=r;let s=A.dirname(i);while(s!==i){const r=p.basename(i);this.segments.unshift(r);i=s;s=A.dirname(i)}this.segments.unshift(i)}}else{(0,u.default)(r.length>0,`Parameter 'itemPath' must not be an empty array`);for(let i=0;i!r.negate));const i={};for(const s of r){const r=A?s.searchPath.toUpperCase():s.searchPath;i[r]="candidate"}const s=[];for(const a of r){const r=A?a.searchPath.toUpperCase():a.searchPath;if(i[r]==="included"){continue}let l=false;let c=r;let p=d.dirname(c);while(p!==c){if(i[p]){l=true;break}c=p;p=d.dirname(c)}if(!l){s.push(a.searchPath);i[r]="included"}}return s}i.getSearchPaths=getSearchPaths;function match(r,i){let s=p.MatchKind.None;for(const a of r){if(a.negate){s&=~a.match(i)}else{s|=a.match(i)}}return s}i.match=match;function partialMatch(r,i){return r.some((r=>!r.negate&&r.partialMatch(i)))}i.partialMatch=partialMatch},6259:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.Pattern=void 0;const p=c(s(22037));const A=c(s(71017));const u=c(s(74481));const h=d(s(39491));const g=s(8039);const y=s(24280);const b=s(11722);const C=process.platform==="win32";class Pattern{constructor(r,i=false,s,a){this.negate=false;let l;if(typeof r==="string"){l=r.trim()}else{s=s||[];(0,h.default)(s.length,`Parameter 'segments' must not empty`);const i=Pattern.getLiteral(s[0]);(0,h.default)(i&&u.hasAbsoluteRoot(i),`Parameter 'segments' first element must be a root path`);l=new b.Path(s).toString().trim();if(r){l=`!${l}`}}while(l.startsWith("!")){this.negate=!this.negate;l=l.substr(1).trim()}l=Pattern.fixupPattern(l,a);this.segments=new b.Path(l).segments;this.trailingSeparator=u.normalizeSeparators(l).endsWith(A.sep);l=u.safeTrimTrailingSeparator(l);let c=false;const d=this.segments.map((r=>Pattern.getLiteral(r))).filter((r=>!c&&!(c=r==="")));this.searchPath=new b.Path(d).toString();this.rootRegExp=new RegExp(Pattern.regExpEscape(d[0]),C?"i":"");this.isImplicitPattern=i;const p={dot:true,nobrace:true,nocase:C,nocomment:true,noext:true,nonegate:true};l=C?l.replace(/\\/g,"/"):l;this.minimatch=new g.Minimatch(l,p)}match(r){if(this.segments[this.segments.length-1]==="**"){r=u.normalizeSeparators(r);if(!r.endsWith(A.sep)&&this.isImplicitPattern===false){r=`${r}${A.sep}`}}else{r=u.safeTrimTrailingSeparator(r)}if(this.minimatch.match(r)){return this.trailingSeparator?y.MatchKind.Directory:y.MatchKind.All}return y.MatchKind.None}partialMatch(r){r=u.safeTrimTrailingSeparator(r);if(u.dirname(r)===r){return this.rootRegExp.test(r)}return this.minimatch.matchOne(r.split(C?/\\+/:/\/+/),this.minimatch.set[0],true)}static globEscape(r){return(C?r:r.replace(/\\/g,"\\\\")).replace(/(\[)(?=[^/]+\])/g,"[[]").replace(/\?/g,"[?]").replace(/\*/g,"[*]")}static fixupPattern(r,i){(0,h.default)(r,"pattern cannot be empty");const s=new b.Path(r).segments.map((r=>Pattern.getLiteral(r)));(0,h.default)(s.every(((r,i)=>(r!=="."||i===0)&&r!=="..")),`Invalid pattern '${r}'. Relative pathing '.' and '..' is not allowed.`);(0,h.default)(!u.hasRoot(r)||s[0],`Invalid pattern '${r}'. Root segment must not contain globs.`);r=u.normalizeSeparators(r);if(r==="."||r.startsWith(`.${A.sep}`)){r=Pattern.globEscape(process.cwd())+r.substr(1)}else if(r==="~"||r.startsWith(`~${A.sep}`)){i=i||p.homedir();(0,h.default)(i,"Unable to determine HOME directory");(0,h.default)(u.hasAbsoluteRoot(i),`Expected HOME directory to be a rooted path. Actual '${i}'`);r=Pattern.globEscape(i)+r.substr(1)}else if(C&&(r.match(/^[A-Z]:$/i)||r.match(/^[A-Z]:[^\\]/i))){let i=u.ensureAbsoluteRoot("C:\\dummy-root",r.substr(0,2));if(r.length>2&&!i.endsWith("\\")){i+="\\"}r=Pattern.globEscape(i)+r.substr(2)}else if(C&&(r==="\\"||r.match(/^\\[^\\]/))){let i=u.ensureAbsoluteRoot("C:\\dummy-root","\\");if(!i.endsWith("\\")){i+="\\"}r=Pattern.globEscape(i)+r.substr(1)}else{r=u.ensureAbsoluteRoot(Pattern.globEscape(process.cwd()),r)}return u.normalizeSeparators(r)}static getLiteral(r){let i="";for(let s=0;s=0){if(a.length>1){return""}if(a){i+=a;s=l;continue}}}i+=a}return i}static regExpEscape(r){return r.replace(/[[\\^$.|?*+()]/g,"\\$&")}}i.Pattern=Pattern},58477:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.SearchState=void 0;class SearchState{constructor(r,i){this.path=r;this.level=i}}i.SearchState=SearchState},35397:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.PersonalAccessTokenCredentialHandler=i.BearerCredentialHandler=i.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(r,i){this.username=r;this.password=i}prepareRequest(r){if(!r.headers){throw Error("The request has no headers")}r.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return s(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}i.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(r){this.token=r}prepareRequest(r){if(!r.headers){throw Error("The request has no headers")}r.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return s(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}i.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(r){this.token=r}prepareRequest(r){if(!r.headers){throw Error("The request has no headers")}r.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return s(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}i.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},28382:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.HttpClient=i.isHttps=i.HttpClientResponse=i.HttpClientError=i.getProxyUrl=i.MediaTypes=i.Headers=i.HttpCodes=void 0;const p=c(s(13685));const A=c(s(95687));const u=c(s(33757));const h=c(s(18672));const g=s(26307);var y;(function(r){r[r["OK"]=200]="OK";r[r["MultipleChoices"]=300]="MultipleChoices";r[r["MovedPermanently"]=301]="MovedPermanently";r[r["ResourceMoved"]=302]="ResourceMoved";r[r["SeeOther"]=303]="SeeOther";r[r["NotModified"]=304]="NotModified";r[r["UseProxy"]=305]="UseProxy";r[r["SwitchProxy"]=306]="SwitchProxy";r[r["TemporaryRedirect"]=307]="TemporaryRedirect";r[r["PermanentRedirect"]=308]="PermanentRedirect";r[r["BadRequest"]=400]="BadRequest";r[r["Unauthorized"]=401]="Unauthorized";r[r["PaymentRequired"]=402]="PaymentRequired";r[r["Forbidden"]=403]="Forbidden";r[r["NotFound"]=404]="NotFound";r[r["MethodNotAllowed"]=405]="MethodNotAllowed";r[r["NotAcceptable"]=406]="NotAcceptable";r[r["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";r[r["RequestTimeout"]=408]="RequestTimeout";r[r["Conflict"]=409]="Conflict";r[r["Gone"]=410]="Gone";r[r["TooManyRequests"]=429]="TooManyRequests";r[r["InternalServerError"]=500]="InternalServerError";r[r["NotImplemented"]=501]="NotImplemented";r[r["BadGateway"]=502]="BadGateway";r[r["ServiceUnavailable"]=503]="ServiceUnavailable";r[r["GatewayTimeout"]=504]="GatewayTimeout"})(y||(i.HttpCodes=y={}));var b;(function(r){r["Accept"]="accept";r["ContentType"]="content-type"})(b||(i.Headers=b={}));var C;(function(r){r["ApplicationJson"]="application/json"})(C||(i.MediaTypes=C={}));function getProxyUrl(r){const i=u.getProxyUrl(new URL(r));return i?i.href:""}i.getProxyUrl=getProxyUrl;const B=[y.MovedPermanently,y.ResourceMoved,y.SeeOther,y.TemporaryRedirect,y.PermanentRedirect];const I=[y.BadGateway,y.ServiceUnavailable,y.GatewayTimeout];const w=["OPTIONS","GET","DELETE","HEAD"];const v=10;const S=5;class HttpClientError extends Error{constructor(r,i){super(r);this.name="HttpClientError";this.statusCode=i;Object.setPrototypeOf(this,HttpClientError.prototype)}}i.HttpClientError=HttpClientError;class HttpClientResponse{constructor(r){this.message=r}readBody(){return d(this,void 0,void 0,(function*(){return new Promise((r=>d(this,void 0,void 0,(function*(){let i=Buffer.alloc(0);this.message.on("data",(r=>{i=Buffer.concat([i,r])}));this.message.on("end",(()=>{r(i.toString())}))}))))}))}readBodyBuffer(){return d(this,void 0,void 0,(function*(){return new Promise((r=>d(this,void 0,void 0,(function*(){const i=[];this.message.on("data",(r=>{i.push(r)}));this.message.on("end",(()=>{r(Buffer.concat(i))}))}))))}))}}i.HttpClientResponse=HttpClientResponse;function isHttps(r){const i=new URL(r);return i.protocol==="https:"}i.isHttps=isHttps;class HttpClient{constructor(r,i,s){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=r;this.handlers=i||[];this.requestOptions=s;if(s){if(s.ignoreSslError!=null){this._ignoreSslError=s.ignoreSslError}this._socketTimeout=s.socketTimeout;if(s.allowRedirects!=null){this._allowRedirects=s.allowRedirects}if(s.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=s.allowRedirectDowngrade}if(s.maxRedirects!=null){this._maxRedirects=Math.max(s.maxRedirects,0)}if(s.keepAlive!=null){this._keepAlive=s.keepAlive}if(s.allowRetries!=null){this._allowRetries=s.allowRetries}if(s.maxRetries!=null){this._maxRetries=s.maxRetries}}}options(r,i){return d(this,void 0,void 0,(function*(){return this.request("OPTIONS",r,null,i||{})}))}get(r,i){return d(this,void 0,void 0,(function*(){return this.request("GET",r,null,i||{})}))}del(r,i){return d(this,void 0,void 0,(function*(){return this.request("DELETE",r,null,i||{})}))}post(r,i,s){return d(this,void 0,void 0,(function*(){return this.request("POST",r,i,s||{})}))}patch(r,i,s){return d(this,void 0,void 0,(function*(){return this.request("PATCH",r,i,s||{})}))}put(r,i,s){return d(this,void 0,void 0,(function*(){return this.request("PUT",r,i,s||{})}))}head(r,i){return d(this,void 0,void 0,(function*(){return this.request("HEAD",r,null,i||{})}))}sendStream(r,i,s,a){return d(this,void 0,void 0,(function*(){return this.request(r,i,s,a)}))}getJson(r,i={}){return d(this,void 0,void 0,(function*(){i[b.Accept]=this._getExistingOrDefaultHeader(i,b.Accept,C.ApplicationJson);const s=yield this.get(r,i);return this._processResponse(s,this.requestOptions)}))}postJson(r,i,s={}){return d(this,void 0,void 0,(function*(){const a=JSON.stringify(i,null,2);s[b.Accept]=this._getExistingOrDefaultHeader(s,b.Accept,C.ApplicationJson);s[b.ContentType]=this._getExistingOrDefaultHeader(s,b.ContentType,C.ApplicationJson);const l=yield this.post(r,a,s);return this._processResponse(l,this.requestOptions)}))}putJson(r,i,s={}){return d(this,void 0,void 0,(function*(){const a=JSON.stringify(i,null,2);s[b.Accept]=this._getExistingOrDefaultHeader(s,b.Accept,C.ApplicationJson);s[b.ContentType]=this._getExistingOrDefaultHeader(s,b.ContentType,C.ApplicationJson);const l=yield this.put(r,a,s);return this._processResponse(l,this.requestOptions)}))}patchJson(r,i,s={}){return d(this,void 0,void 0,(function*(){const a=JSON.stringify(i,null,2);s[b.Accept]=this._getExistingOrDefaultHeader(s,b.Accept,C.ApplicationJson);s[b.ContentType]=this._getExistingOrDefaultHeader(s,b.ContentType,C.ApplicationJson);const l=yield this.patch(r,a,s);return this._processResponse(l,this.requestOptions)}))}request(r,i,s,a){return d(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const l=new URL(i);let c=this._prepareRequest(r,l,a);const d=this._allowRetries&&w.includes(r)?this._maxRetries+1:1;let p=0;let A;do{A=yield this.requestRaw(c,s);if(A&&A.message&&A.message.statusCode===y.Unauthorized){let r;for(const i of this.handlers){if(i.canHandleAuthentication(A)){r=i;break}}if(r){return r.handleAuthentication(this,c,s)}else{return A}}let i=this._maxRedirects;while(A.message.statusCode&&B.includes(A.message.statusCode)&&this._allowRedirects&&i>0){const d=A.message.headers["location"];if(!d){break}const p=new URL(d);if(l.protocol==="https:"&&l.protocol!==p.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield A.readBody();if(p.hostname!==l.hostname){for(const r in a){if(r.toLowerCase()==="authorization"){delete a[r]}}}c=this._prepareRequest(r,p,a);A=yield this.requestRaw(c,s);i--}if(!A.message.statusCode||!I.includes(A.message.statusCode)){return A}p+=1;if(p{function callbackForResult(r,i){if(r){a(r)}else if(!i){a(new Error("Unknown error"))}else{s(i)}}this.requestRawWithCallback(r,i,callbackForResult)}))}))}requestRawWithCallback(r,i,s){if(typeof i==="string"){if(!r.options.headers){r.options.headers={}}r.options.headers["Content-Length"]=Buffer.byteLength(i,"utf8")}let a=false;function handleResult(r,i){if(!a){a=true;s(r,i)}}const l=r.httpModule.request(r.options,(r=>{const i=new HttpClientResponse(r);handleResult(undefined,i)}));let c;l.on("socket",(r=>{c=r}));l.setTimeout(this._socketTimeout||3*6e4,(()=>{if(c){c.end()}handleResult(new Error(`Request timeout: ${r.options.path}`))}));l.on("error",(function(r){handleResult(r)}));if(i&&typeof i==="string"){l.write(i,"utf8")}if(i&&typeof i!=="string"){i.on("close",(function(){l.end()}));i.pipe(l)}else{l.end()}}getAgent(r){const i=new URL(r);return this._getAgent(i)}getAgentDispatcher(r){const i=new URL(r);const s=u.getProxyUrl(i);const a=s&&s.hostname;if(!a){return}return this._getProxyAgentDispatcher(i,s)}_prepareRequest(r,i,s){const a={};a.parsedUrl=i;const l=a.parsedUrl.protocol==="https:";a.httpModule=l?A:p;const c=l?443:80;a.options={};a.options.host=a.parsedUrl.hostname;a.options.port=a.parsedUrl.port?parseInt(a.parsedUrl.port):c;a.options.path=(a.parsedUrl.pathname||"")+(a.parsedUrl.search||"");a.options.method=r;a.options.headers=this._mergeHeaders(s);if(this.userAgent!=null){a.options.headers["user-agent"]=this.userAgent}a.options.agent=this._getAgent(a.parsedUrl);if(this.handlers){for(const r of this.handlers){r.prepareRequest(a.options)}}return a}_mergeHeaders(r){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(r||{}))}return lowercaseKeys(r||{})}_getExistingOrDefaultHeader(r,i,s){let a;if(this.requestOptions&&this.requestOptions.headers){a=lowercaseKeys(this.requestOptions.headers)[i]}return r[i]||a||s}_getAgent(r){let i;const s=u.getProxyUrl(r);const a=s&&s.hostname;if(this._keepAlive&&a){i=this._proxyAgent}if(!a){i=this._agent}if(i){return i}const l=r.protocol==="https:";let c=100;if(this.requestOptions){c=this.requestOptions.maxSockets||p.globalAgent.maxSockets}if(s&&s.hostname){const r={maxSockets:c,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(s.username||s.password)&&{proxyAuth:`${s.username}:${s.password}`}),{host:s.hostname,port:s.port})};let a;const d=s.protocol==="https:";if(l){a=d?h.httpsOverHttps:h.httpsOverHttp}else{a=d?h.httpOverHttps:h.httpOverHttp}i=a(r);this._proxyAgent=i}if(!i){const r={keepAlive:this._keepAlive,maxSockets:c};i=l?new A.Agent(r):new p.Agent(r);this._agent=i}if(l&&this._ignoreSslError){i.options=Object.assign(i.options||{},{rejectUnauthorized:false})}return i}_getProxyAgentDispatcher(r,i){let s;if(this._keepAlive){s=this._proxyAgentDispatcher}if(s){return s}const a=r.protocol==="https:";s=new g.ProxyAgent(Object.assign({uri:i.href,pipelining:!this._keepAlive?0:1},(i.username||i.password)&&{token:`Basic ${Buffer.from(`${i.username}:${i.password}`).toString("base64")}`}));this._proxyAgentDispatcher=s;if(a&&this._ignoreSslError){s.options=Object.assign(s.options.requestTls||{},{rejectUnauthorized:false})}return s}_performExponentialBackoff(r){return d(this,void 0,void 0,(function*(){r=Math.min(v,r);const i=S*Math.pow(2,r);return new Promise((r=>setTimeout((()=>r()),i)))}))}_processResponse(r,i){return d(this,void 0,void 0,(function*(){return new Promise(((s,a)=>d(this,void 0,void 0,(function*(){const l=r.message.statusCode||0;const c={statusCode:l,result:null,headers:{}};if(l===y.NotFound){s(c)}function dateTimeDeserializer(r,i){if(typeof i==="string"){const r=new Date(i);if(!isNaN(r.valueOf())){return r}}return i}let d;let p;try{p=yield r.readBody();if(p&&p.length>0){if(i&&i.deserializeDates){d=JSON.parse(p,dateTimeDeserializer)}else{d=JSON.parse(p)}c.result=d}c.headers=r.message.headers}catch(r){}if(l>299){let r;if(d&&d.message){r=d.message}else if(p&&p.length>0){r=p}else{r=`Failed request: (${l})`}const i=new HttpClientError(r,l);i.result=c.result;a(i)}else{s(c)}}))))}))}}i.HttpClient=HttpClient;const lowercaseKeys=r=>Object.keys(r).reduce(((i,s)=>(i[s.toLowerCase()]=r[s],i)),{})},33757:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.checkBypass=i.getProxyUrl=void 0;function getProxyUrl(r){const i=r.protocol==="https:";if(checkBypass(r)){return undefined}const s=(()=>{if(i){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(s){try{return new DecodedURL(s)}catch(r){if(!s.startsWith("http://")&&!s.startsWith("https://"))return new DecodedURL(`http://${s}`)}}else{return undefined}}i.getProxyUrl=getProxyUrl;function checkBypass(r){if(!r.hostname){return false}const i=r.hostname;if(isLoopbackAddress(i)){return true}const s=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!s){return false}let a;if(r.port){a=Number(r.port)}else if(r.protocol==="http:"){a=80}else if(r.protocol==="https:"){a=443}const l=[r.hostname.toUpperCase()];if(typeof a==="number"){l.push(`${l[0]}:${a}`)}for(const r of s.split(",").map((r=>r.trim().toUpperCase())).filter((r=>r))){if(r==="*"||l.some((i=>i===r||i.endsWith(`.${r}`)||r.startsWith(".")&&i.endsWith(`${r}`)))){return true}}return false}i.checkBypass=checkBypass;function isLoopbackAddress(r){const i=r.toLowerCase();return i==="localhost"||i.startsWith("127.")||i.startsWith("[::1]")||i.startsWith("[0:0:0:0:0:0:0:1]")}class DecodedURL extends URL{constructor(r,i){super(r,i);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}},28798:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var p;Object.defineProperty(i,"__esModule",{value:true});i.getCmdPath=i.tryGetExecutablePath=i.isRooted=i.isDirectory=i.exists=i.READONLY=i.UV_FS_O_EXLOCK=i.IS_WINDOWS=i.unlink=i.symlink=i.stat=i.rmdir=i.rm=i.rename=i.readlink=i.readdir=i.open=i.mkdir=i.lstat=i.copyFile=i.chmod=void 0;const A=c(s(57147));const u=c(s(71017));p=A.promises,i.chmod=p.chmod,i.copyFile=p.copyFile,i.lstat=p.lstat,i.mkdir=p.mkdir,i.open=p.open,i.readdir=p.readdir,i.readlink=p.readlink,i.rename=p.rename,i.rm=p.rm,i.rmdir=p.rmdir,i.stat=p.stat,i.symlink=p.symlink,i.unlink=p.unlink;i.IS_WINDOWS=process.platform==="win32";i.UV_FS_O_EXLOCK=268435456;i.READONLY=A.constants.O_RDONLY;function exists(r){return d(this,void 0,void 0,(function*(){try{yield i.stat(r)}catch(r){if(r.code==="ENOENT"){return false}throw r}return true}))}i.exists=exists;function isDirectory(r,s=false){return d(this,void 0,void 0,(function*(){const a=s?yield i.stat(r):yield i.lstat(r);return a.isDirectory()}))}i.isDirectory=isDirectory;function isRooted(r){r=normalizeSeparators(r);if(!r){throw new Error('isRooted() parameter "p" cannot be empty')}if(i.IS_WINDOWS){return r.startsWith("\\")||/^[A-Z]:/i.test(r)}return r.startsWith("/")}i.isRooted=isRooted;function tryGetExecutablePath(r,s){return d(this,void 0,void 0,(function*(){let a=undefined;try{a=yield i.stat(r)}catch(i){if(i.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${r}': ${i}`)}}if(a&&a.isFile()){if(i.IS_WINDOWS){const i=u.extname(r).toUpperCase();if(s.some((r=>r.toUpperCase()===i))){return r}}else{if(isUnixExecutable(a)){return r}}}const l=r;for(const c of s){r=l+c;a=undefined;try{a=yield i.stat(r)}catch(i){if(i.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${r}': ${i}`)}}if(a&&a.isFile()){if(i.IS_WINDOWS){try{const s=u.dirname(r);const a=u.basename(r).toUpperCase();for(const l of yield i.readdir(s)){if(a===l.toUpperCase()){r=u.join(s,l);break}}}catch(i){console.log(`Unexpected error attempting to determine the actual case of the file '${r}': ${i}`)}return r}else{if(isUnixExecutable(a)){return r}}}}return""}))}i.tryGetExecutablePath=tryGetExecutablePath;function normalizeSeparators(r){r=r||"";if(i.IS_WINDOWS){r=r.replace(/\//g,"\\");return r.replace(/\\\\+/g,"\\")}return r.replace(/\/\/+/g,"/")}function isUnixExecutable(r){return(r.mode&1)>0||(r.mode&8)>0&&r.gid===process.getgid()||(r.mode&64)>0&&r.uid===process.getuid()}function getCmdPath(){var r;return(r=process.env["COMSPEC"])!==null&&r!==void 0?r:`cmd.exe`}i.getCmdPath=getCmdPath},14721:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.findInPath=i.which=i.mkdirP=i.rmRF=i.mv=i.cp=void 0;const p=s(39491);const A=c(s(71017));const u=c(s(28798));function cp(r,i,s={}){return d(this,void 0,void 0,(function*(){const{force:a,recursive:l,copySourceDirectory:c}=readCopyOptions(s);const d=(yield u.exists(i))?yield u.stat(i):null;if(d&&d.isFile()&&!a){return}const p=d&&d.isDirectory()&&c?A.join(i,A.basename(r)):i;if(!(yield u.exists(r))){throw new Error(`no such file or directory: ${r}`)}const h=yield u.stat(r);if(h.isDirectory()){if(!l){throw new Error(`Failed to copy. ${r} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(r,p,0,a)}}else{if(A.relative(r,p)===""){throw new Error(`'${p}' and '${r}' are the same file`)}yield copyFile(r,p,a)}}))}i.cp=cp;function mv(r,i,s={}){return d(this,void 0,void 0,(function*(){if(yield u.exists(i)){let a=true;if(yield u.isDirectory(i)){i=A.join(i,A.basename(r));a=yield u.exists(i)}if(a){if(s.force==null||s.force){yield rmRF(i)}else{throw new Error("Destination already exists")}}}yield mkdirP(A.dirname(i));yield u.rename(r,i)}))}i.mv=mv;function rmRF(r){return d(this,void 0,void 0,(function*(){if(u.IS_WINDOWS){if(/[*"<>|]/.test(r)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield u.rm(r,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(r){throw new Error(`File was unable to be removed ${r}`)}}))}i.rmRF=rmRF;function mkdirP(r){return d(this,void 0,void 0,(function*(){p.ok(r,"a path argument must be provided");yield u.mkdir(r,{recursive:true})}))}i.mkdirP=mkdirP;function which(r,i){return d(this,void 0,void 0,(function*(){if(!r){throw new Error("parameter 'tool' is required")}if(i){const i=yield which(r,false);if(!i){if(u.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${r}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${r}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return i}const s=yield findInPath(r);if(s&&s.length>0){return s[0]}return""}))}i.which=which;function findInPath(r){return d(this,void 0,void 0,(function*(){if(!r){throw new Error("parameter 'tool' is required")}const i=[];if(u.IS_WINDOWS&&process.env["PATHEXT"]){for(const r of process.env["PATHEXT"].split(A.delimiter)){if(r){i.push(r)}}}if(u.isRooted(r)){const s=yield u.tryGetExecutablePath(r,i);if(s){return[s]}return[]}if(r.includes(A.sep)){return[]}const s=[];if(process.env.PATH){for(const r of process.env.PATH.split(A.delimiter)){if(r){s.push(r)}}}const a=[];for(const l of s){const s=yield u.tryGetExecutablePath(A.join(l,r),i);if(s){a.push(s)}}return a}))}i.findInPath=findInPath;function readCopyOptions(r){const i=r.force==null?true:r.force;const s=Boolean(r.recursive);const a=r.copySourceDirectory==null?true:Boolean(r.copySourceDirectory);return{force:i,recursive:s,copySourceDirectory:a}}function cpDirRecursive(r,i,s,a){return d(this,void 0,void 0,(function*(){if(s>=255)return;s++;yield mkdirP(i);const l=yield u.readdir(r);for(const c of l){const l=`${r}/${c}`;const d=`${i}/${c}`;const p=yield u.lstat(l);if(p.isDirectory()){yield cpDirRecursive(l,d,s,a)}else{yield copyFile(l,d,a)}}yield u.chmod(i,(yield u.stat(r)).mode)}))}function copyFile(r,i,s){return d(this,void 0,void 0,(function*(){if((yield u.lstat(r)).isSymbolicLink()){try{yield u.lstat(i);yield u.unlink(i)}catch(r){if(r.code==="EPERM"){yield u.chmod(i,"0666");yield u.unlink(i)}}const s=yield u.readlink(r);yield u.symlink(s,i,u.IS_WINDOWS?"junction":null)}else if(!(yield u.exists(i))||s){yield u.copyFile(r,i)}}))}},37830:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});const s=new WeakMap;const a=new WeakMap;class AbortSignal{constructor(){this.onabort=null;s.set(this,[]);a.set(this,false)}get aborted(){if(!a.has(this)){throw new TypeError("Expected `this` to be an instance of AbortSignal.")}return a.get(this)}static get none(){return new AbortSignal}addEventListener(r,i){if(!s.has(this)){throw new TypeError("Expected `this` to be an instance of AbortSignal.")}const a=s.get(this);a.push(i)}removeEventListener(r,i){if(!s.has(this)){throw new TypeError("Expected `this` to be an instance of AbortSignal.")}const a=s.get(this);const l=a.indexOf(i);if(l>-1){a.splice(l,1)}}dispatchEvent(r){throw new Error("This is a stub dispatchEvent implementation that should not be used. It only exists for type-checking purposes.")}}function abortSignal(r){if(r.aborted){return}if(r.onabort){r.onabort.call(r)}const i=s.get(r);if(i){i.slice().forEach((i=>{i.call(r,{type:"abort"})}))}a.set(r,true)}class AbortError extends Error{constructor(r){super(r);this.name="AbortError"}}class AbortController{constructor(r){this._signal=new AbortSignal;if(!r){return}if(!Array.isArray(r)){r=arguments}for(const i of r){if(i.aborted){this.abort()}else{i.addEventListener("abort",(()=>{this.abort()}))}}}get signal(){return this._signal}abort(){abortSignal(this._signal)}static timeout(r){const i=new AbortSignal;const s=setTimeout(abortSignal,r,i);if(typeof s.unref==="function"){s.unref()}return i}}i.AbortController=AbortController;i.AbortError=AbortError;i.AbortSignal=AbortSignal},27780:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(94417);var l=s(59826);var c=s(45728);var d=s(5263);var p=s(22542);var A=s(51285);var u=s(66256);var h=s(44274);var g=s(37830);var y=s(6113);var b=s(71126);var C=s(12781);var B=s(43106);var I=s(82361);var w=s(57147);var v=s(73837);var S=s(14300);function _interopNamespaceDefault(r){var i=Object.create(null);if(r){Object.keys(r).forEach((function(s){if(s!=="default"){var a=Object.getOwnPropertyDescriptor(r,s);Object.defineProperty(i,s,a.get?a:{enumerable:true,get:function(){return r[s]}})}}))}i.default=r;return Object.freeze(i)}var Q=_interopNamespaceDefault(p);var N=_interopNamespaceDefault(A);var R=_interopNamespaceDefault(w);var k=_interopNamespaceDefault(v);const T=h.createClientLogger("storage-blob");class BaseRequestPolicy{constructor(r,i){this._nextPolicy=r;this._options=i}shouldLog(r){return this._options.shouldLog(r)}log(r,i){this._options.log(r,i)}}const _="12.24.0";const x="2024-08-04";const D=256*1024*1024;const P=4e3*1024*1024;const O=5e4;const L=8*1024*1024;const F=4*1024*1024;const M=5;const U=100*1e3;const H="https://storage.azure.com/.default";const q={Parameters:{FORCE_BROWSER_NO_CACHE:"_",SIGNATURE:"sig",SNAPSHOT:"snapshot",VERSIONID:"versionid",TIMEOUT:"timeout"}};const G={HTTP_ACCEPTED:202,HTTP_CONFLICT:409,HTTP_NOT_FOUND:404,HTTP_PRECON_FAILED:412,HTTP_RANGE_NOT_SATISFIABLE:416};const j={AUTHORIZATION:"Authorization",AUTHORIZATION_SCHEME:"Bearer",CONTENT_ENCODING:"Content-Encoding",CONTENT_ID:"Content-ID",CONTENT_LANGUAGE:"Content-Language",CONTENT_LENGTH:"Content-Length",CONTENT_MD5:"Content-Md5",CONTENT_TRANSFER_ENCODING:"Content-Transfer-Encoding",CONTENT_TYPE:"Content-Type",COOKIE:"Cookie",DATE:"date",IF_MATCH:"if-match",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",IF_UNMODIFIED_SINCE:"if-unmodified-since",PREFIX_FOR_STORAGE:"x-ms-",RANGE:"Range",USER_AGENT:"User-Agent",X_MS_CLIENT_REQUEST_ID:"x-ms-client-request-id",X_MS_COPY_SOURCE:"x-ms-copy-source",X_MS_DATE:"x-ms-date",X_MS_ERROR_CODE:"x-ms-error-code",X_MS_VERSION:"x-ms-version",X_MS_CopySourceErrorCode:"x-ms-copy-source-error-code"};const z="";const V="*";const W=1*1024*1024;const Y=256;const J=4*W;const $="\r\n";const K="HTTP/1.1";const X="AES256";const Z=`DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;`;const ee=["Access-Control-Allow-Origin","Cache-Control","Content-Length","Content-Type","Date","Request-Id","traceparent","Transfer-Encoding","User-Agent","x-ms-client-request-id","x-ms-date","x-ms-error-code","x-ms-request-id","x-ms-return-client-request-id","x-ms-version","Accept-Ranges","Content-Disposition","Content-Encoding","Content-Language","Content-MD5","Content-Range","ETag","Last-Modified","Server","Vary","x-ms-content-crc64","x-ms-copy-action","x-ms-copy-completion-time","x-ms-copy-id","x-ms-copy-progress","x-ms-copy-status","x-ms-has-immutability-policy","x-ms-has-legal-hold","x-ms-lease-state","x-ms-lease-status","x-ms-range","x-ms-request-server-encrypted","x-ms-server-encrypted","x-ms-snapshot","x-ms-source-range","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","x-ms-access-tier","x-ms-access-tier-change-time","x-ms-access-tier-inferred","x-ms-account-kind","x-ms-archive-status","x-ms-blob-append-offset","x-ms-blob-cache-control","x-ms-blob-committed-block-count","x-ms-blob-condition-appendpos","x-ms-blob-condition-maxsize","x-ms-blob-content-disposition","x-ms-blob-content-encoding","x-ms-blob-content-language","x-ms-blob-content-length","x-ms-blob-content-md5","x-ms-blob-content-type","x-ms-blob-public-access","x-ms-blob-sequence-number","x-ms-blob-type","x-ms-copy-destination-snapshot","x-ms-creation-time","x-ms-default-encryption-scope","x-ms-delete-snapshots","x-ms-delete-type-permanent","x-ms-deny-encryption-scope-override","x-ms-encryption-algorithm","x-ms-if-sequence-number-eq","x-ms-if-sequence-number-le","x-ms-if-sequence-number-lt","x-ms-incremental-copy","x-ms-lease-action","x-ms-lease-break-period","x-ms-lease-duration","x-ms-lease-id","x-ms-lease-time","x-ms-page-write","x-ms-proposed-lease-id","x-ms-range-get-content-md5","x-ms-rehydrate-priority","x-ms-sequence-number-action","x-ms-sku-name","x-ms-source-content-md5","x-ms-source-if-match","x-ms-source-if-modified-since","x-ms-source-if-none-match","x-ms-source-if-unmodified-since","x-ms-tag-count","x-ms-encryption-key-sha256","x-ms-copy-source-error-code","x-ms-copy-source-status-code","x-ms-if-tags","x-ms-source-if-tags"];const te=["comp","maxresults","rscc","rscd","rsce","rscl","rsct","se","si","sip","sp","spr","sr","srt","ss","st","sv","include","marker","prefix","copyid","restype","blockid","blocklisttype","delimiter","prevsnapshot","ske","skoid","sks","skt","sktid","skv","snapshot"];const re="BlobUsesCustomerSpecifiedEncryption";const ie="BlobDoesNotUseCustomerSpecifiedEncryption";const ne=["10000","10001","10002","10003","10004","10100","10101","10102","10103","10104","11000","11001","11002","11003","11004","11100","11101","11102","11103","11104"];function escapeURLPath(r){const i=new URL(r);let s=i.pathname;s=s||"/";s=escape(s);i.pathname=s;return i.toString()}function getProxyUriFromDevConnString(r){let i="";if(r.search("DevelopmentStorageProxyUri=")!==-1){const s=r.split(";");for(const r of s){if(r.trim().startsWith("DevelopmentStorageProxyUri=")){i=r.trim().match("DevelopmentStorageProxyUri=(.*)")[1]}}}return i}function getValueInConnString(r,i){const s=r.split(";");for(const r of s){if(r.trim().startsWith(i)){return r.trim().match(i+"=(.*)")[1]}}return""}function extractConnectionStringParts(r){let i="";if(r.startsWith("UseDevelopmentStorage=true")){i=getProxyUriFromDevConnString(r);r=Z}let s=getValueInConnString(r,"BlobEndpoint");s=s.endsWith("/")?s.slice(0,-1):s;if(r.search("DefaultEndpointsProtocol=")!==-1&&r.search("AccountKey=")!==-1){let a="";let l="";let c=Buffer.from("accountKey","base64");let d="";l=getValueInConnString(r,"AccountName");c=Buffer.from(getValueInConnString(r,"AccountKey"),"base64");if(!s){a=getValueInConnString(r,"DefaultEndpointsProtocol");const i=a.toLowerCase();if(i!=="https"&&i!=="http"){throw new Error("Invalid DefaultEndpointsProtocol in the provided Connection String. Expecting 'https' or 'http'")}d=getValueInConnString(r,"EndpointSuffix");if(!d){throw new Error("Invalid EndpointSuffix in the provided Connection String")}s=`${a}://${l}.blob.${d}`}if(!l){throw new Error("Invalid AccountName in the provided Connection String")}else if(c.length===0){throw new Error("Invalid AccountKey in the provided Connection String")}return{kind:"AccountConnString",url:s,accountName:l,accountKey:c,proxyUri:i}}else{let i=getValueInConnString(r,"SharedAccessSignature");let a=getValueInConnString(r,"AccountName");if(!a){a=getAccountNameFromUrl(s)}if(!s){throw new Error("Invalid BlobEndpoint in the provided SAS Connection String")}else if(!i){throw new Error("Invalid SharedAccessSignature in the provided SAS Connection String")}if(i.startsWith("?")){i=i.substring(1)}return{kind:"SASConnString",url:s,accountName:a,accountSas:i}}}function escape(r){return encodeURIComponent(r).replace(/%2F/g,"/").replace(/'/g,"%27").replace(/\+/g,"%20").replace(/%25/g,"%")}function appendToURLPath(r,i){const s=new URL(r);let a=s.pathname;a=a?a.endsWith("/")?`${a}${i}`:`${a}/${i}`:i;s.pathname=a;return s.toString()}function setURLParameter(r,i,s){const a=new URL(r);const l=encodeURIComponent(i);const c=s?encodeURIComponent(s):undefined;const d=a.search===""?"?":a.search;const p=[];for(const r of d.slice(1).split("&")){if(r){const[i]=r.split("=",2);if(i!==l){p.push(r)}}}if(c){p.push(`${l}=${c}`)}a.search=p.length?`?${p.join("&")}`:"";return a.toString()}function getURLParameter(r,i){var s;const a=new URL(r);return(s=a.searchParams.get(i))!==null&&s!==void 0?s:undefined}function setURLHost(r,i){const s=new URL(r);s.hostname=i;return s.toString()}function getURLPath(r){try{const i=new URL(r);return i.pathname}catch(r){return undefined}}function getURLScheme(r){try{const i=new URL(r);return i.protocol.endsWith(":")?i.protocol.slice(0,-1):i.protocol}catch(r){return undefined}}function getURLPathAndQuery(r){const i=new URL(r);const s=i.pathname;if(!s){throw new RangeError("Invalid url without valid path.")}let a=i.search||"";a=a.trim();if(a!==""){a=a.startsWith("?")?a:`?${a}`}return`${s}${a}`}function getURLQueries(r){let i=new URL(r).search;if(!i){return{}}i=i.trim();i=i.startsWith("?")?i.substring(1):i;let s=i.split("&");s=s.filter((r=>{const i=r.indexOf("=");const s=r.lastIndexOf("=");return i>0&&i===s&&sl){r=r.slice(0,l)}const c=r+padStart(i.toString(),s-r.length,"0");return base64encode(c)}async function delay(r,i,s){return new Promise(((a,l)=>{let c;const abortHandler=()=>{if(c!==undefined){clearTimeout(c)}l(s)};const resolveHandler=()=>{if(i!==undefined){i.removeEventListener("abort",abortHandler)}a()};c=setTimeout(resolveHandler,r);if(i!==undefined){i.addEventListener("abort",abortHandler)}}))}function padStart(r,i,s=" "){if(String.prototype.padStart){return r.padStart(i,s)}s=s||" ";if(r.length>i){return r}else{i=i-r.length;if(i>s.length){s+=s.repeat(i/s.length)}return s.slice(0,i)+r}}function iEqual(r,i){return r.toLocaleLowerCase()===i.toLocaleLowerCase()}function getAccountNameFromUrl(r){const i=new URL(r);let s;try{if(i.hostname.split(".")[1]==="blob"){s=i.hostname.split(".")[0]}else if(isIpEndpointStyle(i)){s=i.pathname.split("/")[1]}else{s=""}return s}catch(r){throw new Error("Unable to extract accountName with provided information.")}}function isIpEndpointStyle(r){const i=r.host;return/^.*:.*:.*$|^(localhost|host.docker.internal)(:[0-9]+)?$|^(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])){3}(:[0-9]+)?$/.test(i)||Boolean(r.port)&&ne.includes(r.port)}function toBlobTagsString(r){if(r===undefined){return undefined}const i=[];for(const s in r){if(Object.prototype.hasOwnProperty.call(r,s)){const a=r[s];i.push(`${encodeURIComponent(s)}=${encodeURIComponent(a)}`)}}return i.join("&")}function toBlobTags(r){if(r===undefined){return undefined}const i={blobTagSet:[]};for(const s in r){if(Object.prototype.hasOwnProperty.call(r,s)){const a=r[s];i.blobTagSet.push({key:s,value:a})}}return i}function toTags(r){if(r===undefined){return undefined}const i={};for(const s of r.blobTagSet){i[s.key]=s.value}return i}function toQuerySerialization(r){if(r===undefined){return undefined}switch(r.kind){case"csv":return{format:{type:"delimited",delimitedTextConfiguration:{columnSeparator:r.columnSeparator||",",fieldQuote:r.fieldQuote||"",recordSeparator:r.recordSeparator,escapeChar:r.escapeCharacter||"",headersPresent:r.hasHeaders||false}}};case"json":return{format:{type:"json",jsonTextConfiguration:{recordSeparator:r.recordSeparator}}};case"arrow":return{format:{type:"arrow",arrowConfiguration:{schema:r.schema}}};case"parquet":return{format:{type:"parquet"}};default:throw Error("Invalid BlobQueryTextConfiguration.")}}function parseObjectReplicationRecord(r){if(!r){return undefined}if("policy-id"in r){return undefined}const i=[];for(const s in r){const a=s.split("_");const l="or-";if(a[0].startsWith(l)){a[0]=a[0].substring(l.length)}const c={ruleId:a[1],replicationStatus:r[s]};const d=i.findIndex((r=>r.policyId===a[0]));if(d>-1){i[d].rules.push(c)}else{i.push({policyId:a[0],rules:[c]})}}return i}function httpAuthorizationToString(r){return r?r.scheme+" "+r.value:undefined}function BlobNameToString(r){if(r.encoded){return decodeURIComponent(r.content)}else{return r.content}}function ConvertInternalResponseOfListBlobFlat(r){return Object.assign(Object.assign({},r),{segment:{blobItems:r.segment.blobItems.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name)});return i}))}})}function ConvertInternalResponseOfListBlobHierarchy(r){var i;return Object.assign(Object.assign({},r),{segment:{blobPrefixes:(i=r.segment.blobPrefixes)===null||i===void 0?void 0:i.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name)});return i})),blobItems:r.segment.blobItems.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name)});return i}))}})}function*ExtractPageRangeInfoItems(r){let i=[];let s=[];if(r.pageRange)i=r.pageRange;if(r.clearRange)s=r.clearRange;let a=0;let l=0;while(a=1?Math.floor(s.maxTries):se.maxTries,tryTimeoutInMs:s.tryTimeoutInMs&&s.tryTimeoutInMs>=0?s.tryTimeoutInMs:se.tryTimeoutInMs,retryDelayInMs:s.retryDelayInMs&&s.retryDelayInMs>=0?Math.min(s.retryDelayInMs,s.maxRetryDelayInMs?s.maxRetryDelayInMs:se.maxRetryDelayInMs):se.retryDelayInMs,maxRetryDelayInMs:s.maxRetryDelayInMs&&s.maxRetryDelayInMs>=0?s.maxRetryDelayInMs:se.maxRetryDelayInMs,secondaryHost:s.secondaryHost?s.secondaryHost:se.secondaryHost}}async sendRequest(r){return this.attemptSendRequest(r,false,1)}async attemptSendRequest(r,i,s){const a=r.clone();const l=i||!this.retryOptions.secondaryHost||!(r.method==="GET"||r.method==="HEAD"||r.method==="OPTIONS")||s%2===1;if(!l){a.url=setURLHost(a.url,this.retryOptions.secondaryHost)}if(this.retryOptions.tryTimeoutInMs){a.url=setURLParameter(a.url,q.Parameters.TIMEOUT,Math.floor(this.retryOptions.tryTimeoutInMs/1e3).toString())}let c;try{T.info(`RetryPolicy: =====> Try=${s} ${l?"Primary":"Secondary"}`);c=await this._nextPolicy.sendRequest(a);if(!this.shouldRetry(l,s,c)){return c}i=i||!l&&c.status===404}catch(r){T.error(`RetryPolicy: Caught error, message: ${r.message}, code: ${r.code}`);if(!this.shouldRetry(l,s,c,r)){throw r}}await this.delay(l,s,r.abortSignal);return this.attemptSendRequest(r,i,++s)}shouldRetry(r,i,s,a){if(i>=this.retryOptions.maxTries){T.info(`RetryPolicy: Attempt(s) ${i} >= maxTries ${this.retryOptions.maxTries}, no further try.`);return false}const l=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","EPIPE","REQUEST_SEND_ERROR"];if(a){for(const r of l){if(a.name.toUpperCase().includes(r)||a.message.toUpperCase().includes(r)||a.code&&a.code.toString().toUpperCase()===r){T.info(`RetryPolicy: Network error ${r} found, will retry.`);return true}}}if(s||a){const i=s?s.status:a?a.statusCode:0;if(!r&&i===404){T.info(`RetryPolicy: Secondary access with 404, will retry.`);return true}if(i===503||i===500){T.info(`RetryPolicy: Will retry for status code ${i}.`);return true}}if((a===null||a===void 0?void 0:a.code)==="PARSE_ERROR"&&(a===null||a===void 0?void 0:a.message.startsWith(`Error "Error: Unclosed root tag`))){T.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");return true}return false}async delay(r,s,a){let l=0;if(r){switch(this.retryOptions.retryPolicyType){case i.StorageRetryPolicyType.EXPONENTIAL:l=Math.min((Math.pow(2,s-1)-1)*this.retryOptions.retryDelayInMs,this.retryOptions.maxRetryDelayInMs);break;case i.StorageRetryPolicyType.FIXED:l=this.retryOptions.retryDelayInMs;break}}else{l=Math.random()*1e3}T.info(`RetryPolicy: Delay for ${l}ms`);return delay(l,a,ae)}}class StorageRetryPolicyFactory{constructor(r){this.retryOptions=r}create(r,i){return new StorageRetryPolicy(r,i,this.retryOptions)}}class CredentialPolicy extends BaseRequestPolicy{sendRequest(r){return this._nextPolicy.sendRequest(this.signRequest(r))}signRequest(r){return r}}const oe=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1820,0,1823,1825,1827,1829,0,0,0,1837,2051,0,0,1843,0,3331,3354,3356,3358,3360,3362,3364,3366,3368,3370,0,0,0,0,0,0,0,3586,3593,3594,3610,3617,3619,3621,3628,3634,3637,3638,3656,3665,3696,3708,3710,3721,3722,3729,3737,3743,3746,3748,3750,3751,3753,0,0,0,1859,1860,1864,3586,3593,3594,3610,3617,3619,3621,3628,3634,3637,3638,3656,3665,3696,3708,3710,3721,3722,3729,3737,3743,3746,3748,3750,3751,3753,0,1868,0,1872,0]);const le=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);const ce=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32786,0,0,0,0,0,33298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function compareHeader(r,i){if(isLessThan(r,i))return-1;return 1}function isLessThan(r,i){const s=[oe,le,ce];let a=0;let l=0;let c=0;while(ac}const d=l0){r.headers.set(j.CONTENT_LENGTH,Buffer.byteLength(r.body))}const i=[r.method.toUpperCase(),this.getHeaderValueToSign(r,j.CONTENT_LANGUAGE),this.getHeaderValueToSign(r,j.CONTENT_ENCODING),this.getHeaderValueToSign(r,j.CONTENT_LENGTH),this.getHeaderValueToSign(r,j.CONTENT_MD5),this.getHeaderValueToSign(r,j.CONTENT_TYPE),this.getHeaderValueToSign(r,j.DATE),this.getHeaderValueToSign(r,j.IF_MODIFIED_SINCE),this.getHeaderValueToSign(r,j.IF_MATCH),this.getHeaderValueToSign(r,j.IF_NONE_MATCH),this.getHeaderValueToSign(r,j.IF_UNMODIFIED_SINCE),this.getHeaderValueToSign(r,j.RANGE)].join("\n")+"\n"+this.getCanonicalizedHeadersString(r)+this.getCanonicalizedResourceString(r);const s=this.factory.computeHMACSHA256(i);r.headers.set(j.AUTHORIZATION,`SharedKey ${this.factory.accountName}:${s}`);return r}getHeaderValueToSign(r,i){const s=r.headers.get(i);if(!s){return""}if(i===j.CONTENT_LENGTH&&s==="0"){return""}return s}getCanonicalizedHeadersString(r){let i=r.headers.headersArray().filter((r=>r.name.toLowerCase().startsWith(j.PREFIX_FOR_STORAGE)));i.sort(((r,i)=>compareHeader(r.name.toLowerCase(),i.name.toLowerCase())));i=i.filter(((r,i,s)=>{if(i>0&&r.name.toLowerCase()===s[i-1].name.toLowerCase()){return false}return true}));let s="";i.forEach((r=>{s+=`${r.name.toLowerCase().trimRight()}:${r.value.trimLeft()}\n`}));return s}getCanonicalizedResourceString(r){const i=getURLPath(r.url)||"/";let s="";s+=`/${this.factory.accountName}${i}`;const a=getURLQueries(r.url);const l={};if(a){const r=[];for(const i in a){if(Object.prototype.hasOwnProperty.call(a,i)){const s=i.toLowerCase();l[s]=a[i];r.push(s)}}r.sort();for(const i of r){s+=`\n${i}:${decodeURIComponent(l[i])}`}}return s}}class Credential{create(r,i){throw new Error("Method should be implemented in children classes.")}}class StorageSharedKeyCredential extends Credential{constructor(r,i){super();this.accountName=r;this.accountKey=Buffer.from(i,"base64")}create(r,i){return new StorageSharedKeyCredentialPolicy(r,i,this)}computeHMACSHA256(r){return y.createHmac("sha256",this.accountKey).update(r,"utf8").digest("base64")}}class AnonymousCredentialPolicy extends CredentialPolicy{constructor(r,i){super(r,i)}}class AnonymousCredential extends Credential{create(r,i){return new AnonymousCredentialPolicy(r,i)}}let de;function getCachedDefaultHttpClient(){if(!de){de=a.createDefaultHttpClient()}return de}const pe="storageBrowserPolicy";function storageBrowserPolicy(){return{name:pe,async sendRequest(r,i){if(d.isNode){return i(r)}if(r.method==="GET"||r.method==="HEAD"){r.url=setURLParameter(r.url,q.Parameters.FORCE_BROWSER_NO_CACHE,(new Date).getTime().toString())}r.headers.delete(j.COOKIE);r.headers.delete(j.CONTENT_LENGTH);return i(r)}}}const Ae="storageRetryPolicy";var ue;(function(r){r[r["EXPONENTIAL"]=0]="EXPONENTIAL";r[r["FIXED"]=1]="FIXED"})(ue||(ue={}));const fe={maxRetryDelayInMs:120*1e3,maxTries:4,retryDelayInMs:4*1e3,retryPolicyType:ue.EXPONENTIAL,secondaryHost:"",tryTimeoutInMs:undefined};const he=["ETIMEDOUT","ESOCKETTIMEDOUT","ECONNREFUSED","ECONNRESET","ENOENT","ENOTFOUND","TIMEOUT","EPIPE","REQUEST_SEND_ERROR"];const me=new g.AbortError("The operation was aborted.");function storageRetryPolicy(r={}){var i,s,l,c,p,A;const u=(i=r.retryPolicyType)!==null&&i!==void 0?i:fe.retryPolicyType;const h=(s=r.maxTries)!==null&&s!==void 0?s:fe.maxTries;const g=(l=r.retryDelayInMs)!==null&&l!==void 0?l:fe.retryDelayInMs;const y=(c=r.maxRetryDelayInMs)!==null&&c!==void 0?c:fe.maxRetryDelayInMs;const b=(p=r.secondaryHost)!==null&&p!==void 0?p:fe.secondaryHost;const C=(A=r.tryTimeoutInMs)!==null&&A!==void 0?A:fe.tryTimeoutInMs;function shouldRetry({isPrimaryRetry:r,attempt:i,response:s,error:a}){var l,c;if(i>=h){T.info(`RetryPolicy: Attempt(s) ${i} >= maxTries ${h}, no further try.`);return false}if(a){for(const r of he){if(a.name.toUpperCase().includes(r)||a.message.toUpperCase().includes(r)||a.code&&a.code.toString().toUpperCase()===r){T.info(`RetryPolicy: Network error ${r} found, will retry.`);return true}}if((a===null||a===void 0?void 0:a.code)==="PARSE_ERROR"&&(a===null||a===void 0?void 0:a.message.startsWith(`Error "Error: Unclosed root tag`))){T.info("RetryPolicy: Incomplete XML response likely due to service timeout, will retry.");return true}}if(s||a){const i=(c=(l=s===null||s===void 0?void 0:s.status)!==null&&l!==void 0?l:a===null||a===void 0?void 0:a.statusCode)!==null&&c!==void 0?c:0;if(!r&&i===404){T.info(`RetryPolicy: Secondary access with 404, will retry.`);return true}if(i===503||i===500){T.info(`RetryPolicy: Will retry for status code ${i}.`);return true}}return false}function calculateDelay(r,i){let s=0;if(r){switch(u){case ue.EXPONENTIAL:s=Math.min((Math.pow(2,i-1)-1)*g,y);break;case ue.FIXED:s=g;break}}else{s=Math.random()*1e3}T.info(`RetryPolicy: Delay for ${s}ms`);return s}return{name:Ae,async sendRequest(r,i){if(C){r.url=setURLParameter(r.url,q.Parameters.TIMEOUT,String(Math.floor(C/1e3)))}const s=r.url;const l=b?setURLHost(r.url,b):undefined;let c=false;let p=1;let A=true;let u;let h;while(A){const g=c||!l||!["GET","HEAD","OPTIONS"].includes(r.method)||p%2===1;r.url=g?s:l;u=undefined;h=undefined;try{T.info(`RetryPolicy: =====> Try=${p} ${g?"Primary":"Secondary"}`);u=await i(r);c=c||!g&&u.status===404}catch(r){if(a.isRestError(r)){T.error(`RetryPolicy: Caught error, message: ${r.message}, code: ${r.code}`);h=r}else{T.error(`RetryPolicy: Caught error, message: ${d.getErrorMessage(r)}`);throw r}}A=shouldRetry({isPrimaryRetry:g,attempt:p,response:u,error:h});if(A){await delay(calculateDelay(g,p),r.abortSignal,me)}p++}if(u){return u}throw h!==null&&h!==void 0?h:new a.RestError("RetryPolicy failed without known error.")}}}const ge="storageSharedKeyCredentialPolicy";function storageSharedKeyCredentialPolicy(r){function signRequest(i){i.headers.set(j.X_MS_DATE,(new Date).toUTCString());if(i.body&&(typeof i.body==="string"||Buffer.isBuffer(i.body))&&i.body.length>0){i.headers.set(j.CONTENT_LENGTH,Buffer.byteLength(i.body))}const s=[i.method.toUpperCase(),getHeaderValueToSign(i,j.CONTENT_LANGUAGE),getHeaderValueToSign(i,j.CONTENT_ENCODING),getHeaderValueToSign(i,j.CONTENT_LENGTH),getHeaderValueToSign(i,j.CONTENT_MD5),getHeaderValueToSign(i,j.CONTENT_TYPE),getHeaderValueToSign(i,j.DATE),getHeaderValueToSign(i,j.IF_MODIFIED_SINCE),getHeaderValueToSign(i,j.IF_MATCH),getHeaderValueToSign(i,j.IF_NONE_MATCH),getHeaderValueToSign(i,j.IF_UNMODIFIED_SINCE),getHeaderValueToSign(i,j.RANGE)].join("\n")+"\n"+getCanonicalizedHeadersString(i)+getCanonicalizedResourceString(i);const a=y.createHmac("sha256",r.accountKey).update(s,"utf8").digest("base64");i.headers.set(j.AUTHORIZATION,`SharedKey ${r.accountName}:${a}`)}function getHeaderValueToSign(r,i){const s=r.headers.get(i);if(!s){return""}if(i===j.CONTENT_LENGTH&&s==="0"){return""}return s}function getCanonicalizedHeadersString(r){let i=[];for(const[s,a]of r.headers){if(s.toLowerCase().startsWith(j.PREFIX_FOR_STORAGE)){i.push({name:s,value:a})}}i.sort(((r,i)=>compareHeader(r.name.toLowerCase(),i.name.toLowerCase())));i=i.filter(((r,i,s)=>{if(i>0&&r.name.toLowerCase()===s[i-1].name.toLowerCase()){return false}return true}));let s="";i.forEach((r=>{s+=`${r.name.toLowerCase().trimRight()}:${r.value.trimLeft()}\n`}));return s}function getCanonicalizedResourceString(i){const s=getURLPath(i.url)||"/";let a="";a+=`/${r.accountName}${s}`;const l=getURLQueries(i.url);const c={};if(l){const r=[];for(const i in l){if(Object.prototype.hasOwnProperty.call(l,i)){const s=i.toLowerCase();c[s]=l[i];r.push(s)}}r.sort();for(const i of r){a+=`\n${i}:${decodeURIComponent(c[i])}`}}return a}return{name:ge,async sendRequest(r,i){signRequest(r);return i(r)}}}class StorageBrowserPolicy extends BaseRequestPolicy{constructor(r,i){super(r,i)}async sendRequest(r){if(d.isNode){return this._nextPolicy.sendRequest(r)}if(r.method.toUpperCase()==="GET"||r.method.toUpperCase()==="HEAD"){r.url=setURLParameter(r.url,q.Parameters.FORCE_BROWSER_NO_CACHE,(new Date).getTime().toString())}r.headers.remove(j.COOKIE);r.headers.remove(j.CONTENT_LENGTH);return this._nextPolicy.sendRequest(r)}}class StorageBrowserPolicyFactory{create(r,i){return new StorageBrowserPolicy(r,i)}}const ye="StorageCorrectContentLengthPolicy";function storageCorrectContentLengthPolicy(){function correctContentLength(r){if(r.body&&(typeof r.body==="string"||Buffer.isBuffer(r.body))&&r.body.length>0){r.headers.set(j.CONTENT_LENGTH,Buffer.byteLength(r.body))}}return{name:ye,async sendRequest(r,i){correctContentLength(r);return i(r)}}}function isPipelineLike(r){if(!r||typeof r!=="object"){return false}const i=r;return Array.isArray(i.factories)&&typeof i.options==="object"&&typeof i.toServiceClientOptions==="function"}class Pipeline{constructor(r,i={}){this.factories=r;this.options=i}toServiceClientOptions(){return{httpClient:this.options.httpClient,requestPolicyFactories:this.factories}}}function newPipeline(r,i={}){if(!r){r=new AnonymousCredential}const s=new Pipeline([],i);s._credential=r;return s}function processDownlevelPipeline(r){const i=[isAnonymousCredential,isStorageSharedKeyCredential,isCoreHttpBearerTokenFactory,isStorageBrowserPolicyFactory,isStorageRetryPolicyFactory,isStorageTelemetryPolicyFactory,isCoreHttpPolicyFactory];if(r.factories.length){const s=r.factories.filter((r=>!i.some((i=>i(r)))));if(s.length){const r=s.some((r=>isInjectorPolicyFactory(r)));return{wrappedPolicies:p.createRequestPolicyFactoryPolicy(s),afterRetry:r}}}return undefined}function getCoreClientOptions(r){var i;const s=r.options,{httpClient:d}=s,h=l.__rest(s,["httpClient"]);let g=r._coreHttpClient;if(!g){g=d?p.convertHttpClient(d):getCachedDefaultHttpClient();r._coreHttpClient=g}let y=r._corePipeline;if(!y){const s=`azsdk-js-azure-storage-blob/${_}`;const l=h.userAgentOptions&&h.userAgentOptions.userAgentPrefix?`${h.userAgentOptions.userAgentPrefix} ${s}`:`${s}`;y=A.createClientPipeline(Object.assign(Object.assign({},h),{loggingOptions:{additionalAllowedHeaderNames:ee,additionalAllowedQueryParameters:te,logger:T.info},userAgentOptions:{userAgentPrefix:l},serializationOptions:{stringifyXML:u.stringifyXML,serializerOptions:{xml:{xmlCharKey:"#"}}},deserializationOptions:{parseXML:u.parseXML,serializerOptions:{xml:{xmlCharKey:"#"}}}}));y.removePolicy({phase:"Retry"});y.removePolicy({name:a.decompressResponsePolicyName});y.addPolicy(storageCorrectContentLengthPolicy());y.addPolicy(storageRetryPolicy(h.retryOptions),{phase:"Retry"});y.addPolicy(storageBrowserPolicy());const d=processDownlevelPipeline(r);if(d){y.addPolicy(d.wrappedPolicies,d.afterRetry?{afterPhase:"Retry"}:undefined)}const p=getCredentialFromPipeline(r);if(c.isTokenCredential(p)){y.addPolicy(a.bearerTokenAuthenticationPolicy({credential:p,scopes:(i=h.audience)!==null&&i!==void 0?i:H,challengeCallbacks:{authorizeRequestOnChallenge:A.authorizeRequestOnTenantChallenge}}),{phase:"Sign"})}else if(p instanceof StorageSharedKeyCredential){y.addPolicy(storageSharedKeyCredentialPolicy({accountName:p.accountName,accountKey:p.accountKey}),{phase:"Sign"})}r._corePipeline=y}return Object.assign(Object.assign({},h),{allowInsecureConnection:true,httpClient:g,pipeline:y})}function getCredentialFromPipeline(r){if(r._credential){return r._credential}let i=new AnonymousCredential;for(const s of r.factories){if(c.isTokenCredential(s.credential)){i=s.credential}else if(isStorageSharedKeyCredential(s)){return s}}return i}function isStorageSharedKeyCredential(r){if(r instanceof StorageSharedKeyCredential){return true}return r.constructor.name==="StorageSharedKeyCredential"}function isAnonymousCredential(r){if(r instanceof AnonymousCredential){return true}return r.constructor.name==="AnonymousCredential"}function isCoreHttpBearerTokenFactory(r){return c.isTokenCredential(r.credential)}function isStorageBrowserPolicyFactory(r){if(r instanceof StorageBrowserPolicyFactory){return true}return r.constructor.name==="StorageBrowserPolicyFactory"}function isStorageRetryPolicyFactory(r){if(r instanceof StorageRetryPolicyFactory){return true}return r.constructor.name==="StorageRetryPolicyFactory"}function isStorageTelemetryPolicyFactory(r){return r.constructor.name==="TelemetryPolicyFactory"}function isInjectorPolicyFactory(r){return r.constructor.name==="InjectorPolicyFactory"}function isCoreHttpPolicyFactory(r){const i=["GenerateClientRequestIdPolicy","TracingPolicy","LogPolicy","ProxyPolicy","DisableResponseDecompressionPolicy","KeepAlivePolicy","DeserializationPolicy"];const s={sendRequest:async r=>({request:r,headers:r.headers.clone(),status:500})};const a={log(r,i){},shouldLog(r){return false}};const l=r.create(s,a);const c=l.constructor.name;return i.some((r=>c.startsWith(r)))}const Ee={serializedName:"BlobServiceProperties",xmlName:"StorageServiceProperties",type:{name:"Composite",className:"BlobServiceProperties",modelProperties:{blobAnalyticsLogging:{serializedName:"Logging",xmlName:"Logging",type:{name:"Composite",className:"Logging"}},hourMetrics:{serializedName:"HourMetrics",xmlName:"HourMetrics",type:{name:"Composite",className:"Metrics"}},minuteMetrics:{serializedName:"MinuteMetrics",xmlName:"MinuteMetrics",type:{name:"Composite",className:"Metrics"}},cors:{serializedName:"Cors",xmlName:"Cors",xmlIsWrapped:true,xmlElementName:"CorsRule",type:{name:"Sequence",element:{type:{name:"Composite",className:"CorsRule"}}}},defaultServiceVersion:{serializedName:"DefaultServiceVersion",xmlName:"DefaultServiceVersion",type:{name:"String"}},deleteRetentionPolicy:{serializedName:"DeleteRetentionPolicy",xmlName:"DeleteRetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}},staticWebsite:{serializedName:"StaticWebsite",xmlName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite"}}}}};const be={serializedName:"Logging",type:{name:"Composite",className:"Logging",modelProperties:{version:{serializedName:"Version",required:true,xmlName:"Version",type:{name:"String"}},deleteProperty:{serializedName:"Delete",required:true,xmlName:"Delete",type:{name:"Boolean"}},read:{serializedName:"Read",required:true,xmlName:"Read",type:{name:"Boolean"}},write:{serializedName:"Write",required:true,xmlName:"Write",type:{name:"Boolean"}},retentionPolicy:{serializedName:"RetentionPolicy",xmlName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}};const Ce={serializedName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy",modelProperties:{enabled:{serializedName:"Enabled",required:true,xmlName:"Enabled",type:{name:"Boolean"}},days:{constraints:{InclusiveMinimum:1},serializedName:"Days",xmlName:"Days",type:{name:"Number"}}}}};const Be={serializedName:"Metrics",type:{name:"Composite",className:"Metrics",modelProperties:{version:{serializedName:"Version",xmlName:"Version",type:{name:"String"}},enabled:{serializedName:"Enabled",required:true,xmlName:"Enabled",type:{name:"Boolean"}},includeAPIs:{serializedName:"IncludeAPIs",xmlName:"IncludeAPIs",type:{name:"Boolean"}},retentionPolicy:{serializedName:"RetentionPolicy",xmlName:"RetentionPolicy",type:{name:"Composite",className:"RetentionPolicy"}}}}};const Ie={serializedName:"CorsRule",type:{name:"Composite",className:"CorsRule",modelProperties:{allowedOrigins:{serializedName:"AllowedOrigins",required:true,xmlName:"AllowedOrigins",type:{name:"String"}},allowedMethods:{serializedName:"AllowedMethods",required:true,xmlName:"AllowedMethods",type:{name:"String"}},allowedHeaders:{serializedName:"AllowedHeaders",required:true,xmlName:"AllowedHeaders",type:{name:"String"}},exposedHeaders:{serializedName:"ExposedHeaders",required:true,xmlName:"ExposedHeaders",type:{name:"String"}},maxAgeInSeconds:{constraints:{InclusiveMinimum:0},serializedName:"MaxAgeInSeconds",required:true,xmlName:"MaxAgeInSeconds",type:{name:"Number"}}}}};const we={serializedName:"StaticWebsite",type:{name:"Composite",className:"StaticWebsite",modelProperties:{enabled:{serializedName:"Enabled",required:true,xmlName:"Enabled",type:{name:"Boolean"}},indexDocument:{serializedName:"IndexDocument",xmlName:"IndexDocument",type:{name:"String"}},errorDocument404Path:{serializedName:"ErrorDocument404Path",xmlName:"ErrorDocument404Path",type:{name:"String"}},defaultIndexDocumentPath:{serializedName:"DefaultIndexDocumentPath",xmlName:"DefaultIndexDocumentPath",type:{name:"String"}}}}};const ve={serializedName:"StorageError",type:{name:"Composite",className:"StorageError",modelProperties:{message:{serializedName:"Message",xmlName:"Message",type:{name:"String"}},code:{serializedName:"Code",xmlName:"Code",type:{name:"String"}},authenticationErrorDetail:{serializedName:"AuthenticationErrorDetail",xmlName:"AuthenticationErrorDetail",type:{name:"String"}}}}};const Se={serializedName:"BlobServiceStatistics",xmlName:"StorageServiceStats",type:{name:"Composite",className:"BlobServiceStatistics",modelProperties:{geoReplication:{serializedName:"GeoReplication",xmlName:"GeoReplication",type:{name:"Composite",className:"GeoReplication"}}}}};const Qe={serializedName:"GeoReplication",type:{name:"Composite",className:"GeoReplication",modelProperties:{status:{serializedName:"Status",required:true,xmlName:"Status",type:{name:"Enum",allowedValues:["live","bootstrap","unavailable"]}},lastSyncOn:{serializedName:"LastSyncTime",required:true,xmlName:"LastSyncTime",type:{name:"DateTimeRfc1123"}}}}};const Ne={serializedName:"ListContainersSegmentResponse",xmlName:"EnumerationResults",type:{name:"Composite",className:"ListContainersSegmentResponse",modelProperties:{serviceEndpoint:{serializedName:"ServiceEndpoint",required:true,xmlName:"ServiceEndpoint",xmlIsAttribute:true,type:{name:"String"}},prefix:{serializedName:"Prefix",xmlName:"Prefix",type:{name:"String"}},marker:{serializedName:"Marker",xmlName:"Marker",type:{name:"String"}},maxPageSize:{serializedName:"MaxResults",xmlName:"MaxResults",type:{name:"Number"}},containerItems:{serializedName:"ContainerItems",required:true,xmlName:"Containers",xmlIsWrapped:true,xmlElementName:"Container",type:{name:"Sequence",element:{type:{name:"Composite",className:"ContainerItem"}}}},continuationToken:{serializedName:"NextMarker",xmlName:"NextMarker",type:{name:"String"}}}}};const Re={serializedName:"ContainerItem",xmlName:"Container",type:{name:"Composite",className:"ContainerItem",modelProperties:{name:{serializedName:"Name",required:true,xmlName:"Name",type:{name:"String"}},deleted:{serializedName:"Deleted",xmlName:"Deleted",type:{name:"Boolean"}},version:{serializedName:"Version",xmlName:"Version",type:{name:"String"}},properties:{serializedName:"Properties",xmlName:"Properties",type:{name:"Composite",className:"ContainerProperties"}},metadata:{serializedName:"Metadata",xmlName:"Metadata",type:{name:"Dictionary",value:{type:{name:"String"}}}}}}};const ke={serializedName:"ContainerProperties",type:{name:"Composite",className:"ContainerProperties",modelProperties:{lastModified:{serializedName:"Last-Modified",required:true,xmlName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{serializedName:"Etag",required:true,xmlName:"Etag",type:{name:"String"}},leaseStatus:{serializedName:"LeaseStatus",xmlName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{serializedName:"LeaseState",xmlName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{serializedName:"LeaseDuration",xmlName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},publicAccess:{serializedName:"PublicAccess",xmlName:"PublicAccess",type:{name:"Enum",allowedValues:["container","blob"]}},hasImmutabilityPolicy:{serializedName:"HasImmutabilityPolicy",xmlName:"HasImmutabilityPolicy",type:{name:"Boolean"}},hasLegalHold:{serializedName:"HasLegalHold",xmlName:"HasLegalHold",type:{name:"Boolean"}},defaultEncryptionScope:{serializedName:"DefaultEncryptionScope",xmlName:"DefaultEncryptionScope",type:{name:"String"}},preventEncryptionScopeOverride:{serializedName:"DenyEncryptionScopeOverride",xmlName:"DenyEncryptionScopeOverride",type:{name:"Boolean"}},deletedOn:{serializedName:"DeletedTime",xmlName:"DeletedTime",type:{name:"DateTimeRfc1123"}},remainingRetentionDays:{serializedName:"RemainingRetentionDays",xmlName:"RemainingRetentionDays",type:{name:"Number"}},isImmutableStorageWithVersioningEnabled:{serializedName:"ImmutableStorageWithVersioningEnabled",xmlName:"ImmutableStorageWithVersioningEnabled",type:{name:"Boolean"}}}}};const Te={serializedName:"KeyInfo",type:{name:"Composite",className:"KeyInfo",modelProperties:{startsOn:{serializedName:"Start",required:true,xmlName:"Start",type:{name:"String"}},expiresOn:{serializedName:"Expiry",required:true,xmlName:"Expiry",type:{name:"String"}}}}};const _e={serializedName:"UserDelegationKey",type:{name:"Composite",className:"UserDelegationKey",modelProperties:{signedObjectId:{serializedName:"SignedOid",required:true,xmlName:"SignedOid",type:{name:"String"}},signedTenantId:{serializedName:"SignedTid",required:true,xmlName:"SignedTid",type:{name:"String"}},signedStartsOn:{serializedName:"SignedStart",required:true,xmlName:"SignedStart",type:{name:"String"}},signedExpiresOn:{serializedName:"SignedExpiry",required:true,xmlName:"SignedExpiry",type:{name:"String"}},signedService:{serializedName:"SignedService",required:true,xmlName:"SignedService",type:{name:"String"}},signedVersion:{serializedName:"SignedVersion",required:true,xmlName:"SignedVersion",type:{name:"String"}},value:{serializedName:"Value",required:true,xmlName:"Value",type:{name:"String"}}}}};const xe={serializedName:"FilterBlobSegment",xmlName:"EnumerationResults",type:{name:"Composite",className:"FilterBlobSegment",modelProperties:{serviceEndpoint:{serializedName:"ServiceEndpoint",required:true,xmlName:"ServiceEndpoint",xmlIsAttribute:true,type:{name:"String"}},where:{serializedName:"Where",required:true,xmlName:"Where",type:{name:"String"}},blobs:{serializedName:"Blobs",required:true,xmlName:"Blobs",xmlIsWrapped:true,xmlElementName:"Blob",type:{name:"Sequence",element:{type:{name:"Composite",className:"FilterBlobItem"}}}},continuationToken:{serializedName:"NextMarker",xmlName:"NextMarker",type:{name:"String"}}}}};const De={serializedName:"FilterBlobItem",xmlName:"Blob",type:{name:"Composite",className:"FilterBlobItem",modelProperties:{name:{serializedName:"Name",required:true,xmlName:"Name",type:{name:"String"}},containerName:{serializedName:"ContainerName",required:true,xmlName:"ContainerName",type:{name:"String"}},tags:{serializedName:"Tags",xmlName:"Tags",type:{name:"Composite",className:"BlobTags"}}}}};const Pe={serializedName:"BlobTags",xmlName:"Tags",type:{name:"Composite",className:"BlobTags",modelProperties:{blobTagSet:{serializedName:"BlobTagSet",required:true,xmlName:"TagSet",xmlIsWrapped:true,xmlElementName:"Tag",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobTag"}}}}}}};const Oe={serializedName:"BlobTag",xmlName:"Tag",type:{name:"Composite",className:"BlobTag",modelProperties:{key:{serializedName:"Key",required:true,xmlName:"Key",type:{name:"String"}},value:{serializedName:"Value",required:true,xmlName:"Value",type:{name:"String"}}}}};const Le={serializedName:"SignedIdentifier",xmlName:"SignedIdentifier",type:{name:"Composite",className:"SignedIdentifier",modelProperties:{id:{serializedName:"Id",required:true,xmlName:"Id",type:{name:"String"}},accessPolicy:{serializedName:"AccessPolicy",xmlName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy"}}}}};const Fe={serializedName:"AccessPolicy",type:{name:"Composite",className:"AccessPolicy",modelProperties:{startsOn:{serializedName:"Start",xmlName:"Start",type:{name:"String"}},expiresOn:{serializedName:"Expiry",xmlName:"Expiry",type:{name:"String"}},permissions:{serializedName:"Permission",xmlName:"Permission",type:{name:"String"}}}}};const Me={serializedName:"ListBlobsFlatSegmentResponse",xmlName:"EnumerationResults",type:{name:"Composite",className:"ListBlobsFlatSegmentResponse",modelProperties:{serviceEndpoint:{serializedName:"ServiceEndpoint",required:true,xmlName:"ServiceEndpoint",xmlIsAttribute:true,type:{name:"String"}},containerName:{serializedName:"ContainerName",required:true,xmlName:"ContainerName",xmlIsAttribute:true,type:{name:"String"}},prefix:{serializedName:"Prefix",xmlName:"Prefix",type:{name:"String"}},marker:{serializedName:"Marker",xmlName:"Marker",type:{name:"String"}},maxPageSize:{serializedName:"MaxResults",xmlName:"MaxResults",type:{name:"Number"}},segment:{serializedName:"Segment",xmlName:"Blobs",type:{name:"Composite",className:"BlobFlatListSegment"}},continuationToken:{serializedName:"NextMarker",xmlName:"NextMarker",type:{name:"String"}}}}};const Ue={serializedName:"BlobFlatListSegment",xmlName:"Blobs",type:{name:"Composite",className:"BlobFlatListSegment",modelProperties:{blobItems:{serializedName:"BlobItems",required:true,xmlName:"BlobItems",xmlElementName:"Blob",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItemInternal"}}}}}}};const He={serializedName:"BlobItemInternal",xmlName:"Blob",type:{name:"Composite",className:"BlobItemInternal",modelProperties:{name:{serializedName:"Name",xmlName:"Name",type:{name:"Composite",className:"BlobName"}},deleted:{serializedName:"Deleted",required:true,xmlName:"Deleted",type:{name:"Boolean"}},snapshot:{serializedName:"Snapshot",required:true,xmlName:"Snapshot",type:{name:"String"}},versionId:{serializedName:"VersionId",xmlName:"VersionId",type:{name:"String"}},isCurrentVersion:{serializedName:"IsCurrentVersion",xmlName:"IsCurrentVersion",type:{name:"Boolean"}},properties:{serializedName:"Properties",xmlName:"Properties",type:{name:"Composite",className:"BlobPropertiesInternal"}},metadata:{serializedName:"Metadata",xmlName:"Metadata",type:{name:"Dictionary",value:{type:{name:"String"}}}},blobTags:{serializedName:"BlobTags",xmlName:"Tags",type:{name:"Composite",className:"BlobTags"}},objectReplicationMetadata:{serializedName:"ObjectReplicationMetadata",xmlName:"OrMetadata",type:{name:"Dictionary",value:{type:{name:"String"}}}},hasVersionsOnly:{serializedName:"HasVersionsOnly",xmlName:"HasVersionsOnly",type:{name:"Boolean"}}}}};const qe={serializedName:"BlobName",type:{name:"Composite",className:"BlobName",modelProperties:{encoded:{serializedName:"Encoded",xmlName:"Encoded",xmlIsAttribute:true,type:{name:"Boolean"}},content:{serializedName:"content",xmlName:"content",xmlIsMsText:true,type:{name:"String"}}}}};const Ge={serializedName:"BlobPropertiesInternal",xmlName:"Properties",type:{name:"Composite",className:"BlobPropertiesInternal",modelProperties:{createdOn:{serializedName:"Creation-Time",xmlName:"Creation-Time",type:{name:"DateTimeRfc1123"}},lastModified:{serializedName:"Last-Modified",required:true,xmlName:"Last-Modified",type:{name:"DateTimeRfc1123"}},etag:{serializedName:"Etag",required:true,xmlName:"Etag",type:{name:"String"}},contentLength:{serializedName:"Content-Length",xmlName:"Content-Length",type:{name:"Number"}},contentType:{serializedName:"Content-Type",xmlName:"Content-Type",type:{name:"String"}},contentEncoding:{serializedName:"Content-Encoding",xmlName:"Content-Encoding",type:{name:"String"}},contentLanguage:{serializedName:"Content-Language",xmlName:"Content-Language",type:{name:"String"}},contentMD5:{serializedName:"Content-MD5",xmlName:"Content-MD5",type:{name:"ByteArray"}},contentDisposition:{serializedName:"Content-Disposition",xmlName:"Content-Disposition",type:{name:"String"}},cacheControl:{serializedName:"Cache-Control",xmlName:"Cache-Control",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{serializedName:"BlobType",xmlName:"BlobType",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},leaseStatus:{serializedName:"LeaseStatus",xmlName:"LeaseStatus",type:{name:"Enum",allowedValues:["locked","unlocked"]}},leaseState:{serializedName:"LeaseState",xmlName:"LeaseState",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseDuration:{serializedName:"LeaseDuration",xmlName:"LeaseDuration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},copyId:{serializedName:"CopyId",xmlName:"CopyId",type:{name:"String"}},copyStatus:{serializedName:"CopyStatus",xmlName:"CopyStatus",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},copySource:{serializedName:"CopySource",xmlName:"CopySource",type:{name:"String"}},copyProgress:{serializedName:"CopyProgress",xmlName:"CopyProgress",type:{name:"String"}},copyCompletedOn:{serializedName:"CopyCompletionTime",xmlName:"CopyCompletionTime",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"CopyStatusDescription",xmlName:"CopyStatusDescription",type:{name:"String"}},serverEncrypted:{serializedName:"ServerEncrypted",xmlName:"ServerEncrypted",type:{name:"Boolean"}},incrementalCopy:{serializedName:"IncrementalCopy",xmlName:"IncrementalCopy",type:{name:"Boolean"}},destinationSnapshot:{serializedName:"DestinationSnapshot",xmlName:"DestinationSnapshot",type:{name:"String"}},deletedOn:{serializedName:"DeletedTime",xmlName:"DeletedTime",type:{name:"DateTimeRfc1123"}},remainingRetentionDays:{serializedName:"RemainingRetentionDays",xmlName:"RemainingRetentionDays",type:{name:"Number"}},accessTier:{serializedName:"AccessTier",xmlName:"AccessTier",type:{name:"Enum",allowedValues:["P4","P6","P10","P15","P20","P30","P40","P50","P60","P70","P80","Hot","Cool","Archive","Cold"]}},accessTierInferred:{serializedName:"AccessTierInferred",xmlName:"AccessTierInferred",type:{name:"Boolean"}},archiveStatus:{serializedName:"ArchiveStatus",xmlName:"ArchiveStatus",type:{name:"Enum",allowedValues:["rehydrate-pending-to-hot","rehydrate-pending-to-cool","rehydrate-pending-to-cold"]}},customerProvidedKeySha256:{serializedName:"CustomerProvidedKeySha256",xmlName:"CustomerProvidedKeySha256",type:{name:"String"}},encryptionScope:{serializedName:"EncryptionScope",xmlName:"EncryptionScope",type:{name:"String"}},accessTierChangedOn:{serializedName:"AccessTierChangeTime",xmlName:"AccessTierChangeTime",type:{name:"DateTimeRfc1123"}},tagCount:{serializedName:"TagCount",xmlName:"TagCount",type:{name:"Number"}},expiresOn:{serializedName:"Expiry-Time",xmlName:"Expiry-Time",type:{name:"DateTimeRfc1123"}},isSealed:{serializedName:"Sealed",xmlName:"Sealed",type:{name:"Boolean"}},rehydratePriority:{serializedName:"RehydratePriority",xmlName:"RehydratePriority",type:{name:"Enum",allowedValues:["High","Standard"]}},lastAccessedOn:{serializedName:"LastAccessTime",xmlName:"LastAccessTime",type:{name:"DateTimeRfc1123"}},immutabilityPolicyExpiresOn:{serializedName:"ImmutabilityPolicyUntilDate",xmlName:"ImmutabilityPolicyUntilDate",type:{name:"DateTimeRfc1123"}},immutabilityPolicyMode:{serializedName:"ImmutabilityPolicyMode",xmlName:"ImmutabilityPolicyMode",type:{name:"Enum",allowedValues:["Mutable","Unlocked","Locked"]}},legalHold:{serializedName:"LegalHold",xmlName:"LegalHold",type:{name:"Boolean"}}}}};const je={serializedName:"ListBlobsHierarchySegmentResponse",xmlName:"EnumerationResults",type:{name:"Composite",className:"ListBlobsHierarchySegmentResponse",modelProperties:{serviceEndpoint:{serializedName:"ServiceEndpoint",required:true,xmlName:"ServiceEndpoint",xmlIsAttribute:true,type:{name:"String"}},containerName:{serializedName:"ContainerName",required:true,xmlName:"ContainerName",xmlIsAttribute:true,type:{name:"String"}},prefix:{serializedName:"Prefix",xmlName:"Prefix",type:{name:"String"}},marker:{serializedName:"Marker",xmlName:"Marker",type:{name:"String"}},maxPageSize:{serializedName:"MaxResults",xmlName:"MaxResults",type:{name:"Number"}},delimiter:{serializedName:"Delimiter",xmlName:"Delimiter",type:{name:"String"}},segment:{serializedName:"Segment",xmlName:"Blobs",type:{name:"Composite",className:"BlobHierarchyListSegment"}},continuationToken:{serializedName:"NextMarker",xmlName:"NextMarker",type:{name:"String"}}}}};const ze={serializedName:"BlobHierarchyListSegment",xmlName:"Blobs",type:{name:"Composite",className:"BlobHierarchyListSegment",modelProperties:{blobPrefixes:{serializedName:"BlobPrefixes",xmlName:"BlobPrefixes",xmlElementName:"BlobPrefix",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobPrefix"}}}},blobItems:{serializedName:"BlobItems",required:true,xmlName:"BlobItems",xmlElementName:"Blob",type:{name:"Sequence",element:{type:{name:"Composite",className:"BlobItemInternal"}}}}}}};const Ve={serializedName:"BlobPrefix",type:{name:"Composite",className:"BlobPrefix",modelProperties:{name:{serializedName:"Name",xmlName:"Name",type:{name:"Composite",className:"BlobName"}}}}};const We={serializedName:"BlockLookupList",xmlName:"BlockList",type:{name:"Composite",className:"BlockLookupList",modelProperties:{committed:{serializedName:"Committed",xmlName:"Committed",xmlElementName:"Committed",type:{name:"Sequence",element:{type:{name:"String"}}}},uncommitted:{serializedName:"Uncommitted",xmlName:"Uncommitted",xmlElementName:"Uncommitted",type:{name:"Sequence",element:{type:{name:"String"}}}},latest:{serializedName:"Latest",xmlName:"Latest",xmlElementName:"Latest",type:{name:"Sequence",element:{type:{name:"String"}}}}}}};const Ye={serializedName:"BlockList",type:{name:"Composite",className:"BlockList",modelProperties:{committedBlocks:{serializedName:"CommittedBlocks",xmlName:"CommittedBlocks",xmlIsWrapped:true,xmlElementName:"Block",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}},uncommittedBlocks:{serializedName:"UncommittedBlocks",xmlName:"UncommittedBlocks",xmlIsWrapped:true,xmlElementName:"Block",type:{name:"Sequence",element:{type:{name:"Composite",className:"Block"}}}}}}};const Je={serializedName:"Block",type:{name:"Composite",className:"Block",modelProperties:{name:{serializedName:"Name",required:true,xmlName:"Name",type:{name:"String"}},size:{serializedName:"Size",required:true,xmlName:"Size",type:{name:"Number"}}}}};const $e={serializedName:"PageList",type:{name:"Composite",className:"PageList",modelProperties:{pageRange:{serializedName:"PageRange",xmlName:"PageRange",xmlElementName:"PageRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"PageRange"}}}},clearRange:{serializedName:"ClearRange",xmlName:"ClearRange",xmlElementName:"ClearRange",type:{name:"Sequence",element:{type:{name:"Composite",className:"ClearRange"}}}},continuationToken:{serializedName:"NextMarker",xmlName:"NextMarker",type:{name:"String"}}}}};const Ke={serializedName:"PageRange",xmlName:"PageRange",type:{name:"Composite",className:"PageRange",modelProperties:{start:{serializedName:"Start",required:true,xmlName:"Start",type:{name:"Number"}},end:{serializedName:"End",required:true,xmlName:"End",type:{name:"Number"}}}}};const Xe={serializedName:"ClearRange",xmlName:"ClearRange",type:{name:"Composite",className:"ClearRange",modelProperties:{start:{serializedName:"Start",required:true,xmlName:"Start",type:{name:"Number"}},end:{serializedName:"End",required:true,xmlName:"End",type:{name:"Number"}}}}};const Ze={serializedName:"QueryRequest",xmlName:"QueryRequest",type:{name:"Composite",className:"QueryRequest",modelProperties:{queryType:{serializedName:"QueryType",required:true,xmlName:"QueryType",type:{name:"String"}},expression:{serializedName:"Expression",required:true,xmlName:"Expression",type:{name:"String"}},inputSerialization:{serializedName:"InputSerialization",xmlName:"InputSerialization",type:{name:"Composite",className:"QuerySerialization"}},outputSerialization:{serializedName:"OutputSerialization",xmlName:"OutputSerialization",type:{name:"Composite",className:"QuerySerialization"}}}}};const et={serializedName:"QuerySerialization",type:{name:"Composite",className:"QuerySerialization",modelProperties:{format:{serializedName:"Format",xmlName:"Format",type:{name:"Composite",className:"QueryFormat"}}}}};const tt={serializedName:"QueryFormat",type:{name:"Composite",className:"QueryFormat",modelProperties:{type:{serializedName:"Type",required:true,xmlName:"Type",type:{name:"Enum",allowedValues:["delimited","json","arrow","parquet"]}},delimitedTextConfiguration:{serializedName:"DelimitedTextConfiguration",xmlName:"DelimitedTextConfiguration",type:{name:"Composite",className:"DelimitedTextConfiguration"}},jsonTextConfiguration:{serializedName:"JsonTextConfiguration",xmlName:"JsonTextConfiguration",type:{name:"Composite",className:"JsonTextConfiguration"}},arrowConfiguration:{serializedName:"ArrowConfiguration",xmlName:"ArrowConfiguration",type:{name:"Composite",className:"ArrowConfiguration"}},parquetTextConfiguration:{serializedName:"ParquetTextConfiguration",xmlName:"ParquetTextConfiguration",type:{name:"Dictionary",value:{type:{name:"any"}}}}}}};const rt={serializedName:"DelimitedTextConfiguration",xmlName:"DelimitedTextConfiguration",type:{name:"Composite",className:"DelimitedTextConfiguration",modelProperties:{columnSeparator:{serializedName:"ColumnSeparator",xmlName:"ColumnSeparator",type:{name:"String"}},fieldQuote:{serializedName:"FieldQuote",xmlName:"FieldQuote",type:{name:"String"}},recordSeparator:{serializedName:"RecordSeparator",xmlName:"RecordSeparator",type:{name:"String"}},escapeChar:{serializedName:"EscapeChar",xmlName:"EscapeChar",type:{name:"String"}},headersPresent:{serializedName:"HeadersPresent",xmlName:"HasHeaders",type:{name:"Boolean"}}}}};const it={serializedName:"JsonTextConfiguration",xmlName:"JsonTextConfiguration",type:{name:"Composite",className:"JsonTextConfiguration",modelProperties:{recordSeparator:{serializedName:"RecordSeparator",xmlName:"RecordSeparator",type:{name:"String"}}}}};const nt={serializedName:"ArrowConfiguration",xmlName:"ArrowConfiguration",type:{name:"Composite",className:"ArrowConfiguration",modelProperties:{schema:{serializedName:"Schema",required:true,xmlName:"Schema",xmlIsWrapped:true,xmlElementName:"Field",type:{name:"Sequence",element:{type:{name:"Composite",className:"ArrowField"}}}}}}};const st={serializedName:"ArrowField",xmlName:"Field",type:{name:"Composite",className:"ArrowField",modelProperties:{type:{serializedName:"Type",required:true,xmlName:"Type",type:{name:"String"}},name:{serializedName:"Name",xmlName:"Name",type:{name:"String"}},precision:{serializedName:"Precision",xmlName:"Precision",type:{name:"Number"}},scale:{serializedName:"Scale",xmlName:"Scale",type:{name:"Number"}}}}};const ot={serializedName:"Service_setPropertiesHeaders",type:{name:"Composite",className:"ServiceSetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const lt={serializedName:"Service_setPropertiesExceptionHeaders",type:{name:"Composite",className:"ServiceSetPropertiesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ct={serializedName:"Service_getPropertiesHeaders",type:{name:"Composite",className:"ServiceGetPropertiesHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const dt={serializedName:"Service_getPropertiesExceptionHeaders",type:{name:"Composite",className:"ServiceGetPropertiesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const pt={serializedName:"Service_getStatisticsHeaders",type:{name:"Composite",className:"ServiceGetStatisticsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const At={serializedName:"Service_getStatisticsExceptionHeaders",type:{name:"Composite",className:"ServiceGetStatisticsExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ut={serializedName:"Service_listContainersSegmentHeaders",type:{name:"Composite",className:"ServiceListContainersSegmentHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ft={serializedName:"Service_listContainersSegmentExceptionHeaders",type:{name:"Composite",className:"ServiceListContainersSegmentExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ht={serializedName:"Service_getUserDelegationKeyHeaders",type:{name:"Composite",className:"ServiceGetUserDelegationKeyHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const mt={serializedName:"Service_getUserDelegationKeyExceptionHeaders",type:{name:"Composite",className:"ServiceGetUserDelegationKeyExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const gt={serializedName:"Service_getAccountInfoHeaders",type:{name:"Composite",className:"ServiceGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",xmlName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",xmlName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2","FileStorage","BlockBlobStorage"]}},isHierarchicalNamespaceEnabled:{serializedName:"x-ms-is-hns-enabled",xmlName:"x-ms-is-hns-enabled",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const yt={serializedName:"Service_getAccountInfoExceptionHeaders",type:{name:"Composite",className:"ServiceGetAccountInfoExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Et={serializedName:"Service_submitBatchHeaders",type:{name:"Composite",className:"ServiceSubmitBatchHeaders",modelProperties:{contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const bt={serializedName:"Service_submitBatchExceptionHeaders",type:{name:"Composite",className:"ServiceSubmitBatchExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ct={serializedName:"Service_filterBlobsHeaders",type:{name:"Composite",className:"ServiceFilterBlobsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Bt={serializedName:"Service_filterBlobsExceptionHeaders",type:{name:"Composite",className:"ServiceFilterBlobsExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const It={serializedName:"Container_createHeaders",type:{name:"Composite",className:"ContainerCreateHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const wt={serializedName:"Container_createExceptionHeaders",type:{name:"Composite",className:"ContainerCreateExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const vt={serializedName:"Container_getPropertiesHeaders",type:{name:"Composite",className:"ContainerGetPropertiesHeaders",modelProperties:{metadata:{serializedName:"x-ms-meta",headerCollectionPrefix:"x-ms-meta-",xmlName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseDuration:{serializedName:"x-ms-lease-duration",xmlName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",xmlName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",xmlName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},blobPublicAccess:{serializedName:"x-ms-blob-public-access",xmlName:"x-ms-blob-public-access",type:{name:"Enum",allowedValues:["container","blob"]}},hasImmutabilityPolicy:{serializedName:"x-ms-has-immutability-policy",xmlName:"x-ms-has-immutability-policy",type:{name:"Boolean"}},hasLegalHold:{serializedName:"x-ms-has-legal-hold",xmlName:"x-ms-has-legal-hold",type:{name:"Boolean"}},defaultEncryptionScope:{serializedName:"x-ms-default-encryption-scope",xmlName:"x-ms-default-encryption-scope",type:{name:"String"}},denyEncryptionScopeOverride:{serializedName:"x-ms-deny-encryption-scope-override",xmlName:"x-ms-deny-encryption-scope-override",type:{name:"Boolean"}},isImmutableStorageWithVersioningEnabled:{serializedName:"x-ms-immutable-storage-with-versioning-enabled",xmlName:"x-ms-immutable-storage-with-versioning-enabled",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const St={serializedName:"Container_getPropertiesExceptionHeaders",type:{name:"Composite",className:"ContainerGetPropertiesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Qt={serializedName:"Container_deleteHeaders",type:{name:"Composite",className:"ContainerDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Nt={serializedName:"Container_deleteExceptionHeaders",type:{name:"Composite",className:"ContainerDeleteExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Rt={serializedName:"Container_setMetadataHeaders",type:{name:"Composite",className:"ContainerSetMetadataHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const kt={serializedName:"Container_setMetadataExceptionHeaders",type:{name:"Composite",className:"ContainerSetMetadataExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Tt={serializedName:"Container_getAccessPolicyHeaders",type:{name:"Composite",className:"ContainerGetAccessPolicyHeaders",modelProperties:{blobPublicAccess:{serializedName:"x-ms-blob-public-access",xmlName:"x-ms-blob-public-access",type:{name:"Enum",allowedValues:["container","blob"]}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const _t={serializedName:"Container_getAccessPolicyExceptionHeaders",type:{name:"Composite",className:"ContainerGetAccessPolicyExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const xt={serializedName:"Container_setAccessPolicyHeaders",type:{name:"Composite",className:"ContainerSetAccessPolicyHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Dt={serializedName:"Container_setAccessPolicyExceptionHeaders",type:{name:"Composite",className:"ContainerSetAccessPolicyExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Pt={serializedName:"Container_restoreHeaders",type:{name:"Composite",className:"ContainerRestoreHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ot={serializedName:"Container_restoreExceptionHeaders",type:{name:"Composite",className:"ContainerRestoreExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Lt={serializedName:"Container_renameHeaders",type:{name:"Composite",className:"ContainerRenameHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ft={serializedName:"Container_renameExceptionHeaders",type:{name:"Composite",className:"ContainerRenameExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Mt={serializedName:"Container_submitBatchHeaders",type:{name:"Composite",className:"ContainerSubmitBatchHeaders",modelProperties:{contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}}}}};const Ut={serializedName:"Container_submitBatchExceptionHeaders",type:{name:"Composite",className:"ContainerSubmitBatchExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ht={serializedName:"Container_filterBlobsHeaders",type:{name:"Composite",className:"ContainerFilterBlobsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const qt={serializedName:"Container_filterBlobsExceptionHeaders",type:{name:"Composite",className:"ContainerFilterBlobsExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Gt={serializedName:"Container_acquireLeaseHeaders",type:{name:"Composite",className:"ContainerAcquireLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const jt={serializedName:"Container_acquireLeaseExceptionHeaders",type:{name:"Composite",className:"ContainerAcquireLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const zt={serializedName:"Container_releaseLeaseHeaders",type:{name:"Composite",className:"ContainerReleaseLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Vt={serializedName:"Container_releaseLeaseExceptionHeaders",type:{name:"Composite",className:"ContainerReleaseLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Wt={serializedName:"Container_renewLeaseHeaders",type:{name:"Composite",className:"ContainerRenewLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Yt={serializedName:"Container_renewLeaseExceptionHeaders",type:{name:"Composite",className:"ContainerRenewLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Jt={serializedName:"Container_breakLeaseHeaders",type:{name:"Composite",className:"ContainerBreakLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",xmlName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const $t={serializedName:"Container_breakLeaseExceptionHeaders",type:{name:"Composite",className:"ContainerBreakLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Kt={serializedName:"Container_changeLeaseHeaders",type:{name:"Composite",className:"ContainerChangeLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Xt={serializedName:"Container_changeLeaseExceptionHeaders",type:{name:"Composite",className:"ContainerChangeLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Zt={serializedName:"Container_listBlobFlatSegmentHeaders",type:{name:"Composite",className:"ContainerListBlobFlatSegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const er={serializedName:"Container_listBlobFlatSegmentExceptionHeaders",type:{name:"Composite",className:"ContainerListBlobFlatSegmentExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const tr={serializedName:"Container_listBlobHierarchySegmentHeaders",type:{name:"Composite",className:"ContainerListBlobHierarchySegmentHeaders",modelProperties:{contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const rr={serializedName:"Container_listBlobHierarchySegmentExceptionHeaders",type:{name:"Composite",className:"ContainerListBlobHierarchySegmentExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ir={serializedName:"Container_getAccountInfoHeaders",type:{name:"Composite",className:"ContainerGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",xmlName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",xmlName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2","FileStorage","BlockBlobStorage"]}},isHierarchicalNamespaceEnabled:{serializedName:"x-ms-is-hns-enabled",xmlName:"x-ms-is-hns-enabled",type:{name:"Boolean"}}}}};const nr={serializedName:"Container_getAccountInfoExceptionHeaders",type:{name:"Composite",className:"ContainerGetAccountInfoExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const sr={serializedName:"Blob_downloadHeaders",type:{name:"Composite",className:"BlobDownloadHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},createdOn:{serializedName:"x-ms-creation-time",xmlName:"x-ms-creation-time",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",headerCollectionPrefix:"x-ms-meta-",xmlName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}}},objectReplicationPolicyId:{serializedName:"x-ms-or-policy-id",xmlName:"x-ms-or-policy-id",type:{name:"String"}},objectReplicationRules:{serializedName:"x-ms-or",headerCollectionPrefix:"x-ms-or-",xmlName:"x-ms-or",type:{name:"Dictionary",value:{type:{name:"String"}}}},contentLength:{serializedName:"content-length",xmlName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},contentRange:{serializedName:"content-range",xmlName:"content-range",type:{name:"String"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",xmlName:"content-encoding",type:{name:"String"}},cacheControl:{serializedName:"cache-control",xmlName:"cache-control",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",xmlName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",xmlName:"content-language",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{serializedName:"x-ms-blob-type",xmlName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletedOn:{serializedName:"x-ms-copy-completion-time",xmlName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",xmlName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",xmlName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",xmlName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",xmlName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},leaseDuration:{serializedName:"x-ms-lease-duration",xmlName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",xmlName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",xmlName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},isCurrentVersion:{serializedName:"x-ms-is-current-version",xmlName:"x-ms-is-current-version",type:{name:"Boolean"}},acceptRanges:{serializedName:"accept-ranges",xmlName:"accept-ranges",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",xmlName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",xmlName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},blobContentMD5:{serializedName:"x-ms-blob-content-md5",xmlName:"x-ms-blob-content-md5",type:{name:"ByteArray"}},tagCount:{serializedName:"x-ms-tag-count",xmlName:"x-ms-tag-count",type:{name:"Number"}},isSealed:{serializedName:"x-ms-blob-sealed",xmlName:"x-ms-blob-sealed",type:{name:"Boolean"}},lastAccessed:{serializedName:"x-ms-last-access-time",xmlName:"x-ms-last-access-time",type:{name:"DateTimeRfc1123"}},immutabilityPolicyExpiresOn:{serializedName:"x-ms-immutability-policy-until-date",xmlName:"x-ms-immutability-policy-until-date",type:{name:"DateTimeRfc1123"}},immutabilityPolicyMode:{serializedName:"x-ms-immutability-policy-mode",xmlName:"x-ms-immutability-policy-mode",type:{name:"Enum",allowedValues:["Mutable","Unlocked","Locked"]}},legalHold:{serializedName:"x-ms-legal-hold",xmlName:"x-ms-legal-hold",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}},contentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}}}}};const ar={serializedName:"Blob_downloadExceptionHeaders",type:{name:"Composite",className:"BlobDownloadExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const or={serializedName:"Blob_getPropertiesHeaders",type:{name:"Composite",className:"BlobGetPropertiesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},createdOn:{serializedName:"x-ms-creation-time",xmlName:"x-ms-creation-time",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",headerCollectionPrefix:"x-ms-meta-",xmlName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}}},objectReplicationPolicyId:{serializedName:"x-ms-or-policy-id",xmlName:"x-ms-or-policy-id",type:{name:"String"}},objectReplicationRules:{serializedName:"x-ms-or",headerCollectionPrefix:"x-ms-or-",xmlName:"x-ms-or",type:{name:"Dictionary",value:{type:{name:"String"}}}},blobType:{serializedName:"x-ms-blob-type",xmlName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletedOn:{serializedName:"x-ms-copy-completion-time",xmlName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",xmlName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",xmlName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",xmlName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",xmlName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},isIncrementalCopy:{serializedName:"x-ms-incremental-copy",xmlName:"x-ms-incremental-copy",type:{name:"Boolean"}},destinationSnapshot:{serializedName:"x-ms-copy-destination-snapshot",xmlName:"x-ms-copy-destination-snapshot",type:{name:"String"}},leaseDuration:{serializedName:"x-ms-lease-duration",xmlName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",xmlName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",xmlName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},contentLength:{serializedName:"content-length",xmlName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",xmlName:"content-encoding",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",xmlName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",xmlName:"content-language",type:{name:"String"}},cacheControl:{serializedName:"cache-control",xmlName:"cache-control",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},acceptRanges:{serializedName:"accept-ranges",xmlName:"accept-ranges",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",xmlName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",xmlName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},accessTier:{serializedName:"x-ms-access-tier",xmlName:"x-ms-access-tier",type:{name:"String"}},accessTierInferred:{serializedName:"x-ms-access-tier-inferred",xmlName:"x-ms-access-tier-inferred",type:{name:"Boolean"}},archiveStatus:{serializedName:"x-ms-archive-status",xmlName:"x-ms-archive-status",type:{name:"String"}},accessTierChangedOn:{serializedName:"x-ms-access-tier-change-time",xmlName:"x-ms-access-tier-change-time",type:{name:"DateTimeRfc1123"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},isCurrentVersion:{serializedName:"x-ms-is-current-version",xmlName:"x-ms-is-current-version",type:{name:"Boolean"}},tagCount:{serializedName:"x-ms-tag-count",xmlName:"x-ms-tag-count",type:{name:"Number"}},expiresOn:{serializedName:"x-ms-expiry-time",xmlName:"x-ms-expiry-time",type:{name:"DateTimeRfc1123"}},isSealed:{serializedName:"x-ms-blob-sealed",xmlName:"x-ms-blob-sealed",type:{name:"Boolean"}},rehydratePriority:{serializedName:"x-ms-rehydrate-priority",xmlName:"x-ms-rehydrate-priority",type:{name:"Enum",allowedValues:["High","Standard"]}},lastAccessed:{serializedName:"x-ms-last-access-time",xmlName:"x-ms-last-access-time",type:{name:"DateTimeRfc1123"}},immutabilityPolicyExpiresOn:{serializedName:"x-ms-immutability-policy-until-date",xmlName:"x-ms-immutability-policy-until-date",type:{name:"DateTimeRfc1123"}},immutabilityPolicyMode:{serializedName:"x-ms-immutability-policy-mode",xmlName:"x-ms-immutability-policy-mode",type:{name:"Enum",allowedValues:["Mutable","Unlocked","Locked"]}},legalHold:{serializedName:"x-ms-legal-hold",xmlName:"x-ms-legal-hold",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const lr={serializedName:"Blob_getPropertiesExceptionHeaders",type:{name:"Composite",className:"BlobGetPropertiesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const cr={serializedName:"Blob_deleteHeaders",type:{name:"Composite",className:"BlobDeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const dr={serializedName:"Blob_deleteExceptionHeaders",type:{name:"Composite",className:"BlobDeleteExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const pr={serializedName:"Blob_undeleteHeaders",type:{name:"Composite",className:"BlobUndeleteHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ar={serializedName:"Blob_undeleteExceptionHeaders",type:{name:"Composite",className:"BlobUndeleteExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ur={serializedName:"Blob_setExpiryHeaders",type:{name:"Composite",className:"BlobSetExpiryHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const fr={serializedName:"Blob_setExpiryExceptionHeaders",type:{name:"Composite",className:"BlobSetExpiryExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const hr={serializedName:"Blob_setHttpHeadersHeaders",type:{name:"Composite",className:"BlobSetHttpHeadersHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const mr={serializedName:"Blob_setHttpHeadersExceptionHeaders",type:{name:"Composite",className:"BlobSetHttpHeadersExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const gr={serializedName:"Blob_setImmutabilityPolicyHeaders",type:{name:"Composite",className:"BlobSetImmutabilityPolicyHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},immutabilityPolicyExpiry:{serializedName:"x-ms-immutability-policy-until-date",xmlName:"x-ms-immutability-policy-until-date",type:{name:"DateTimeRfc1123"}},immutabilityPolicyMode:{serializedName:"x-ms-immutability-policy-mode",xmlName:"x-ms-immutability-policy-mode",type:{name:"Enum",allowedValues:["Mutable","Unlocked","Locked"]}}}}};const yr={serializedName:"Blob_setImmutabilityPolicyExceptionHeaders",type:{name:"Composite",className:"BlobSetImmutabilityPolicyExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Er={serializedName:"Blob_deleteImmutabilityPolicyHeaders",type:{name:"Composite",className:"BlobDeleteImmutabilityPolicyHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const br={serializedName:"Blob_deleteImmutabilityPolicyExceptionHeaders",type:{name:"Composite",className:"BlobDeleteImmutabilityPolicyExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Cr={serializedName:"Blob_setLegalHoldHeaders",type:{name:"Composite",className:"BlobSetLegalHoldHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},legalHold:{serializedName:"x-ms-legal-hold",xmlName:"x-ms-legal-hold",type:{name:"Boolean"}}}}};const Br={serializedName:"Blob_setLegalHoldExceptionHeaders",type:{name:"Composite",className:"BlobSetLegalHoldExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ir={serializedName:"Blob_setMetadataHeaders",type:{name:"Composite",className:"BlobSetMetadataHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const wr={serializedName:"Blob_setMetadataExceptionHeaders",type:{name:"Composite",className:"BlobSetMetadataExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const vr={serializedName:"Blob_acquireLeaseHeaders",type:{name:"Composite",className:"BlobAcquireLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Sr={serializedName:"Blob_acquireLeaseExceptionHeaders",type:{name:"Composite",className:"BlobAcquireLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Qr={serializedName:"Blob_releaseLeaseHeaders",type:{name:"Composite",className:"BlobReleaseLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Nr={serializedName:"Blob_releaseLeaseExceptionHeaders",type:{name:"Composite",className:"BlobReleaseLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Rr={serializedName:"Blob_renewLeaseHeaders",type:{name:"Composite",className:"BlobRenewLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const kr={serializedName:"Blob_renewLeaseExceptionHeaders",type:{name:"Composite",className:"BlobRenewLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Tr={serializedName:"Blob_changeLeaseHeaders",type:{name:"Composite",className:"BlobChangeLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},leaseId:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const _r={serializedName:"Blob_changeLeaseExceptionHeaders",type:{name:"Composite",className:"BlobChangeLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const xr={serializedName:"Blob_breakLeaseHeaders",type:{name:"Composite",className:"BlobBreakLeaseHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},leaseTime:{serializedName:"x-ms-lease-time",xmlName:"x-ms-lease-time",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}}}}};const Dr={serializedName:"Blob_breakLeaseExceptionHeaders",type:{name:"Composite",className:"BlobBreakLeaseExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Pr={serializedName:"Blob_createSnapshotHeaders",type:{name:"Composite",className:"BlobCreateSnapshotHeaders",modelProperties:{snapshot:{serializedName:"x-ms-snapshot",xmlName:"x-ms-snapshot",type:{name:"String"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Or={serializedName:"Blob_createSnapshotExceptionHeaders",type:{name:"Composite",className:"BlobCreateSnapshotExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Lr={serializedName:"Blob_startCopyFromURLHeaders",type:{name:"Composite",className:"BlobStartCopyFromURLHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",xmlName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Fr={serializedName:"Blob_startCopyFromURLExceptionHeaders",type:{name:"Composite",className:"BlobStartCopyFromURLExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Mr={serializedName:"Blob_copyFromURLHeaders",type:{name:"Composite",className:"BlobCopyFromURLHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{defaultValue:"success",isConstant:true,serializedName:"x-ms-copy-status",type:{name:"String"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ur={serializedName:"Blob_copyFromURLExceptionHeaders",type:{name:"Composite",className:"BlobCopyFromURLExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Hr={serializedName:"Blob_abortCopyFromURLHeaders",type:{name:"Composite",className:"BlobAbortCopyFromURLHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const qr={serializedName:"Blob_abortCopyFromURLExceptionHeaders",type:{name:"Composite",className:"BlobAbortCopyFromURLExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Gr={serializedName:"Blob_setTierHeaders",type:{name:"Composite",className:"BlobSetTierHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const jr={serializedName:"Blob_setTierExceptionHeaders",type:{name:"Composite",className:"BlobSetTierExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const zr={serializedName:"Blob_getAccountInfoHeaders",type:{name:"Composite",className:"BlobGetAccountInfoHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},skuName:{serializedName:"x-ms-sku-name",xmlName:"x-ms-sku-name",type:{name:"Enum",allowedValues:["Standard_LRS","Standard_GRS","Standard_RAGRS","Standard_ZRS","Premium_LRS"]}},accountKind:{serializedName:"x-ms-account-kind",xmlName:"x-ms-account-kind",type:{name:"Enum",allowedValues:["Storage","BlobStorage","StorageV2","FileStorage","BlockBlobStorage"]}},isHierarchicalNamespaceEnabled:{serializedName:"x-ms-is-hns-enabled",xmlName:"x-ms-is-hns-enabled",type:{name:"Boolean"}}}}};const Vr={serializedName:"Blob_getAccountInfoExceptionHeaders",type:{name:"Composite",className:"BlobGetAccountInfoExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Wr={serializedName:"Blob_queryHeaders",type:{name:"Composite",className:"BlobQueryHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},metadata:{serializedName:"x-ms-meta",headerCollectionPrefix:"x-ms-meta-",xmlName:"x-ms-meta",type:{name:"Dictionary",value:{type:{name:"String"}}}},contentLength:{serializedName:"content-length",xmlName:"content-length",type:{name:"Number"}},contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},contentRange:{serializedName:"content-range",xmlName:"content-range",type:{name:"String"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},contentEncoding:{serializedName:"content-encoding",xmlName:"content-encoding",type:{name:"String"}},cacheControl:{serializedName:"cache-control",xmlName:"cache-control",type:{name:"String"}},contentDisposition:{serializedName:"content-disposition",xmlName:"content-disposition",type:{name:"String"}},contentLanguage:{serializedName:"content-language",xmlName:"content-language",type:{name:"String"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},blobType:{serializedName:"x-ms-blob-type",xmlName:"x-ms-blob-type",type:{name:"Enum",allowedValues:["BlockBlob","PageBlob","AppendBlob"]}},copyCompletionTime:{serializedName:"x-ms-copy-completion-time",xmlName:"x-ms-copy-completion-time",type:{name:"DateTimeRfc1123"}},copyStatusDescription:{serializedName:"x-ms-copy-status-description",xmlName:"x-ms-copy-status-description",type:{name:"String"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyProgress:{serializedName:"x-ms-copy-progress",xmlName:"x-ms-copy-progress",type:{name:"String"}},copySource:{serializedName:"x-ms-copy-source",xmlName:"x-ms-copy-source",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",xmlName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},leaseDuration:{serializedName:"x-ms-lease-duration",xmlName:"x-ms-lease-duration",type:{name:"Enum",allowedValues:["infinite","fixed"]}},leaseState:{serializedName:"x-ms-lease-state",xmlName:"x-ms-lease-state",type:{name:"Enum",allowedValues:["available","leased","expired","breaking","broken"]}},leaseStatus:{serializedName:"x-ms-lease-status",xmlName:"x-ms-lease-status",type:{name:"Enum",allowedValues:["locked","unlocked"]}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},acceptRanges:{serializedName:"accept-ranges",xmlName:"accept-ranges",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",xmlName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-server-encrypted",xmlName:"x-ms-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},blobContentMD5:{serializedName:"x-ms-blob-content-md5",xmlName:"x-ms-blob-content-md5",type:{name:"ByteArray"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}},contentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}}}}};const Yr={serializedName:"Blob_queryExceptionHeaders",type:{name:"Composite",className:"BlobQueryExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Jr={serializedName:"Blob_getTagsHeaders",type:{name:"Composite",className:"BlobGetTagsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const $r={serializedName:"Blob_getTagsExceptionHeaders",type:{name:"Composite",className:"BlobGetTagsExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Kr={serializedName:"Blob_setTagsHeaders",type:{name:"Composite",className:"BlobSetTagsHeaders",modelProperties:{clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Xr={serializedName:"Blob_setTagsExceptionHeaders",type:{name:"Composite",className:"BlobSetTagsExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Zr={serializedName:"PageBlob_createHeaders",type:{name:"Composite",className:"PageBlobCreateHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ei={serializedName:"PageBlob_createExceptionHeaders",type:{name:"Composite",className:"PageBlobCreateExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ti={serializedName:"PageBlob_uploadPagesHeaders",type:{name:"Composite",className:"PageBlobUploadPagesHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ri={serializedName:"PageBlob_uploadPagesExceptionHeaders",type:{name:"Composite",className:"PageBlobUploadPagesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ii={serializedName:"PageBlob_clearPagesHeaders",type:{name:"Composite",className:"PageBlobClearPagesHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ni={serializedName:"PageBlob_clearPagesExceptionHeaders",type:{name:"Composite",className:"PageBlobClearPagesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const si={serializedName:"PageBlob_uploadPagesFromURLHeaders",type:{name:"Composite",className:"PageBlobUploadPagesFromURLHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ai={serializedName:"PageBlob_uploadPagesFromURLExceptionHeaders",type:{name:"Composite",className:"PageBlobUploadPagesFromURLExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const oi={serializedName:"PageBlob_getPageRangesHeaders",type:{name:"Composite",className:"PageBlobGetPageRangesHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",xmlName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const li={serializedName:"PageBlob_getPageRangesExceptionHeaders",type:{name:"Composite",className:"PageBlobGetPageRangesExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ci={serializedName:"PageBlob_getPageRangesDiffHeaders",type:{name:"Composite",className:"PageBlobGetPageRangesDiffHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",xmlName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const di={serializedName:"PageBlob_getPageRangesDiffExceptionHeaders",type:{name:"Composite",className:"PageBlobGetPageRangesDiffExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const pi={serializedName:"PageBlob_resizeHeaders",type:{name:"Composite",className:"PageBlobResizeHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ai={serializedName:"PageBlob_resizeExceptionHeaders",type:{name:"Composite",className:"PageBlobResizeExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ui={serializedName:"PageBlob_updateSequenceNumberHeaders",type:{name:"Composite",className:"PageBlobUpdateSequenceNumberHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},blobSequenceNumber:{serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const fi={serializedName:"PageBlob_updateSequenceNumberExceptionHeaders",type:{name:"Composite",className:"PageBlobUpdateSequenceNumberExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const hi={serializedName:"PageBlob_copyIncrementalHeaders",type:{name:"Composite",className:"PageBlobCopyIncrementalHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},copyId:{serializedName:"x-ms-copy-id",xmlName:"x-ms-copy-id",type:{name:"String"}},copyStatus:{serializedName:"x-ms-copy-status",xmlName:"x-ms-copy-status",type:{name:"Enum",allowedValues:["pending","success","aborted","failed"]}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const mi={serializedName:"PageBlob_copyIncrementalExceptionHeaders",type:{name:"Composite",className:"PageBlobCopyIncrementalExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const gi={serializedName:"AppendBlob_createHeaders",type:{name:"Composite",className:"AppendBlobCreateHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const yi={serializedName:"AppendBlob_createExceptionHeaders",type:{name:"Composite",className:"AppendBlobCreateExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ei={serializedName:"AppendBlob_appendBlockHeaders",type:{name:"Composite",className:"AppendBlobAppendBlockHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",xmlName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",xmlName:"x-ms-blob-committed-block-count",type:{name:"Number"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const bi={serializedName:"AppendBlob_appendBlockExceptionHeaders",type:{name:"Composite",className:"AppendBlobAppendBlockExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ci={serializedName:"AppendBlob_appendBlockFromUrlHeaders",type:{name:"Composite",className:"AppendBlobAppendBlockFromUrlHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},blobAppendOffset:{serializedName:"x-ms-blob-append-offset",xmlName:"x-ms-blob-append-offset",type:{name:"String"}},blobCommittedBlockCount:{serializedName:"x-ms-blob-committed-block-count",xmlName:"x-ms-blob-committed-block-count",type:{name:"Number"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Bi={serializedName:"AppendBlob_appendBlockFromUrlExceptionHeaders",type:{name:"Composite",className:"AppendBlobAppendBlockFromUrlExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ii={serializedName:"AppendBlob_sealHeaders",type:{name:"Composite",className:"AppendBlobSealHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isSealed:{serializedName:"x-ms-blob-sealed",xmlName:"x-ms-blob-sealed",type:{name:"Boolean"}}}}};const wi={serializedName:"AppendBlob_sealExceptionHeaders",type:{name:"Composite",className:"AppendBlobSealExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const vi={serializedName:"BlockBlob_uploadHeaders",type:{name:"Composite",className:"BlockBlobUploadHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Si={serializedName:"BlockBlob_uploadExceptionHeaders",type:{name:"Composite",className:"BlockBlobUploadExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Qi={serializedName:"BlockBlob_putBlobFromUrlHeaders",type:{name:"Composite",className:"BlockBlobPutBlobFromUrlHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ni={serializedName:"BlockBlob_putBlobFromUrlExceptionHeaders",type:{name:"Composite",className:"BlockBlobPutBlobFromUrlExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ri={serializedName:"BlockBlob_stageBlockHeaders",type:{name:"Composite",className:"BlockBlobStageBlockHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const ki={serializedName:"BlockBlob_stageBlockExceptionHeaders",type:{name:"Composite",className:"BlockBlobStageBlockExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Ti={serializedName:"BlockBlob_stageBlockFromURLHeaders",type:{name:"Composite",className:"BlockBlobStageBlockFromURLHeaders",modelProperties:{contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const _i={serializedName:"BlockBlob_stageBlockFromURLExceptionHeaders",type:{name:"Composite",className:"BlockBlobStageBlockFromURLExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const xi={serializedName:"BlockBlob_commitBlockListHeaders",type:{name:"Composite",className:"BlockBlobCommitBlockListHeaders",modelProperties:{etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},contentMD5:{serializedName:"content-md5",xmlName:"content-md5",type:{name:"ByteArray"}},xMsContentCrc64:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},versionId:{serializedName:"x-ms-version-id",xmlName:"x-ms-version-id",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},isServerEncrypted:{serializedName:"x-ms-request-server-encrypted",xmlName:"x-ms-request-server-encrypted",type:{name:"Boolean"}},encryptionKeySha256:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}},encryptionScope:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Di={serializedName:"BlockBlob_commitBlockListExceptionHeaders",type:{name:"Composite",className:"BlockBlobCommitBlockListExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Pi={serializedName:"BlockBlob_getBlockListHeaders",type:{name:"Composite",className:"BlockBlobGetBlockListHeaders",modelProperties:{lastModified:{serializedName:"last-modified",xmlName:"last-modified",type:{name:"DateTimeRfc1123"}},etag:{serializedName:"etag",xmlName:"etag",type:{name:"String"}},contentType:{serializedName:"content-type",xmlName:"content-type",type:{name:"String"}},blobContentLength:{serializedName:"x-ms-blob-content-length",xmlName:"x-ms-blob-content-length",type:{name:"Number"}},clientRequestId:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}},requestId:{serializedName:"x-ms-request-id",xmlName:"x-ms-request-id",type:{name:"String"}},version:{serializedName:"x-ms-version",xmlName:"x-ms-version",type:{name:"String"}},date:{serializedName:"date",xmlName:"date",type:{name:"DateTimeRfc1123"}},errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};const Oi={serializedName:"BlockBlob_getBlockListExceptionHeaders",type:{name:"Composite",className:"BlockBlobGetBlockListExceptionHeaders",modelProperties:{errorCode:{serializedName:"x-ms-error-code",xmlName:"x-ms-error-code",type:{name:"String"}}}}};var Li=Object.freeze({__proto__:null,AccessPolicy:Fe,AppendBlobAppendBlockExceptionHeaders:bi,AppendBlobAppendBlockFromUrlExceptionHeaders:Bi,AppendBlobAppendBlockFromUrlHeaders:Ci,AppendBlobAppendBlockHeaders:Ei,AppendBlobCreateExceptionHeaders:yi,AppendBlobCreateHeaders:gi,AppendBlobSealExceptionHeaders:wi,AppendBlobSealHeaders:Ii,ArrowConfiguration:nt,ArrowField:st,BlobAbortCopyFromURLExceptionHeaders:qr,BlobAbortCopyFromURLHeaders:Hr,BlobAcquireLeaseExceptionHeaders:Sr,BlobAcquireLeaseHeaders:vr,BlobBreakLeaseExceptionHeaders:Dr,BlobBreakLeaseHeaders:xr,BlobChangeLeaseExceptionHeaders:_r,BlobChangeLeaseHeaders:Tr,BlobCopyFromURLExceptionHeaders:Ur,BlobCopyFromURLHeaders:Mr,BlobCreateSnapshotExceptionHeaders:Or,BlobCreateSnapshotHeaders:Pr,BlobDeleteExceptionHeaders:dr,BlobDeleteHeaders:cr,BlobDeleteImmutabilityPolicyExceptionHeaders:br,BlobDeleteImmutabilityPolicyHeaders:Er,BlobDownloadExceptionHeaders:ar,BlobDownloadHeaders:sr,BlobFlatListSegment:Ue,BlobGetAccountInfoExceptionHeaders:Vr,BlobGetAccountInfoHeaders:zr,BlobGetPropertiesExceptionHeaders:lr,BlobGetPropertiesHeaders:or,BlobGetTagsExceptionHeaders:$r,BlobGetTagsHeaders:Jr,BlobHierarchyListSegment:ze,BlobItemInternal:He,BlobName:qe,BlobPrefix:Ve,BlobPropertiesInternal:Ge,BlobQueryExceptionHeaders:Yr,BlobQueryHeaders:Wr,BlobReleaseLeaseExceptionHeaders:Nr,BlobReleaseLeaseHeaders:Qr,BlobRenewLeaseExceptionHeaders:kr,BlobRenewLeaseHeaders:Rr,BlobServiceProperties:Ee,BlobServiceStatistics:Se,BlobSetExpiryExceptionHeaders:fr,BlobSetExpiryHeaders:ur,BlobSetHttpHeadersExceptionHeaders:mr,BlobSetHttpHeadersHeaders:hr,BlobSetImmutabilityPolicyExceptionHeaders:yr,BlobSetImmutabilityPolicyHeaders:gr,BlobSetLegalHoldExceptionHeaders:Br,BlobSetLegalHoldHeaders:Cr,BlobSetMetadataExceptionHeaders:wr,BlobSetMetadataHeaders:Ir,BlobSetTagsExceptionHeaders:Xr,BlobSetTagsHeaders:Kr,BlobSetTierExceptionHeaders:jr,BlobSetTierHeaders:Gr,BlobStartCopyFromURLExceptionHeaders:Fr,BlobStartCopyFromURLHeaders:Lr,BlobTag:Oe,BlobTags:Pe,BlobUndeleteExceptionHeaders:Ar,BlobUndeleteHeaders:pr,Block:Je,BlockBlobCommitBlockListExceptionHeaders:Di,BlockBlobCommitBlockListHeaders:xi,BlockBlobGetBlockListExceptionHeaders:Oi,BlockBlobGetBlockListHeaders:Pi,BlockBlobPutBlobFromUrlExceptionHeaders:Ni,BlockBlobPutBlobFromUrlHeaders:Qi,BlockBlobStageBlockExceptionHeaders:ki,BlockBlobStageBlockFromURLExceptionHeaders:_i,BlockBlobStageBlockFromURLHeaders:Ti,BlockBlobStageBlockHeaders:Ri,BlockBlobUploadExceptionHeaders:Si,BlockBlobUploadHeaders:vi,BlockList:Ye,BlockLookupList:We,ClearRange:Xe,ContainerAcquireLeaseExceptionHeaders:jt,ContainerAcquireLeaseHeaders:Gt,ContainerBreakLeaseExceptionHeaders:$t,ContainerBreakLeaseHeaders:Jt,ContainerChangeLeaseExceptionHeaders:Xt,ContainerChangeLeaseHeaders:Kt,ContainerCreateExceptionHeaders:wt,ContainerCreateHeaders:It,ContainerDeleteExceptionHeaders:Nt,ContainerDeleteHeaders:Qt,ContainerFilterBlobsExceptionHeaders:qt,ContainerFilterBlobsHeaders:Ht,ContainerGetAccessPolicyExceptionHeaders:_t,ContainerGetAccessPolicyHeaders:Tt,ContainerGetAccountInfoExceptionHeaders:nr,ContainerGetAccountInfoHeaders:ir,ContainerGetPropertiesExceptionHeaders:St,ContainerGetPropertiesHeaders:vt,ContainerItem:Re,ContainerListBlobFlatSegmentExceptionHeaders:er,ContainerListBlobFlatSegmentHeaders:Zt,ContainerListBlobHierarchySegmentExceptionHeaders:rr,ContainerListBlobHierarchySegmentHeaders:tr,ContainerProperties:ke,ContainerReleaseLeaseExceptionHeaders:Vt,ContainerReleaseLeaseHeaders:zt,ContainerRenameExceptionHeaders:Ft,ContainerRenameHeaders:Lt,ContainerRenewLeaseExceptionHeaders:Yt,ContainerRenewLeaseHeaders:Wt,ContainerRestoreExceptionHeaders:Ot,ContainerRestoreHeaders:Pt,ContainerSetAccessPolicyExceptionHeaders:Dt,ContainerSetAccessPolicyHeaders:xt,ContainerSetMetadataExceptionHeaders:kt,ContainerSetMetadataHeaders:Rt,ContainerSubmitBatchExceptionHeaders:Ut,ContainerSubmitBatchHeaders:Mt,CorsRule:Ie,DelimitedTextConfiguration:rt,FilterBlobItem:De,FilterBlobSegment:xe,GeoReplication:Qe,JsonTextConfiguration:it,KeyInfo:Te,ListBlobsFlatSegmentResponse:Me,ListBlobsHierarchySegmentResponse:je,ListContainersSegmentResponse:Ne,Logging:be,Metrics:Be,PageBlobClearPagesExceptionHeaders:ni,PageBlobClearPagesHeaders:ii,PageBlobCopyIncrementalExceptionHeaders:mi,PageBlobCopyIncrementalHeaders:hi,PageBlobCreateExceptionHeaders:ei,PageBlobCreateHeaders:Zr,PageBlobGetPageRangesDiffExceptionHeaders:di,PageBlobGetPageRangesDiffHeaders:ci,PageBlobGetPageRangesExceptionHeaders:li,PageBlobGetPageRangesHeaders:oi,PageBlobResizeExceptionHeaders:Ai,PageBlobResizeHeaders:pi,PageBlobUpdateSequenceNumberExceptionHeaders:fi,PageBlobUpdateSequenceNumberHeaders:ui,PageBlobUploadPagesExceptionHeaders:ri,PageBlobUploadPagesFromURLExceptionHeaders:ai,PageBlobUploadPagesFromURLHeaders:si,PageBlobUploadPagesHeaders:ti,PageList:$e,PageRange:Ke,QueryFormat:tt,QueryRequest:Ze,QuerySerialization:et,RetentionPolicy:Ce,ServiceFilterBlobsExceptionHeaders:Bt,ServiceFilterBlobsHeaders:Ct,ServiceGetAccountInfoExceptionHeaders:yt,ServiceGetAccountInfoHeaders:gt,ServiceGetPropertiesExceptionHeaders:dt,ServiceGetPropertiesHeaders:ct,ServiceGetStatisticsExceptionHeaders:At,ServiceGetStatisticsHeaders:pt,ServiceGetUserDelegationKeyExceptionHeaders:mt,ServiceGetUserDelegationKeyHeaders:ht,ServiceListContainersSegmentExceptionHeaders:ft,ServiceListContainersSegmentHeaders:ut,ServiceSetPropertiesExceptionHeaders:lt,ServiceSetPropertiesHeaders:ot,ServiceSubmitBatchExceptionHeaders:bt,ServiceSubmitBatchHeaders:Et,SignedIdentifier:Le,StaticWebsite:we,StorageError:ve,UserDelegationKey:_e});const Fi={parameterPath:["options","contentType"],mapper:{defaultValue:"application/xml",isConstant:true,serializedName:"Content-Type",type:{name:"String"}}};const Mi={parameterPath:"blobServiceProperties",mapper:Ee};const Ui={parameterPath:"accept",mapper:{defaultValue:"application/xml",isConstant:true,serializedName:"Accept",type:{name:"String"}}};const Hi={parameterPath:"url",mapper:{serializedName:"url",required:true,xmlName:"url",type:{name:"String"}},skipEncoding:true};const qi={parameterPath:"restype",mapper:{defaultValue:"service",isConstant:true,serializedName:"restype",type:{name:"String"}}};const Gi={parameterPath:"comp",mapper:{defaultValue:"properties",isConstant:true,serializedName:"comp",type:{name:"String"}}};const ji={parameterPath:["options","timeoutInSeconds"],mapper:{constraints:{InclusiveMinimum:0},serializedName:"timeout",xmlName:"timeout",type:{name:"Number"}}};const zi={parameterPath:"version",mapper:{defaultValue:"2024-08-04",isConstant:true,serializedName:"x-ms-version",type:{name:"String"}}};const Vi={parameterPath:["options","requestId"],mapper:{serializedName:"x-ms-client-request-id",xmlName:"x-ms-client-request-id",type:{name:"String"}}};const Wi={parameterPath:"accept",mapper:{defaultValue:"application/xml",isConstant:true,serializedName:"Accept",type:{name:"String"}}};const Yi={parameterPath:"comp",mapper:{defaultValue:"stats",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Ji={parameterPath:"comp",mapper:{defaultValue:"list",isConstant:true,serializedName:"comp",type:{name:"String"}}};const $i={parameterPath:["options","prefix"],mapper:{serializedName:"prefix",xmlName:"prefix",type:{name:"String"}}};const Ki={parameterPath:["options","marker"],mapper:{serializedName:"marker",xmlName:"marker",type:{name:"String"}}};const Xi={parameterPath:["options","maxPageSize"],mapper:{constraints:{InclusiveMinimum:1},serializedName:"maxresults",xmlName:"maxresults",type:{name:"Number"}}};const Zi={parameterPath:["options","include"],mapper:{serializedName:"include",xmlName:"include",xmlElementName:"ListContainersIncludeType",type:{name:"Sequence",element:{type:{name:"Enum",allowedValues:["metadata","deleted","system"]}}}},collectionFormat:"CSV"};const en={parameterPath:"keyInfo",mapper:Te};const tn={parameterPath:"comp",mapper:{defaultValue:"userdelegationkey",isConstant:true,serializedName:"comp",type:{name:"String"}}};const rn={parameterPath:"restype",mapper:{defaultValue:"account",isConstant:true,serializedName:"restype",type:{name:"String"}}};const nn={parameterPath:"body",mapper:{serializedName:"body",required:true,xmlName:"body",type:{name:"Stream"}}};const sn={parameterPath:"comp",mapper:{defaultValue:"batch",isConstant:true,serializedName:"comp",type:{name:"String"}}};const an={parameterPath:"contentLength",mapper:{serializedName:"Content-Length",required:true,xmlName:"Content-Length",type:{name:"Number"}}};const ln={parameterPath:"multipartContentType",mapper:{serializedName:"Content-Type",required:true,xmlName:"Content-Type",type:{name:"String"}}};const cn={parameterPath:"comp",mapper:{defaultValue:"blobs",isConstant:true,serializedName:"comp",type:{name:"String"}}};const dn={parameterPath:["options","where"],mapper:{serializedName:"where",xmlName:"where",type:{name:"String"}}};const pn={parameterPath:"restype",mapper:{defaultValue:"container",isConstant:true,serializedName:"restype",type:{name:"String"}}};const An={parameterPath:["options","metadata"],mapper:{serializedName:"x-ms-meta",xmlName:"x-ms-meta",headerCollectionPrefix:"x-ms-meta-",type:{name:"Dictionary",value:{type:{name:"String"}}}}};const un={parameterPath:["options","access"],mapper:{serializedName:"x-ms-blob-public-access",xmlName:"x-ms-blob-public-access",type:{name:"Enum",allowedValues:["container","blob"]}}};const hn={parameterPath:["options","containerEncryptionScope","defaultEncryptionScope"],mapper:{serializedName:"x-ms-default-encryption-scope",xmlName:"x-ms-default-encryption-scope",type:{name:"String"}}};const mn={parameterPath:["options","containerEncryptionScope","preventEncryptionScopeOverride"],mapper:{serializedName:"x-ms-deny-encryption-scope-override",xmlName:"x-ms-deny-encryption-scope-override",type:{name:"Boolean"}}};const gn={parameterPath:["options","leaseAccessConditions","leaseId"],mapper:{serializedName:"x-ms-lease-id",xmlName:"x-ms-lease-id",type:{name:"String"}}};const yn={parameterPath:["options","modifiedAccessConditions","ifModifiedSince"],mapper:{serializedName:"If-Modified-Since",xmlName:"If-Modified-Since",type:{name:"DateTimeRfc1123"}}};const En={parameterPath:["options","modifiedAccessConditions","ifUnmodifiedSince"],mapper:{serializedName:"If-Unmodified-Since",xmlName:"If-Unmodified-Since",type:{name:"DateTimeRfc1123"}}};const bn={parameterPath:"comp",mapper:{defaultValue:"metadata",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Cn={parameterPath:"comp",mapper:{defaultValue:"acl",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Bn={parameterPath:["options","containerAcl"],mapper:{serializedName:"containerAcl",xmlName:"SignedIdentifiers",xmlIsWrapped:true,xmlElementName:"SignedIdentifier",type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}}}};const In={parameterPath:"comp",mapper:{defaultValue:"undelete",isConstant:true,serializedName:"comp",type:{name:"String"}}};const wn={parameterPath:["options","deletedContainerName"],mapper:{serializedName:"x-ms-deleted-container-name",xmlName:"x-ms-deleted-container-name",type:{name:"String"}}};const vn={parameterPath:["options","deletedContainerVersion"],mapper:{serializedName:"x-ms-deleted-container-version",xmlName:"x-ms-deleted-container-version",type:{name:"String"}}};const Sn={parameterPath:"comp",mapper:{defaultValue:"rename",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Qn={parameterPath:"sourceContainerName",mapper:{serializedName:"x-ms-source-container-name",required:true,xmlName:"x-ms-source-container-name",type:{name:"String"}}};const Nn={parameterPath:["options","sourceLeaseId"],mapper:{serializedName:"x-ms-source-lease-id",xmlName:"x-ms-source-lease-id",type:{name:"String"}}};const Rn={parameterPath:"comp",mapper:{defaultValue:"lease",isConstant:true,serializedName:"comp",type:{name:"String"}}};const kn={parameterPath:"action",mapper:{defaultValue:"acquire",isConstant:true,serializedName:"x-ms-lease-action",type:{name:"String"}}};const Tn={parameterPath:["options","duration"],mapper:{serializedName:"x-ms-lease-duration",xmlName:"x-ms-lease-duration",type:{name:"Number"}}};const _n={parameterPath:["options","proposedLeaseId"],mapper:{serializedName:"x-ms-proposed-lease-id",xmlName:"x-ms-proposed-lease-id",type:{name:"String"}}};const xn={parameterPath:"action",mapper:{defaultValue:"release",isConstant:true,serializedName:"x-ms-lease-action",type:{name:"String"}}};const Dn={parameterPath:"leaseId",mapper:{serializedName:"x-ms-lease-id",required:true,xmlName:"x-ms-lease-id",type:{name:"String"}}};const Pn={parameterPath:"action",mapper:{defaultValue:"renew",isConstant:true,serializedName:"x-ms-lease-action",type:{name:"String"}}};const On={parameterPath:"action",mapper:{defaultValue:"break",isConstant:true,serializedName:"x-ms-lease-action",type:{name:"String"}}};const Ln={parameterPath:["options","breakPeriod"],mapper:{serializedName:"x-ms-lease-break-period",xmlName:"x-ms-lease-break-period",type:{name:"Number"}}};const Fn={parameterPath:"action",mapper:{defaultValue:"change",isConstant:true,serializedName:"x-ms-lease-action",type:{name:"String"}}};const Mn={parameterPath:"proposedLeaseId",mapper:{serializedName:"x-ms-proposed-lease-id",required:true,xmlName:"x-ms-proposed-lease-id",type:{name:"String"}}};const Un={parameterPath:["options","include"],mapper:{serializedName:"include",xmlName:"include",xmlElementName:"ListBlobsIncludeItem",type:{name:"Sequence",element:{type:{name:"Enum",allowedValues:["copy","deleted","metadata","snapshots","uncommittedblobs","versions","tags","immutabilitypolicy","legalhold","deletedwithversions"]}}}},collectionFormat:"CSV"};const Hn={parameterPath:"delimiter",mapper:{serializedName:"delimiter",required:true,xmlName:"delimiter",type:{name:"String"}}};const qn={parameterPath:["options","snapshot"],mapper:{serializedName:"snapshot",xmlName:"snapshot",type:{name:"String"}}};const Gn={parameterPath:["options","versionId"],mapper:{serializedName:"versionid",xmlName:"versionid",type:{name:"String"}}};const jn={parameterPath:["options","range"],mapper:{serializedName:"x-ms-range",xmlName:"x-ms-range",type:{name:"String"}}};const zn={parameterPath:["options","rangeGetContentMD5"],mapper:{serializedName:"x-ms-range-get-content-md5",xmlName:"x-ms-range-get-content-md5",type:{name:"Boolean"}}};const Vn={parameterPath:["options","rangeGetContentCRC64"],mapper:{serializedName:"x-ms-range-get-content-crc64",xmlName:"x-ms-range-get-content-crc64",type:{name:"Boolean"}}};const Wn={parameterPath:["options","cpkInfo","encryptionKey"],mapper:{serializedName:"x-ms-encryption-key",xmlName:"x-ms-encryption-key",type:{name:"String"}}};const Yn={parameterPath:["options","cpkInfo","encryptionKeySha256"],mapper:{serializedName:"x-ms-encryption-key-sha256",xmlName:"x-ms-encryption-key-sha256",type:{name:"String"}}};const Jn={parameterPath:["options","cpkInfo","encryptionAlgorithm"],mapper:{serializedName:"x-ms-encryption-algorithm",xmlName:"x-ms-encryption-algorithm",type:{name:"String"}}};const $n={parameterPath:["options","modifiedAccessConditions","ifMatch"],mapper:{serializedName:"If-Match",xmlName:"If-Match",type:{name:"String"}}};const Kn={parameterPath:["options","modifiedAccessConditions","ifNoneMatch"],mapper:{serializedName:"If-None-Match",xmlName:"If-None-Match",type:{name:"String"}}};const Xn={parameterPath:["options","modifiedAccessConditions","ifTags"],mapper:{serializedName:"x-ms-if-tags",xmlName:"x-ms-if-tags",type:{name:"String"}}};const Zn={parameterPath:["options","deleteSnapshots"],mapper:{serializedName:"x-ms-delete-snapshots",xmlName:"x-ms-delete-snapshots",type:{name:"Enum",allowedValues:["include","only"]}}};const es={parameterPath:["options","blobDeleteType"],mapper:{serializedName:"deletetype",xmlName:"deletetype",type:{name:"String"}}};const ts={parameterPath:"comp",mapper:{defaultValue:"expiry",isConstant:true,serializedName:"comp",type:{name:"String"}}};const rs={parameterPath:"expiryOptions",mapper:{serializedName:"x-ms-expiry-option",required:true,xmlName:"x-ms-expiry-option",type:{name:"String"}}};const ns={parameterPath:["options","expiresOn"],mapper:{serializedName:"x-ms-expiry-time",xmlName:"x-ms-expiry-time",type:{name:"String"}}};const ss={parameterPath:["options","blobHttpHeaders","blobCacheControl"],mapper:{serializedName:"x-ms-blob-cache-control",xmlName:"x-ms-blob-cache-control",type:{name:"String"}}};const as={parameterPath:["options","blobHttpHeaders","blobContentType"],mapper:{serializedName:"x-ms-blob-content-type",xmlName:"x-ms-blob-content-type",type:{name:"String"}}};const os={parameterPath:["options","blobHttpHeaders","blobContentMD5"],mapper:{serializedName:"x-ms-blob-content-md5",xmlName:"x-ms-blob-content-md5",type:{name:"ByteArray"}}};const ls={parameterPath:["options","blobHttpHeaders","blobContentEncoding"],mapper:{serializedName:"x-ms-blob-content-encoding",xmlName:"x-ms-blob-content-encoding",type:{name:"String"}}};const cs={parameterPath:["options","blobHttpHeaders","blobContentLanguage"],mapper:{serializedName:"x-ms-blob-content-language",xmlName:"x-ms-blob-content-language",type:{name:"String"}}};const ds={parameterPath:["options","blobHttpHeaders","blobContentDisposition"],mapper:{serializedName:"x-ms-blob-content-disposition",xmlName:"x-ms-blob-content-disposition",type:{name:"String"}}};const ps={parameterPath:"comp",mapper:{defaultValue:"immutabilityPolicies",isConstant:true,serializedName:"comp",type:{name:"String"}}};const As={parameterPath:["options","immutabilityPolicyExpiry"],mapper:{serializedName:"x-ms-immutability-policy-until-date",xmlName:"x-ms-immutability-policy-until-date",type:{name:"DateTimeRfc1123"}}};const us={parameterPath:["options","immutabilityPolicyMode"],mapper:{serializedName:"x-ms-immutability-policy-mode",xmlName:"x-ms-immutability-policy-mode",type:{name:"Enum",allowedValues:["Mutable","Unlocked","Locked"]}}};const fs={parameterPath:"comp",mapper:{defaultValue:"legalhold",isConstant:true,serializedName:"comp",type:{name:"String"}}};const hs={parameterPath:"legalHold",mapper:{serializedName:"x-ms-legal-hold",required:true,xmlName:"x-ms-legal-hold",type:{name:"Boolean"}}};const ms={parameterPath:["options","encryptionScope"],mapper:{serializedName:"x-ms-encryption-scope",xmlName:"x-ms-encryption-scope",type:{name:"String"}}};const gs={parameterPath:"comp",mapper:{defaultValue:"snapshot",isConstant:true,serializedName:"comp",type:{name:"String"}}};const ys={parameterPath:["options","tier"],mapper:{serializedName:"x-ms-access-tier",xmlName:"x-ms-access-tier",type:{name:"Enum",allowedValues:["P4","P6","P10","P15","P20","P30","P40","P50","P60","P70","P80","Hot","Cool","Archive","Cold"]}}};const Es={parameterPath:["options","rehydratePriority"],mapper:{serializedName:"x-ms-rehydrate-priority",xmlName:"x-ms-rehydrate-priority",type:{name:"Enum",allowedValues:["High","Standard"]}}};const bs={parameterPath:["options","sourceModifiedAccessConditions","sourceIfModifiedSince"],mapper:{serializedName:"x-ms-source-if-modified-since",xmlName:"x-ms-source-if-modified-since",type:{name:"DateTimeRfc1123"}}};const Cs={parameterPath:["options","sourceModifiedAccessConditions","sourceIfUnmodifiedSince"],mapper:{serializedName:"x-ms-source-if-unmodified-since",xmlName:"x-ms-source-if-unmodified-since",type:{name:"DateTimeRfc1123"}}};const Bs={parameterPath:["options","sourceModifiedAccessConditions","sourceIfMatch"],mapper:{serializedName:"x-ms-source-if-match",xmlName:"x-ms-source-if-match",type:{name:"String"}}};const Is={parameterPath:["options","sourceModifiedAccessConditions","sourceIfNoneMatch"],mapper:{serializedName:"x-ms-source-if-none-match",xmlName:"x-ms-source-if-none-match",type:{name:"String"}}};const ws={parameterPath:["options","sourceModifiedAccessConditions","sourceIfTags"],mapper:{serializedName:"x-ms-source-if-tags",xmlName:"x-ms-source-if-tags",type:{name:"String"}}};const vs={parameterPath:"copySource",mapper:{serializedName:"x-ms-copy-source",required:true,xmlName:"x-ms-copy-source",type:{name:"String"}}};const Ss={parameterPath:["options","blobTagsString"],mapper:{serializedName:"x-ms-tags",xmlName:"x-ms-tags",type:{name:"String"}}};const Qs={parameterPath:["options","sealBlob"],mapper:{serializedName:"x-ms-seal-blob",xmlName:"x-ms-seal-blob",type:{name:"Boolean"}}};const Ns={parameterPath:["options","legalHold"],mapper:{serializedName:"x-ms-legal-hold",xmlName:"x-ms-legal-hold",type:{name:"Boolean"}}};const Rs={parameterPath:"xMsRequiresSync",mapper:{defaultValue:"true",isConstant:true,serializedName:"x-ms-requires-sync",type:{name:"String"}}};const ks={parameterPath:["options","sourceContentMD5"],mapper:{serializedName:"x-ms-source-content-md5",xmlName:"x-ms-source-content-md5",type:{name:"ByteArray"}}};const Ts={parameterPath:["options","copySourceAuthorization"],mapper:{serializedName:"x-ms-copy-source-authorization",xmlName:"x-ms-copy-source-authorization",type:{name:"String"}}};const _s={parameterPath:["options","copySourceTags"],mapper:{serializedName:"x-ms-copy-source-tag-option",xmlName:"x-ms-copy-source-tag-option",type:{name:"Enum",allowedValues:["REPLACE","COPY"]}}};const xs={parameterPath:"comp",mapper:{defaultValue:"copy",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Ds={parameterPath:"copyActionAbortConstant",mapper:{defaultValue:"abort",isConstant:true,serializedName:"x-ms-copy-action",type:{name:"String"}}};const Ps={parameterPath:"copyId",mapper:{serializedName:"copyid",required:true,xmlName:"copyid",type:{name:"String"}}};const Os={parameterPath:"comp",mapper:{defaultValue:"tier",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Ls={parameterPath:"tier",mapper:{serializedName:"x-ms-access-tier",required:true,xmlName:"x-ms-access-tier",type:{name:"Enum",allowedValues:["P4","P6","P10","P15","P20","P30","P40","P50","P60","P70","P80","Hot","Cool","Archive","Cold"]}}};const Fs={parameterPath:["options","queryRequest"],mapper:Ze};const Ms={parameterPath:"comp",mapper:{defaultValue:"query",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Us={parameterPath:"comp",mapper:{defaultValue:"tags",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Hs={parameterPath:["options","tags"],mapper:Pe};const qs={parameterPath:["options","transactionalContentMD5"],mapper:{serializedName:"Content-MD5",xmlName:"Content-MD5",type:{name:"ByteArray"}}};const Gs={parameterPath:["options","transactionalContentCrc64"],mapper:{serializedName:"x-ms-content-crc64",xmlName:"x-ms-content-crc64",type:{name:"ByteArray"}}};const js={parameterPath:"blobType",mapper:{defaultValue:"PageBlob",isConstant:true,serializedName:"x-ms-blob-type",type:{name:"String"}}};const zs={parameterPath:"blobContentLength",mapper:{serializedName:"x-ms-blob-content-length",required:true,xmlName:"x-ms-blob-content-length",type:{name:"Number"}}};const Vs={parameterPath:["options","blobSequenceNumber"],mapper:{defaultValue:0,serializedName:"x-ms-blob-sequence-number",xmlName:"x-ms-blob-sequence-number",type:{name:"Number"}}};const Ws={parameterPath:["options","contentType"],mapper:{defaultValue:"application/octet-stream",isConstant:true,serializedName:"Content-Type",type:{name:"String"}}};const Ys={parameterPath:"body",mapper:{serializedName:"body",required:true,xmlName:"body",type:{name:"Stream"}}};const Js={parameterPath:"accept",mapper:{defaultValue:"application/xml",isConstant:true,serializedName:"Accept",type:{name:"String"}}};const $s={parameterPath:"comp",mapper:{defaultValue:"page",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Ks={parameterPath:"pageWrite",mapper:{defaultValue:"update",isConstant:true,serializedName:"x-ms-page-write",type:{name:"String"}}};const Xs={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThanOrEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-le",xmlName:"x-ms-if-sequence-number-le",type:{name:"Number"}}};const Zs={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberLessThan"],mapper:{serializedName:"x-ms-if-sequence-number-lt",xmlName:"x-ms-if-sequence-number-lt",type:{name:"Number"}}};const ea={parameterPath:["options","sequenceNumberAccessConditions","ifSequenceNumberEqualTo"],mapper:{serializedName:"x-ms-if-sequence-number-eq",xmlName:"x-ms-if-sequence-number-eq",type:{name:"Number"}}};const ta={parameterPath:"pageWrite",mapper:{defaultValue:"clear",isConstant:true,serializedName:"x-ms-page-write",type:{name:"String"}}};const ra={parameterPath:"sourceUrl",mapper:{serializedName:"x-ms-copy-source",required:true,xmlName:"x-ms-copy-source",type:{name:"String"}}};const ia={parameterPath:"sourceRange",mapper:{serializedName:"x-ms-source-range",required:true,xmlName:"x-ms-source-range",type:{name:"String"}}};const na={parameterPath:["options","sourceContentCrc64"],mapper:{serializedName:"x-ms-source-content-crc64",xmlName:"x-ms-source-content-crc64",type:{name:"ByteArray"}}};const sa={parameterPath:"range",mapper:{serializedName:"x-ms-range",required:true,xmlName:"x-ms-range",type:{name:"String"}}};const aa={parameterPath:"comp",mapper:{defaultValue:"pagelist",isConstant:true,serializedName:"comp",type:{name:"String"}}};const oa={parameterPath:["options","prevsnapshot"],mapper:{serializedName:"prevsnapshot",xmlName:"prevsnapshot",type:{name:"String"}}};const la={parameterPath:["options","prevSnapshotUrl"],mapper:{serializedName:"x-ms-previous-snapshot-url",xmlName:"x-ms-previous-snapshot-url",type:{name:"String"}}};const ca={parameterPath:"sequenceNumberAction",mapper:{serializedName:"x-ms-sequence-number-action",required:true,xmlName:"x-ms-sequence-number-action",type:{name:"Enum",allowedValues:["max","update","increment"]}}};const da={parameterPath:"comp",mapper:{defaultValue:"incrementalcopy",isConstant:true,serializedName:"comp",type:{name:"String"}}};const pa={parameterPath:"blobType",mapper:{defaultValue:"AppendBlob",isConstant:true,serializedName:"x-ms-blob-type",type:{name:"String"}}};const Aa={parameterPath:"comp",mapper:{defaultValue:"appendblock",isConstant:true,serializedName:"comp",type:{name:"String"}}};const ua={parameterPath:["options","appendPositionAccessConditions","maxSize"],mapper:{serializedName:"x-ms-blob-condition-maxsize",xmlName:"x-ms-blob-condition-maxsize",type:{name:"Number"}}};const fa={parameterPath:["options","appendPositionAccessConditions","appendPosition"],mapper:{serializedName:"x-ms-blob-condition-appendpos",xmlName:"x-ms-blob-condition-appendpos",type:{name:"Number"}}};const ha={parameterPath:["options","sourceRange"],mapper:{serializedName:"x-ms-source-range",xmlName:"x-ms-source-range",type:{name:"String"}}};const ma={parameterPath:"comp",mapper:{defaultValue:"seal",isConstant:true,serializedName:"comp",type:{name:"String"}}};const ga={parameterPath:"blobType",mapper:{defaultValue:"BlockBlob",isConstant:true,serializedName:"x-ms-blob-type",type:{name:"String"}}};const ya={parameterPath:["options","copySourceBlobProperties"],mapper:{serializedName:"x-ms-copy-source-blob-properties",xmlName:"x-ms-copy-source-blob-properties",type:{name:"Boolean"}}};const Ea={parameterPath:"comp",mapper:{defaultValue:"block",isConstant:true,serializedName:"comp",type:{name:"String"}}};const ba={parameterPath:"blockId",mapper:{serializedName:"blockid",required:true,xmlName:"blockid",type:{name:"String"}}};const Ca={parameterPath:"blocks",mapper:We};const Ba={parameterPath:"comp",mapper:{defaultValue:"blocklist",isConstant:true,serializedName:"comp",type:{name:"String"}}};const Ia={parameterPath:"listType",mapper:{defaultValue:"committed",serializedName:"blocklisttype",required:true,xmlName:"blocklisttype",type:{name:"Enum",allowedValues:["committed","uncommitted","all"]}}};class ServiceImpl{constructor(r){this.client=r}setProperties(r,i){return this.client.sendOperationRequest({blobServiceProperties:r,options:i},va)}getProperties(r){return this.client.sendOperationRequest({options:r},Sa)}getStatistics(r){return this.client.sendOperationRequest({options:r},Qa)}listContainersSegment(r){return this.client.sendOperationRequest({options:r},Na)}getUserDelegationKey(r,i){return this.client.sendOperationRequest({keyInfo:r,options:i},Ra)}getAccountInfo(r){return this.client.sendOperationRequest({options:r},ka)}submitBatch(r,i,s,a){return this.client.sendOperationRequest({contentLength:r,multipartContentType:i,body:s,options:a},Ta)}filterBlobs(r){return this.client.sendOperationRequest({options:r},_a)}}const wa=N.createSerializer(Li,true);const va={path:"/",httpMethod:"PUT",responses:{202:{headersMapper:ot},default:{bodyMapper:ve,headersMapper:lt}},requestBody:Mi,queryParameters:[qi,Gi,ji],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:wa};const Sa={path:"/",httpMethod:"GET",responses:{200:{bodyMapper:Ee,headersMapper:ct},default:{bodyMapper:ve,headersMapper:dt}},queryParameters:[qi,Gi,ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:wa};const Qa={path:"/",httpMethod:"GET",responses:{200:{bodyMapper:Se,headersMapper:pt},default:{bodyMapper:ve,headersMapper:At}},queryParameters:[qi,ji,Yi],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:wa};const Na={path:"/",httpMethod:"GET",responses:{200:{bodyMapper:Ne,headersMapper:ut},default:{bodyMapper:ve,headersMapper:ft}},queryParameters:[ji,Ji,$i,Ki,Xi,Zi],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:wa};const Ra={path:"/",httpMethod:"POST",responses:{200:{bodyMapper:_e,headersMapper:ht},default:{bodyMapper:ve,headersMapper:mt}},requestBody:en,queryParameters:[qi,ji,tn],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:wa};const ka={path:"/",httpMethod:"GET",responses:{200:{headersMapper:gt},default:{bodyMapper:ve,headersMapper:yt}},queryParameters:[Gi,ji,rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:wa};const Ta={path:"/",httpMethod:"POST",responses:{202:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:Et},default:{bodyMapper:ve,headersMapper:bt}},requestBody:nn,queryParameters:[ji,sn],urlParameters:[Hi],headerParameters:[Ui,zi,Vi,an,ln],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:wa};const _a={path:"/",httpMethod:"GET",responses:{200:{bodyMapper:xe,headersMapper:Ct},default:{bodyMapper:ve,headersMapper:Bt}},queryParameters:[ji,Ki,Xi,cn,dn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:wa};class ContainerImpl{constructor(r){this.client=r}create(r){return this.client.sendOperationRequest({options:r},Da)}getProperties(r){return this.client.sendOperationRequest({options:r},Pa)}delete(r){return this.client.sendOperationRequest({options:r},Oa)}setMetadata(r){return this.client.sendOperationRequest({options:r},La)}getAccessPolicy(r){return this.client.sendOperationRequest({options:r},Fa)}setAccessPolicy(r){return this.client.sendOperationRequest({options:r},Ma)}restore(r){return this.client.sendOperationRequest({options:r},Ua)}rename(r,i){return this.client.sendOperationRequest({sourceContainerName:r,options:i},Ha)}submitBatch(r,i,s,a){return this.client.sendOperationRequest({contentLength:r,multipartContentType:i,body:s,options:a},qa)}filterBlobs(r){return this.client.sendOperationRequest({options:r},Ga)}acquireLease(r){return this.client.sendOperationRequest({options:r},ja)}releaseLease(r,i){return this.client.sendOperationRequest({leaseId:r,options:i},za)}renewLease(r,i){return this.client.sendOperationRequest({leaseId:r,options:i},Va)}breakLease(r){return this.client.sendOperationRequest({options:r},Wa)}changeLease(r,i,s){return this.client.sendOperationRequest({leaseId:r,proposedLeaseId:i,options:s},Ya)}listBlobFlatSegment(r){return this.client.sendOperationRequest({options:r},Ja)}listBlobHierarchySegment(r,i){return this.client.sendOperationRequest({delimiter:r,options:i},$a)}getAccountInfo(r){return this.client.sendOperationRequest({options:r},Ka)}}const xa=N.createSerializer(Li,true);const Da={path:"/{containerName}",httpMethod:"PUT",responses:{201:{headersMapper:It},default:{bodyMapper:ve,headersMapper:wt}},queryParameters:[ji,pn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,un,hn,mn],isXML:true,serializer:xa};const Pa={path:"/{containerName}",httpMethod:"GET",responses:{200:{headersMapper:vt},default:{bodyMapper:ve,headersMapper:St}},queryParameters:[ji,pn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn],isXML:true,serializer:xa};const Oa={path:"/{containerName}",httpMethod:"DELETE",responses:{202:{headersMapper:Qt},default:{bodyMapper:ve,headersMapper:Nt}},queryParameters:[ji,pn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En],isXML:true,serializer:xa};const La={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:Rt},default:{bodyMapper:ve,headersMapper:kt}},queryParameters:[ji,pn,bn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,gn,yn],isXML:true,serializer:xa};const Fa={path:"/{containerName}",httpMethod:"GET",responses:{200:{bodyMapper:{type:{name:"Sequence",element:{type:{name:"Composite",className:"SignedIdentifier"}}},serializedName:"SignedIdentifiers",xmlName:"SignedIdentifiers",xmlIsWrapped:true,xmlElementName:"SignedIdentifier"},headersMapper:Tt},default:{bodyMapper:ve,headersMapper:_t}},queryParameters:[ji,pn,Cn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn],isXML:true,serializer:xa};const Ma={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:xt},default:{bodyMapper:ve,headersMapper:Dt}},requestBody:Bn,queryParameters:[ji,pn,Cn],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi,un,gn,yn,En],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:xa};const Ua={path:"/{containerName}",httpMethod:"PUT",responses:{201:{headersMapper:Pt},default:{bodyMapper:ve,headersMapper:Ot}},queryParameters:[ji,pn,In],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,wn,vn],isXML:true,serializer:xa};const Ha={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:Lt},default:{bodyMapper:ve,headersMapper:Ft}},queryParameters:[ji,pn,Sn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,Qn,Nn],isXML:true,serializer:xa};const qa={path:"/{containerName}",httpMethod:"POST",responses:{202:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:Mt},default:{bodyMapper:ve,headersMapper:Ut}},requestBody:nn,queryParameters:[ji,sn,pn],urlParameters:[Hi],headerParameters:[Ui,zi,Vi,an,ln],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:xa};const Ga={path:"/{containerName}",httpMethod:"GET",responses:{200:{bodyMapper:xe,headersMapper:Ht},default:{bodyMapper:ve,headersMapper:qt}},queryParameters:[ji,Ki,Xi,cn,dn,pn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:xa};const ja={path:"/{containerName}",httpMethod:"PUT",responses:{201:{headersMapper:Gt},default:{bodyMapper:ve,headersMapper:jt}},queryParameters:[ji,pn,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,kn,Tn,_n],isXML:true,serializer:xa};const za={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:zt},default:{bodyMapper:ve,headersMapper:Vt}},queryParameters:[ji,pn,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,xn,Dn],isXML:true,serializer:xa};const Va={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:Wt},default:{bodyMapper:ve,headersMapper:Yt}},queryParameters:[ji,pn,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,Dn,Pn],isXML:true,serializer:xa};const Wa={path:"/{containerName}",httpMethod:"PUT",responses:{202:{headersMapper:Jt},default:{bodyMapper:ve,headersMapper:$t}},queryParameters:[ji,pn,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,On,Ln],isXML:true,serializer:xa};const Ya={path:"/{containerName}",httpMethod:"PUT",responses:{200:{headersMapper:Kt},default:{bodyMapper:ve,headersMapper:Xt}},queryParameters:[ji,pn,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,Dn,Fn,Mn],isXML:true,serializer:xa};const Ja={path:"/{containerName}",httpMethod:"GET",responses:{200:{bodyMapper:Me,headersMapper:Zt},default:{bodyMapper:ve,headersMapper:er}},queryParameters:[ji,Ji,$i,Ki,Xi,pn,Un],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:xa};const $a={path:"/{containerName}",httpMethod:"GET",responses:{200:{bodyMapper:je,headersMapper:tr},default:{bodyMapper:ve,headersMapper:rr}},queryParameters:[ji,Ji,$i,Ki,Xi,pn,Un,Hn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:xa};const Ka={path:"/{containerName}",httpMethod:"GET",responses:{200:{headersMapper:ir},default:{bodyMapper:ve,headersMapper:nr}},queryParameters:[Gi,ji,rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:xa};class BlobImpl{constructor(r){this.client=r}download(r){return this.client.sendOperationRequest({options:r},Za)}getProperties(r){return this.client.sendOperationRequest({options:r},eo)}delete(r){return this.client.sendOperationRequest({options:r},to)}undelete(r){return this.client.sendOperationRequest({options:r},ro)}setExpiry(r,i){return this.client.sendOperationRequest({expiryOptions:r,options:i},io)}setHttpHeaders(r){return this.client.sendOperationRequest({options:r},no)}setImmutabilityPolicy(r){return this.client.sendOperationRequest({options:r},so)}deleteImmutabilityPolicy(r){return this.client.sendOperationRequest({options:r},ao)}setLegalHold(r,i){return this.client.sendOperationRequest({legalHold:r,options:i},oo)}setMetadata(r){return this.client.sendOperationRequest({options:r},lo)}acquireLease(r){return this.client.sendOperationRequest({options:r},co)}releaseLease(r,i){return this.client.sendOperationRequest({leaseId:r,options:i},po)}renewLease(r,i){return this.client.sendOperationRequest({leaseId:r,options:i},Ao)}changeLease(r,i,s){return this.client.sendOperationRequest({leaseId:r,proposedLeaseId:i,options:s},uo)}breakLease(r){return this.client.sendOperationRequest({options:r},fo)}createSnapshot(r){return this.client.sendOperationRequest({options:r},ho)}startCopyFromURL(r,i){return this.client.sendOperationRequest({copySource:r,options:i},mo)}copyFromURL(r,i){return this.client.sendOperationRequest({copySource:r,options:i},go)}abortCopyFromURL(r,i){return this.client.sendOperationRequest({copyId:r,options:i},yo)}setTier(r,i){return this.client.sendOperationRequest({tier:r,options:i},Eo)}getAccountInfo(r){return this.client.sendOperationRequest({options:r},bo)}query(r){return this.client.sendOperationRequest({options:r},Co)}getTags(r){return this.client.sendOperationRequest({options:r},Bo)}setTags(r){return this.client.sendOperationRequest({options:r},Io)}}const Xa=N.createSerializer(Li,true);const Za={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:sr},206:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:sr},default:{bodyMapper:ve,headersMapper:ar}},queryParameters:[ji,qn,Gn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,jn,zn,Vn,Wn,Yn,Jn,$n,Kn,Xn],isXML:true,serializer:Xa};const eo={path:"/{containerName}/{blob}",httpMethod:"HEAD",responses:{200:{headersMapper:or},default:{bodyMapper:ve,headersMapper:lr}},queryParameters:[ji,qn,Gn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn],isXML:true,serializer:Xa};const to={path:"/{containerName}/{blob}",httpMethod:"DELETE",responses:{202:{headersMapper:cr},default:{bodyMapper:ve,headersMapper:dr}},queryParameters:[ji,qn,Gn,es],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,$n,Kn,Xn,Zn],isXML:true,serializer:Xa};const ro={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:pr},default:{bodyMapper:ve,headersMapper:Ar}},queryParameters:[ji,In],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:Xa};const io={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:ur},default:{bodyMapper:ve,headersMapper:fr}},queryParameters:[ji,ts],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,rs,ns],isXML:true,serializer:Xa};const no={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:hr},default:{bodyMapper:ve,headersMapper:mr}},queryParameters:[Gi,ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,$n,Kn,Xn,ss,as,os,ls,cs,ds],isXML:true,serializer:Xa};const so={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:gr},default:{bodyMapper:ve,headersMapper:yr}},queryParameters:[ji,ps],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,En,As,us],isXML:true,serializer:Xa};const ao={path:"/{containerName}/{blob}",httpMethod:"DELETE",responses:{200:{headersMapper:Er},default:{bodyMapper:ve,headersMapper:br}},queryParameters:[ji,ps],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:Xa};const oo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Cr},default:{bodyMapper:ve,headersMapper:Br}},queryParameters:[ji,fs],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,hs],isXML:true,serializer:Xa};const lo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Ir},default:{bodyMapper:ve,headersMapper:wr}},queryParameters:[ji,bn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms],isXML:true,serializer:Xa};const co={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:vr},default:{bodyMapper:ve,headersMapper:Sr}},queryParameters:[ji,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,kn,Tn,_n,$n,Kn,Xn],isXML:true,serializer:Xa};const po={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Qr},default:{bodyMapper:ve,headersMapper:Nr}},queryParameters:[ji,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,xn,Dn,$n,Kn,Xn],isXML:true,serializer:Xa};const Ao={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Rr},default:{bodyMapper:ve,headersMapper:kr}},queryParameters:[ji,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,Dn,Pn,$n,Kn,Xn],isXML:true,serializer:Xa};const uo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Tr},default:{bodyMapper:ve,headersMapper:_r}},queryParameters:[ji,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,Dn,Fn,Mn,$n,Kn,Xn],isXML:true,serializer:Xa};const fo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{202:{headersMapper:xr},default:{bodyMapper:ve,headersMapper:Dr}},queryParameters:[ji,Rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,On,Ln,$n,Kn,Xn],isXML:true,serializer:Xa};const ho={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Pr},default:{bodyMapper:ve,headersMapper:Or}},queryParameters:[ji,gs],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms],isXML:true,serializer:Xa};const mo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{202:{headersMapper:Lr},default:{bodyMapper:ve,headersMapper:Fr}},queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,gn,yn,En,$n,Kn,Xn,As,us,ys,Es,bs,Cs,Bs,Is,ws,vs,Ss,Qs,Ns],isXML:true,serializer:Xa};const go={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{202:{headersMapper:Mr},default:{bodyMapper:ve,headersMapper:Ur}},queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,An,gn,yn,En,$n,Kn,Xn,As,us,ms,ys,bs,Cs,Bs,Is,vs,Ss,Ns,Rs,ks,Ts,_s],isXML:true,serializer:Xa};const yo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{204:{headersMapper:Hr},default:{bodyMapper:ve,headersMapper:qr}},queryParameters:[ji,xs,Ps],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,Ds],isXML:true,serializer:Xa};const Eo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Gr},202:{headersMapper:Gr},default:{bodyMapper:ve,headersMapper:jr}},queryParameters:[ji,qn,Gn,Os],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,Xn,Es,Ls],isXML:true,serializer:Xa};const bo={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{headersMapper:zr},default:{bodyMapper:ve,headersMapper:Vr}},queryParameters:[Gi,ji,rn],urlParameters:[Hi],headerParameters:[zi,Vi,Wi],isXML:true,serializer:Xa};const Co={path:"/{containerName}/{blob}",httpMethod:"POST",responses:{200:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:Wr},206:{bodyMapper:{type:{name:"Stream"},serializedName:"parsedResponse"},headersMapper:Wr},default:{bodyMapper:ve,headersMapper:Yr}},requestBody:Fs,queryParameters:[ji,qn,Ms],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:Xa};const Bo={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{bodyMapper:Pe,headersMapper:Jr},default:{bodyMapper:ve,headersMapper:$r}},queryParameters:[ji,qn,Gn,Us],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,Xn],isXML:true,serializer:Xa};const Io={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{204:{headersMapper:Kr},default:{bodyMapper:ve,headersMapper:Xr}},requestBody:Hs,queryParameters:[ji,Gn,Us],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi,gn,Xn,qs,Gs],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:Xa};class PageBlobImpl{constructor(r){this.client=r}create(r,i,s){return this.client.sendOperationRequest({contentLength:r,blobContentLength:i,options:s},vo)}uploadPages(r,i,s){return this.client.sendOperationRequest({contentLength:r,body:i,options:s},So)}clearPages(r,i){return this.client.sendOperationRequest({contentLength:r,options:i},Qo)}uploadPagesFromURL(r,i,s,a,l){return this.client.sendOperationRequest({sourceUrl:r,sourceRange:i,contentLength:s,range:a,options:l},No)}getPageRanges(r){return this.client.sendOperationRequest({options:r},Ro)}getPageRangesDiff(r){return this.client.sendOperationRequest({options:r},ko)}resize(r,i){return this.client.sendOperationRequest({blobContentLength:r,options:i},To)}updateSequenceNumber(r,i){return this.client.sendOperationRequest({sequenceNumberAction:r,options:i},_o)}copyIncremental(r,i){return this.client.sendOperationRequest({copySource:r,options:i},xo)}}const wo=N.createSerializer(Li,true);const vo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Zr},default:{bodyMapper:ve,headersMapper:ei}},queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ss,as,os,ls,cs,ds,As,us,ms,ys,Ss,Ns,js,zs,Vs],isXML:true,serializer:wo};const So={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:ti},default:{bodyMapper:ve,headersMapper:ri}},requestBody:Ys,queryParameters:[ji,$s],urlParameters:[Hi],headerParameters:[zi,Vi,an,gn,yn,En,jn,Wn,Yn,Jn,$n,Kn,Xn,ms,qs,Gs,Ws,Js,Ks,Xs,Zs,ea],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"binary",serializer:wo};const Qo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:ii},default:{bodyMapper:ve,headersMapper:ni}},queryParameters:[ji,$s],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,gn,yn,En,jn,Wn,Yn,Jn,$n,Kn,Xn,ms,Xs,Zs,ea,ta],isXML:true,serializer:wo};const No={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:si},default:{bodyMapper:ve,headersMapper:ai}},queryParameters:[ji,$s],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms,bs,Cs,Bs,Is,ks,Ts,Ks,Xs,Zs,ea,ra,ia,na,sa],isXML:true,serializer:wo};const Ro={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{bodyMapper:$e,headersMapper:oi},default:{bodyMapper:ve,headersMapper:li}},queryParameters:[ji,Ki,Xi,qn,aa],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,jn,$n,Kn,Xn],isXML:true,serializer:wo};const ko={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{bodyMapper:$e,headersMapper:ci},default:{bodyMapper:ve,headersMapper:di}},queryParameters:[ji,Ki,Xi,qn,aa,oa],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,jn,$n,Kn,Xn,la],isXML:true,serializer:wo};const To={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:pi},default:{bodyMapper:ve,headersMapper:Ai}},queryParameters:[Gi,ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms,zs],isXML:true,serializer:wo};const _o={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:ui},default:{bodyMapper:ve,headersMapper:fi}},queryParameters:[Gi,ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,$n,Kn,Xn,Vs,ca],isXML:true,serializer:wo};const xo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{202:{headersMapper:hi},default:{bodyMapper:ve,headersMapper:mi}},queryParameters:[ji,da],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,yn,En,$n,Kn,Xn,vs],isXML:true,serializer:wo};class AppendBlobImpl{constructor(r){this.client=r}create(r,i){return this.client.sendOperationRequest({contentLength:r,options:i},Po)}appendBlock(r,i,s){return this.client.sendOperationRequest({contentLength:r,body:i,options:s},Oo)}appendBlockFromUrl(r,i,s){return this.client.sendOperationRequest({sourceUrl:r,contentLength:i,options:s},Lo)}seal(r){return this.client.sendOperationRequest({options:r},Fo)}}const Do=N.createSerializer(Li,true);const Po={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:gi},default:{bodyMapper:ve,headersMapper:yi}},queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ss,as,os,ls,cs,ds,As,us,ms,Ss,Ns,pa],isXML:true,serializer:Do};const Oo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Ei},default:{bodyMapper:ve,headersMapper:bi}},requestBody:Ys,queryParameters:[ji,Aa],urlParameters:[Hi],headerParameters:[zi,Vi,an,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms,qs,Gs,Ws,Js,ua,fa],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"binary",serializer:Do};const Lo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Ci},default:{bodyMapper:ve,headersMapper:Bi}},queryParameters:[ji,Aa],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ms,bs,Cs,Bs,Is,ks,Ts,qs,ra,na,ua,fa,ha],isXML:true,serializer:Do};const Fo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{200:{headersMapper:Ii},default:{bodyMapper:ve,headersMapper:wi}},queryParameters:[ji,ma],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,yn,En,$n,Kn,fa],isXML:true,serializer:Do};class BlockBlobImpl{constructor(r){this.client=r}upload(r,i,s){return this.client.sendOperationRequest({contentLength:r,body:i,options:s},Uo)}putBlobFromUrl(r,i,s){return this.client.sendOperationRequest({contentLength:r,copySource:i,options:s},Ho)}stageBlock(r,i,s,a){return this.client.sendOperationRequest({blockId:r,contentLength:i,body:s,options:a},qo)}stageBlockFromURL(r,i,s,a){return this.client.sendOperationRequest({blockId:r,contentLength:i,sourceUrl:s,options:a},Go)}commitBlockList(r,i){return this.client.sendOperationRequest({blocks:r,options:i},jo)}getBlockList(r,i){return this.client.sendOperationRequest({listType:r,options:i},zo)}}const Mo=N.createSerializer(Li,true);const Uo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:vi},default:{bodyMapper:ve,headersMapper:Si}},requestBody:Ys,queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,an,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ss,as,os,ls,cs,ds,As,us,ms,ys,Ss,Ns,qs,Gs,Ws,Js,ga],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"binary",serializer:Mo};const Ho={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Qi},default:{bodyMapper:ve,headersMapper:Ni}},queryParameters:[ji],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ss,as,os,ls,cs,ds,ms,ys,bs,Cs,Bs,Is,ws,vs,Ss,ks,Ts,_s,qs,ga,ya],isXML:true,serializer:Mo};const qo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Ri},default:{bodyMapper:ve,headersMapper:ki}},requestBody:Ys,queryParameters:[ji,Ea,ba],urlParameters:[Hi],headerParameters:[zi,Vi,an,gn,Wn,Yn,Jn,ms,qs,Gs,Ws,Js],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"binary",serializer:Mo};const Go={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:Ti},default:{bodyMapper:ve,headersMapper:_i}},queryParameters:[ji,Ea,ba],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,an,gn,Wn,Yn,Jn,ms,bs,Cs,Bs,Is,ks,Ts,ra,na,ha],isXML:true,serializer:Mo};const jo={path:"/{containerName}/{blob}",httpMethod:"PUT",responses:{201:{headersMapper:xi},default:{bodyMapper:ve,headersMapper:Di}},requestBody:Ca,queryParameters:[ji,Ba],urlParameters:[Hi],headerParameters:[Fi,Ui,zi,Vi,An,gn,yn,En,Wn,Yn,Jn,$n,Kn,Xn,ss,as,os,ls,cs,ds,As,us,ms,ys,Ss,Ns,qs,Gs],isXML:true,contentType:"application/xml; charset=utf-8",mediaType:"xml",serializer:Mo};const zo={path:"/{containerName}/{blob}",httpMethod:"GET",responses:{200:{bodyMapper:Ye,headersMapper:Pi},default:{bodyMapper:ve,headersMapper:Oi}},queryParameters:[ji,qn,Ba,Ia],urlParameters:[Hi],headerParameters:[zi,Vi,Wi,gn,Xn],isXML:true,serializer:Mo};let Vo=class StorageClient extends Q.ExtendedServiceClient{constructor(r,i){var s,a;if(r===undefined){throw new Error("'url' cannot be null")}if(!i){i={}}const l={requestContentType:"application/json; charset=utf-8"};const c=`azsdk-js-azure-storage-blob/12.24.0`;const d=i.userAgentOptions&&i.userAgentOptions.userAgentPrefix?`${i.userAgentOptions.userAgentPrefix} ${c}`:`${c}`;const p=Object.assign(Object.assign(Object.assign({},l),i),{userAgentOptions:{userAgentPrefix:d},endpoint:(a=(s=i.endpoint)!==null&&s!==void 0?s:i.baseUri)!==null&&a!==void 0?a:"{url}"});super(p);this.url=r;this.version=i.version||"2024-08-04";this.service=new ServiceImpl(this);this.container=new ContainerImpl(this);this.blob=new BlobImpl(this);this.pageBlob=new PageBlobImpl(this);this.appendBlob=new AppendBlobImpl(this);this.blockBlob=new BlockBlobImpl(this)}};class StorageContextClient extends Vo{async sendOperationRequest(r,i){const s=Object.assign({},i);if(s.path==="/{containerName}"||s.path==="/{containerName}/{blob}"){s.path=""}return super.sendOperationRequest(r,s)}}class StorageClient{constructor(r,i){this.url=escapeURLPath(r);this.accountName=getAccountNameFromUrl(r);this.pipeline=i;this.storageClientContext=new StorageContextClient(this.url,getCoreClientOptions(i));this.isHttps=iEqual(getURLScheme(this.url)||"","https");this.credential=getCredentialFromPipeline(i);const s=this.storageClientContext;s.requestContentType=undefined}}const Wo=b.createTracingClient({packageName:"@azure/storage-blob",packageVersion:_,namespace:"Microsoft.Storage"});class BlobSASPermissions{constructor(){this.read=false;this.add=false;this.create=false;this.write=false;this.delete=false;this.deleteVersion=false;this.tag=false;this.move=false;this.execute=false;this.setImmutabilityPolicy=false;this.permanentDelete=false}static parse(r){const i=new BlobSASPermissions;for(const s of r){switch(s){case"r":i.read=true;break;case"a":i.add=true;break;case"c":i.create=true;break;case"w":i.write=true;break;case"d":i.delete=true;break;case"x":i.deleteVersion=true;break;case"t":i.tag=true;break;case"m":i.move=true;break;case"e":i.execute=true;break;case"i":i.setImmutabilityPolicy=true;break;case"y":i.permanentDelete=true;break;default:throw new RangeError(`Invalid permission: ${s}`)}}return i}static from(r){const i=new BlobSASPermissions;if(r.read){i.read=true}if(r.add){i.add=true}if(r.create){i.create=true}if(r.write){i.write=true}if(r.delete){i.delete=true}if(r.deleteVersion){i.deleteVersion=true}if(r.tag){i.tag=true}if(r.move){i.move=true}if(r.execute){i.execute=true}if(r.setImmutabilityPolicy){i.setImmutabilityPolicy=true}if(r.permanentDelete){i.permanentDelete=true}return i}toString(){const r=[];if(this.read){r.push("r")}if(this.add){r.push("a")}if(this.create){r.push("c")}if(this.write){r.push("w")}if(this.delete){r.push("d")}if(this.deleteVersion){r.push("x")}if(this.tag){r.push("t")}if(this.move){r.push("m")}if(this.execute){r.push("e")}if(this.setImmutabilityPolicy){r.push("i")}if(this.permanentDelete){r.push("y")}return r.join("")}}class ContainerSASPermissions{constructor(){this.read=false;this.add=false;this.create=false;this.write=false;this.delete=false;this.deleteVersion=false;this.list=false;this.tag=false;this.move=false;this.execute=false;this.setImmutabilityPolicy=false;this.permanentDelete=false;this.filterByTags=false}static parse(r){const i=new ContainerSASPermissions;for(const s of r){switch(s){case"r":i.read=true;break;case"a":i.add=true;break;case"c":i.create=true;break;case"w":i.write=true;break;case"d":i.delete=true;break;case"l":i.list=true;break;case"t":i.tag=true;break;case"x":i.deleteVersion=true;break;case"m":i.move=true;break;case"e":i.execute=true;break;case"i":i.setImmutabilityPolicy=true;break;case"y":i.permanentDelete=true;break;case"f":i.filterByTags=true;break;default:throw new RangeError(`Invalid permission ${s}`)}}return i}static from(r){const i=new ContainerSASPermissions;if(r.read){i.read=true}if(r.add){i.add=true}if(r.create){i.create=true}if(r.write){i.write=true}if(r.delete){i.delete=true}if(r.list){i.list=true}if(r.deleteVersion){i.deleteVersion=true}if(r.tag){i.tag=true}if(r.move){i.move=true}if(r.execute){i.execute=true}if(r.setImmutabilityPolicy){i.setImmutabilityPolicy=true}if(r.permanentDelete){i.permanentDelete=true}if(r.filterByTags){i.filterByTags=true}return i}toString(){const r=[];if(this.read){r.push("r")}if(this.add){r.push("a")}if(this.create){r.push("c")}if(this.write){r.push("w")}if(this.delete){r.push("d")}if(this.deleteVersion){r.push("x")}if(this.list){r.push("l")}if(this.tag){r.push("t")}if(this.move){r.push("m")}if(this.execute){r.push("e")}if(this.setImmutabilityPolicy){r.push("i")}if(this.permanentDelete){r.push("y")}if(this.filterByTags){r.push("f")}return r.join("")}}class UserDelegationKeyCredential{constructor(r,i){this.accountName=r;this.userDelegationKey=i;this.key=Buffer.from(i.value,"base64")}computeHMACSHA256(r){return y.createHmac("sha256",this.key).update(r,"utf8").digest("base64")}}function ipRangeToString(r){return r.end?`${r.start}-${r.end}`:r.start}i.SASProtocol=void 0;(function(r){r["Https"]="https";r["HttpsAndHttp"]="https,http"})(i.SASProtocol||(i.SASProtocol={}));class SASQueryParameters{get ipRange(){if(this.ipRangeInner){return{end:this.ipRangeInner.end,start:this.ipRangeInner.start}}return undefined}constructor(r,i,s,a,l,c,d,p,A,u,h,g,y,b,C,B,I,w,v,S){this.version=r;this.signature=i;if(s!==undefined&&typeof s!=="string"){this.permissions=s.permissions;this.services=s.services;this.resourceTypes=s.resourceTypes;this.protocol=s.protocol;this.startsOn=s.startsOn;this.expiresOn=s.expiresOn;this.ipRangeInner=s.ipRange;this.identifier=s.identifier;this.encryptionScope=s.encryptionScope;this.resource=s.resource;this.cacheControl=s.cacheControl;this.contentDisposition=s.contentDisposition;this.contentEncoding=s.contentEncoding;this.contentLanguage=s.contentLanguage;this.contentType=s.contentType;if(s.userDelegationKey){this.signedOid=s.userDelegationKey.signedObjectId;this.signedTenantId=s.userDelegationKey.signedTenantId;this.signedStartsOn=s.userDelegationKey.signedStartsOn;this.signedExpiresOn=s.userDelegationKey.signedExpiresOn;this.signedService=s.userDelegationKey.signedService;this.signedVersion=s.userDelegationKey.signedVersion;this.preauthorizedAgentObjectId=s.preauthorizedAgentObjectId;this.correlationId=s.correlationId}}else{this.services=a;this.resourceTypes=l;this.expiresOn=p;this.permissions=s;this.protocol=c;this.startsOn=d;this.ipRangeInner=A;this.encryptionScope=S;this.identifier=u;this.resource=h;this.cacheControl=g;this.contentDisposition=y;this.contentEncoding=b;this.contentLanguage=C;this.contentType=B;if(I){this.signedOid=I.signedObjectId;this.signedTenantId=I.signedTenantId;this.signedStartsOn=I.signedStartsOn;this.signedExpiresOn=I.signedExpiresOn;this.signedService=I.signedService;this.signedVersion=I.signedVersion;this.preauthorizedAgentObjectId=w;this.correlationId=v}}}toString(){const r=["sv","ss","srt","spr","st","se","sip","si","ses","skoid","sktid","skt","ske","sks","skv","sr","sp","sig","rscc","rscd","rsce","rscl","rsct","saoid","scid"];const i=[];for(const s of r){switch(s){case"sv":this.tryAppendQueryParameter(i,s,this.version);break;case"ss":this.tryAppendQueryParameter(i,s,this.services);break;case"srt":this.tryAppendQueryParameter(i,s,this.resourceTypes);break;case"spr":this.tryAppendQueryParameter(i,s,this.protocol);break;case"st":this.tryAppendQueryParameter(i,s,this.startsOn?truncatedISO8061Date(this.startsOn,false):undefined);break;case"se":this.tryAppendQueryParameter(i,s,this.expiresOn?truncatedISO8061Date(this.expiresOn,false):undefined);break;case"sip":this.tryAppendQueryParameter(i,s,this.ipRange?ipRangeToString(this.ipRange):undefined);break;case"si":this.tryAppendQueryParameter(i,s,this.identifier);break;case"ses":this.tryAppendQueryParameter(i,s,this.encryptionScope);break;case"skoid":this.tryAppendQueryParameter(i,s,this.signedOid);break;case"sktid":this.tryAppendQueryParameter(i,s,this.signedTenantId);break;case"skt":this.tryAppendQueryParameter(i,s,this.signedStartsOn?truncatedISO8061Date(this.signedStartsOn,false):undefined);break;case"ske":this.tryAppendQueryParameter(i,s,this.signedExpiresOn?truncatedISO8061Date(this.signedExpiresOn,false):undefined);break;case"sks":this.tryAppendQueryParameter(i,s,this.signedService);break;case"skv":this.tryAppendQueryParameter(i,s,this.signedVersion);break;case"sr":this.tryAppendQueryParameter(i,s,this.resource);break;case"sp":this.tryAppendQueryParameter(i,s,this.permissions);break;case"sig":this.tryAppendQueryParameter(i,s,this.signature);break;case"rscc":this.tryAppendQueryParameter(i,s,this.cacheControl);break;case"rscd":this.tryAppendQueryParameter(i,s,this.contentDisposition);break;case"rsce":this.tryAppendQueryParameter(i,s,this.contentEncoding);break;case"rscl":this.tryAppendQueryParameter(i,s,this.contentLanguage);break;case"rsct":this.tryAppendQueryParameter(i,s,this.contentType);break;case"saoid":this.tryAppendQueryParameter(i,s,this.preauthorizedAgentObjectId);break;case"scid":this.tryAppendQueryParameter(i,s,this.correlationId);break}}return i.join("&")}tryAppendQueryParameter(r,i,s){if(!s){return}i=encodeURIComponent(i);s=encodeURIComponent(s);if(i.length>0&&s.length>0){r.push(`${i}=${s}`)}}}function generateBlobSASQueryParameters(r,i,s){const a=r.version?r.version:x;const l=i instanceof StorageSharedKeyCredential?i:undefined;let c;if(l===undefined&&s!==undefined){c=new UserDelegationKeyCredential(s,i)}if(l===undefined&&c===undefined){throw TypeError("Invalid sharedKeyCredential, userDelegationKey or accountName.")}if(a>="2020-12-06"){if(l!==undefined){return generateBlobSASQueryParameters20201206(r,l)}else{return generateBlobSASQueryParametersUDK20201206(r,c)}}if(a>="2018-11-09"){if(l!==undefined){return generateBlobSASQueryParameters20181109(r,l)}else{if(a>="2020-02-10"){return generateBlobSASQueryParametersUDK20200210(r,c)}else{return generateBlobSASQueryParametersUDK20181109(r,c)}}}if(a>="2015-04-05"){if(l!==undefined){return generateBlobSASQueryParameters20150405(r,l)}else{throw new RangeError("'version' must be >= '2018-11-09' when generating user delegation SAS using user delegation key.")}}throw new RangeError("'version' must be >= '2015-04-05'.")}function generateBlobSASQueryParameters20150405(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.identifier&&!(r.permissions&&r.expiresOn)){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.")}let s="c";if(r.blobName){s="b"}let a;if(r.permissions){if(r.blobName){a=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{a=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const l=[a?a:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),r.identifier,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,r.cacheControl?r.cacheControl:"",r.contentDisposition?r.contentDisposition:"",r.contentEncoding?r.contentEncoding:"",r.contentLanguage?r.contentLanguage:"",r.contentType?r.contentType:""].join("\n");const c=i.computeHMACSHA256(l);return new SASQueryParameters(r.version,c,a,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType)}function generateBlobSASQueryParameters20181109(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.identifier&&!(r.permissions&&r.expiresOn)){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.")}let s="c";let a=r.snapshotTime;if(r.blobName){s="b";if(r.snapshotTime){s="bs"}else if(r.versionId){s="bv";a=r.versionId}}let l;if(r.permissions){if(r.blobName){l=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{l=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const c=[l?l:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),r.identifier,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,s,a,r.cacheControl?r.cacheControl:"",r.contentDisposition?r.contentDisposition:"",r.contentEncoding?r.contentEncoding:"",r.contentLanguage?r.contentLanguage:"",r.contentType?r.contentType:""].join("\n");const d=i.computeHMACSHA256(c);return new SASQueryParameters(r.version,d,l,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType)}function generateBlobSASQueryParameters20201206(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.identifier&&!(r.permissions&&r.expiresOn)){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when 'identifier' is not provided.")}let s="c";let a=r.snapshotTime;if(r.blobName){s="b";if(r.snapshotTime){s="bs"}else if(r.versionId){s="bv";a=r.versionId}}let l;if(r.permissions){if(r.blobName){l=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{l=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const c=[l?l:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),r.identifier,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,s,a,r.encryptionScope,r.cacheControl?r.cacheControl:"",r.contentDisposition?r.contentDisposition:"",r.contentEncoding?r.contentEncoding:"",r.contentLanguage?r.contentLanguage:"",r.contentType?r.contentType:""].join("\n");const d=i.computeHMACSHA256(c);return new SASQueryParameters(r.version,d,l,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType,undefined,undefined,undefined,r.encryptionScope)}function generateBlobSASQueryParametersUDK20181109(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.permissions||!r.expiresOn){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.")}let s="c";let a=r.snapshotTime;if(r.blobName){s="b";if(r.snapshotTime){s="bs"}else if(r.versionId){s="bv";a=r.versionId}}let l;if(r.permissions){if(r.blobName){l=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{l=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const c=[l?l:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),i.userDelegationKey.signedObjectId,i.userDelegationKey.signedTenantId,i.userDelegationKey.signedStartsOn?truncatedISO8061Date(i.userDelegationKey.signedStartsOn,false):"",i.userDelegationKey.signedExpiresOn?truncatedISO8061Date(i.userDelegationKey.signedExpiresOn,false):"",i.userDelegationKey.signedService,i.userDelegationKey.signedVersion,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,s,a,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType].join("\n");const d=i.computeHMACSHA256(c);return new SASQueryParameters(r.version,d,l,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType,i.userDelegationKey)}function generateBlobSASQueryParametersUDK20200210(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.permissions||!r.expiresOn){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.")}let s="c";let a=r.snapshotTime;if(r.blobName){s="b";if(r.snapshotTime){s="bs"}else if(r.versionId){s="bv";a=r.versionId}}let l;if(r.permissions){if(r.blobName){l=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{l=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const c=[l?l:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),i.userDelegationKey.signedObjectId,i.userDelegationKey.signedTenantId,i.userDelegationKey.signedStartsOn?truncatedISO8061Date(i.userDelegationKey.signedStartsOn,false):"",i.userDelegationKey.signedExpiresOn?truncatedISO8061Date(i.userDelegationKey.signedExpiresOn,false):"",i.userDelegationKey.signedService,i.userDelegationKey.signedVersion,r.preauthorizedAgentObjectId,undefined,r.correlationId,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,s,a,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType].join("\n");const d=i.computeHMACSHA256(c);return new SASQueryParameters(r.version,d,l,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType,i.userDelegationKey,r.preauthorizedAgentObjectId,r.correlationId)}function generateBlobSASQueryParametersUDK20201206(r,i){r=SASSignatureValuesSanityCheckAndAutofill(r);if(!r.permissions||!r.expiresOn){throw new RangeError("Must provide 'permissions' and 'expiresOn' for Blob SAS generation when generating user delegation SAS.")}let s="c";let a=r.snapshotTime;if(r.blobName){s="b";if(r.snapshotTime){s="bs"}else if(r.versionId){s="bv";a=r.versionId}}let l;if(r.permissions){if(r.blobName){l=BlobSASPermissions.parse(r.permissions.toString()).toString()}else{l=ContainerSASPermissions.parse(r.permissions.toString()).toString()}}const c=[l?l:"",r.startsOn?truncatedISO8061Date(r.startsOn,false):"",r.expiresOn?truncatedISO8061Date(r.expiresOn,false):"",getCanonicalName(i.accountName,r.containerName,r.blobName),i.userDelegationKey.signedObjectId,i.userDelegationKey.signedTenantId,i.userDelegationKey.signedStartsOn?truncatedISO8061Date(i.userDelegationKey.signedStartsOn,false):"",i.userDelegationKey.signedExpiresOn?truncatedISO8061Date(i.userDelegationKey.signedExpiresOn,false):"",i.userDelegationKey.signedService,i.userDelegationKey.signedVersion,r.preauthorizedAgentObjectId,undefined,r.correlationId,r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",r.version,s,a,r.encryptionScope,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType].join("\n");const d=i.computeHMACSHA256(c);return new SASQueryParameters(r.version,d,l,undefined,undefined,r.protocol,r.startsOn,r.expiresOn,r.ipRange,r.identifier,s,r.cacheControl,r.contentDisposition,r.contentEncoding,r.contentLanguage,r.contentType,i.userDelegationKey,r.preauthorizedAgentObjectId,r.correlationId,r.encryptionScope)}function getCanonicalName(r,i,s){const a=[`/blob/${r}/${i}`];if(s){a.push(`/${s}`)}return a.join("")}function SASSignatureValuesSanityCheckAndAutofill(r){const i=r.version?r.version:x;if(r.snapshotTime&&i<"2018-11-09"){throw RangeError("'version' must be >= '2018-11-09' when providing 'snapshotTime'.")}if(r.blobName===undefined&&r.snapshotTime){throw RangeError("Must provide 'blobName' when providing 'snapshotTime'.")}if(r.versionId&&i<"2019-10-10"){throw RangeError("'version' must be >= '2019-10-10' when providing 'versionId'.")}if(r.blobName===undefined&&r.versionId){throw RangeError("Must provide 'blobName' when providing 'versionId'.")}if(r.permissions&&r.permissions.setImmutabilityPolicy&&i<"2020-08-04"){throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.")}if(r.permissions&&r.permissions.deleteVersion&&i<"2019-10-10"){throw RangeError("'version' must be >= '2019-10-10' when providing 'x' permission.")}if(r.permissions&&r.permissions.permanentDelete&&i<"2019-10-10"){throw RangeError("'version' must be >= '2019-10-10' when providing 'y' permission.")}if(r.permissions&&r.permissions.tag&&i<"2019-12-12"){throw RangeError("'version' must be >= '2019-12-12' when providing 't' permission.")}if(i<"2020-02-10"&&r.permissions&&(r.permissions.move||r.permissions.execute)){throw RangeError("'version' must be >= '2020-02-10' when providing the 'm' or 'e' permission.")}if(i<"2021-04-10"&&r.permissions&&r.permissions.filterByTags){throw RangeError("'version' must be >= '2021-04-10' when providing the 'f' permission.")}if(i<"2020-02-10"&&(r.preauthorizedAgentObjectId||r.correlationId)){throw RangeError("'version' must be >= '2020-02-10' when providing 'preauthorizedAgentObjectId' or 'correlationId'.")}if(r.encryptionScope&&i<"2020-12-06"){throw RangeError("'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.")}r.version=i;return r}class BlobLeaseClient{get leaseId(){return this._leaseId}get url(){return this._url}constructor(r,i){const s=r.storageClientContext;this._url=r.url;if(r.name===undefined){this._isContainer=true;this._containerOrBlobOperation=s.container}else{this._isContainer=false;this._containerOrBlobOperation=s.blob}if(!i){i=d.randomUUID()}this._leaseId=i}async acquireLease(r,i={}){var s,a,l,c,d;if(this._isContainer&&(((s=i.conditions)===null||s===void 0?void 0:s.ifMatch)&&((a=i.conditions)===null||a===void 0?void 0:a.ifMatch)!==z||((l=i.conditions)===null||l===void 0?void 0:l.ifNoneMatch)&&((c=i.conditions)===null||c===void 0?void 0:c.ifNoneMatch)!==z||((d=i.conditions)===null||d===void 0?void 0:d.tagConditions))){throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.")}return Wo.withSpan("BlobLeaseClient-acquireLease",i,(async s=>{var a;return assertResponse(await this._containerOrBlobOperation.acquireLease({abortSignal:i.abortSignal,duration:r,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),proposedLeaseId:this._leaseId,tracingOptions:s.tracingOptions}))}))}async changeLease(r,i={}){var s,a,l,c,d;if(this._isContainer&&(((s=i.conditions)===null||s===void 0?void 0:s.ifMatch)&&((a=i.conditions)===null||a===void 0?void 0:a.ifMatch)!==z||((l=i.conditions)===null||l===void 0?void 0:l.ifNoneMatch)&&((c=i.conditions)===null||c===void 0?void 0:c.ifNoneMatch)!==z||((d=i.conditions)===null||d===void 0?void 0:d.tagConditions))){throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.")}return Wo.withSpan("BlobLeaseClient-changeLease",i,(async s=>{var a;const l=assertResponse(await this._containerOrBlobOperation.changeLease(this._leaseId,r,{abortSignal:i.abortSignal,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions}));this._leaseId=r;return l}))}async releaseLease(r={}){var i,s,a,l,c;if(this._isContainer&&(((i=r.conditions)===null||i===void 0?void 0:i.ifMatch)&&((s=r.conditions)===null||s===void 0?void 0:s.ifMatch)!==z||((a=r.conditions)===null||a===void 0?void 0:a.ifNoneMatch)&&((l=r.conditions)===null||l===void 0?void 0:l.ifNoneMatch)!==z||((c=r.conditions)===null||c===void 0?void 0:c.tagConditions))){throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.")}return Wo.withSpan("BlobLeaseClient-releaseLease",r,(async i=>{var s;return assertResponse(await this._containerOrBlobOperation.releaseLease(this._leaseId,{abortSignal:r.abortSignal,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),tracingOptions:i.tracingOptions}))}))}async renewLease(r={}){var i,s,a,l,c;if(this._isContainer&&(((i=r.conditions)===null||i===void 0?void 0:i.ifMatch)&&((s=r.conditions)===null||s===void 0?void 0:s.ifMatch)!==z||((a=r.conditions)===null||a===void 0?void 0:a.ifNoneMatch)&&((l=r.conditions)===null||l===void 0?void 0:l.ifNoneMatch)!==z||((c=r.conditions)===null||c===void 0?void 0:c.tagConditions))){throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.")}return Wo.withSpan("BlobLeaseClient-renewLease",r,(async i=>{var s;return this._containerOrBlobOperation.renewLease(this._leaseId,{abortSignal:r.abortSignal,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),tracingOptions:i.tracingOptions})}))}async breakLease(r,i={}){var s,a,l,c,d;if(this._isContainer&&(((s=i.conditions)===null||s===void 0?void 0:s.ifMatch)&&((a=i.conditions)===null||a===void 0?void 0:a.ifMatch)!==z||((l=i.conditions)===null||l===void 0?void 0:l.ifNoneMatch)&&((c=i.conditions)===null||c===void 0?void 0:c.ifNoneMatch)!==z||((d=i.conditions)===null||d===void 0?void 0:d.tagConditions))){throw new RangeError("The IfMatch, IfNoneMatch and tags access conditions are ignored by the service. Values other than undefined or their default values are not acceptable.")}return Wo.withSpan("BlobLeaseClient-breakLease",i,(async s=>{var a;const l={abortSignal:i.abortSignal,breakPeriod:r,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions};return assertResponse(await this._containerOrBlobOperation.breakLease(l))}))}}class RetriableReadableStream extends C.Readable{constructor(r,i,s,a,l={}){super({highWaterMark:l.highWaterMark});this.retries=0;this.sourceDataHandler=r=>{if(this.options.doInjectErrorOnce){this.options.doInjectErrorOnce=undefined;this.source.pause();this.sourceErrorOrEndHandler();this.source.destroy();return}this.offset+=r.length;if(this.onProgress){this.onProgress({loadedBytes:this.offset-this.start})}if(!this.push(r)){this.source.pause()}};this.sourceAbortedHandler=()=>{const r=new g.AbortError("The operation was aborted.");this.destroy(r)};this.sourceErrorOrEndHandler=r=>{if(r&&r.name==="AbortError"){this.destroy(r);return}this.removeSourceEventHandlers();if(this.offset-1===this.end){this.push(null)}else if(this.offset<=this.end){if(this.retries{this.source=r;this.setSourceEventHandlers();return})).catch((r=>{this.destroy(r)}))}else{this.destroy(new Error(`Data corruption failure: received less data than required and reached maxRetires limitation. Received data offset: ${this.offset-1}, data needed offset: ${this.end}, retries: ${this.retries}, max retries: ${this.maxRetryRequests}`))}}else{this.destroy(new Error(`Data corruption failure: Received more data than original request, data needed offset is ${this.end}, received offset: ${this.offset-1}`))}};this.getter=i;this.source=r;this.start=s;this.offset=s;this.end=s+a-1;this.maxRetryRequests=l.maxRetryRequests&&l.maxRetryRequests>=0?l.maxRetryRequests:0;this.onProgress=l.onProgress;this.options=l;this.setSourceEventHandlers()}_read(){this.source.resume()}setSourceEventHandlers(){this.source.on("data",this.sourceDataHandler);this.source.on("end",this.sourceErrorOrEndHandler);this.source.on("error",this.sourceErrorOrEndHandler);this.source.on("aborted",this.sourceAbortedHandler)}removeSourceEventHandlers(){this.source.removeListener("data",this.sourceDataHandler);this.source.removeListener("end",this.sourceErrorOrEndHandler);this.source.removeListener("error",this.sourceErrorOrEndHandler);this.source.removeListener("aborted",this.sourceAbortedHandler)}_destroy(r,i){this.removeSourceEventHandlers();this.source.destroy();i(r===null?undefined:r)}}class BlobDownloadResponse{get acceptRanges(){return this.originalResponse.acceptRanges}get cacheControl(){return this.originalResponse.cacheControl}get contentDisposition(){return this.originalResponse.contentDisposition}get contentEncoding(){return this.originalResponse.contentEncoding}get contentLanguage(){return this.originalResponse.contentLanguage}get blobSequenceNumber(){return this.originalResponse.blobSequenceNumber}get blobType(){return this.originalResponse.blobType}get contentLength(){return this.originalResponse.contentLength}get contentMD5(){return this.originalResponse.contentMD5}get contentRange(){return this.originalResponse.contentRange}get contentType(){return this.originalResponse.contentType}get copyCompletedOn(){return this.originalResponse.copyCompletedOn}get copyId(){return this.originalResponse.copyId}get copyProgress(){return this.originalResponse.copyProgress}get copySource(){return this.originalResponse.copySource}get copyStatus(){return this.originalResponse.copyStatus}get copyStatusDescription(){return this.originalResponse.copyStatusDescription}get leaseDuration(){return this.originalResponse.leaseDuration}get leaseState(){return this.originalResponse.leaseState}get leaseStatus(){return this.originalResponse.leaseStatus}get date(){return this.originalResponse.date}get blobCommittedBlockCount(){return this.originalResponse.blobCommittedBlockCount}get etag(){return this.originalResponse.etag}get tagCount(){return this.originalResponse.tagCount}get errorCode(){return this.originalResponse.errorCode}get isServerEncrypted(){return this.originalResponse.isServerEncrypted}get blobContentMD5(){return this.originalResponse.blobContentMD5}get lastModified(){return this.originalResponse.lastModified}get lastAccessed(){return this.originalResponse.lastAccessed}get createdOn(){return this.originalResponse.createdOn}get metadata(){return this.originalResponse.metadata}get requestId(){return this.originalResponse.requestId}get clientRequestId(){return this.originalResponse.clientRequestId}get version(){return this.originalResponse.version}get versionId(){return this.originalResponse.versionId}get isCurrentVersion(){return this.originalResponse.isCurrentVersion}get encryptionKeySha256(){return this.originalResponse.encryptionKeySha256}get contentCrc64(){return this.originalResponse.contentCrc64}get objectReplicationDestinationPolicyId(){return this.originalResponse.objectReplicationDestinationPolicyId}get objectReplicationSourceProperties(){return this.originalResponse.objectReplicationSourceProperties}get isSealed(){return this.originalResponse.isSealed}get immutabilityPolicyExpiresOn(){return this.originalResponse.immutabilityPolicyExpiresOn}get immutabilityPolicyMode(){return this.originalResponse.immutabilityPolicyMode}get legalHold(){return this.originalResponse.legalHold}get contentAsBlob(){return this.originalResponse.blobBody}get readableStreamBody(){return d.isNode?this.blobDownloadStream:undefined}get _response(){return this.originalResponse._response}constructor(r,i,s,a,l={}){this.originalResponse=r;this.blobDownloadStream=new RetriableReadableStream(this.originalResponse.readableStreamBody,i,s,a,l)}}const Yo=16;const Jo=new Uint8Array([79,98,106,1]);const $o="avro.codec";const Ko="avro.schema";class AvroParser{static async readFixedBytes(r,i,s={}){const a=await r.read(i,{abortSignal:s.abortSignal});if(a.length!==i){throw new Error("Hit stream end.")}return a}static async readByte(r,i={}){const s=await AvroParser.readFixedBytes(r,1,i);return s[0]}static async readZigZagLong(r,i={}){let s=0;let a=0;let l,c,d;do{l=await AvroParser.readByte(r,i);c=l&128;s|=(l&127)<Number.MAX_SAFE_INTEGER){throw new Error("Integer overflow.")}return a}return s>>1^-(s&1)}static async readLong(r,i={}){return AvroParser.readZigZagLong(r,i)}static async readInt(r,i={}){return AvroParser.readZigZagLong(r,i)}static async readNull(){return null}static async readBoolean(r,i={}){const s=await AvroParser.readByte(r,i);if(s===1){return true}else if(s===0){return false}else{throw new Error("Byte was not a boolean.")}}static async readFloat(r,i={}){const s=await AvroParser.readFixedBytes(r,4,i);const a=new DataView(s.buffer,s.byteOffset,s.byteLength);return a.getFloat32(0,true)}static async readDouble(r,i={}){const s=await AvroParser.readFixedBytes(r,8,i);const a=new DataView(s.buffer,s.byteOffset,s.byteLength);return a.getFloat64(0,true)}static async readBytes(r,i={}){const s=await AvroParser.readLong(r,i);if(s<0){throw new Error("Bytes size was negative.")}return r.read(s,{abortSignal:i.abortSignal})}static async readString(r,i={}){const s=await AvroParser.readBytes(r,i);const a=new TextDecoder;return a.decode(s)}static async readMapPair(r,i,s={}){const a=await AvroParser.readString(r,s);const l=await i(r,s);return{key:a,value:l}}static async readMap(r,i,s={}){const readPairMethod=(r,s={})=>AvroParser.readMapPair(r,i,s);const a=await AvroParser.readArray(r,readPairMethod,s);const l={};for(const r of a){l[r.key]=r.value}return l}static async readArray(r,i,s={}){const a=[];for(let l=await AvroParser.readLong(r,s);l!==0;l=await AvroParser.readLong(r,s)){if(l<0){await AvroParser.readLong(r,s);l=-l}while(l--){const l=await i(r,s);a.push(l)}}return a}}var Xo;(function(r){r["RECORD"]="record";r["ENUM"]="enum";r["ARRAY"]="array";r["MAP"]="map";r["UNION"]="union";r["FIXED"]="fixed"})(Xo||(Xo={}));var Zo;(function(r){r["NULL"]="null";r["BOOLEAN"]="boolean";r["INT"]="int";r["LONG"]="long";r["FLOAT"]="float";r["DOUBLE"]="double";r["BYTES"]="bytes";r["STRING"]="string"})(Zo||(Zo={}));class AvroType{static fromSchema(r){if(typeof r==="string"){return AvroType.fromStringSchema(r)}else if(Array.isArray(r)){return AvroType.fromArraySchema(r)}else{return AvroType.fromObjectSchema(r)}}static fromStringSchema(r){switch(r){case Zo.NULL:case Zo.BOOLEAN:case Zo.INT:case Zo.LONG:case Zo.FLOAT:case Zo.DOUBLE:case Zo.BYTES:case Zo.STRING:return new AvroPrimitiveType(r);default:throw new Error(`Unexpected Avro type ${r}`)}}static fromArraySchema(r){return new AvroUnionType(r.map(AvroType.fromSchema))}static fromObjectSchema(r){const i=r.type;try{return AvroType.fromStringSchema(i)}catch(r){}switch(i){case Xo.RECORD:if(r.aliases){throw new Error(`aliases currently is not supported, schema: ${r}`)}if(!r.name){throw new Error(`Required attribute 'name' doesn't exist on schema: ${r}`)}const s={};if(!r.fields){throw new Error(`Required attribute 'fields' doesn't exist on schema: ${r}`)}for(const i of r.fields){s[i.name]=AvroType.fromSchema(i.type)}return new AvroRecordType(s,r.name);case Xo.ENUM:if(r.aliases){throw new Error(`aliases currently is not supported, schema: ${r}`)}if(!r.symbols){throw new Error(`Required attribute 'symbols' doesn't exist on schema: ${r}`)}return new AvroEnumType(r.symbols);case Xo.MAP:if(!r.values){throw new Error(`Required attribute 'values' doesn't exist on schema: ${r}`)}return new AvroMapType(AvroType.fromSchema(r.values));case Xo.ARRAY:case Xo.FIXED:default:throw new Error(`Unexpected Avro type ${i} in ${r}`)}}}class AvroPrimitiveType extends AvroType{constructor(r){super();this._primitive=r}read(r,i={}){switch(this._primitive){case Zo.NULL:return AvroParser.readNull();case Zo.BOOLEAN:return AvroParser.readBoolean(r,i);case Zo.INT:return AvroParser.readInt(r,i);case Zo.LONG:return AvroParser.readLong(r,i);case Zo.FLOAT:return AvroParser.readFloat(r,i);case Zo.DOUBLE:return AvroParser.readDouble(r,i);case Zo.BYTES:return AvroParser.readBytes(r,i);case Zo.STRING:return AvroParser.readString(r,i);default:throw new Error("Unknown Avro Primitive")}}}class AvroEnumType extends AvroType{constructor(r){super();this._symbols=r}async read(r,i={}){const s=await AvroParser.readInt(r,i);return this._symbols[s]}}class AvroUnionType extends AvroType{constructor(r){super();this._types=r}async read(r,i={}){const s=await AvroParser.readInt(r,i);return this._types[s].read(r,i)}}class AvroMapType extends AvroType{constructor(r){super();this._itemType=r}read(r,i={}){const readItemMethod=(r,i)=>this._itemType.read(r,i);return AvroParser.readMap(r,readItemMethod,i)}}class AvroRecordType extends AvroType{constructor(r,i){super();this._fields=r;this._name=i}async read(r,i={}){const s={};s["$schema"]=this._name;for(const a in this._fields){if(Object.prototype.hasOwnProperty.call(this._fields,a)){s[a]=await this._fields[a].read(r,i)}}return s}}function arraysEqual(r,i){if(r===i)return true;if(r==null||i==null)return false;if(r.length!==i.length)return false;for(let s=0;s0){for(let i=0;i0}parseObjects(){return l.__asyncGenerator(this,arguments,(function*parseObjects_1(r={}){if(!this._initialized){yield l.__await(this.initialize(r))}while(this.hasNext()){const i=yield l.__await(this._itemType.read(this._dataStream,{abortSignal:r.abortSignal}));this._itemsRemainingInBlock--;this._objectIndex++;if(this._itemsRemainingInBlock===0){const i=yield l.__await(AvroParser.readFixedBytes(this._dataStream,Yo,{abortSignal:r.abortSignal}));this._blockOffset=this._initialBlockOffset+this._dataStream.position;this._objectIndex=0;if(!arraysEqual(this._syncMarker,i)){throw new Error("Stream is not a valid Avro file.")}try{this._itemsRemainingInBlock=yield l.__await(AvroParser.readLong(this._dataStream,{abortSignal:r.abortSignal}))}catch(r){this._itemsRemainingInBlock=0}if(this._itemsRemainingInBlock>0){yield l.__await(AvroParser.readLong(this._dataStream,{abortSignal:r.abortSignal}))}}yield yield l.__await(i)}}))}}class AvroReadable{}const el=new g.AbortError("Reading from the avro stream was aborted.");class AvroReadableFromStream extends AvroReadable{toUint8Array(r){if(typeof r==="string"){return Buffer.from(r)}return r}constructor(r){super();this._readable=r;this._position=0}get position(){return this._position}async read(r,i={}){var s;if((s=i.abortSignal)===null||s===void 0?void 0:s.aborted){throw el}if(r<0){throw new Error(`size parameter should be positive: ${r}`)}if(r===0){return new Uint8Array}if(!this._readable.readable){throw new Error("Stream no longer readable.")}const a=this._readable.read(r);if(a){this._position+=a.length;return this.toUint8Array(a)}else{return new Promise(((s,a)=>{const cleanUp=()=>{this._readable.removeListener("readable",readableCallback);this._readable.removeListener("error",rejectCallback);this._readable.removeListener("end",rejectCallback);this._readable.removeListener("close",rejectCallback);if(i.abortSignal){i.abortSignal.removeEventListener("abort",abortHandler)}};const readableCallback=()=>{const i=this._readable.read(r);if(i){this._position+=i.length;cleanUp();s(this.toUint8Array(i))}};const rejectCallback=()=>{cleanUp();a()};const abortHandler=()=>{cleanUp();a(el)};this._readable.on("readable",readableCallback);this._readable.once("error",rejectCallback);this._readable.once("end",rejectCallback);this._readable.once("close",rejectCallback);if(i.abortSignal){i.abortSignal.addEventListener("abort",abortHandler)}}))}}}class BlobQuickQueryStream extends C.Readable{constructor(r,i={}){super();this.avroPaused=true;this.source=r;this.onProgress=i.onProgress;this.onError=i.onError;this.avroReader=new AvroReader(new AvroReadableFromStream(this.source));this.avroIter=this.avroReader.parseObjects({abortSignal:i.abortSignal})}_read(){if(this.avroPaused){this.readInternal().catch((r=>{this.emit("error",r)}))}}async readInternal(){this.avroPaused=false;let r;do{r=await this.avroIter.next();if(r.done){break}const i=r.value;const s=i.$schema;if(typeof s!=="string"){throw Error("Missing schema in avro record.")}switch(s){case"com.microsoft.azure.storage.queryBlobContents.resultData":{const r=i.data;if(r instanceof Uint8Array===false){throw Error("Invalid data in avro result record.")}if(!this.push(Buffer.from(r))){this.avroPaused=true}}break;case"com.microsoft.azure.storage.queryBlobContents.progress":{const r=i.bytesScanned;if(typeof r!=="number"){throw Error("Invalid bytesScanned in avro progress record.")}if(this.onProgress){this.onProgress({loadedBytes:r})}}break;case"com.microsoft.azure.storage.queryBlobContents.end":if(this.onProgress){const r=i.totalBytes;if(typeof r!=="number"){throw Error("Invalid totalBytes in avro end record.")}this.onProgress({loadedBytes:r})}this.push(null);break;case"com.microsoft.azure.storage.queryBlobContents.error":if(this.onError){const r=i.fatal;if(typeof r!=="boolean"){throw Error("Invalid fatal in avro error record.")}const s=i.name;if(typeof s!=="string"){throw Error("Invalid name in avro error record.")}const a=i.description;if(typeof a!=="string"){throw Error("Invalid description in avro error record.")}const l=i.position;if(typeof l!=="number"){throw Error("Invalid position in avro error record.")}this.onError({position:l,name:s,isFatal:r,description:a})}break;default:throw Error(`Unknown schema ${s} in avro progress record.`)}}while(!r.done&&!this.avroPaused)}}class BlobQueryResponse{get acceptRanges(){return this.originalResponse.acceptRanges}get cacheControl(){return this.originalResponse.cacheControl}get contentDisposition(){return this.originalResponse.contentDisposition}get contentEncoding(){return this.originalResponse.contentEncoding}get contentLanguage(){return this.originalResponse.contentLanguage}get blobSequenceNumber(){return this.originalResponse.blobSequenceNumber}get blobType(){return this.originalResponse.blobType}get contentLength(){return this.originalResponse.contentLength}get contentMD5(){return this.originalResponse.contentMD5}get contentRange(){return this.originalResponse.contentRange}get contentType(){return this.originalResponse.contentType}get copyCompletedOn(){return undefined}get copyId(){return this.originalResponse.copyId}get copyProgress(){return this.originalResponse.copyProgress}get copySource(){return this.originalResponse.copySource}get copyStatus(){return this.originalResponse.copyStatus}get copyStatusDescription(){return this.originalResponse.copyStatusDescription}get leaseDuration(){return this.originalResponse.leaseDuration}get leaseState(){return this.originalResponse.leaseState}get leaseStatus(){return this.originalResponse.leaseStatus}get date(){return this.originalResponse.date}get blobCommittedBlockCount(){return this.originalResponse.blobCommittedBlockCount}get etag(){return this.originalResponse.etag}get errorCode(){return this.originalResponse.errorCode}get isServerEncrypted(){return this.originalResponse.isServerEncrypted}get blobContentMD5(){return this.originalResponse.blobContentMD5}get lastModified(){return this.originalResponse.lastModified}get metadata(){return this.originalResponse.metadata}get requestId(){return this.originalResponse.requestId}get clientRequestId(){return this.originalResponse.clientRequestId}get version(){return this.originalResponse.version}get encryptionKeySha256(){return this.originalResponse.encryptionKeySha256}get contentCrc64(){return this.originalResponse.contentCrc64}get blobBody(){return undefined}get readableStreamBody(){return d.isNode?this.blobDownloadStream:undefined}get _response(){return this.originalResponse._response}constructor(r,i={}){this.originalResponse=r;this.blobDownloadStream=new BlobQuickQueryStream(this.originalResponse.readableStreamBody,i)}}i.BlockBlobTier=void 0;(function(r){r["Hot"]="Hot";r["Cool"]="Cool";r["Cold"]="Cold";r["Archive"]="Archive"})(i.BlockBlobTier||(i.BlockBlobTier={}));i.PremiumPageBlobTier=void 0;(function(r){r["P4"]="P4";r["P6"]="P6";r["P10"]="P10";r["P15"]="P15";r["P20"]="P20";r["P30"]="P30";r["P40"]="P40";r["P50"]="P50";r["P60"]="P60";r["P70"]="P70";r["P80"]="P80"})(i.PremiumPageBlobTier||(i.PremiumPageBlobTier={}));function toAccessTier(r){if(r===undefined){return undefined}return r}function ensureCpkIfSpecified(r,i){if(r&&!i){throw new RangeError("Customer-provided encryption key must be used over HTTPS.")}if(r&&!r.encryptionAlgorithm){r.encryptionAlgorithm=X}}i.StorageBlobAudience=void 0;(function(r){r["StorageOAuthScopes"]="https://storage.azure.com/.default";r["DiskComputeOAuthScopes"]="https://disk.compute.azure.com/.default"})(i.StorageBlobAudience||(i.StorageBlobAudience={}));function getBlobServiceAccountAudience(r){return`https://${r}.blob.core.windows.net/.default`}function rangeResponseFromModel(r){const i=(r._response.parsedBody.pageRange||[]).map((r=>({offset:r.start,count:r.end-r.start})));const s=(r._response.parsedBody.clearRange||[]).map((r=>({offset:r.start,count:r.end-r.start})));return Object.assign(Object.assign({},r),{pageRange:i,clearRange:s,_response:Object.assign(Object.assign({},r._response),{parsedBody:{pageRange:i,clearRange:s}})})}class BlobBeginCopyFromUrlPoller extends B.Poller{constructor(r){const{blobClient:i,copySource:s,intervalInMs:a=15e3,onProgress:l,resumeFrom:c,startCopyFromURLOptions:d}=r;let p;if(c){p=JSON.parse(c).state}const A=makeBlobBeginCopyFromURLPollOperation(Object.assign(Object.assign({},p),{blobClient:i,copySource:s,startCopyFromURLOptions:d}));super(A);if(typeof l==="function"){this.onProgress(l)}this.intervalInMs=a}delay(){return d.delay(this.intervalInMs)}}const tl=async function cancel(r={}){const i=this.state;const{copyId:s}=i;if(i.isCompleted){return makeBlobBeginCopyFromURLPollOperation(i)}if(!s){i.isCancelled=true;return makeBlobBeginCopyFromURLPollOperation(i)}await i.blobClient.abortCopyFromURL(s,{abortSignal:r.abortSignal});i.isCancelled=true;return makeBlobBeginCopyFromURLPollOperation(i)};const rl=async function update(r={}){const i=this.state;const{blobClient:s,copySource:a,startCopyFromURLOptions:l}=i;if(!i.isStarted){i.isStarted=true;const r=await s.startCopyFromURL(a,l);i.copyId=r.copyId;if(r.copyStatus==="success"){i.result=r;i.isCompleted=true}}else if(!i.isCompleted){try{const s=await i.blobClient.getProperties({abortSignal:r.abortSignal});const{copyStatus:a,copyProgress:l}=s;const c=i.copyProgress;if(l){i.copyProgress=l}if(a==="pending"&&l!==c&&typeof r.fireProgress==="function"){r.fireProgress(i)}else if(a==="success"){i.result=s;i.isCompleted=true}else if(a==="failed"){i.error=new Error(`Blob copy failed with reason: "${s.copyStatusDescription||"unknown"}"`);i.isCompleted=true}}catch(r){i.error=r;i.isCompleted=true}}return makeBlobBeginCopyFromURLPollOperation(i)};const il=function toString(){return JSON.stringify({state:this.state},((r,i)=>{if(r==="blobClient"){return undefined}return i}))};function makeBlobBeginCopyFromURLPollOperation(r){return{state:Object.assign({},r),cancel:tl,toString:il,update:rl}}function rangeToString(r){if(r.offset<0){throw new RangeError(`Range.offset cannot be smaller than 0.`)}if(r.count&&r.count<=0){throw new RangeError(`Range.count must be larger than 0. Leave it undefined if you want a range from offset to the end.`)}return r.count?`bytes=${r.offset}-${r.offset+r.count-1}`:`bytes=${r.offset}-`}var nl;(function(r){r[r["Good"]=0]="Good";r[r["Error"]=1]="Error"})(nl||(nl={}));class Batch{constructor(r=5){this.actives=0;this.completed=0;this.offset=0;this.operations=[];this.state=nl.Good;if(r<1){throw new RangeError("concurrency must be larger than 0")}this.concurrency=r;this.emitter=new I.EventEmitter}addOperation(r){this.operations.push((async()=>{try{this.actives++;await r();this.actives--;this.completed++;this.parallelExecute()}catch(r){this.emitter.emit("error",r)}}))}async do(){if(this.operations.length===0){return Promise.resolve()}this.parallelExecute();return new Promise(((r,i)=>{this.emitter.on("finish",r);this.emitter.on("error",(r=>{this.state=nl.Error;i(r)}))}))}nextOperation(){if(this.offset=this.operations.length){this.emitter.emit("finish");return}while(this.actives=this.byteLength){this.push(null)}if(!r){r=this.readableHighWaterMark}const i=[];let s=0;while(sr-s){const a=this.byteOffsetInCurrentBuffer+r-s;i.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer,a));this.pushedBytesLength+=r-s;this.byteOffsetInCurrentBuffer=a;s=r;break}else{const r=this.byteOffsetInCurrentBuffer+c;i.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer,r));if(c===l){this.byteOffsetInCurrentBuffer=0;this.bufferIndex++}else{this.byteOffsetInCurrentBuffer=r}this.pushedBytesLength+=c;s+=c}}if(i.length>1){this.push(Buffer.concat(i))}else if(i.length===1){this.push(i[0])}}}const sl=S.constants.MAX_LENGTH;class PooledBuffer{get size(){return this._size}constructor(r,i,s){this.buffers=[];this.capacity=r;this._size=0;const a=Math.ceil(r/sl);for(let i=0;i0){r[0]=r[0].slice(c)}}getReadableStream(){return new BuffersStream(this.buffers,this.size)}}class BufferScheduler{constructor(r,i,s,a,l,c){this.emitter=new I.EventEmitter;this.offset=0;this.isStreamEnd=false;this.isError=false;this.executingOutgoingHandlers=0;this.numBuffers=0;this.unresolvedDataArray=[];this.unresolvedLength=0;this.incoming=[];this.outgoing=[];if(i<=0){throw new RangeError(`bufferSize must be larger than 0, current is ${i}`)}if(s<=0){throw new RangeError(`maxBuffers must be larger than 0, current is ${s}`)}if(l<=0){throw new RangeError(`concurrency must be larger than 0, current is ${l}`)}this.bufferSize=i;this.maxBuffers=s;this.readable=r;this.outgoingHandler=a;this.concurrency=l;this.encoding=c}async do(){return new Promise(((r,i)=>{this.readable.on("data",(r=>{r=typeof r==="string"?Buffer.from(r,this.encoding):r;this.appendUnresolvedData(r);if(!this.resolveData()){this.readable.pause()}}));this.readable.on("error",(r=>{this.emitter.emit("error",r)}));this.readable.on("end",(()=>{this.isStreamEnd=true;this.emitter.emit("checkEnd")}));this.emitter.on("error",(r=>{this.isError=true;this.readable.pause();i(r)}));this.emitter.on("checkEnd",(()=>{if(this.outgoing.length>0){this.triggerOutgoingHandlers();return}if(this.isStreamEnd&&this.executingOutgoingHandlers===0){if(this.unresolvedLength>0&&this.unresolvedLengths.getReadableStream()),s.size,this.offset).then(r).catch(i)}else if(this.unresolvedLength>=this.bufferSize){return}else{r()}}}))}))}appendUnresolvedData(r){this.unresolvedDataArray.push(r);this.unresolvedLength+=r.length}shiftBufferFromUnresolvedDataArray(r){if(!r){r=new PooledBuffer(this.bufferSize,this.unresolvedDataArray,this.unresolvedLength)}else{r.fill(this.unresolvedDataArray,this.unresolvedLength)}this.unresolvedLength-=r.size;return r}resolveData(){while(this.unresolvedLength>=this.bufferSize){let r;if(this.incoming.length>0){r=this.incoming.shift();this.shiftBufferFromUnresolvedDataArray(r)}else{if(this.numBuffers=this.concurrency){return}r=this.outgoing.shift();if(r){this.triggerOutgoingHandler(r)}}while(r)}async triggerOutgoingHandler(r){const i=r.size;this.executingOutgoingHandlers++;this.offset+=i;try{await this.outgoingHandler((()=>r.getReadableStream()),i,this.offset-i)}catch(r){this.emitter.emit("error",r);return}this.executingOutgoingHandlers--;this.reuseBuffer(r);this.emitter.emit("checkEnd")}reuseBuffer(r){this.incoming.push(r);if(!this.isError&&this.resolveData()&&!this.isStreamEnd){this.readable.resume()}}}async function streamToBuffer(r,i,s,a,l){let c=0;const d=a-s;return new Promise(((a,p)=>{const A=setTimeout((()=>p(new Error(`The operation cannot be completed in timeout.`))),U);r.on("readable",(()=>{if(c>=d){clearTimeout(A);a();return}let p=r.read();if(!p){return}if(typeof p==="string"){p=Buffer.from(p,l)}const u=c+p.length>d?d-c:p.length;i.fill(p.slice(0,u),s+c,s+c+u);c+=u}));r.on("end",(()=>{clearTimeout(A);if(c{clearTimeout(A);p(r)}))}))}async function streamToBuffer2(r,i,s){let a=0;const l=i.length;return new Promise(((c,d)=>{r.on("readable",(()=>{let c=r.read();if(!c){return}if(typeof c==="string"){c=Buffer.from(c,s)}if(a+c.length>l){d(new Error(`Stream exceeds buffer size. Buffer size: ${l}`));return}i.fill(c,a,a+c.length);a+=c.length}));r.on("end",(()=>{c(a)}));r.on("error",d)}))}async function readStreamToLocalFile(r,i){return new Promise(((s,a)=>{const l=R.createWriteStream(i);r.on("error",(r=>{a(r)}));l.on("error",(r=>{a(r)}));l.on("close",s);r.pipe(l)}))}const al=k.promisify(R.stat);const ol=R.createReadStream;class BlobClient extends StorageClient{get name(){return this._name}get containerName(){return this._containerName}constructor(r,i,s,l){l=l||{};let p;let A;if(isPipelineLike(i)){A=r;p=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){A=r;l=s;p=newPipeline(i,l)}else if(!i&&typeof i!=="string"){A=r;if(s&&typeof s!=="string"){l=s}p=newPipeline(new AnonymousCredential,l)}else if(i&&typeof i==="string"&&s&&typeof s==="string"){const c=i;const u=s;const h=extractConnectionStringParts(r);if(h.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(h.accountName,h.accountKey);A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u));if(!l.proxyOptions){l.proxyOptions=a.getDefaultProxySettings(h.proxyUri)}p=newPipeline(r,l)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(h.kind==="SASConnString"){A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u))+"?"+h.accountSas;p=newPipeline(new AnonymousCredential,l)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}else{throw new Error("Expecting non-empty strings for containerName and blobName parameters")}super(A,p);({blobName:this._name,containerName:this._containerName}=this.getBlobAndContainerNamesFromUrl());this.blobContext=this.storageClientContext.blob;this._snapshot=getURLParameter(this.url,q.Parameters.SNAPSHOT);this._versionId=getURLParameter(this.url,q.Parameters.VERSIONID)}withSnapshot(r){return new BlobClient(setURLParameter(this.url,q.Parameters.SNAPSHOT,r.length===0?undefined:r),this.pipeline)}withVersion(r){return new BlobClient(setURLParameter(this.url,q.Parameters.VERSIONID,r.length===0?undefined:r),this.pipeline)}getAppendBlobClient(){return new AppendBlobClient(this.url,this.pipeline)}getBlockBlobClient(){return new BlockBlobClient(this.url,this.pipeline)}getPageBlobClient(){return new PageBlobClient(this.url,this.pipeline)}async download(r=0,i,s={}){s.conditions=s.conditions||{};s.conditions=s.conditions||{};ensureCpkIfSpecified(s.customerProvidedKey,this.isHttps);return Wo.withSpan("BlobClient-download",s,(async a=>{var l;const c=assertResponse(await this.blobContext.download({abortSignal:s.abortSignal,leaseAccessConditions:s.conditions,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),requestOptions:{onDownloadProgress:d.isNode?undefined:s.onProgress},range:r===0&&!i?undefined:rangeToString({offset:r,count:i}),rangeGetContentMD5:s.rangeGetContentMD5,rangeGetContentCRC64:s.rangeGetContentCrc64,snapshot:s.snapshot,cpkInfo:s.customerProvidedKey,tracingOptions:a.tracingOptions}));const p=Object.assign(Object.assign({},c),{_response:c._response,objectReplicationDestinationPolicyId:c.objectReplicationPolicyId,objectReplicationSourceProperties:parseObjectReplicationRecord(c.objectReplicationRules)});if(!d.isNode){return p}if(s.maxRetryRequests===undefined||s.maxRetryRequests<0){s.maxRetryRequests=M}if(c.contentLength===undefined){throw new RangeError(`File download response doesn't contain valid content length header`)}if(!c.etag){throw new RangeError(`File download response doesn't contain valid etag header`)}return new BlobDownloadResponse(p,(async i=>{var a;const l={leaseAccessConditions:s.conditions,modifiedAccessConditions:{ifMatch:s.conditions.ifMatch||c.etag,ifModifiedSince:s.conditions.ifModifiedSince,ifNoneMatch:s.conditions.ifNoneMatch,ifUnmodifiedSince:s.conditions.ifUnmodifiedSince,ifTags:(a=s.conditions)===null||a===void 0?void 0:a.tagConditions},range:rangeToString({count:r+c.contentLength-i,offset:i}),rangeGetContentMD5:s.rangeGetContentMD5,rangeGetContentCRC64:s.rangeGetContentCrc64,snapshot:s.snapshot,cpkInfo:s.customerProvidedKey};return(await this.blobContext.download(Object.assign({abortSignal:s.abortSignal},l))).readableStreamBody}),r,c.contentLength,{maxRetryRequests:s.maxRetryRequests,onProgress:s.onProgress})}))}async exists(r={}){return Wo.withSpan("BlobClient-exists",r,(async i=>{try{ensureCpkIfSpecified(r.customerProvidedKey,this.isHttps);await this.getProperties({abortSignal:r.abortSignal,customerProvidedKey:r.customerProvidedKey,conditions:r.conditions,tracingOptions:i.tracingOptions});return true}catch(r){if(r.statusCode===404){return false}else if(r.statusCode===409&&(r.details.errorCode===re||r.details.errorCode===ie)){return true}throw r}}))}async getProperties(r={}){r.conditions=r.conditions||{};ensureCpkIfSpecified(r.customerProvidedKey,this.isHttps);return Wo.withSpan("BlobClient-getProperties",r,(async i=>{var s;const a=assertResponse(await this.blobContext.getProperties({abortSignal:r.abortSignal,leaseAccessConditions:r.conditions,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),cpkInfo:r.customerProvidedKey,tracingOptions:i.tracingOptions}));return Object.assign(Object.assign({},a),{_response:a._response,objectReplicationDestinationPolicyId:a.objectReplicationPolicyId,objectReplicationSourceProperties:parseObjectReplicationRecord(a.objectReplicationRules)})}))}async delete(r={}){r.conditions=r.conditions||{};return Wo.withSpan("BlobClient-delete",r,(async i=>{var s;return assertResponse(await this.blobContext.delete({abortSignal:r.abortSignal,deleteSnapshots:r.deleteSnapshots,leaseAccessConditions:r.conditions,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),tracingOptions:i.tracingOptions}))}))}async deleteIfExists(r={}){return Wo.withSpan("BlobClient-deleteIfExists",r,(async r=>{var i,s;try{const i=assertResponse(await this.delete(r));return Object.assign(Object.assign({succeeded:true},i),{_response:i._response})}catch(r){if(((i=r.details)===null||i===void 0?void 0:i.errorCode)==="BlobNotFound"){return Object.assign(Object.assign({succeeded:false},(s=r.response)===null||s===void 0?void 0:s.parsedHeaders),{_response:r.response})}throw r}}))}async undelete(r={}){return Wo.withSpan("BlobClient-undelete",r,(async i=>assertResponse(await this.blobContext.undelete({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}async setHTTPHeaders(r,i={}){i.conditions=i.conditions||{};ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);return Wo.withSpan("BlobClient-setHTTPHeaders",i,(async s=>{var a;return assertResponse(await this.blobContext.setHttpHeaders({abortSignal:i.abortSignal,blobHttpHeaders:r,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions}))}))}async setMetadata(r,i={}){i.conditions=i.conditions||{};ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);return Wo.withSpan("BlobClient-setMetadata",i,(async s=>{var a;return assertResponse(await this.blobContext.setMetadata({abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,metadata:r,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),cpkInfo:i.customerProvidedKey,encryptionScope:i.encryptionScope,tracingOptions:s.tracingOptions}))}))}async setTags(r,i={}){return Wo.withSpan("BlobClient-setTags",i,(async s=>{var a;return assertResponse(await this.blobContext.setTags({abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions,tags:toBlobTags(r)}))}))}async getTags(r={}){return Wo.withSpan("BlobClient-getTags",r,(async i=>{var s;const a=assertResponse(await this.blobContext.getTags({abortSignal:r.abortSignal,leaseAccessConditions:r.conditions,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),tracingOptions:i.tracingOptions}));const l=Object.assign(Object.assign({},a),{_response:a._response,tags:toTags({blobTagSet:a.blobTagSet})||{}});return l}))}getBlobLeaseClient(r){return new BlobLeaseClient(this,r)}async createSnapshot(r={}){r.conditions=r.conditions||{};ensureCpkIfSpecified(r.customerProvidedKey,this.isHttps);return Wo.withSpan("BlobClient-createSnapshot",r,(async i=>{var s;return assertResponse(await this.blobContext.createSnapshot({abortSignal:r.abortSignal,leaseAccessConditions:r.conditions,metadata:r.metadata,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),cpkInfo:r.customerProvidedKey,encryptionScope:r.encryptionScope,tracingOptions:i.tracingOptions}))}))}async beginCopyFromURL(r,i={}){const s={abortCopyFromURL:(...r)=>this.abortCopyFromURL(...r),getProperties:(...r)=>this.getProperties(...r),startCopyFromURL:(...r)=>this.startCopyFromURL(...r)};const a=new BlobBeginCopyFromUrlPoller({blobClient:s,copySource:r,intervalInMs:i.intervalInMs,onProgress:i.onProgress,resumeFrom:i.resumeFrom,startCopyFromURLOptions:i});await a.poll();return a}async abortCopyFromURL(r,i={}){return Wo.withSpan("BlobClient-abortCopyFromURL",i,(async s=>assertResponse(await this.blobContext.abortCopyFromURL(r,{abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,tracingOptions:s.tracingOptions}))))}async syncCopyFromURL(r,i={}){i.conditions=i.conditions||{};i.sourceConditions=i.sourceConditions||{};return Wo.withSpan("BlobClient-syncCopyFromURL",i,(async s=>{var a,l,c,d,p,A,u;return assertResponse(await this.blobContext.copyFromURL(r,{abortSignal:i.abortSignal,metadata:i.metadata,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),sourceModifiedAccessConditions:{sourceIfMatch:(l=i.sourceConditions)===null||l===void 0?void 0:l.ifMatch,sourceIfModifiedSince:(c=i.sourceConditions)===null||c===void 0?void 0:c.ifModifiedSince,sourceIfNoneMatch:(d=i.sourceConditions)===null||d===void 0?void 0:d.ifNoneMatch,sourceIfUnmodifiedSince:(p=i.sourceConditions)===null||p===void 0?void 0:p.ifUnmodifiedSince},sourceContentMD5:i.sourceContentMD5,copySourceAuthorization:httpAuthorizationToString(i.sourceAuthorization),tier:toAccessTier(i.tier),blobTagsString:toBlobTagsString(i.tags),immutabilityPolicyExpiry:(A=i.immutabilityPolicy)===null||A===void 0?void 0:A.expiriesOn,immutabilityPolicyMode:(u=i.immutabilityPolicy)===null||u===void 0?void 0:u.policyMode,legalHold:i.legalHold,encryptionScope:i.encryptionScope,copySourceTags:i.copySourceTags,tracingOptions:s.tracingOptions}))}))}async setAccessTier(r,i={}){return Wo.withSpan("BlobClient-setAccessTier",i,(async s=>{var a;return assertResponse(await this.blobContext.setTier(toAccessTier(r),{abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),rehydratePriority:i.rehydratePriority,tracingOptions:s.tracingOptions}))}))}async downloadToBuffer(r,i,s,a={}){var l;let c;let d=0;let p=0;let A=a;if(r instanceof Buffer){c=r;d=i||0;p=typeof s==="number"?s:0}else{d=typeof r==="number"?r:0;p=typeof i==="number"?i:0;A=s||{}}let u=(l=A.blockSize)!==null&&l!==void 0?l:0;if(u<0){throw new RangeError("blockSize option must be >= 0")}if(u===0){u=F}if(d<0){throw new RangeError("offset option must be >= 0")}if(p&&p<=0){throw new RangeError("count option must be greater than 0")}if(!A.conditions){A.conditions={}}return Wo.withSpan("BlobClient-downloadToBuffer",A,(async r=>{if(!p){const i=await this.getProperties(Object.assign(Object.assign({},A),{tracingOptions:r.tracingOptions}));p=i.contentLength-d;if(p<0){throw new RangeError(`offset ${d} shouldn't be larger than blob size ${i.contentLength}`)}}if(!c){try{c=Buffer.alloc(p)}catch(r){throw new Error(`Unable to allocate the buffer of size: ${p}(in bytes). Please try passing your own buffer to the "downloadToBuffer" method or try using other methods like "download" or "downloadToFile".\t ${r.message}`)}}if(c.length{let s=d+p;if(a+u{const c=await this.download(i,s,Object.assign(Object.assign({},a),{tracingOptions:l.tracingOptions}));if(c.readableStreamBody){await readStreamToLocalFile(c.readableStreamBody,r)}c.blobDownloadStream=undefined;return c}))}getBlobAndContainerNamesFromUrl(){let r;let i;try{const s=new URL(this.url);if(s.host.split(".")[1]==="blob"){const a=s.pathname.match("/([^/]*)(/(.*))?");r=a[1];i=a[3]}else if(isIpEndpointStyle(s)){const a=s.pathname.match("/([^/]*)/([^/]*)(/(.*))?");r=a[2];i=a[4]}else{const a=s.pathname.match("/([^/]*)(/(.*))?");r=a[1];i=a[3]}r=decodeURIComponent(r);i=decodeURIComponent(i);i=i.replace(/\\/g,"/");if(!r){throw new Error("Provided containerName is invalid.")}return{blobName:i,containerName:r}}catch(r){throw new Error("Unable to extract blobName and containerName with provided information.")}}async startCopyFromURL(r,i={}){return Wo.withSpan("BlobClient-startCopyFromURL",i,(async s=>{var a,l,c;i.conditions=i.conditions||{};i.sourceConditions=i.sourceConditions||{};return assertResponse(await this.blobContext.startCopyFromURL(r,{abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,metadata:i.metadata,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),sourceModifiedAccessConditions:{sourceIfMatch:i.sourceConditions.ifMatch,sourceIfModifiedSince:i.sourceConditions.ifModifiedSince,sourceIfNoneMatch:i.sourceConditions.ifNoneMatch,sourceIfUnmodifiedSince:i.sourceConditions.ifUnmodifiedSince,sourceIfTags:i.sourceConditions.tagConditions},immutabilityPolicyExpiry:(l=i.immutabilityPolicy)===null||l===void 0?void 0:l.expiriesOn,immutabilityPolicyMode:(c=i.immutabilityPolicy)===null||c===void 0?void 0:c.policyMode,legalHold:i.legalHold,rehydratePriority:i.rehydratePriority,tier:toAccessTier(i.tier),blobTagsString:toBlobTagsString(i.tags),sealBlob:i.sealBlob,tracingOptions:s.tracingOptions}))}))}generateSasUrl(r){return new Promise((i=>{if(!(this.credential instanceof StorageSharedKeyCredential)){throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential")}const s=generateBlobSASQueryParameters(Object.assign({containerName:this._containerName,blobName:this._name,snapshotTime:this._snapshot,versionId:this._versionId},r),this.credential).toString();i(appendToURLQuery(this.url,s))}))}async deleteImmutabilityPolicy(r={}){return Wo.withSpan("BlobClient-deleteImmutabilityPolicy",r,(async r=>assertResponse(await this.blobContext.deleteImmutabilityPolicy({tracingOptions:r.tracingOptions}))))}async setImmutabilityPolicy(r,i={}){return Wo.withSpan("BlobClient-setImmutabilityPolicy",i,(async i=>assertResponse(await this.blobContext.setImmutabilityPolicy({immutabilityPolicyExpiry:r.expiriesOn,immutabilityPolicyMode:r.policyMode,tracingOptions:i.tracingOptions}))))}async setLegalHold(r,i={}){return Wo.withSpan("BlobClient-setLegalHold",i,(async i=>assertResponse(await this.blobContext.setLegalHold(r,{tracingOptions:i.tracingOptions}))))}async getAccountInfo(r={}){return Wo.withSpan("BlobClient-getAccountInfo",r,(async i=>assertResponse(await this.blobContext.getAccountInfo({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}}class AppendBlobClient extends BlobClient{constructor(r,i,s,l){let p;let A;l=l||{};if(isPipelineLike(i)){A=r;p=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){A=r;l=s;p=newPipeline(i,l)}else if(!i&&typeof i!=="string"){A=r;p=newPipeline(new AnonymousCredential,l)}else if(i&&typeof i==="string"&&s&&typeof s==="string"){const c=i;const u=s;const h=extractConnectionStringParts(r);if(h.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(h.accountName,h.accountKey);A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u));if(!l.proxyOptions){l.proxyOptions=a.getDefaultProxySettings(h.proxyUri)}p=newPipeline(r,l)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(h.kind==="SASConnString"){A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u))+"?"+h.accountSas;p=newPipeline(new AnonymousCredential,l)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}else{throw new Error("Expecting non-empty strings for containerName and blobName parameters")}super(A,p);this.appendBlobContext=this.storageClientContext.appendBlob}withSnapshot(r){return new AppendBlobClient(setURLParameter(this.url,q.Parameters.SNAPSHOT,r.length===0?undefined:r),this.pipeline)}async create(r={}){r.conditions=r.conditions||{};ensureCpkIfSpecified(r.customerProvidedKey,this.isHttps);return Wo.withSpan("AppendBlobClient-create",r,(async i=>{var s,a,l;return assertResponse(await this.appendBlobContext.create(0,{abortSignal:r.abortSignal,blobHttpHeaders:r.blobHTTPHeaders,leaseAccessConditions:r.conditions,metadata:r.metadata,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),cpkInfo:r.customerProvidedKey,encryptionScope:r.encryptionScope,immutabilityPolicyExpiry:(a=r.immutabilityPolicy)===null||a===void 0?void 0:a.expiriesOn,immutabilityPolicyMode:(l=r.immutabilityPolicy)===null||l===void 0?void 0:l.policyMode,legalHold:r.legalHold,blobTagsString:toBlobTagsString(r.tags),tracingOptions:i.tracingOptions}))}))}async createIfNotExists(r={}){const i={ifNoneMatch:V};return Wo.withSpan("AppendBlobClient-createIfNotExists",r,(async r=>{var s,a;try{const s=assertResponse(await this.create(Object.assign(Object.assign({},r),{conditions:i})));return Object.assign(Object.assign({succeeded:true},s),{_response:s._response})}catch(r){if(((s=r.details)===null||s===void 0?void 0:s.errorCode)==="BlobAlreadyExists"){return Object.assign(Object.assign({succeeded:false},(a=r.response)===null||a===void 0?void 0:a.parsedHeaders),{_response:r.response})}throw r}}))}async seal(r={}){r.conditions=r.conditions||{};return Wo.withSpan("AppendBlobClient-seal",r,(async i=>{var s;return assertResponse(await this.appendBlobContext.seal({abortSignal:r.abortSignal,appendPositionAccessConditions:r.conditions,leaseAccessConditions:r.conditions,modifiedAccessConditions:Object.assign(Object.assign({},r.conditions),{ifTags:(s=r.conditions)===null||s===void 0?void 0:s.tagConditions}),tracingOptions:i.tracingOptions}))}))}async appendBlock(r,i,s={}){s.conditions=s.conditions||{};ensureCpkIfSpecified(s.customerProvidedKey,this.isHttps);return Wo.withSpan("AppendBlobClient-appendBlock",s,(async a=>{var l;return assertResponse(await this.appendBlobContext.appendBlock(i,r,{abortSignal:s.abortSignal,appendPositionAccessConditions:s.conditions,leaseAccessConditions:s.conditions,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),requestOptions:{onUploadProgress:s.onProgress},transactionalContentMD5:s.transactionalContentMD5,transactionalContentCrc64:s.transactionalContentCrc64,cpkInfo:s.customerProvidedKey,encryptionScope:s.encryptionScope,tracingOptions:a.tracingOptions}))}))}async appendBlockFromURL(r,i,s,a={}){a.conditions=a.conditions||{};a.sourceConditions=a.sourceConditions||{};ensureCpkIfSpecified(a.customerProvidedKey,this.isHttps);return Wo.withSpan("AppendBlobClient-appendBlockFromURL",a,(async l=>{var c,d,p,A,u;return assertResponse(await this.appendBlobContext.appendBlockFromUrl(r,0,{abortSignal:a.abortSignal,sourceRange:rangeToString({offset:i,count:s}),sourceContentMD5:a.sourceContentMD5,sourceContentCrc64:a.sourceContentCrc64,leaseAccessConditions:a.conditions,appendPositionAccessConditions:a.conditions,modifiedAccessConditions:Object.assign(Object.assign({},a.conditions),{ifTags:(c=a.conditions)===null||c===void 0?void 0:c.tagConditions}),sourceModifiedAccessConditions:{sourceIfMatch:(d=a.sourceConditions)===null||d===void 0?void 0:d.ifMatch,sourceIfModifiedSince:(p=a.sourceConditions)===null||p===void 0?void 0:p.ifModifiedSince,sourceIfNoneMatch:(A=a.sourceConditions)===null||A===void 0?void 0:A.ifNoneMatch,sourceIfUnmodifiedSince:(u=a.sourceConditions)===null||u===void 0?void 0:u.ifUnmodifiedSince},copySourceAuthorization:httpAuthorizationToString(a.sourceAuthorization),cpkInfo:a.customerProvidedKey,encryptionScope:a.encryptionScope,tracingOptions:l.tracingOptions}))}))}}class BlockBlobClient extends BlobClient{constructor(r,i,s,l){let p;let A;l=l||{};if(isPipelineLike(i)){A=r;p=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){A=r;l=s;p=newPipeline(i,l)}else if(!i&&typeof i!=="string"){A=r;if(s&&typeof s!=="string"){l=s}p=newPipeline(new AnonymousCredential,l)}else if(i&&typeof i==="string"&&s&&typeof s==="string"){const c=i;const u=s;const h=extractConnectionStringParts(r);if(h.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(h.accountName,h.accountKey);A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u));if(!l.proxyOptions){l.proxyOptions=a.getDefaultProxySettings(h.proxyUri)}p=newPipeline(r,l)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(h.kind==="SASConnString"){A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u))+"?"+h.accountSas;p=newPipeline(new AnonymousCredential,l)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}else{throw new Error("Expecting non-empty strings for containerName and blobName parameters")}super(A,p);this.blockBlobContext=this.storageClientContext.blockBlob;this._blobContext=this.storageClientContext.blob}withSnapshot(r){return new BlockBlobClient(setURLParameter(this.url,q.Parameters.SNAPSHOT,r.length===0?undefined:r),this.pipeline)}async query(r,i={}){ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);if(!d.isNode){throw new Error("This operation currently is only supported in Node.js.")}return Wo.withSpan("BlockBlobClient-query",i,(async s=>{var a;const l=assertResponse(await this._blobContext.query({abortSignal:i.abortSignal,queryRequest:{queryType:"SQL",expression:r,inputSerialization:toQuerySerialization(i.inputTextConfiguration),outputSerialization:toQuerySerialization(i.outputTextConfiguration)},leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),cpkInfo:i.customerProvidedKey,tracingOptions:s.tracingOptions}));return new BlobQueryResponse(l,{abortSignal:i.abortSignal,onProgress:i.onProgress,onError:i.onError})}))}async upload(r,i,s={}){s.conditions=s.conditions||{};ensureCpkIfSpecified(s.customerProvidedKey,this.isHttps);return Wo.withSpan("BlockBlobClient-upload",s,(async a=>{var l,c,d;return assertResponse(await this.blockBlobContext.upload(i,r,{abortSignal:s.abortSignal,blobHttpHeaders:s.blobHTTPHeaders,leaseAccessConditions:s.conditions,metadata:s.metadata,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),requestOptions:{onUploadProgress:s.onProgress},cpkInfo:s.customerProvidedKey,encryptionScope:s.encryptionScope,immutabilityPolicyExpiry:(c=s.immutabilityPolicy)===null||c===void 0?void 0:c.expiriesOn,immutabilityPolicyMode:(d=s.immutabilityPolicy)===null||d===void 0?void 0:d.policyMode,legalHold:s.legalHold,tier:toAccessTier(s.tier),blobTagsString:toBlobTagsString(s.tags),tracingOptions:a.tracingOptions}))}))}async syncUploadFromURL(r,i={}){i.conditions=i.conditions||{};ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);return Wo.withSpan("BlockBlobClient-syncUploadFromURL",i,(async s=>{var a,l,c,d,p,A;return assertResponse(await this.blockBlobContext.putBlobFromUrl(0,r,Object.assign(Object.assign({},i),{blobHttpHeaders:i.blobHTTPHeaders,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),sourceModifiedAccessConditions:{sourceIfMatch:(l=i.sourceConditions)===null||l===void 0?void 0:l.ifMatch,sourceIfModifiedSince:(c=i.sourceConditions)===null||c===void 0?void 0:c.ifModifiedSince,sourceIfNoneMatch:(d=i.sourceConditions)===null||d===void 0?void 0:d.ifNoneMatch,sourceIfUnmodifiedSince:(p=i.sourceConditions)===null||p===void 0?void 0:p.ifUnmodifiedSince,sourceIfTags:(A=i.sourceConditions)===null||A===void 0?void 0:A.tagConditions},cpkInfo:i.customerProvidedKey,copySourceAuthorization:httpAuthorizationToString(i.sourceAuthorization),tier:toAccessTier(i.tier),blobTagsString:toBlobTagsString(i.tags),copySourceTags:i.copySourceTags,tracingOptions:s.tracingOptions})))}))}async stageBlock(r,i,s,a={}){ensureCpkIfSpecified(a.customerProvidedKey,this.isHttps);return Wo.withSpan("BlockBlobClient-stageBlock",a,(async l=>assertResponse(await this.blockBlobContext.stageBlock(r,s,i,{abortSignal:a.abortSignal,leaseAccessConditions:a.conditions,requestOptions:{onUploadProgress:a.onProgress},transactionalContentMD5:a.transactionalContentMD5,transactionalContentCrc64:a.transactionalContentCrc64,cpkInfo:a.customerProvidedKey,encryptionScope:a.encryptionScope,tracingOptions:l.tracingOptions}))))}async stageBlockFromURL(r,i,s=0,a,l={}){ensureCpkIfSpecified(l.customerProvidedKey,this.isHttps);return Wo.withSpan("BlockBlobClient-stageBlockFromURL",l,(async c=>assertResponse(await this.blockBlobContext.stageBlockFromURL(r,0,i,{abortSignal:l.abortSignal,leaseAccessConditions:l.conditions,sourceContentMD5:l.sourceContentMD5,sourceContentCrc64:l.sourceContentCrc64,sourceRange:s===0&&!a?undefined:rangeToString({offset:s,count:a}),cpkInfo:l.customerProvidedKey,encryptionScope:l.encryptionScope,copySourceAuthorization:httpAuthorizationToString(l.sourceAuthorization),tracingOptions:c.tracingOptions}))))}async commitBlockList(r,i={}){i.conditions=i.conditions||{};ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);return Wo.withSpan("BlockBlobClient-commitBlockList",i,(async s=>{var a,l,c;return assertResponse(await this.blockBlobContext.commitBlockList({latest:r},{abortSignal:i.abortSignal,blobHttpHeaders:i.blobHTTPHeaders,leaseAccessConditions:i.conditions,metadata:i.metadata,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),cpkInfo:i.customerProvidedKey,encryptionScope:i.encryptionScope,immutabilityPolicyExpiry:(l=i.immutabilityPolicy)===null||l===void 0?void 0:l.expiriesOn,immutabilityPolicyMode:(c=i.immutabilityPolicy)===null||c===void 0?void 0:c.policyMode,legalHold:i.legalHold,tier:toAccessTier(i.tier),blobTagsString:toBlobTagsString(i.tags),tracingOptions:s.tracingOptions}))}))}async getBlockList(r,i={}){return Wo.withSpan("BlockBlobClient-getBlockList",i,(async s=>{var a;const l=assertResponse(await this.blockBlobContext.getBlockList(r,{abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions}));if(!l.committedBlocks){l.committedBlocks=[]}if(!l.uncommittedBlocks){l.uncommittedBlocks=[]}return l}))}async uploadData(r,i={}){return Wo.withSpan("BlockBlobClient-uploadData",i,(async i=>{if(d.isNode){let s;if(r instanceof Buffer){s=r}else if(r instanceof ArrayBuffer){s=Buffer.from(r)}else{r=r;s=Buffer.from(r.buffer,r.byteOffset,r.byteLength)}return this.uploadSeekableInternal(((r,i)=>s.slice(r,r+i)),s.byteLength,i)}else{const s=new Blob([r]);return this.uploadSeekableInternal(((r,i)=>s.slice(r,r+i)),s.size,i)}}))}async uploadBrowserData(r,i={}){return Wo.withSpan("BlockBlobClient-uploadBrowserData",i,(async i=>{const s=new Blob([r]);return this.uploadSeekableInternal(((r,i)=>s.slice(r,r+i)),s.size,i)}))}async uploadSeekableInternal(r,i,s={}){var a,l;let c=(a=s.blockSize)!==null&&a!==void 0?a:0;if(c<0||c>P){throw new RangeError(`blockSize option must be >= 0 and <= ${P}`)}const p=(l=s.maxSingleShotSize)!==null&&l!==void 0?l:D;if(p<0||p>D){throw new RangeError(`maxSingleShotSize option must be >= 0 and <= ${D}`)}if(c===0){if(i>P*O){throw new RangeError(`${i} is too larger to upload to a block blob.`)}if(i>p){c=Math.ceil(i/O);if(c{if(i<=p){return assertResponse(await this.upload(r(0,i),i,a))}const l=Math.floor((i-1)/c)+1;if(l>O){throw new RangeError(`The buffer's size is too big or the BlockSize is too small;`+`the number of blocks must be <= ${O}`)}const A=[];const u=d.randomUUID();let h=0;const g=new Batch(s.concurrency);for(let d=0;d{const p=generateBlockID(u,d);const g=c*d;const y=d===l-1?i:g+c;const b=y-g;A.push(p);await this.stageBlock(p,r(g,b),b,{abortSignal:s.abortSignal,conditions:s.conditions,encryptionScope:s.encryptionScope,tracingOptions:a.tracingOptions});h+=b;if(s.onProgress){s.onProgress({loadedBytes:h})}}))}await g.do();return this.commitBlockList(A,a)}))}async uploadFile(r,i={}){return Wo.withSpan("BlockBlobClient-uploadFile",i,(async s=>{const a=(await al(r)).size;return this.uploadSeekableInternal(((i,s)=>()=>ol(r,{autoClose:true,end:s?i+s-1:Infinity,start:i})),a,Object.assign(Object.assign({},i),{tracingOptions:s.tracingOptions}))}))}async uploadStream(r,i=L,s=5,a={}){if(!a.blobHTTPHeaders){a.blobHTTPHeaders={}}if(!a.conditions){a.conditions={}}return Wo.withSpan("BlockBlobClient-uploadStream",a,(async l=>{let c=0;const p=d.randomUUID();let A=0;const u=[];const h=new BufferScheduler(r,i,s,(async(r,i)=>{const s=generateBlockID(p,c);u.push(s);c++;await this.stageBlock(s,r,i,{conditions:a.conditions,encryptionScope:a.encryptionScope,tracingOptions:l.tracingOptions});A+=i;if(a.onProgress){a.onProgress({loadedBytes:A})}}),Math.ceil(s/4*3));await h.do();return assertResponse(await this.commitBlockList(u,Object.assign(Object.assign({},a),{tracingOptions:l.tracingOptions})))}))}}class PageBlobClient extends BlobClient{constructor(r,i,s,l){let p;let A;l=l||{};if(isPipelineLike(i)){A=r;p=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){A=r;l=s;p=newPipeline(i,l)}else if(!i&&typeof i!=="string"){A=r;p=newPipeline(new AnonymousCredential,l)}else if(i&&typeof i==="string"&&s&&typeof s==="string"){const c=i;const u=s;const h=extractConnectionStringParts(r);if(h.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(h.accountName,h.accountKey);A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u));if(!l.proxyOptions){l.proxyOptions=a.getDefaultProxySettings(h.proxyUri)}p=newPipeline(r,l)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(h.kind==="SASConnString"){A=appendToURLPath(appendToURLPath(h.url,encodeURIComponent(c)),encodeURIComponent(u))+"?"+h.accountSas;p=newPipeline(new AnonymousCredential,l)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}else{throw new Error("Expecting non-empty strings for containerName and blobName parameters")}super(A,p);this.pageBlobContext=this.storageClientContext.pageBlob}withSnapshot(r){return new PageBlobClient(setURLParameter(this.url,q.Parameters.SNAPSHOT,r.length===0?undefined:r),this.pipeline)}async create(r,i={}){i.conditions=i.conditions||{};ensureCpkIfSpecified(i.customerProvidedKey,this.isHttps);return Wo.withSpan("PageBlobClient-create",i,(async s=>{var a,l,c;return assertResponse(await this.pageBlobContext.create(0,r,{abortSignal:i.abortSignal,blobHttpHeaders:i.blobHTTPHeaders,blobSequenceNumber:i.blobSequenceNumber,leaseAccessConditions:i.conditions,metadata:i.metadata,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),cpkInfo:i.customerProvidedKey,encryptionScope:i.encryptionScope,immutabilityPolicyExpiry:(l=i.immutabilityPolicy)===null||l===void 0?void 0:l.expiriesOn,immutabilityPolicyMode:(c=i.immutabilityPolicy)===null||c===void 0?void 0:c.policyMode,legalHold:i.legalHold,tier:toAccessTier(i.tier),blobTagsString:toBlobTagsString(i.tags),tracingOptions:s.tracingOptions}))}))}async createIfNotExists(r,i={}){return Wo.withSpan("PageBlobClient-createIfNotExists",i,(async s=>{var a,l;try{const a={ifNoneMatch:V};const l=assertResponse(await this.create(r,Object.assign(Object.assign({},i),{conditions:a,tracingOptions:s.tracingOptions})));return Object.assign(Object.assign({succeeded:true},l),{_response:l._response})}catch(r){if(((a=r.details)===null||a===void 0?void 0:a.errorCode)==="BlobAlreadyExists"){return Object.assign(Object.assign({succeeded:false},(l=r.response)===null||l===void 0?void 0:l.parsedHeaders),{_response:r.response})}throw r}}))}async uploadPages(r,i,s,a={}){a.conditions=a.conditions||{};ensureCpkIfSpecified(a.customerProvidedKey,this.isHttps);return Wo.withSpan("PageBlobClient-uploadPages",a,(async l=>{var c;return assertResponse(await this.pageBlobContext.uploadPages(s,r,{abortSignal:a.abortSignal,leaseAccessConditions:a.conditions,modifiedAccessConditions:Object.assign(Object.assign({},a.conditions),{ifTags:(c=a.conditions)===null||c===void 0?void 0:c.tagConditions}),requestOptions:{onUploadProgress:a.onProgress},range:rangeToString({offset:i,count:s}),sequenceNumberAccessConditions:a.conditions,transactionalContentMD5:a.transactionalContentMD5,transactionalContentCrc64:a.transactionalContentCrc64,cpkInfo:a.customerProvidedKey,encryptionScope:a.encryptionScope,tracingOptions:l.tracingOptions}))}))}async uploadPagesFromURL(r,i,s,a,l={}){l.conditions=l.conditions||{};l.sourceConditions=l.sourceConditions||{};ensureCpkIfSpecified(l.customerProvidedKey,this.isHttps);return Wo.withSpan("PageBlobClient-uploadPagesFromURL",l,(async c=>{var d,p,A,u,h;return assertResponse(await this.pageBlobContext.uploadPagesFromURL(r,rangeToString({offset:i,count:a}),0,rangeToString({offset:s,count:a}),{abortSignal:l.abortSignal,sourceContentMD5:l.sourceContentMD5,sourceContentCrc64:l.sourceContentCrc64,leaseAccessConditions:l.conditions,sequenceNumberAccessConditions:l.conditions,modifiedAccessConditions:Object.assign(Object.assign({},l.conditions),{ifTags:(d=l.conditions)===null||d===void 0?void 0:d.tagConditions}),sourceModifiedAccessConditions:{sourceIfMatch:(p=l.sourceConditions)===null||p===void 0?void 0:p.ifMatch,sourceIfModifiedSince:(A=l.sourceConditions)===null||A===void 0?void 0:A.ifModifiedSince,sourceIfNoneMatch:(u=l.sourceConditions)===null||u===void 0?void 0:u.ifNoneMatch,sourceIfUnmodifiedSince:(h=l.sourceConditions)===null||h===void 0?void 0:h.ifUnmodifiedSince},cpkInfo:l.customerProvidedKey,encryptionScope:l.encryptionScope,copySourceAuthorization:httpAuthorizationToString(l.sourceAuthorization),tracingOptions:c.tracingOptions}))}))}async clearPages(r=0,i,s={}){s.conditions=s.conditions||{};return Wo.withSpan("PageBlobClient-clearPages",s,(async a=>{var l;return assertResponse(await this.pageBlobContext.clearPages(0,{abortSignal:s.abortSignal,leaseAccessConditions:s.conditions,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),range:rangeToString({offset:r,count:i}),sequenceNumberAccessConditions:s.conditions,cpkInfo:s.customerProvidedKey,encryptionScope:s.encryptionScope,tracingOptions:a.tracingOptions}))}))}async getPageRanges(r=0,i,s={}){s.conditions=s.conditions||{};return Wo.withSpan("PageBlobClient-getPageRanges",s,(async a=>{var l;const c=assertResponse(await this.pageBlobContext.getPageRanges({abortSignal:s.abortSignal,leaseAccessConditions:s.conditions,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),range:rangeToString({offset:r,count:i}),tracingOptions:a.tracingOptions}));return rangeResponseFromModel(c)}))}async listPageRangesSegment(r=0,i,s,a={}){return Wo.withSpan("PageBlobClient-getPageRangesSegment",a,(async l=>{var c;return assertResponse(await this.pageBlobContext.getPageRanges({abortSignal:a.abortSignal,leaseAccessConditions:a.conditions,modifiedAccessConditions:Object.assign(Object.assign({},a.conditions),{ifTags:(c=a.conditions)===null||c===void 0?void 0:c.tagConditions}),range:rangeToString({offset:r,count:i}),marker:s,maxPageSize:a.maxPageSize,tracingOptions:l.tracingOptions}))}))}listPageRangeItemSegments(){return l.__asyncGenerator(this,arguments,(function*listPageRangeItemSegments_1(r=0,i,s,a={}){let c;if(!!s||s===undefined){do{c=yield l.__await(this.listPageRangesSegment(r,i,s,a));s=c.continuationToken;yield yield l.__await(yield l.__await(c))}while(s)}}))}listPageRangeItems(){return l.__asyncGenerator(this,arguments,(function*listPageRangeItems_1(r=0,i,s={}){var a,c,d,p;let A;try{for(var u=true,h=l.__asyncValues(this.listPageRangeItemSegments(r,i,A,s)),g;g=yield l.__await(h.next()),a=g.done,!a;u=true){p=g.value;u=false;const r=p;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(ExtractPageRangeInfoItems(r))))}}catch(r){c={error:r}}finally{try{if(!u&&!a&&(d=h.return))yield l.__await(d.call(h))}finally{if(c)throw c.error}}}))}listPageRanges(r=0,i,s={}){s.conditions=s.conditions||{};const a=this.listPageRangeItems(r,i,s);return{next(){return a.next()},[Symbol.asyncIterator](){return this},byPage:(a={})=>this.listPageRangeItemSegments(r,i,a.continuationToken,Object.assign({maxPageSize:a.maxPageSize},s))}}async getPageRangesDiff(r,i,s,a={}){a.conditions=a.conditions||{};return Wo.withSpan("PageBlobClient-getPageRangesDiff",a,(async l=>{var c;const d=assertResponse(await this.pageBlobContext.getPageRangesDiff({abortSignal:a.abortSignal,leaseAccessConditions:a.conditions,modifiedAccessConditions:Object.assign(Object.assign({},a.conditions),{ifTags:(c=a.conditions)===null||c===void 0?void 0:c.tagConditions}),prevsnapshot:s,range:rangeToString({offset:r,count:i}),tracingOptions:l.tracingOptions}));return rangeResponseFromModel(d)}))}async listPageRangesDiffSegment(r,i,s,a,l={}){return Wo.withSpan("PageBlobClient-getPageRangesDiffSegment",l,(async c=>{var d;return assertResponse(await this.pageBlobContext.getPageRangesDiff({abortSignal:l===null||l===void 0?void 0:l.abortSignal,leaseAccessConditions:l===null||l===void 0?void 0:l.conditions,modifiedAccessConditions:Object.assign(Object.assign({},l===null||l===void 0?void 0:l.conditions),{ifTags:(d=l===null||l===void 0?void 0:l.conditions)===null||d===void 0?void 0:d.tagConditions}),prevsnapshot:s,range:rangeToString({offset:r,count:i}),marker:a,maxPageSize:l===null||l===void 0?void 0:l.maxPageSize,tracingOptions:c.tracingOptions}))}))}listPageRangeDiffItemSegments(r,i,s,a,c){return l.__asyncGenerator(this,arguments,(function*listPageRangeDiffItemSegments_1(){let d;if(!!a||a===undefined){do{d=yield l.__await(this.listPageRangesDiffSegment(r,i,s,a,c));a=d.continuationToken;yield yield l.__await(yield l.__await(d))}while(a)}}))}listPageRangeDiffItems(r,i,s,a){return l.__asyncGenerator(this,arguments,(function*listPageRangeDiffItems_1(){var c,d,p,A;let u;try{for(var h=true,g=l.__asyncValues(this.listPageRangeDiffItemSegments(r,i,s,u,a)),y;y=yield l.__await(g.next()),c=y.done,!c;h=true){A=y.value;h=false;const r=A;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(ExtractPageRangeInfoItems(r))))}}catch(r){d={error:r}}finally{try{if(!h&&!c&&(p=g.return))yield l.__await(p.call(g))}finally{if(d)throw d.error}}}))}listPageRangesDiff(r,i,s,a={}){a.conditions=a.conditions||{};const l=this.listPageRangeDiffItems(r,i,s,Object.assign({},a));return{next(){return l.next()},[Symbol.asyncIterator](){return this},byPage:(l={})=>this.listPageRangeDiffItemSegments(r,i,s,l.continuationToken,Object.assign({maxPageSize:l.maxPageSize},a))}}async getPageRangesDiffForManagedDisks(r,i,s,a={}){a.conditions=a.conditions||{};return Wo.withSpan("PageBlobClient-GetPageRangesDiffForManagedDisks",a,(async l=>{var c;const d=assertResponse(await this.pageBlobContext.getPageRangesDiff({abortSignal:a.abortSignal,leaseAccessConditions:a.conditions,modifiedAccessConditions:Object.assign(Object.assign({},a.conditions),{ifTags:(c=a.conditions)===null||c===void 0?void 0:c.tagConditions}),prevSnapshotUrl:s,range:rangeToString({offset:r,count:i}),tracingOptions:l.tracingOptions}));return rangeResponseFromModel(d)}))}async resize(r,i={}){i.conditions=i.conditions||{};return Wo.withSpan("PageBlobClient-resize",i,(async s=>{var a;return assertResponse(await this.pageBlobContext.resize(r,{abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),encryptionScope:i.encryptionScope,tracingOptions:s.tracingOptions}))}))}async updateSequenceNumber(r,i,s={}){s.conditions=s.conditions||{};return Wo.withSpan("PageBlobClient-updateSequenceNumber",s,(async a=>{var l;return assertResponse(await this.pageBlobContext.updateSequenceNumber(r,{abortSignal:s.abortSignal,blobSequenceNumber:i,leaseAccessConditions:s.conditions,modifiedAccessConditions:Object.assign(Object.assign({},s.conditions),{ifTags:(l=s.conditions)===null||l===void 0?void 0:l.tagConditions}),tracingOptions:a.tracingOptions}))}))}async startCopyIncremental(r,i={}){return Wo.withSpan("PageBlobClient-startCopyIncremental",i,(async s=>{var a;return assertResponse(await this.pageBlobContext.copyIncremental(r,{abortSignal:i.abortSignal,modifiedAccessConditions:Object.assign(Object.assign({},i.conditions),{ifTags:(a=i.conditions)===null||a===void 0?void 0:a.tagConditions}),tracingOptions:s.tracingOptions}))}))}}async function getBodyAsText(r){let i=Buffer.alloc(J);const s=await streamToBuffer2(r.readableStreamBody,i);i=i.slice(0,s);return i.toString()}function utf8ByteLength(r){return Buffer.byteLength(r)}const ll=": ";const cl=" ";const dl=-1;class BatchResponseParser{constructor(r,i){if(!r||!r.contentType){throw new RangeError("batchResponse is malformed or doesn't contain valid content-type.")}if(!i||i.size===0){throw new RangeError("Invalid state: subRequests is not provided or size is 0.")}this.batchResponse=r;this.subRequests=i;this.responseBatchBoundary=this.batchResponse.contentType.split("=")[1];this.perResponsePrefix=`--${this.responseBatchBoundary}${$}`;this.batchResponseEnding=`--${this.responseBatchBoundary}--`}async parseBatchResponse(){if(this.batchResponse._response.status!==G.HTTP_ACCEPTED){throw new Error(`Invalid state: batch request failed with status: '${this.batchResponse._response.status}'.`)}const r=await getBodyAsText(this.batchResponse);const i=r.split(this.batchResponseEnding)[0].split(this.perResponsePrefix).slice(1);const s=i.length;if(s!==this.subRequests.size&&s!==1){throw new Error("Invalid state: sub responses' count is not equal to sub requests' count.")}const l=new Array(s);let c=0;let d=0;for(let r=0;r=0&&b{if(this.keys[r]===undefined||this.keys[r]===pl.UNLOCKED){this.keys[r]=pl.LOCKED;i()}else{this.onUnlockEvent(r,(()=>{this.keys[r]=pl.LOCKED;i()}))}}))}static async unlock(r){return new Promise((i=>{if(this.keys[r]===pl.LOCKED){this.emitUnlockEvent(r)}delete this.keys[r];i()}))}static onUnlockEvent(r,i){if(this.listeners[r]===undefined){this.listeners[r]=[i]}else{this.listeners[r].push(i)}}static emitUnlockEvent(r){if(this.listeners[r]!==undefined&&this.listeners[r].length>0){const i=this.listeners[r].shift();setImmediate((()=>{i.call(this)}))}}}Mutex.keys={};Mutex.listeners={};class BlobBatch{constructor(){this.batch="batch";this.batchRequest=new InnerBatchRequest}getMultiPartContentType(){return this.batchRequest.getMultipartContentType()}getHttpRequestBody(){return this.batchRequest.getHttpRequestBody()}getSubRequests(){return this.batchRequest.getSubRequests()}async addSubRequestInternal(r,i){await Mutex.lock(this.batch);try{this.batchRequest.preAddSubRequest(r);await i();this.batchRequest.postAddSubRequest(r)}finally{await Mutex.unlock(this.batch)}}setBatchType(r){if(!this.batchType){this.batchType=r}if(this.batchType!==r){throw new RangeError(`BlobBatch only supports one operation type per batch and it already is being used for ${this.batchType} operations.`)}}async deleteBlob(r,i,s){let a;let l;if(typeof r==="string"&&(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i))){a=r;l=i}else if(r instanceof BlobClient){a=r.url;l=r.credential;s=i}else{throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.")}if(!s){s={}}return Wo.withSpan("BatchDeleteRequest-addSubRequest",s,(async r=>{this.setBatchType("delete");await this.addSubRequestInternal({url:a,credential:l},(async()=>{await new BlobClient(a,this.batchRequest.createPipeline(l)).delete(r)}))}))}async setBlobAccessTier(r,i,s,a){let l;let p;let A;if(typeof r==="string"&&(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i))){l=r;p=i;A=s}else if(r instanceof BlobClient){l=r.url;p=r.credential;A=i;a=s}else{throw new RangeError("Invalid arguments. Either url and credential, or BlobClient need be provided.")}if(!a){a={}}return Wo.withSpan("BatchSetTierRequest-addSubRequest",a,(async r=>{this.setBatchType("setAccessTier");await this.addSubRequestInternal({url:l,credential:p},(async()=>{await new BlobClient(l,this.batchRequest.createPipeline(p)).setAccessTier(A,r)}))}))}}class InnerBatchRequest{constructor(){this.operationCount=0;this.body="";const r=d.randomUUID();this.boundary=`batch_${r}`;this.subRequestPrefix=`--${this.boundary}${$}${j.CONTENT_TYPE}: application/http${$}${j.CONTENT_TRANSFER_ENCODING}: binary`;this.multipartContentType=`multipart/mixed; boundary=${this.boundary}`;this.batchRequestEnding=`--${this.boundary}--`;this.subRequests=new Map}createPipeline(r){const i=a.createEmptyPipeline();i.addPolicy(A.serializationPolicy({stringifyXML:u.stringifyXML,serializerOptions:{xml:{xmlCharKey:"#"}}}),{phase:"Serialize"});i.addPolicy(batchHeaderFilterPolicy());i.addPolicy(batchRequestAssemblePolicy(this),{afterPhase:"Sign"});if(c.isTokenCredential(r)){i.addPolicy(a.bearerTokenAuthenticationPolicy({credential:r,scopes:H,challengeCallbacks:{authorizeRequestOnChallenge:A.authorizeRequestOnTenantChallenge}}),{phase:"Sign"})}else if(r instanceof StorageSharedKeyCredential){i.addPolicy(storageSharedKeyCredentialPolicy({accountName:r.accountName,accountKey:r.accountKey}),{phase:"Sign"})}const s=new Pipeline([]);s._credential=r;s._corePipeline=i;return s}appendSubRequestToBody(r){this.body+=[this.subRequestPrefix,`${j.CONTENT_ID}: ${this.operationCount}`,"",`${r.method.toString()} ${getURLPathAndQuery(r.url)} ${K}${$}`].join($);for(const[i,s]of r.headers){this.body+=`${i}: ${s}${$}`}this.body+=$}preAddSubRequest(r){if(this.operationCount>=Y){throw new RangeError(`Cannot exceed ${Y} sub requests in a single batch`)}const i=getURLPath(r.url);if(!i||i===""){throw new RangeError(`Invalid url for sub request: '${r.url}'`)}}postAddSubRequest(r){this.subRequests.set(this.operationCount,r);this.operationCount++}getHttpRequestBody(){return`${this.body}${this.batchRequestEnding}${$}`}getMultipartContentType(){return this.multipartContentType}getSubRequests(){return this.subRequests}}function batchRequestAssemblePolicy(r){return{name:"batchRequestAssemblePolicy",async sendRequest(i){r.appendSubRequestToBody(i);return{request:i,status:200,headers:a.createHttpHeaders()}}}}function batchHeaderFilterPolicy(){return{name:"batchHeaderFilterPolicy",async sendRequest(r,i){let s="";for(const[i]of r.headers){if(iEqual(i,j.X_MS_VERSION)){s=i}}if(s!==""){r.headers.delete(s)}return i(r)}}}class BlobBatchClient{constructor(r,i,s){let a;if(isPipelineLike(i)){a=i}else if(!i){a=newPipeline(new AnonymousCredential,s)}else{a=newPipeline(i,s)}const l=new StorageContextClient(r,getCoreClientOptions(a));const c=getURLPath(r);if(c&&c!=="/"){this.serviceOrContainerContext=l.container}else{this.serviceOrContainerContext=l.service}}createBatch(){return new BlobBatch}async deleteBlobs(r,i,s){const a=new BlobBatch;for(const l of r){if(typeof l==="string"){await a.deleteBlob(l,i,s)}else{await a.deleteBlob(l,i)}}return this.submitBatch(a)}async setBlobsAccessTier(r,i,s,a){const l=new BlobBatch;for(const c of r){if(typeof c==="string"){await l.setBlobAccessTier(c,i,s,a)}else{await l.setBlobAccessTier(c,i,s)}}return this.submitBatch(l)}async submitBatch(r,i={}){if(!r||r.getSubRequests().size===0){throw new RangeError("Batch request should contain one or more sub requests.")}return Wo.withSpan("BlobBatchClient-submitBatch",i,(async i=>{const s=r.getHttpRequestBody();const a=assertResponse(await this.serviceOrContainerContext.submitBatch(utf8ByteLength(s),r.getMultiPartContentType(),s,Object.assign({},i)));const l=new BatchResponseParser(a,r.getSubRequests());const c=await l.parseBatchResponse();const d={_response:a._response,contentType:a.contentType,errorCode:a.errorCode,requestId:a.requestId,clientRequestId:a.clientRequestId,version:a.version,subResponses:c.subResponses,subResponsesSucceededCount:c.subResponsesSucceededCount,subResponsesFailedCount:c.subResponsesFailedCount};return d}))}}class ContainerClient extends StorageClient{get containerName(){return this._containerName}constructor(r,i,s){let l;let p;s=s||{};if(isPipelineLike(i)){p=r;l=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){p=r;l=newPipeline(i,s)}else if(!i&&typeof i!=="string"){p=r;l=newPipeline(new AnonymousCredential,s)}else if(i&&typeof i==="string"){const c=i;const A=extractConnectionStringParts(r);if(A.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(A.accountName,A.accountKey);p=appendToURLPath(A.url,encodeURIComponent(c));if(!s.proxyOptions){s.proxyOptions=a.getDefaultProxySettings(A.proxyUri)}l=newPipeline(r,s)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(A.kind==="SASConnString"){p=appendToURLPath(A.url,encodeURIComponent(c))+"?"+A.accountSas;l=newPipeline(new AnonymousCredential,s)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}else{throw new Error("Expecting non-empty strings for containerName parameter")}super(p,l);this._containerName=this.getContainerNameFromUrl();this.containerContext=this.storageClientContext.container}async create(r={}){return Wo.withSpan("ContainerClient-create",r,(async r=>assertResponse(await this.containerContext.create(r))))}async createIfNotExists(r={}){return Wo.withSpan("ContainerClient-createIfNotExists",r,(async r=>{var i,s;try{const i=await this.create(r);return Object.assign(Object.assign({succeeded:true},i),{_response:i._response})}catch(r){if(((i=r.details)===null||i===void 0?void 0:i.errorCode)==="ContainerAlreadyExists"){return Object.assign(Object.assign({succeeded:false},(s=r.response)===null||s===void 0?void 0:s.parsedHeaders),{_response:r.response})}else{throw r}}}))}async exists(r={}){return Wo.withSpan("ContainerClient-exists",r,(async i=>{try{await this.getProperties({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions});return true}catch(r){if(r.statusCode===404){return false}throw r}}))}getBlobClient(r){return new BlobClient(appendToURLPath(this.url,EscapePath(r)),this.pipeline)}getAppendBlobClient(r){return new AppendBlobClient(appendToURLPath(this.url,EscapePath(r)),this.pipeline)}getBlockBlobClient(r){return new BlockBlobClient(appendToURLPath(this.url,EscapePath(r)),this.pipeline)}getPageBlobClient(r){return new PageBlobClient(appendToURLPath(this.url,EscapePath(r)),this.pipeline)}async getProperties(r={}){if(!r.conditions){r.conditions={}}return Wo.withSpan("ContainerClient-getProperties",r,(async i=>assertResponse(await this.containerContext.getProperties(Object.assign(Object.assign({abortSignal:r.abortSignal},r.conditions),{tracingOptions:i.tracingOptions})))))}async delete(r={}){if(!r.conditions){r.conditions={}}return Wo.withSpan("ContainerClient-delete",r,(async i=>assertResponse(await this.containerContext.delete({abortSignal:r.abortSignal,leaseAccessConditions:r.conditions,modifiedAccessConditions:r.conditions,tracingOptions:i.tracingOptions}))))}async deleteIfExists(r={}){return Wo.withSpan("ContainerClient-deleteIfExists",r,(async r=>{var i,s;try{const i=await this.delete(r);return Object.assign(Object.assign({succeeded:true},i),{_response:i._response})}catch(r){if(((i=r.details)===null||i===void 0?void 0:i.errorCode)==="ContainerNotFound"){return Object.assign(Object.assign({succeeded:false},(s=r.response)===null||s===void 0?void 0:s.parsedHeaders),{_response:r.response})}throw r}}))}async setMetadata(r,i={}){if(!i.conditions){i.conditions={}}if(i.conditions.ifUnmodifiedSince){throw new RangeError("the IfUnmodifiedSince must have their default values because they are ignored by the blob service")}return Wo.withSpan("ContainerClient-setMetadata",i,(async s=>assertResponse(await this.containerContext.setMetadata({abortSignal:i.abortSignal,leaseAccessConditions:i.conditions,metadata:r,modifiedAccessConditions:i.conditions,tracingOptions:s.tracingOptions}))))}async getAccessPolicy(r={}){if(!r.conditions){r.conditions={}}return Wo.withSpan("ContainerClient-getAccessPolicy",r,(async i=>{const s=assertResponse(await this.containerContext.getAccessPolicy({abortSignal:r.abortSignal,leaseAccessConditions:r.conditions,tracingOptions:i.tracingOptions}));const a={_response:s._response,blobPublicAccess:s.blobPublicAccess,date:s.date,etag:s.etag,errorCode:s.errorCode,lastModified:s.lastModified,requestId:s.requestId,clientRequestId:s.clientRequestId,signedIdentifiers:[],version:s.version};for(const r of s){let i=undefined;if(r.accessPolicy){i={permissions:r.accessPolicy.permissions};if(r.accessPolicy.expiresOn){i.expiresOn=new Date(r.accessPolicy.expiresOn)}if(r.accessPolicy.startsOn){i.startsOn=new Date(r.accessPolicy.startsOn)}}a.signedIdentifiers.push({accessPolicy:i,id:r.id})}return a}))}async setAccessPolicy(r,i,s={}){s.conditions=s.conditions||{};return Wo.withSpan("ContainerClient-setAccessPolicy",s,(async a=>{const l=[];for(const r of i||[]){l.push({accessPolicy:{expiresOn:r.accessPolicy.expiresOn?truncatedISO8061Date(r.accessPolicy.expiresOn):"",permissions:r.accessPolicy.permissions,startsOn:r.accessPolicy.startsOn?truncatedISO8061Date(r.accessPolicy.startsOn):""},id:r.id})}return assertResponse(await this.containerContext.setAccessPolicy({abortSignal:s.abortSignal,access:r,containerAcl:l,leaseAccessConditions:s.conditions,modifiedAccessConditions:s.conditions,tracingOptions:a.tracingOptions}))}))}getBlobLeaseClient(r){return new BlobLeaseClient(this,r)}async uploadBlockBlob(r,i,s,a={}){return Wo.withSpan("ContainerClient-uploadBlockBlob",a,(async a=>{const l=this.getBlockBlobClient(r);const c=await l.upload(i,s,a);return{blockBlobClient:l,response:c}}))}async deleteBlob(r,i={}){return Wo.withSpan("ContainerClient-deleteBlob",i,(async s=>{let a=this.getBlobClient(r);if(i.versionId){a=a.withVersion(i.versionId)}return a.delete(s)}))}async listBlobFlatSegment(r,i={}){return Wo.withSpan("ContainerClient-listBlobFlatSegment",i,(async s=>{const a=assertResponse(await this.containerContext.listBlobFlatSegment(Object.assign(Object.assign({marker:r},i),{tracingOptions:s.tracingOptions})));const l=Object.assign(Object.assign({},a),{_response:Object.assign(Object.assign({},a._response),{parsedBody:ConvertInternalResponseOfListBlobFlat(a._response.parsedBody)}),segment:Object.assign(Object.assign({},a.segment),{blobItems:a.segment.blobItems.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name),tags:toTags(r.blobTags),objectReplicationSourceProperties:parseObjectReplicationRecord(r.objectReplicationMetadata)});return i}))})});return l}))}async listBlobHierarchySegment(r,i,s={}){return Wo.withSpan("ContainerClient-listBlobHierarchySegment",s,(async a=>{var l;const c=assertResponse(await this.containerContext.listBlobHierarchySegment(r,Object.assign(Object.assign({marker:i},s),{tracingOptions:a.tracingOptions})));const d=Object.assign(Object.assign({},c),{_response:Object.assign(Object.assign({},c._response),{parsedBody:ConvertInternalResponseOfListBlobHierarchy(c._response.parsedBody)}),segment:Object.assign(Object.assign({},c.segment),{blobItems:c.segment.blobItems.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name),tags:toTags(r.blobTags),objectReplicationSourceProperties:parseObjectReplicationRecord(r.objectReplicationMetadata)});return i})),blobPrefixes:(l=c.segment.blobPrefixes)===null||l===void 0?void 0:l.map((r=>{const i=Object.assign(Object.assign({},r),{name:BlobNameToString(r.name)});return i}))})});return d}))}listSegments(r){return l.__asyncGenerator(this,arguments,(function*listSegments_1(r,i={}){let s;if(!!r||r===undefined){do{s=yield l.__await(this.listBlobFlatSegment(r,i));r=s.continuationToken;yield yield l.__await(yield l.__await(s))}while(r)}}))}listItems(){return l.__asyncGenerator(this,arguments,(function*listItems_1(r={}){var i,s,a,c;let d;try{for(var p=true,A=l.__asyncValues(this.listSegments(d,r)),u;u=yield l.__await(A.next()),i=u.done,!i;p=true){c=u.value;p=false;const r=c;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(r.segment.blobItems)))}}catch(r){s={error:r}}finally{try{if(!p&&!i&&(a=A.return))yield l.__await(a.call(A))}finally{if(s)throw s.error}}}))}listBlobsFlat(r={}){const i=[];if(r.includeCopy){i.push("copy")}if(r.includeDeleted){i.push("deleted")}if(r.includeMetadata){i.push("metadata")}if(r.includeSnapshots){i.push("snapshots")}if(r.includeVersions){i.push("versions")}if(r.includeUncommitedBlobs){i.push("uncommittedblobs")}if(r.includeTags){i.push("tags")}if(r.includeDeletedWithVersions){i.push("deletedwithversions")}if(r.includeImmutabilityPolicy){i.push("immutabilitypolicy")}if(r.includeLegalHold){i.push("legalhold")}if(r.prefix===""){r.prefix=undefined}const s=Object.assign(Object.assign({},r),i.length>0?{include:i}:{});const a=this.listItems(s);return{next(){return a.next()},[Symbol.asyncIterator](){return this},byPage:(r={})=>this.listSegments(r.continuationToken,Object.assign({maxPageSize:r.maxPageSize},s))}}listHierarchySegments(r,i){return l.__asyncGenerator(this,arguments,(function*listHierarchySegments_1(r,i,s={}){let a;if(!!i||i===undefined){do{a=yield l.__await(this.listBlobHierarchySegment(r,i,s));i=a.continuationToken;yield yield l.__await(yield l.__await(a))}while(i)}}))}listItemsByHierarchy(r){return l.__asyncGenerator(this,arguments,(function*listItemsByHierarchy_1(r,i={}){var s,a,c,d;let p;try{for(var A=true,u=l.__asyncValues(this.listHierarchySegments(r,p,i)),h;h=yield l.__await(u.next()),s=h.done,!s;A=true){d=h.value;A=false;const r=d;const i=r.segment;if(i.blobPrefixes){for(const r of i.blobPrefixes){yield yield l.__await(Object.assign({kind:"prefix"},r))}}for(const r of i.blobItems){yield yield l.__await(Object.assign({kind:"blob"},r))}}}catch(r){a={error:r}}finally{try{if(!A&&!s&&(c=u.return))yield l.__await(c.call(u))}finally{if(a)throw a.error}}}))}listBlobsByHierarchy(r,i={}){if(r===""){throw new RangeError("delimiter should contain one or more characters")}const s=[];if(i.includeCopy){s.push("copy")}if(i.includeDeleted){s.push("deleted")}if(i.includeMetadata){s.push("metadata")}if(i.includeSnapshots){s.push("snapshots")}if(i.includeVersions){s.push("versions")}if(i.includeUncommitedBlobs){s.push("uncommittedblobs")}if(i.includeTags){s.push("tags")}if(i.includeDeletedWithVersions){s.push("deletedwithversions")}if(i.includeImmutabilityPolicy){s.push("immutabilitypolicy")}if(i.includeLegalHold){s.push("legalhold")}if(i.prefix===""){i.prefix=undefined}const a=Object.assign(Object.assign({},i),s.length>0?{include:s}:{});const l=this.listItemsByHierarchy(r,a);return{async next(){return l.next()},[Symbol.asyncIterator](){return this},byPage:(i={})=>this.listHierarchySegments(r,i.continuationToken,Object.assign({maxPageSize:i.maxPageSize},a))}}async findBlobsByTagsSegment(r,i,s={}){return Wo.withSpan("ContainerClient-findBlobsByTagsSegment",s,(async a=>{const l=assertResponse(await this.containerContext.filterBlobs({abortSignal:s.abortSignal,where:r,marker:i,maxPageSize:s.maxPageSize,tracingOptions:a.tracingOptions}));const c=Object.assign(Object.assign({},l),{_response:l._response,blobs:l.blobs.map((r=>{var i;let s="";if(((i=r.tags)===null||i===void 0?void 0:i.blobTagSet.length)===1){s=r.tags.blobTagSet[0].value}return Object.assign(Object.assign({},r),{tags:toTags(r.tags),tagValue:s})}))});return c}))}findBlobsByTagsSegments(r,i){return l.__asyncGenerator(this,arguments,(function*findBlobsByTagsSegments_1(r,i,s={}){let a;if(!!i||i===undefined){do{a=yield l.__await(this.findBlobsByTagsSegment(r,i,s));a.blobs=a.blobs||[];i=a.continuationToken;yield yield l.__await(a)}while(i)}}))}findBlobsByTagsItems(r){return l.__asyncGenerator(this,arguments,(function*findBlobsByTagsItems_1(r,i={}){var s,a,c,d;let p;try{for(var A=true,u=l.__asyncValues(this.findBlobsByTagsSegments(r,p,i)),h;h=yield l.__await(u.next()),s=h.done,!s;A=true){d=h.value;A=false;const r=d;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(r.blobs)))}}catch(r){a={error:r}}finally{try{if(!A&&!s&&(c=u.return))yield l.__await(c.call(u))}finally{if(a)throw a.error}}}))}findBlobsByTags(r,i={}){const s=Object.assign({},i);const a=this.findBlobsByTagsItems(r,s);return{next(){return a.next()},[Symbol.asyncIterator](){return this},byPage:(i={})=>this.findBlobsByTagsSegments(r,i.continuationToken,Object.assign({maxPageSize:i.maxPageSize},s))}}async getAccountInfo(r={}){return Wo.withSpan("ContainerClient-getAccountInfo",r,(async i=>assertResponse(await this.containerContext.getAccountInfo({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}getContainerNameFromUrl(){let r;try{const i=new URL(this.url);if(i.hostname.split(".")[1]==="blob"){r=i.pathname.split("/")[1]}else if(isIpEndpointStyle(i)){r=i.pathname.split("/")[2]}else{r=i.pathname.split("/")[1]}r=decodeURIComponent(r);if(!r){throw new Error("Provided containerName is invalid.")}return r}catch(r){throw new Error("Unable to extract containerName with provided information.")}}generateSasUrl(r){return new Promise((i=>{if(!(this.credential instanceof StorageSharedKeyCredential)){throw new RangeError("Can only generate the SAS when the client is initialized with a shared key credential")}const s=generateBlobSASQueryParameters(Object.assign({containerName:this._containerName},r),this.credential).toString();i(appendToURLQuery(this.url,s))}))}getBlobBatchClient(){return new BlobBatchClient(this.url,this.pipeline)}}class AccountSASPermissions{constructor(){this.read=false;this.write=false;this.delete=false;this.deleteVersion=false;this.list=false;this.add=false;this.create=false;this.update=false;this.process=false;this.tag=false;this.filter=false;this.setImmutabilityPolicy=false;this.permanentDelete=false}static parse(r){const i=new AccountSASPermissions;for(const s of r){switch(s){case"r":i.read=true;break;case"w":i.write=true;break;case"d":i.delete=true;break;case"x":i.deleteVersion=true;break;case"l":i.list=true;break;case"a":i.add=true;break;case"c":i.create=true;break;case"u":i.update=true;break;case"p":i.process=true;break;case"t":i.tag=true;break;case"f":i.filter=true;break;case"i":i.setImmutabilityPolicy=true;break;case"y":i.permanentDelete=true;break;default:throw new RangeError(`Invalid permission character: ${s}`)}}return i}static from(r){const i=new AccountSASPermissions;if(r.read){i.read=true}if(r.write){i.write=true}if(r.delete){i.delete=true}if(r.deleteVersion){i.deleteVersion=true}if(r.filter){i.filter=true}if(r.tag){i.tag=true}if(r.list){i.list=true}if(r.add){i.add=true}if(r.create){i.create=true}if(r.update){i.update=true}if(r.process){i.process=true}if(r.setImmutabilityPolicy){i.setImmutabilityPolicy=true}if(r.permanentDelete){i.permanentDelete=true}return i}toString(){const r=[];if(this.read){r.push("r")}if(this.write){r.push("w")}if(this.delete){r.push("d")}if(this.deleteVersion){r.push("x")}if(this.filter){r.push("f")}if(this.tag){r.push("t")}if(this.list){r.push("l")}if(this.add){r.push("a")}if(this.create){r.push("c")}if(this.update){r.push("u")}if(this.process){r.push("p")}if(this.setImmutabilityPolicy){r.push("i")}if(this.permanentDelete){r.push("y")}return r.join("")}}class AccountSASResourceTypes{constructor(){this.service=false;this.container=false;this.object=false}static parse(r){const i=new AccountSASResourceTypes;for(const s of r){switch(s){case"s":i.service=true;break;case"c":i.container=true;break;case"o":i.object=true;break;default:throw new RangeError(`Invalid resource type: ${s}`)}}return i}toString(){const r=[];if(this.service){r.push("s")}if(this.container){r.push("c")}if(this.object){r.push("o")}return r.join("")}}class AccountSASServices{constructor(){this.blob=false;this.file=false;this.queue=false;this.table=false}static parse(r){const i=new AccountSASServices;for(const s of r){switch(s){case"b":i.blob=true;break;case"f":i.file=true;break;case"q":i.queue=true;break;case"t":i.table=true;break;default:throw new RangeError(`Invalid service character: ${s}`)}}return i}toString(){const r=[];if(this.blob){r.push("b")}if(this.table){r.push("t")}if(this.queue){r.push("q")}if(this.file){r.push("f")}return r.join("")}}function generateAccountSASQueryParameters(r,i){const s=r.version?r.version:x;if(r.permissions&&r.permissions.setImmutabilityPolicy&&s<"2020-08-04"){throw RangeError("'version' must be >= '2020-08-04' when provided 'i' permission.")}if(r.permissions&&r.permissions.deleteVersion&&s<"2019-10-10"){throw RangeError("'version' must be >= '2019-10-10' when provided 'x' permission.")}if(r.permissions&&r.permissions.permanentDelete&&s<"2019-10-10"){throw RangeError("'version' must be >= '2019-10-10' when provided 'y' permission.")}if(r.permissions&&r.permissions.tag&&s<"2019-12-12"){throw RangeError("'version' must be >= '2019-12-12' when provided 't' permission.")}if(r.permissions&&r.permissions.filter&&s<"2019-12-12"){throw RangeError("'version' must be >= '2019-12-12' when provided 'f' permission.")}if(r.encryptionScope&&s<"2020-12-06"){throw RangeError("'version' must be >= '2020-12-06' when provided 'encryptionScope' in SAS.")}const a=AccountSASPermissions.parse(r.permissions.toString());const l=AccountSASServices.parse(r.services).toString();const c=AccountSASResourceTypes.parse(r.resourceTypes).toString();let d;if(s>="2020-12-06"){d=[i.accountName,a,l,c,r.startsOn?truncatedISO8061Date(r.startsOn,false):"",truncatedISO8061Date(r.expiresOn,false),r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",s,r.encryptionScope?r.encryptionScope:"",""].join("\n")}else{d=[i.accountName,a,l,c,r.startsOn?truncatedISO8061Date(r.startsOn,false):"",truncatedISO8061Date(r.expiresOn,false),r.ipRange?ipRangeToString(r.ipRange):"",r.protocol?r.protocol:"",s,""].join("\n")}const p=i.computeHMACSHA256(d);return new SASQueryParameters(s,p,a.toString(),l,c,r.protocol,r.startsOn,r.expiresOn,r.ipRange,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,undefined,r.encryptionScope)}class BlobServiceClient extends StorageClient{static fromConnectionString(r,i){i=i||{};const s=extractConnectionStringParts(r);if(s.kind==="AccountConnString"){if(d.isNode){const r=new StorageSharedKeyCredential(s.accountName,s.accountKey);if(!i.proxyOptions){i.proxyOptions=a.getDefaultProxySettings(s.proxyUri)}const l=newPipeline(r,i);return new BlobServiceClient(s.url,l)}else{throw new Error("Account connection string is only supported in Node.js environment")}}else if(s.kind==="SASConnString"){const r=newPipeline(new AnonymousCredential,i);return new BlobServiceClient(s.url+"?"+s.accountSas,r)}else{throw new Error("Connection string must be either an Account connection string or a SAS connection string")}}constructor(r,i,s){let a;if(isPipelineLike(i)){a=i}else if(d.isNode&&i instanceof StorageSharedKeyCredential||i instanceof AnonymousCredential||c.isTokenCredential(i)){a=newPipeline(i,s)}else{a=newPipeline(new AnonymousCredential,s)}super(r,a);this.serviceContext=this.storageClientContext.service}getContainerClient(r){return new ContainerClient(appendToURLPath(this.url,encodeURIComponent(r)),this.pipeline)}async createContainer(r,i={}){return Wo.withSpan("BlobServiceClient-createContainer",i,(async i=>{const s=this.getContainerClient(r);const a=await s.create(i);return{containerClient:s,containerCreateResponse:a}}))}async deleteContainer(r,i={}){return Wo.withSpan("BlobServiceClient-deleteContainer",i,(async i=>{const s=this.getContainerClient(r);return s.delete(i)}))}async undeleteContainer(r,i,s={}){return Wo.withSpan("BlobServiceClient-undeleteContainer",s,(async a=>{const l=this.getContainerClient(s.destinationContainerName||r);const c=l["storageClientContext"].container;const d=assertResponse(await c.restore({deletedContainerName:r,deletedContainerVersion:i,tracingOptions:a.tracingOptions}));return{containerClient:l,containerUndeleteResponse:d}}))}async renameContainer(r,i,s={}){return Wo.withSpan("BlobServiceClient-renameContainer",s,(async a=>{var l;const c=this.getContainerClient(i);const d=c["storageClientContext"].container;const p=assertResponse(await d.rename(r,Object.assign(Object.assign({},a),{sourceLeaseId:(l=s.sourceCondition)===null||l===void 0?void 0:l.leaseId})));return{containerClient:c,containerRenameResponse:p}}))}async getProperties(r={}){return Wo.withSpan("BlobServiceClient-getProperties",r,(async i=>assertResponse(await this.serviceContext.getProperties({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}async setProperties(r,i={}){return Wo.withSpan("BlobServiceClient-setProperties",i,(async s=>assertResponse(await this.serviceContext.setProperties(r,{abortSignal:i.abortSignal,tracingOptions:s.tracingOptions}))))}async getStatistics(r={}){return Wo.withSpan("BlobServiceClient-getStatistics",r,(async i=>assertResponse(await this.serviceContext.getStatistics({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}async getAccountInfo(r={}){return Wo.withSpan("BlobServiceClient-getAccountInfo",r,(async i=>assertResponse(await this.serviceContext.getAccountInfo({abortSignal:r.abortSignal,tracingOptions:i.tracingOptions}))))}async listContainersSegment(r,i={}){return Wo.withSpan("BlobServiceClient-listContainersSegment",i,(async s=>assertResponse(await this.serviceContext.listContainersSegment(Object.assign(Object.assign({abortSignal:i.abortSignal,marker:r},i),{include:typeof i.include==="string"?[i.include]:i.include,tracingOptions:s.tracingOptions})))))}async findBlobsByTagsSegment(r,i,s={}){return Wo.withSpan("BlobServiceClient-findBlobsByTagsSegment",s,(async a=>{const l=assertResponse(await this.serviceContext.filterBlobs({abortSignal:s.abortSignal,where:r,marker:i,maxPageSize:s.maxPageSize,tracingOptions:a.tracingOptions}));const c=Object.assign(Object.assign({},l),{_response:l._response,blobs:l.blobs.map((r=>{var i;let s="";if(((i=r.tags)===null||i===void 0?void 0:i.blobTagSet.length)===1){s=r.tags.blobTagSet[0].value}return Object.assign(Object.assign({},r),{tags:toTags(r.tags),tagValue:s})}))});return c}))}findBlobsByTagsSegments(r,i){return l.__asyncGenerator(this,arguments,(function*findBlobsByTagsSegments_1(r,i,s={}){let a;if(!!i||i===undefined){do{a=yield l.__await(this.findBlobsByTagsSegment(r,i,s));a.blobs=a.blobs||[];i=a.continuationToken;yield yield l.__await(a)}while(i)}}))}findBlobsByTagsItems(r){return l.__asyncGenerator(this,arguments,(function*findBlobsByTagsItems_1(r,i={}){var s,a,c,d;let p;try{for(var A=true,u=l.__asyncValues(this.findBlobsByTagsSegments(r,p,i)),h;h=yield l.__await(u.next()),s=h.done,!s;A=true){d=h.value;A=false;const r=d;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(r.blobs)))}}catch(r){a={error:r}}finally{try{if(!A&&!s&&(c=u.return))yield l.__await(c.call(u))}finally{if(a)throw a.error}}}))}findBlobsByTags(r,i={}){const s=Object.assign({},i);const a=this.findBlobsByTagsItems(r,s);return{next(){return a.next()},[Symbol.asyncIterator](){return this},byPage:(i={})=>this.findBlobsByTagsSegments(r,i.continuationToken,Object.assign({maxPageSize:i.maxPageSize},s))}}listSegments(r){return l.__asyncGenerator(this,arguments,(function*listSegments_1(r,i={}){let s;if(!!r||r===undefined){do{s=yield l.__await(this.listContainersSegment(r,i));s.containerItems=s.containerItems||[];r=s.continuationToken;yield yield l.__await(yield l.__await(s))}while(r)}}))}listItems(){return l.__asyncGenerator(this,arguments,(function*listItems_1(r={}){var i,s,a,c;let d;try{for(var p=true,A=l.__asyncValues(this.listSegments(d,r)),u;u=yield l.__await(A.next()),i=u.done,!i;p=true){c=u.value;p=false;const r=c;yield l.__await(yield*l.__asyncDelegator(l.__asyncValues(r.containerItems)))}}catch(r){s={error:r}}finally{try{if(!p&&!i&&(a=A.return))yield l.__await(a.call(A))}finally{if(s)throw s.error}}}))}listContainers(r={}){if(r.prefix===""){r.prefix=undefined}const i=[];if(r.includeDeleted){i.push("deleted")}if(r.includeMetadata){i.push("metadata")}if(r.includeSystem){i.push("system")}const s=Object.assign(Object.assign({},r),i.length>0?{include:i}:{});const a=this.listItems(s);return{next(){return a.next()},[Symbol.asyncIterator](){return this},byPage:(r={})=>this.listSegments(r.continuationToken,Object.assign({maxPageSize:r.maxPageSize},s))}}async getUserDelegationKey(r,i,s={}){return Wo.withSpan("BlobServiceClient-getUserDelegationKey",s,(async a=>{const l=assertResponse(await this.serviceContext.getUserDelegationKey({startsOn:truncatedISO8061Date(r,false),expiresOn:truncatedISO8061Date(i,false)},{abortSignal:s.abortSignal,tracingOptions:a.tracingOptions}));const c={signedObjectId:l.signedObjectId,signedTenantId:l.signedTenantId,signedStartsOn:new Date(l.signedStartsOn),signedExpiresOn:new Date(l.signedExpiresOn),signedService:l.signedService,signedVersion:l.signedVersion,value:l.value};const d=Object.assign({_response:l._response,requestId:l.requestId,clientRequestId:l.clientRequestId,version:l.version,date:l.date,errorCode:l.errorCode},c);return d}))}getBlobBatchClient(){return new BlobBatchClient(this.url,this.pipeline)}generateAccountSasUrl(r,i=AccountSASPermissions.parse("r"),s="sco",a={}){if(!(this.credential instanceof StorageSharedKeyCredential)){throw RangeError("Can only generate the account SAS when the client is initialized with a shared key credential")}if(r===undefined){const i=new Date;r=new Date(i.getTime()+3600*1e3)}const l=generateAccountSASQueryParameters(Object.assign({permissions:i,expiresOn:r,resourceTypes:s,services:AccountSASServices.parse("b").toString()},a),this.credential).toString();return appendToURLQuery(this.url,l)}}i.KnownEncryptionAlgorithmType=void 0;(function(r){r["AES256"]="AES256"})(i.KnownEncryptionAlgorithmType||(i.KnownEncryptionAlgorithmType={}));Object.defineProperty(i,"RestError",{enumerable:true,get:function(){return a.RestError}});i.AccountSASPermissions=AccountSASPermissions;i.AccountSASResourceTypes=AccountSASResourceTypes;i.AccountSASServices=AccountSASServices;i.AnonymousCredential=AnonymousCredential;i.AnonymousCredentialPolicy=AnonymousCredentialPolicy;i.AppendBlobClient=AppendBlobClient;i.BaseRequestPolicy=BaseRequestPolicy;i.BlobBatch=BlobBatch;i.BlobBatchClient=BlobBatchClient;i.BlobClient=BlobClient;i.BlobLeaseClient=BlobLeaseClient;i.BlobSASPermissions=BlobSASPermissions;i.BlobServiceClient=BlobServiceClient;i.BlockBlobClient=BlockBlobClient;i.ContainerClient=ContainerClient;i.ContainerSASPermissions=ContainerSASPermissions;i.Credential=Credential;i.CredentialPolicy=CredentialPolicy;i.PageBlobClient=PageBlobClient;i.Pipeline=Pipeline;i.SASQueryParameters=SASQueryParameters;i.StorageBrowserPolicy=StorageBrowserPolicy;i.StorageBrowserPolicyFactory=StorageBrowserPolicyFactory;i.StorageOAuthScopes=H;i.StorageRetryPolicy=StorageRetryPolicy;i.StorageRetryPolicyFactory=StorageRetryPolicyFactory;i.StorageSharedKeyCredential=StorageSharedKeyCredential;i.StorageSharedKeyCredentialPolicy=StorageSharedKeyCredentialPolicy;i.generateAccountSASQueryParameters=generateAccountSASQueryParameters;i.generateBlobSASQueryParameters=generateBlobSASQueryParameters;i.getBlobServiceAccountAudience=getBlobServiceAccountAudience;i.isPipelineLike=isPipelineLike;i.logger=T;i.newPipeline=newPipeline},29496:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});const s=/^v1\./;const a=/^ghs_/;const l=/^ghu_/;async function auth(r){const i=r.split(/\./).length===3;const c=s.test(r)||a.test(r);const d=l.test(r);const p=i?"app":c?"installation":d?"user-to-server":"oauth";return{type:"token",token:r,tokenType:p}}function withAuthorizationPrefix(r){if(r.split(/\./).length===3){return`bearer ${r}`}return`token ${r}`}async function hook(r,i,s,a){const l=i.endpoint.merge(s,a);l.headers.authorization=withAuthorizationPrefix(r);return i(l)}const c=function createTokenAuth(r){if(!r){throw new Error("[@octokit/auth-token] No token passed to createTokenAuth")}if(typeof r!=="string"){throw new Error("[@octokit/auth-token] Token passed to createTokenAuth is not a string")}r=r.replace(/^(token|bearer) +/i,"");return Object.assign(auth.bind(null,r),{hook:hook.bind(null,r)})};i.createTokenAuth=c},22205:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(98912);var l=s(90527);var c=s(72619);var d=s(35783);var p=s(29496);function _objectWithoutPropertiesLoose(r,i){if(r==null)return{};var s={};var a=Object.keys(r);var l,c;for(c=0;c=0)continue;s[l]=r[l]}return s}function _objectWithoutProperties(r,i){if(r==null)return{};var s=_objectWithoutPropertiesLoose(r,i);var a,l;if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(r);for(l=0;l=0)continue;if(!Object.prototype.propertyIsEnumerable.call(r,a))continue;s[a]=r[a]}}return s}const A="3.6.0";const u=["authStrategy"];class Octokit{constructor(r={}){const i=new l.Collection;const s={baseUrl:c.request.endpoint.DEFAULTS.baseUrl,headers:{},request:Object.assign({},r.request,{hook:i.bind(null,"request")}),mediaType:{previews:[],format:""}};s.headers["user-agent"]=[r.userAgent,`octokit-core.js/${A} ${a.getUserAgent()}`].filter(Boolean).join(" ");if(r.baseUrl){s.baseUrl=r.baseUrl}if(r.previews){s.mediaType.previews=r.previews}if(r.timeZone){s.headers["time-zone"]=r.timeZone}this.request=c.request.defaults(s);this.graphql=d.withCustomRequest(this.request).defaults(s);this.log=Object.assign({debug:()=>{},info:()=>{},warn:console.warn.bind(console),error:console.error.bind(console)},r.log);this.hook=i;if(!r.authStrategy){if(!r.auth){this.auth=async()=>({type:"unauthenticated"})}else{const s=p.createTokenAuth(r.auth);i.wrap("request",s.hook);this.auth=s}}else{const{authStrategy:s}=r,a=_objectWithoutProperties(r,u);const l=s(Object.assign({request:this.request,log:this.log,octokit:this,octokitOptions:a},r.auth));i.wrap("request",l.hook);this.auth=l}const h=this.constructor;h.plugins.forEach((i=>{Object.assign(this,i(this,r))}))}static defaults(r){const i=class extends(this){constructor(...i){const s=i[0]||{};if(typeof r==="function"){super(r(s));return}super(Object.assign({},r,s,s.userAgent&&r.userAgent?{userAgent:`${s.userAgent} ${r.userAgent}`}:null))}};return i}static plugin(...r){var i;const s=this.plugins;const a=(i=class extends(this){},i.plugins=s.concat(r.filter((r=>!s.includes(r)))),i);return a}}Octokit.VERSION=A;Octokit.plugins=[];i.Octokit=Octokit},9187:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(45628);var l=s(98912);function lowercaseKeys(r){if(!r){return{}}return Object.keys(r).reduce(((i,s)=>{i[s.toLowerCase()]=r[s];return i}),{})}function mergeDeep(r,i){const s=Object.assign({},r);Object.keys(i).forEach((l=>{if(a.isPlainObject(i[l])){if(!(l in r))Object.assign(s,{[l]:i[l]});else s[l]=mergeDeep(r[l],i[l])}else{Object.assign(s,{[l]:i[l]})}}));return s}function removeUndefinedProperties(r){for(const i in r){if(r[i]===undefined){delete r[i]}}return r}function merge(r,i,s){if(typeof i==="string"){let[r,a]=i.split(" ");s=Object.assign(a?{method:r,url:a}:{url:r},s)}else{s=Object.assign({},i)}s.headers=lowercaseKeys(s.headers);removeUndefinedProperties(s);removeUndefinedProperties(s.headers);const a=mergeDeep(r||{},s);if(r&&r.mediaType.previews.length){a.mediaType.previews=r.mediaType.previews.filter((r=>!a.mediaType.previews.includes(r))).concat(a.mediaType.previews)}a.mediaType.previews=a.mediaType.previews.map((r=>r.replace(/-preview/,"")));return a}function addQueryParameters(r,i){const s=/\?/.test(r)?"&":"?";const a=Object.keys(i);if(a.length===0){return r}return r+s+a.map((r=>{if(r==="q"){return"q="+i.q.split("+").map(encodeURIComponent).join("+")}return`${r}=${encodeURIComponent(i[r])}`})).join("&")}const c=/\{[^}]+\}/g;function removeNonChars(r){return r.replace(/^\W+|\W+$/g,"").split(/,/)}function extractUrlVariableNames(r){const i=r.match(c);if(!i){return[]}return i.map(removeNonChars).reduce(((r,i)=>r.concat(i)),[])}function omit(r,i){return Object.keys(r).filter((r=>!i.includes(r))).reduce(((i,s)=>{i[s]=r[s];return i}),{})}function encodeReserved(r){return r.split(/(%[0-9A-Fa-f]{2})/g).map((function(r){if(!/%[0-9A-Fa-f]/.test(r)){r=encodeURI(r).replace(/%5B/g,"[").replace(/%5D/g,"]")}return r})).join("")}function encodeUnreserved(r){return encodeURIComponent(r).replace(/[!'()*]/g,(function(r){return"%"+r.charCodeAt(0).toString(16).toUpperCase()}))}function encodeValue(r,i,s){i=r==="+"||r==="#"?encodeReserved(i):encodeUnreserved(i);if(s){return encodeUnreserved(s)+"="+i}else{return i}}function isDefined(r){return r!==undefined&&r!==null}function isKeyOperator(r){return r===";"||r==="&"||r==="?"}function getValues(r,i,s,a){var l=r[s],c=[];if(isDefined(l)&&l!==""){if(typeof l==="string"||typeof l==="number"||typeof l==="boolean"){l=l.toString();if(a&&a!=="*"){l=l.substring(0,parseInt(a,10))}c.push(encodeValue(i,l,isKeyOperator(i)?s:""))}else{if(a==="*"){if(Array.isArray(l)){l.filter(isDefined).forEach((function(r){c.push(encodeValue(i,r,isKeyOperator(i)?s:""))}))}else{Object.keys(l).forEach((function(r){if(isDefined(l[r])){c.push(encodeValue(i,l[r],r))}}))}}else{const r=[];if(Array.isArray(l)){l.filter(isDefined).forEach((function(s){r.push(encodeValue(i,s))}))}else{Object.keys(l).forEach((function(s){if(isDefined(l[s])){r.push(encodeUnreserved(s));r.push(encodeValue(i,l[s].toString()))}}))}if(isKeyOperator(i)){c.push(encodeUnreserved(s)+"="+r.join(","))}else if(r.length!==0){c.push(r.join(","))}}}}else{if(i===";"){if(isDefined(l)){c.push(encodeUnreserved(s))}}else if(l===""&&(i==="&"||i==="?")){c.push(encodeUnreserved(s)+"=")}else if(l===""){c.push("")}}return c}function parseUrl(r){return{expand:expand.bind(null,r)}}function expand(r,i){var s=["+","#",".","/",";","?","&"];return r.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g,(function(r,a,l){if(a){let r="";const l=[];if(s.indexOf(a.charAt(0))!==-1){r=a.charAt(0);a=a.substr(1)}a.split(/,/g).forEach((function(s){var a=/([^:\*]*)(?::(\d+)|(\*))?/.exec(s);l.push(getValues(i,r,a[1],a[2]||a[3]))}));if(r&&r!=="+"){var c=",";if(r==="?"){c="&"}else if(r!=="#"){c=r}return(l.length!==0?r:"")+l.join(c)}else{return l.join(",")}}else{return encodeReserved(l)}}))}function parse(r){let i=r.method.toUpperCase();let s=(r.url||"/").replace(/:([a-z]\w+)/g,"{$1}");let a=Object.assign({},r.headers);let l;let c=omit(r,["method","baseUrl","url","headers","request","mediaType"]);const d=extractUrlVariableNames(s);s=parseUrl(s).expand(c);if(!/^http/.test(s)){s=r.baseUrl+s}const p=Object.keys(r).filter((r=>d.includes(r))).concat("baseUrl");const A=omit(c,p);const u=/application\/octet-stream/i.test(a.accept);if(!u){if(r.mediaType.format){a.accept=a.accept.split(/,/).map((i=>i.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,`application/vnd$1$2.${r.mediaType.format}`))).join(",")}if(r.mediaType.previews.length){const i=a.accept.match(/[\w-]+(?=-preview)/g)||[];a.accept=i.concat(r.mediaType.previews).map((i=>{const s=r.mediaType.format?`.${r.mediaType.format}`:"+json";return`application/vnd.github.${i}-preview${s}`})).join(",")}}if(["GET","HEAD"].includes(i)){s=addQueryParameters(s,A)}else{if("data"in A){l=A.data}else{if(Object.keys(A).length){l=A}else{a["content-length"]=0}}}if(!a["content-type"]&&typeof l!=="undefined"){a["content-type"]="application/json; charset=utf-8"}if(["PATCH","PUT"].includes(i)&&typeof l==="undefined"){l=""}return Object.assign({method:i,url:s,headers:a},typeof l!=="undefined"?{body:l}:null,r.request?{request:r.request}:null)}function endpointWithDefaults(r,i,s){return parse(merge(r,i,s))}function withDefaults(r,i){const s=merge(r,i);const a=endpointWithDefaults.bind(null,s);return Object.assign(a,{DEFAULTS:s,defaults:withDefaults.bind(null,s),merge:merge.bind(null,s),parse:parse})}const d="6.0.12";const p=`octokit-endpoint.js/${d} ${l.getUserAgent()}`;const A={method:"GET",baseUrl:"https://api.github.com",headers:{accept:"application/vnd.github.v3+json","user-agent":p},mediaType:{format:"",previews:[]}};const u=withDefaults(null,A);i.endpoint=u},35783:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(72619);var l=s(98912);const c="4.8.0";function _buildMessageForResponseErrors(r){return`Request failed due to following response errors:\n`+r.errors.map((r=>` - ${r.message}`)).join("\n")}class GraphqlResponseError extends Error{constructor(r,i,s){super(_buildMessageForResponseErrors(s));this.request=r;this.headers=i;this.response=s;this.name="GraphqlResponseError";this.errors=s.errors;this.data=s.data;if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}}}const d=["method","baseUrl","url","headers","request","query","mediaType"];const p=["query","method","url"];const A=/\/api\/v3\/?$/;function graphql(r,i,s){if(s){if(typeof i==="string"&&"query"in s){return Promise.reject(new Error(`[@octokit/graphql] "query" cannot be used as variable name`))}for(const r in s){if(!p.includes(r))continue;return Promise.reject(new Error(`[@octokit/graphql] "${r}" cannot be used as variable name`))}}const a=typeof i==="string"?Object.assign({query:i},s):i;const l=Object.keys(a).reduce(((r,i)=>{if(d.includes(i)){r[i]=a[i];return r}if(!r.variables){r.variables={}}r.variables[i]=a[i];return r}),{});const c=a.baseUrl||r.endpoint.DEFAULTS.baseUrl;if(A.test(c)){l.url=c.replace(A,"/api/graphql")}return r(l).then((r=>{if(r.data.errors){const i={};for(const s of Object.keys(r.headers)){i[s]=r.headers[s]}throw new GraphqlResponseError(l,i,r.data)}return r.data.data}))}function withDefaults(r,i){const s=r.defaults(i);const newApi=(r,i)=>graphql(s,r,i);return Object.assign(newApi,{defaults:withDefaults.bind(null,s),endpoint:a.request.endpoint})}const u=withDefaults(a.request,{headers:{"user-agent":`octokit-graphql.js/${c} ${l.getUserAgent()}`},method:"POST",url:"/graphql"});function withCustomRequest(r){return withDefaults(r,{method:"POST",url:"/graphql"})}i.GraphqlResponseError=GraphqlResponseError;i.graphql=u;i.withCustomRequest=withCustomRequest},25485:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});const s="2.21.3";function ownKeys(r,i){var s=Object.keys(r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);i&&(a=a.filter((function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))),s.push.apply(s,a)}return s}function _objectSpread2(r){for(var i=1;i({async next(){if(!p)return{done:true};try{const r=await l({method:c,url:p,headers:d});const i=normalizePaginatedListResponse(r);p=((i.headers.link||"").match(/<([^>]+)>;\s*rel="next"/)||[])[1];return{value:i}}catch(r){if(r.status!==409)throw r;p="";return{value:{status:200,headers:{},data:[]}}}}})}}function paginate(r,i,s,a){if(typeof s==="function"){a=s;s=undefined}return gather(r,[],iterator(r,i,s)[Symbol.asyncIterator](),a)}function gather(r,i,s,a){return s.next().then((l=>{if(l.done){return i}let c=false;function done(){c=true}i=i.concat(a?a(l.value,done):l.value.data);if(c){return i}return gather(r,i,s,a)}))}const a=Object.assign(paginate,{iterator:iterator});const l=["GET /app/hook/deliveries","GET /app/installations","GET /applications/grants","GET /authorizations","GET /enterprises/{enterprise}/actions/permissions/organizations","GET /enterprises/{enterprise}/actions/runner-groups","GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations","GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners","GET /enterprises/{enterprise}/actions/runners","GET /enterprises/{enterprise}/audit-log","GET /enterprises/{enterprise}/secret-scanning/alerts","GET /enterprises/{enterprise}/settings/billing/advanced-security","GET /events","GET /gists","GET /gists/public","GET /gists/starred","GET /gists/{gist_id}/comments","GET /gists/{gist_id}/commits","GET /gists/{gist_id}/forks","GET /installation/repositories","GET /issues","GET /licenses","GET /marketplace_listing/plans","GET /marketplace_listing/plans/{plan_id}/accounts","GET /marketplace_listing/stubbed/plans","GET /marketplace_listing/stubbed/plans/{plan_id}/accounts","GET /networks/{owner}/{repo}/events","GET /notifications","GET /organizations","GET /orgs/{org}/actions/cache/usage-by-repository","GET /orgs/{org}/actions/permissions/repositories","GET /orgs/{org}/actions/runner-groups","GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories","GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners","GET /orgs/{org}/actions/runners","GET /orgs/{org}/actions/secrets","GET /orgs/{org}/actions/secrets/{secret_name}/repositories","GET /orgs/{org}/audit-log","GET /orgs/{org}/blocks","GET /orgs/{org}/code-scanning/alerts","GET /orgs/{org}/codespaces","GET /orgs/{org}/credential-authorizations","GET /orgs/{org}/dependabot/secrets","GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories","GET /orgs/{org}/events","GET /orgs/{org}/external-groups","GET /orgs/{org}/failed_invitations","GET /orgs/{org}/hooks","GET /orgs/{org}/hooks/{hook_id}/deliveries","GET /orgs/{org}/installations","GET /orgs/{org}/invitations","GET /orgs/{org}/invitations/{invitation_id}/teams","GET /orgs/{org}/issues","GET /orgs/{org}/members","GET /orgs/{org}/migrations","GET /orgs/{org}/migrations/{migration_id}/repositories","GET /orgs/{org}/outside_collaborators","GET /orgs/{org}/packages","GET /orgs/{org}/packages/{package_type}/{package_name}/versions","GET /orgs/{org}/projects","GET /orgs/{org}/public_members","GET /orgs/{org}/repos","GET /orgs/{org}/secret-scanning/alerts","GET /orgs/{org}/settings/billing/advanced-security","GET /orgs/{org}/team-sync/groups","GET /orgs/{org}/teams","GET /orgs/{org}/teams/{team_slug}/discussions","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions","GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions","GET /orgs/{org}/teams/{team_slug}/invitations","GET /orgs/{org}/teams/{team_slug}/members","GET /orgs/{org}/teams/{team_slug}/projects","GET /orgs/{org}/teams/{team_slug}/repos","GET /orgs/{org}/teams/{team_slug}/teams","GET /projects/columns/{column_id}/cards","GET /projects/{project_id}/collaborators","GET /projects/{project_id}/columns","GET /repos/{owner}/{repo}/actions/artifacts","GET /repos/{owner}/{repo}/actions/caches","GET /repos/{owner}/{repo}/actions/runners","GET /repos/{owner}/{repo}/actions/runs","GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts","GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs","GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs","GET /repos/{owner}/{repo}/actions/secrets","GET /repos/{owner}/{repo}/actions/workflows","GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs","GET /repos/{owner}/{repo}/assignees","GET /repos/{owner}/{repo}/branches","GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations","GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs","GET /repos/{owner}/{repo}/code-scanning/alerts","GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances","GET /repos/{owner}/{repo}/code-scanning/analyses","GET /repos/{owner}/{repo}/codespaces","GET /repos/{owner}/{repo}/codespaces/devcontainers","GET /repos/{owner}/{repo}/codespaces/secrets","GET /repos/{owner}/{repo}/collaborators","GET /repos/{owner}/{repo}/comments","GET /repos/{owner}/{repo}/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/commits","GET /repos/{owner}/{repo}/commits/{commit_sha}/comments","GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls","GET /repos/{owner}/{repo}/commits/{ref}/check-runs","GET /repos/{owner}/{repo}/commits/{ref}/check-suites","GET /repos/{owner}/{repo}/commits/{ref}/status","GET /repos/{owner}/{repo}/commits/{ref}/statuses","GET /repos/{owner}/{repo}/contributors","GET /repos/{owner}/{repo}/dependabot/secrets","GET /repos/{owner}/{repo}/deployments","GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses","GET /repos/{owner}/{repo}/environments","GET /repos/{owner}/{repo}/events","GET /repos/{owner}/{repo}/forks","GET /repos/{owner}/{repo}/git/matching-refs/{ref}","GET /repos/{owner}/{repo}/hooks","GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries","GET /repos/{owner}/{repo}/invitations","GET /repos/{owner}/{repo}/issues","GET /repos/{owner}/{repo}/issues/comments","GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/issues/events","GET /repos/{owner}/{repo}/issues/{issue_number}/comments","GET /repos/{owner}/{repo}/issues/{issue_number}/events","GET /repos/{owner}/{repo}/issues/{issue_number}/labels","GET /repos/{owner}/{repo}/issues/{issue_number}/reactions","GET /repos/{owner}/{repo}/issues/{issue_number}/timeline","GET /repos/{owner}/{repo}/keys","GET /repos/{owner}/{repo}/labels","GET /repos/{owner}/{repo}/milestones","GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels","GET /repos/{owner}/{repo}/notifications","GET /repos/{owner}/{repo}/pages/builds","GET /repos/{owner}/{repo}/projects","GET /repos/{owner}/{repo}/pulls","GET /repos/{owner}/{repo}/pulls/comments","GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions","GET /repos/{owner}/{repo}/pulls/{pull_number}/comments","GET /repos/{owner}/{repo}/pulls/{pull_number}/commits","GET /repos/{owner}/{repo}/pulls/{pull_number}/files","GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers","GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews","GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments","GET /repos/{owner}/{repo}/releases","GET /repos/{owner}/{repo}/releases/{release_id}/assets","GET /repos/{owner}/{repo}/releases/{release_id}/reactions","GET /repos/{owner}/{repo}/secret-scanning/alerts","GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations","GET /repos/{owner}/{repo}/stargazers","GET /repos/{owner}/{repo}/subscribers","GET /repos/{owner}/{repo}/tags","GET /repos/{owner}/{repo}/teams","GET /repos/{owner}/{repo}/topics","GET /repositories","GET /repositories/{repository_id}/environments/{environment_name}/secrets","GET /search/code","GET /search/commits","GET /search/issues","GET /search/labels","GET /search/repositories","GET /search/topics","GET /search/users","GET /teams/{team_id}/discussions","GET /teams/{team_id}/discussions/{discussion_number}/comments","GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions","GET /teams/{team_id}/discussions/{discussion_number}/reactions","GET /teams/{team_id}/invitations","GET /teams/{team_id}/members","GET /teams/{team_id}/projects","GET /teams/{team_id}/repos","GET /teams/{team_id}/teams","GET /user/blocks","GET /user/codespaces","GET /user/codespaces/secrets","GET /user/emails","GET /user/followers","GET /user/following","GET /user/gpg_keys","GET /user/installations","GET /user/installations/{installation_id}/repositories","GET /user/issues","GET /user/keys","GET /user/marketplace_purchases","GET /user/marketplace_purchases/stubbed","GET /user/memberships/orgs","GET /user/migrations","GET /user/migrations/{migration_id}/repositories","GET /user/orgs","GET /user/packages","GET /user/packages/{package_type}/{package_name}/versions","GET /user/public_emails","GET /user/repos","GET /user/repository_invitations","GET /user/starred","GET /user/subscriptions","GET /user/teams","GET /users","GET /users/{username}/events","GET /users/{username}/events/orgs/{org}","GET /users/{username}/events/public","GET /users/{username}/followers","GET /users/{username}/following","GET /users/{username}/gists","GET /users/{username}/gpg_keys","GET /users/{username}/keys","GET /users/{username}/orgs","GET /users/{username}/packages","GET /users/{username}/projects","GET /users/{username}/received_events","GET /users/{username}/received_events/public","GET /users/{username}/repos","GET /users/{username}/starred","GET /users/{username}/subscriptions"];function isPaginatingEndpoint(r){if(typeof r==="string"){return l.includes(r)}else{return false}}function paginateRest(r){return{paginate:Object.assign(paginate.bind(null,r),{iterator:iterator.bind(null,r)})}}paginateRest.VERSION=s;i.composePaginateRest=a;i.isPaginatingEndpoint=isPaginatingEndpoint;i.paginateRest=paginateRest;i.paginatingEndpoints=l},52622:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});const s="1.0.4";function requestLog(r){r.hook.wrap("request",((i,s)=>{r.log.debug("request",s);const a=Date.now();const l=r.request.endpoint.parse(s);const c=l.url.replace(s.baseUrl,"");return i(s).then((i=>{r.log.info(`${l.method} ${c} - ${i.status} in ${Date.now()-a}ms`);return i})).catch((i=>{r.log.info(`${l.method} ${c} - ${i.status} in ${Date.now()-a}ms`);throw i}))}))}requestLog.VERSION=s;i.requestLog=requestLog},47874:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});function ownKeys(r,i){var s=Object.keys(r);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(r);if(i){a=a.filter((function(i){return Object.getOwnPropertyDescriptor(r,i).enumerable}))}s.push.apply(s,a)}return s}function _objectSpread2(r){for(var i=1;i{"use strict";Object.defineProperty(i,"__esModule",{value:true});function _interopDefault(r){return r&&typeof r==="object"&&"default"in r?r["default"]:r}var a=_interopDefault(s(86672));async function errorRequest(r,i,s,a){if(!s.request||!s.request.request){throw s}if(s.status>=400&&!i.doNotRetry.includes(s.status)){const l=a.request.retries!=null?a.request.retries:i.retries;const c=Math.pow((a.request.retryCount||0)+1,2);throw r.retry.retryRequest(s,l,c)}throw s}async function wrapRequest(r,i,s){const l=new a;l.on("failed",(function(i,a){const l=~~i.request.request.retries;const c=~~i.request.request.retryAfter;s.request.retryCount=a.retryCount+1;if(l>a.retryCount){return c*r.retryAfterBaseValue}}));return l.schedule(i,s)}const l="3.0.9";function retry(r,i){const s=Object.assign({enabled:true,retryAfterBaseValue:1e3,doNotRetry:[400,401,403,404,422],retries:3},i.retry);if(s.enabled){r.hook.error("request",errorRequest.bind(null,r,s));r.hook.wrap("request",wrapRequest.bind(null,s))}return{retry:{retryRequest:(r,i,s)=>{r.request.request=Object.assign({},r.request.request,{retries:i,retryAfter:s});return r}}}}retry.VERSION=l;i.VERSION=l;i.retry=retry},54132:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});function _interopDefault(r){return r&&typeof r==="object"&&"default"in r?r["default"]:r}var a=s(79306);var l=_interopDefault(s(56884));const c=l((r=>console.warn(r)));const d=l((r=>console.warn(r)));class RequestError extends Error{constructor(r,i,s){super(r);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}this.name="HttpError";this.status=i;let l;if("headers"in s&&typeof s.headers!=="undefined"){l=s.headers}if("response"in s){this.response=s.response;l=s.response.headers}const p=Object.assign({},s.request);if(s.request.headers.authorization){p.headers=Object.assign({},s.request.headers,{authorization:s.request.headers.authorization.replace(/ .*$/," [REDACTED]")})}p.url=p.url.replace(/\bclient_secret=\w+/g,"client_secret=[REDACTED]").replace(/\baccess_token=\w+/g,"access_token=[REDACTED]");this.request=p;Object.defineProperty(this,"code",{get(){c(new a.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));return i}});Object.defineProperty(this,"headers",{get(){d(new a.Deprecation("[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."));return l||{}}})}}i.RequestError=RequestError},72619:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});function _interopDefault(r){return r&&typeof r==="object"&&"default"in r?r["default"]:r}var a=s(9187);var l=s(98912);var c=s(45628);var d=_interopDefault(s(77299));var p=s(54132);const A="5.6.3";function getBufferResponse(r){return r.arrayBuffer()}function fetchWrapper(r){const i=r.request&&r.request.log?r.request.log:console;if(c.isPlainObject(r.body)||Array.isArray(r.body)){r.body=JSON.stringify(r.body)}let s={};let a;let l;const A=r.request&&r.request.fetch||d;return A(r.url,Object.assign({method:r.method,body:r.body,headers:r.headers,redirect:r.redirect},r.request)).then((async c=>{l=c.url;a=c.status;for(const r of c.headers){s[r[0]]=r[1]}if("deprecation"in s){const a=s.link&&s.link.match(/<([^>]+)>; rel="deprecation"/);const l=a&&a.pop();i.warn(`[@octokit/request] "${r.method} ${r.url}" is deprecated. It is scheduled to be removed on ${s.sunset}${l?`. See ${l}`:""}`)}if(a===204||a===205){return}if(r.method==="HEAD"){if(a<400){return}throw new p.RequestError(c.statusText,a,{response:{url:l,status:a,headers:s,data:undefined},request:r})}if(a===304){throw new p.RequestError("Not modified",a,{response:{url:l,status:a,headers:s,data:await getResponseData(c)},request:r})}if(a>=400){const i=await getResponseData(c);const d=new p.RequestError(toErrorMessage(i),a,{response:{url:l,status:a,headers:s,data:i},request:r});throw d}return getResponseData(c)})).then((r=>({status:a,url:l,headers:s,data:r}))).catch((i=>{if(i instanceof p.RequestError)throw i;throw new p.RequestError(i.message,500,{request:r})}))}async function getResponseData(r){const i=r.headers.get("content-type");if(/application\/json/.test(i)){return r.json()}if(!i||/^text\/|charset=utf-8$/.test(i)){return r.text()}return getBufferResponse(r)}function toErrorMessage(r){if(typeof r==="string")return r;if("message"in r){if(Array.isArray(r.errors)){return`${r.message}: ${r.errors.map(JSON.stringify).join(", ")}`}return r.message}return`Unknown error: ${JSON.stringify(r)}`}function withDefaults(r,i){const s=r.defaults(i);const newApi=function(r,i){const a=s.merge(r,i);if(!a.request||!a.request.hook){return fetchWrapper(s.parse(a))}const request=(r,i)=>fetchWrapper(s.parse(s.merge(r,i)));Object.assign(request,{endpoint:s,defaults:withDefaults.bind(null,s)});return a.request.hook(request,a)};return Object.assign(newApi,{endpoint:s,defaults:withDefaults.bind(null,s)})}const u=withDefaults(a.endpoint,{headers:{"user-agent":`octokit-request.js/${A} ${l.getUserAgent()}`}});i.request=u},23455:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.ClientStreamingCall=void 0;class ClientStreamingCall{constructor(r,i,s,a,l,c,d){this.method=r;this.requestHeaders=i;this.requests=s;this.headers=a;this.response=l;this.status=c;this.trailers=d}then(r,i){return this.promiseFinished().then((i=>r?Promise.resolve(r(i)):i),(r=>i?Promise.resolve(i(r)):Promise.reject(r)))}promiseFinished(){return s(this,void 0,void 0,(function*(){let[r,i,s,a]=yield Promise.all([this.headers,this.response,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:r,response:i,status:s,trailers:a}}))}}i.ClientStreamingCall=ClientStreamingCall},28175:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Deferred=i.DeferredState=void 0;var s;(function(r){r[r["PENDING"]=0]="PENDING";r[r["REJECTED"]=1]="REJECTED";r[r["RESOLVED"]=2]="RESOLVED"})(s=i.DeferredState||(i.DeferredState={}));class Deferred{constructor(r=true){this._state=s.PENDING;this._promise=new Promise(((r,i)=>{this._resolve=r;this._reject=i}));if(r){this._promise.catch((r=>{}))}}get state(){return this._state}get promise(){return this._promise}resolve(r){if(this.state!==s.PENDING)throw new Error(`cannot resolve ${s[this.state].toLowerCase()}`);this._resolve(r);this._state=s.RESOLVED}reject(r){if(this.state!==s.PENDING)throw new Error(`cannot reject ${s[this.state].toLowerCase()}`);this._reject(r);this._state=s.REJECTED}resolvePending(r){if(this._state===s.PENDING)this.resolve(r)}rejectPending(r){if(this._state===s.PENDING)this.reject(r)}}i.Deferred=Deferred},22466:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.DuplexStreamingCall=void 0;class DuplexStreamingCall{constructor(r,i,s,a,l,c,d){this.method=r;this.requestHeaders=i;this.requests=s;this.headers=a;this.responses=l;this.status=c;this.trailers=d}then(r,i){return this.promiseFinished().then((i=>r?Promise.resolve(r(i)):i),(r=>i?Promise.resolve(i(r)):Promise.reject(r)))}promiseFinished(){return s(this,void 0,void 0,(function*(){let[r,i,s]=yield Promise.all([this.headers,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,headers:r,status:i,trailers:s}}))}}i.DuplexStreamingCall=DuplexStreamingCall},20499:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(23470);Object.defineProperty(i,"ServiceType",{enumerable:true,get:function(){return a.ServiceType}});var l=s(95420);Object.defineProperty(i,"readMethodOptions",{enumerable:true,get:function(){return l.readMethodOptions}});Object.defineProperty(i,"readMethodOption",{enumerable:true,get:function(){return l.readMethodOption}});Object.defineProperty(i,"readServiceOption",{enumerable:true,get:function(){return l.readServiceOption}});var c=s(62751);Object.defineProperty(i,"RpcError",{enumerable:true,get:function(){return c.RpcError}});var d=s(3640);Object.defineProperty(i,"mergeRpcOptions",{enumerable:true,get:function(){return d.mergeRpcOptions}});var p=s(13612);Object.defineProperty(i,"RpcOutputStreamController",{enumerable:true,get:function(){return p.RpcOutputStreamController}});var A=s(10616);Object.defineProperty(i,"TestTransport",{enumerable:true,get:function(){return A.TestTransport}});var u=s(28175);Object.defineProperty(i,"Deferred",{enumerable:true,get:function(){return u.Deferred}});Object.defineProperty(i,"DeferredState",{enumerable:true,get:function(){return u.DeferredState}});var h=s(22466);Object.defineProperty(i,"DuplexStreamingCall",{enumerable:true,get:function(){return h.DuplexStreamingCall}});var g=s(23455);Object.defineProperty(i,"ClientStreamingCall",{enumerable:true,get:function(){return g.ClientStreamingCall}});var y=s(39185);Object.defineProperty(i,"ServerStreamingCall",{enumerable:true,get:function(){return y.ServerStreamingCall}});var b=s(42046);Object.defineProperty(i,"UnaryCall",{enumerable:true,get:function(){return b.UnaryCall}});var C=s(3302);Object.defineProperty(i,"stackIntercept",{enumerable:true,get:function(){return C.stackIntercept}});Object.defineProperty(i,"stackDuplexStreamingInterceptors",{enumerable:true,get:function(){return C.stackDuplexStreamingInterceptors}});Object.defineProperty(i,"stackClientStreamingInterceptors",{enumerable:true,get:function(){return C.stackClientStreamingInterceptors}});Object.defineProperty(i,"stackServerStreamingInterceptors",{enumerable:true,get:function(){return C.stackServerStreamingInterceptors}});Object.defineProperty(i,"stackUnaryInterceptors",{enumerable:true,get:function(){return C.stackUnaryInterceptors}});var B=s(66779);Object.defineProperty(i,"ServerCallContextController",{enumerable:true,get:function(){return B.ServerCallContextController}})},95420:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.readServiceOption=i.readMethodOption=i.readMethodOptions=i.normalizeMethodInfo=void 0;const a=s(4800);function normalizeMethodInfo(r,i){var s,l,c;let d=r;d.service=i;d.localName=(s=d.localName)!==null&&s!==void 0?s:a.lowerCamelCase(d.name);d.serverStreaming=!!d.serverStreaming;d.clientStreaming=!!d.clientStreaming;d.options=(l=d.options)!==null&&l!==void 0?l:{};d.idempotency=(c=d.idempotency)!==null&&c!==void 0?c:undefined;return d}i.normalizeMethodInfo=normalizeMethodInfo;function readMethodOptions(r,i,s,a){var l;const c=(l=r.methods.find(((r,s)=>r.localName===i||s===i)))===null||l===void 0?void 0:l.options;return c&&c[s]?a.fromJson(c[s]):undefined}i.readMethodOptions=readMethodOptions;function readMethodOption(r,i,s,a){var l;const c=(l=r.methods.find(((r,s)=>r.localName===i||s===i)))===null||l===void 0?void 0:l.options;if(!c){return undefined}const d=c[s];if(d===undefined){return d}return a?a.fromJson(d):d}i.readMethodOption=readMethodOption;function readServiceOption(r,i,s){const a=r.options;if(!a){return undefined}const l=a[i];if(l===undefined){return l}return s?s.fromJson(l):l}i.readServiceOption=readServiceOption},62751:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.RpcError=void 0;class RpcError extends Error{constructor(r,i="UNKNOWN",s){super(r);this.name="RpcError";Object.setPrototypeOf(this,new.target.prototype);this.code=i;this.meta=s!==null&&s!==void 0?s:{}}toString(){const r=[this.name+": "+this.message];if(this.code){r.push("");r.push("Code: "+this.code)}if(this.serviceName&&this.methodName){r.push("Method: "+this.serviceName+"/"+this.methodName)}let i=Object.entries(this.meta);if(i.length){r.push("");r.push("Meta:");for(let[s,a]of i){r.push(` ${s}: ${a}`)}}return r.join("\n")}}i.RpcError=RpcError},3302:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.stackDuplexStreamingInterceptors=i.stackClientStreamingInterceptors=i.stackServerStreamingInterceptors=i.stackUnaryInterceptors=i.stackIntercept=void 0;const a=s(4800);function stackIntercept(r,i,s,l,c){var d,p,A,u;if(r=="unary"){let tail=(r,s,a)=>i.unary(r,s,a);for(const r of((d=l.interceptors)!==null&&d!==void 0?d:[]).filter((r=>r.interceptUnary)).reverse()){const i=tail;tail=(s,a,l)=>r.interceptUnary(i,s,a,l)}return tail(s,c,l)}if(r=="serverStreaming"){let tail=(r,s,a)=>i.serverStreaming(r,s,a);for(const r of((p=l.interceptors)!==null&&p!==void 0?p:[]).filter((r=>r.interceptServerStreaming)).reverse()){const i=tail;tail=(s,a,l)=>r.interceptServerStreaming(i,s,a,l)}return tail(s,c,l)}if(r=="clientStreaming"){let tail=(r,s)=>i.clientStreaming(r,s);for(const r of((A=l.interceptors)!==null&&A!==void 0?A:[]).filter((r=>r.interceptClientStreaming)).reverse()){const i=tail;tail=(s,a)=>r.interceptClientStreaming(i,s,a)}return tail(s,l)}if(r=="duplex"){let tail=(r,s)=>i.duplex(r,s);for(const r of((u=l.interceptors)!==null&&u!==void 0?u:[]).filter((r=>r.interceptDuplex)).reverse()){const i=tail;tail=(s,a)=>r.interceptDuplex(i,s,a)}return tail(s,l)}a.assertNever(r)}i.stackIntercept=stackIntercept;function stackUnaryInterceptors(r,i,s,a){return stackIntercept("unary",r,i,a,s)}i.stackUnaryInterceptors=stackUnaryInterceptors;function stackServerStreamingInterceptors(r,i,s,a){return stackIntercept("serverStreaming",r,i,a,s)}i.stackServerStreamingInterceptors=stackServerStreamingInterceptors;function stackClientStreamingInterceptors(r,i,s){return stackIntercept("clientStreaming",r,i,s)}i.stackClientStreamingInterceptors=stackClientStreamingInterceptors;function stackDuplexStreamingInterceptors(r,i,s){return stackIntercept("duplex",r,i,s)}i.stackDuplexStreamingInterceptors=stackDuplexStreamingInterceptors},3640:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.mergeRpcOptions=void 0;const a=s(4800);function mergeRpcOptions(r,i){if(!i)return r;let s={};copy(r,s);copy(i,s);for(let l of Object.keys(i)){let c=i[l];switch(l){case"jsonOptions":s.jsonOptions=a.mergeJsonOptions(r.jsonOptions,s.jsonOptions);break;case"binaryOptions":s.binaryOptions=a.mergeBinaryOptions(r.binaryOptions,s.binaryOptions);break;case"meta":s.meta={};copy(r.meta,s.meta);copy(i.meta,s.meta);break;case"interceptors":s.interceptors=r.interceptors?r.interceptors.concat(c):c.concat();break}}return s}i.mergeRpcOptions=mergeRpcOptions;function copy(r,i){if(!r)return;let s=i;for(let[i,a]of Object.entries(r)){if(a instanceof Date)s[i]=new Date(a.getTime());else if(Array.isArray(a))s[i]=a.concat();else s[i]=a}}},13612:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.RpcOutputStreamController=void 0;const a=s(28175);const l=s(4800);class RpcOutputStreamController{constructor(){this._lis={nxt:[],msg:[],err:[],cmp:[]};this._closed=false}onNext(r){return this.addLis(r,this._lis.nxt)}onMessage(r){return this.addLis(r,this._lis.msg)}onError(r){return this.addLis(r,this._lis.err)}onComplete(r){return this.addLis(r,this._lis.cmp)}addLis(r,i){i.push(r);return()=>{let s=i.indexOf(r);if(s>=0)i.splice(s,1)}}clearLis(){for(let r of Object.values(this._lis))r.splice(0,r.length)}get closed(){return this._closed!==false}notifyNext(r,i,s){l.assert((r?1:0)+(i?1:0)+(s?1:0)<=1,"only one emission at a time");if(r)this.notifyMessage(r);if(i)this.notifyError(i);if(s)this.notifyComplete()}notifyMessage(r){l.assert(!this.closed,"stream is closed");this.pushIt({value:r,done:false});this._lis.msg.forEach((i=>i(r)));this._lis.nxt.forEach((i=>i(r,undefined,false)))}notifyError(r){l.assert(!this.closed,"stream is closed");this._closed=r;this.pushIt(r);this._lis.err.forEach((i=>i(r)));this._lis.nxt.forEach((i=>i(undefined,r,false)));this.clearLis()}notifyComplete(){l.assert(!this.closed,"stream is closed");this._closed=true;this.pushIt({value:null,done:true});this._lis.cmp.forEach((r=>r()));this._lis.nxt.forEach((r=>r(undefined,undefined,true)));this.clearLis()}[Symbol.asyncIterator](){if(!this._itState){this._itState={q:[]}}if(this._closed===true)this.pushIt({value:null,done:true});else if(this._closed!==false)this.pushIt(this._closed);return{next:()=>{let r=this._itState;l.assert(r,"bad state");l.assert(!r.p,"iterator contract broken");let i=r.q.shift();if(i)return"value"in i?Promise.resolve(i):Promise.reject(i);r.p=new a.Deferred;return r.p.promise}}}pushIt(r){let i=this._itState;if(!i)return;if(i.p){const s=i.p;l.assert(s.state==a.DeferredState.PENDING,"iterator contract broken");"value"in r?s.resolve(r):s.reject(r);delete i.p}else{i.q.push(r)}}}i.RpcOutputStreamController=RpcOutputStreamController},66779:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ServerCallContextController=void 0;class ServerCallContextController{constructor(r,i,s,a,l={code:"OK",detail:""}){this._cancelled=false;this._listeners=[];this.method=r;this.headers=i;this.deadline=s;this.trailers={};this._sendRH=a;this.status=l}notifyCancelled(){if(!this._cancelled){this._cancelled=true;for(let r of this._listeners){r()}}}sendResponseHeaders(r){this._sendRH(r)}get cancelled(){return this._cancelled}onCancel(r){const i=this._listeners;i.push(r);return()=>{let s=i.indexOf(r);if(s>=0)i.splice(s,1)}}}i.ServerCallContextController=ServerCallContextController},39185:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.ServerStreamingCall=void 0;class ServerStreamingCall{constructor(r,i,s,a,l,c,d){this.method=r;this.requestHeaders=i;this.request=s;this.headers=a;this.responses=l;this.status=c;this.trailers=d}then(r,i){return this.promiseFinished().then((i=>r?Promise.resolve(r(i)):i),(r=>i?Promise.resolve(i(r)):Promise.reject(r)))}promiseFinished(){return s(this,void 0,void 0,(function*(){let[r,i,s]=yield Promise.all([this.headers,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,request:this.request,headers:r,status:i,trailers:s}}))}}i.ServerStreamingCall=ServerStreamingCall},23470:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ServiceType=void 0;const a=s(95420);class ServiceType{constructor(r,i,s){this.typeName=r;this.methods=i.map((r=>a.normalizeMethodInfo(r,this)));this.options=s!==null&&s!==void 0?s:{}}}i.ServiceType=ServiceType},10616:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.TestTransport=void 0;const l=s(62751);const c=s(4800);const d=s(13612);const p=s(3640);const A=s(42046);const u=s(39185);const h=s(23455);const g=s(22466);class TestTransport{constructor(r){this.suppressUncaughtRejections=true;this.headerDelay=10;this.responseDelay=50;this.betweenResponseDelay=10;this.afterResponseDelay=10;this.data=r!==null&&r!==void 0?r:{}}get sentMessages(){if(this.lastInput instanceof TestInputStream){return this.lastInput.sent}else if(typeof this.lastInput=="object"){return[this.lastInput.single]}return[]}get sendComplete(){if(this.lastInput instanceof TestInputStream){return this.lastInput.completed}else if(typeof this.lastInput=="object"){return true}return false}promiseHeaders(){var r;const i=(r=this.data.headers)!==null&&r!==void 0?r:TestTransport.defaultHeaders;return i instanceof l.RpcError?Promise.reject(i):Promise.resolve(i)}promiseSingleResponse(r){if(this.data.response instanceof l.RpcError){return Promise.reject(this.data.response)}let i;if(Array.isArray(this.data.response)){c.assert(this.data.response.length>0);i=this.data.response[0]}else if(this.data.response!==undefined){i=this.data.response}else{i=r.O.create()}c.assert(r.O.is(i));return Promise.resolve(i)}streamResponses(r,i,s){return a(this,void 0,void 0,(function*(){const a=[];if(this.data.response===undefined){a.push(r.O.create())}else if(Array.isArray(this.data.response)){for(let i of this.data.response){c.assert(r.O.is(i));a.push(i)}}else if(!(this.data.response instanceof l.RpcError)){c.assert(r.O.is(this.data.response));a.push(this.data.response)}try{yield delay(this.responseDelay,s)(undefined)}catch(r){i.notifyError(r);return}if(this.data.response instanceof l.RpcError){i.notifyError(this.data.response);return}for(let r of a){i.notifyMessage(r);try{yield delay(this.betweenResponseDelay,s)(undefined)}catch(r){i.notifyError(r);return}}if(this.data.status instanceof l.RpcError){i.notifyError(this.data.status);return}if(this.data.trailers instanceof l.RpcError){i.notifyError(this.data.trailers);return}i.notifyComplete()}))}promiseStatus(){var r;const i=(r=this.data.status)!==null&&r!==void 0?r:TestTransport.defaultStatus;return i instanceof l.RpcError?Promise.reject(i):Promise.resolve(i)}promiseTrailers(){var r;const i=(r=this.data.trailers)!==null&&r!==void 0?r:TestTransport.defaultTrailers;return i instanceof l.RpcError?Promise.reject(i):Promise.resolve(i)}maybeSuppressUncaught(...r){if(this.suppressUncaughtRejections){for(let i of r){i.catch((()=>{}))}}}mergeOptions(r){return p.mergeRpcOptions({},r)}unary(r,i,s){var a;const l=(a=s.meta)!==null&&a!==void 0?a:{},c=this.promiseHeaders().then(delay(this.headerDelay,s.abort)),d=c.catch((r=>{})).then(delay(this.responseDelay,s.abort)).then((i=>this.promiseSingleResponse(r))),p=d.catch((r=>{})).then(delay(this.afterResponseDelay,s.abort)).then((r=>this.promiseStatus())),u=d.catch((r=>{})).then(delay(this.afterResponseDelay,s.abort)).then((r=>this.promiseTrailers()));this.maybeSuppressUncaught(p,u);this.lastInput={single:i};return new A.UnaryCall(r,l,i,c,d,p,u)}serverStreaming(r,i,s){var a;const l=(a=s.meta)!==null&&a!==void 0?a:{},c=this.promiseHeaders().then(delay(this.headerDelay,s.abort)),p=new d.RpcOutputStreamController,A=c.then(delay(this.responseDelay,s.abort)).catch((()=>{})).then((()=>this.streamResponses(r,p,s.abort))).then(delay(this.afterResponseDelay,s.abort)),h=A.then((()=>this.promiseStatus())),g=A.then((()=>this.promiseTrailers()));this.maybeSuppressUncaught(h,g);this.lastInput={single:i};return new u.ServerStreamingCall(r,l,i,c,p,h,g)}clientStreaming(r,i){var s;const a=(s=i.meta)!==null&&s!==void 0?s:{},l=this.promiseHeaders().then(delay(this.headerDelay,i.abort)),c=l.catch((r=>{})).then(delay(this.responseDelay,i.abort)).then((i=>this.promiseSingleResponse(r))),d=c.catch((r=>{})).then(delay(this.afterResponseDelay,i.abort)).then((r=>this.promiseStatus())),p=c.catch((r=>{})).then(delay(this.afterResponseDelay,i.abort)).then((r=>this.promiseTrailers()));this.maybeSuppressUncaught(d,p);this.lastInput=new TestInputStream(this.data,i.abort);return new h.ClientStreamingCall(r,a,this.lastInput,l,c,d,p)}duplex(r,i){var s;const a=(s=i.meta)!==null&&s!==void 0?s:{},l=this.promiseHeaders().then(delay(this.headerDelay,i.abort)),c=new d.RpcOutputStreamController,p=l.then(delay(this.responseDelay,i.abort)).catch((()=>{})).then((()=>this.streamResponses(r,c,i.abort))).then(delay(this.afterResponseDelay,i.abort)),A=p.then((()=>this.promiseStatus())),u=p.then((()=>this.promiseTrailers()));this.maybeSuppressUncaught(A,u);this.lastInput=new TestInputStream(this.data,i.abort);return new g.DuplexStreamingCall(r,a,this.lastInput,l,c,A,u)}}i.TestTransport=TestTransport;TestTransport.defaultHeaders={responseHeader:"test"};TestTransport.defaultStatus={code:"OK",detail:"all good"};TestTransport.defaultTrailers={responseTrailer:"test"};function delay(r,i){return s=>new Promise(((a,c)=>{if(i===null||i===void 0?void 0:i.aborted){c(new l.RpcError("user cancel","CANCELLED"))}else{const d=setTimeout((()=>a(s)),r);if(i){i.addEventListener("abort",(r=>{clearTimeout(d);c(new l.RpcError("user cancel","CANCELLED"))}))}}}))}class TestInputStream{constructor(r,i){this._completed=false;this._sent=[];this.data=r;this.abort=i}get sent(){return this._sent}get completed(){return this._completed}send(r){if(this.data.inputMessage instanceof l.RpcError){return Promise.reject(this.data.inputMessage)}const i=this.data.inputMessage===undefined?10:this.data.inputMessage;return Promise.resolve(undefined).then((()=>{this._sent.push(r)})).then(delay(i,this.abort))}complete(){if(this.data.inputComplete instanceof l.RpcError){return Promise.reject(this.data.inputComplete)}const r=this.data.inputComplete===undefined?10:this.data.inputComplete;return Promise.resolve(undefined).then((()=>{this._completed=true})).then(delay(r,this.abort))}}},42046:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.UnaryCall=void 0;class UnaryCall{constructor(r,i,s,a,l,c,d){this.method=r;this.requestHeaders=i;this.request=s;this.headers=a;this.response=l;this.status=c;this.trailers=d}then(r,i){return this.promiseFinished().then((i=>r?Promise.resolve(r(i)):i),(r=>i?Promise.resolve(i(r)):Promise.reject(r)))}promiseFinished(){return s(this,void 0,void 0,(function*(){let[r,i,s,a]=yield Promise.all([this.headers,this.response,this.status,this.trailers]);return{method:this.method,requestHeaders:this.requestHeaders,request:this.request,headers:r,response:i,status:s,trailers:a}}))}}i.UnaryCall=UnaryCall},7954:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.assertFloat32=i.assertUInt32=i.assertInt32=i.assertNever=i.assert=void 0;function assert(r,i){if(!r){throw new Error(i)}}i.assert=assert;function assertNever(r,i){throw new Error(i!==null&&i!==void 0?i:"Unexpected object: "+r)}i.assertNever=assertNever;const s=34028234663852886e22,a=-34028234663852886e22,l=4294967295,c=2147483647,d=-2147483648;function assertInt32(r){if(typeof r!=="number")throw new Error("invalid int 32: "+typeof r);if(!Number.isInteger(r)||r>c||rl||r<0)throw new Error("invalid uint 32: "+r)}i.assertUInt32=assertUInt32;function assertFloat32(r){if(typeof r!=="number")throw new Error("invalid float 32: "+typeof r);if(!Number.isFinite(r))return;if(r>s||r{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.base64encode=i.base64decode=void 0;let s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");let a=[];for(let r=0;r>4;p=d;c=2;break;case 2:s[l++]=(p&15)<<4|(d&60)>>2;p=d;c=3;break;case 3:s[l++]=(p&3)<<6|d;c=0;break}}if(c==1)throw Error(`invalid base64 string.`);return s.subarray(0,l)}i.base64decode=base64decode;function base64encode(r){let i="",a=0,l,c=0;for(let d=0;d>2];c=(l&3)<<4;a=1;break;case 1:i+=s[c|l>>4];c=(l&15)<<2;a=2;break;case 2:i+=s[c|l>>6];i+=s[l&63];a=0;break}}if(a){i+=s[c];i+="=";if(a==1)i+="="}return i}i.base64encode=base64encode},29711:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.WireType=i.mergeBinaryOptions=i.UnknownFieldHandler=void 0;var s;(function(r){r.symbol=Symbol.for("protobuf-ts/unknown");r.onRead=(i,s,a,l,c)=>{let d=is(s)?s[r.symbol]:s[r.symbol]=[];d.push({no:a,wireType:l,data:c})};r.onWrite=(i,s,a)=>{for(let{no:i,wireType:l,data:c}of r.list(s))a.tag(i,l).raw(c)};r.list=(i,s)=>{if(is(i)){let a=i[r.symbol];return s?a.filter((r=>r.no==s)):a}return[]};r.last=(i,s)=>r.list(i,s).slice(-1)[0];const is=i=>i&&Array.isArray(i[r.symbol])})(s=i.UnknownFieldHandler||(i.UnknownFieldHandler={}));function mergeBinaryOptions(r,i){return Object.assign(Object.assign({},r),i)}i.mergeBinaryOptions=mergeBinaryOptions;var a;(function(r){r[r["Varint"]=0]="Varint";r[r["Bit64"]=1]="Bit64";r[r["LengthDelimited"]=2]="LengthDelimited";r[r["StartGroup"]=3]="StartGroup";r[r["EndGroup"]=4]="EndGroup";r[r["Bit32"]=5]="Bit32"})(a=i.WireType||(i.WireType={}))},95318:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.BinaryReader=i.binaryReadOptions=void 0;const a=s(29711);const l=s(50335);const c=s(79739);const d={readUnknownField:true,readerFactory:r=>new BinaryReader(r)};function binaryReadOptions(r){return r?Object.assign(Object.assign({},d),r):d}i.binaryReadOptions=binaryReadOptions;class BinaryReader{constructor(r,i){this.varint64=c.varint64read;this.uint32=c.varint32read;this.buf=r;this.len=r.length;this.pos=0;this.view=new DataView(r.buffer,r.byteOffset,r.byteLength);this.textDecoder=i!==null&&i!==void 0?i:new TextDecoder("utf-8",{fatal:true,ignoreBOM:true})}tag(){let r=this.uint32(),i=r>>>3,s=r&7;if(i<=0||s<0||s>5)throw new Error("illegal tag: field no "+i+" wire type "+s);return[i,s]}skip(r){let i=this.pos;switch(r){case a.WireType.Varint:while(this.buf[this.pos++]&128){}break;case a.WireType.Bit64:this.pos+=4;case a.WireType.Bit32:this.pos+=4;break;case a.WireType.LengthDelimited:let i=this.uint32();this.pos+=i;break;case a.WireType.StartGroup:let s;while((s=this.tag()[1])!==a.WireType.EndGroup){this.skip(s)}break;default:throw new Error("cant skip wire type "+r)}this.assertBounds();return this.buf.subarray(i,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return this.uint32()|0}sint32(){let r=this.uint32();return r>>>1^-(r&1)}int64(){return new l.PbLong(...this.varint64())}uint64(){return new l.PbULong(...this.varint64())}sint64(){let[r,i]=this.varint64();let s=-(r&1);r=(r>>>1|(i&1)<<31)^s;i=i>>>1^s;return new l.PbLong(r,i)}bool(){let[r,i]=this.varint64();return r!==0||i!==0}fixed32(){return this.view.getUint32((this.pos+=4)-4,true)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,true)}fixed64(){return new l.PbULong(this.sfixed32(),this.sfixed32())}sfixed64(){return new l.PbLong(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,true)}double(){return this.view.getFloat64((this.pos+=8)-8,true)}bytes(){let r=this.uint32();let i=this.pos;this.pos+=r;this.assertBounds();return this.buf.subarray(i,i+r)}string(){return this.textDecoder.decode(this.bytes())}}i.BinaryReader=BinaryReader},56161:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.BinaryWriter=i.binaryWriteOptions=void 0;const a=s(50335);const l=s(79739);const c=s(7954);const d={writeUnknownFields:true,writerFactory:()=>new BinaryWriter};function binaryWriteOptions(r){return r?Object.assign(Object.assign({},d),r):d}i.binaryWriteOptions=binaryWriteOptions;class BinaryWriter{constructor(r){this.stack=[];this.textEncoder=r!==null&&r!==void 0?r:new TextEncoder;this.chunks=[];this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let r=0;for(let i=0;i>>0)}raw(r){if(this.buf.length){this.chunks.push(new Uint8Array(this.buf));this.buf=[]}this.chunks.push(r);return this}uint32(r){c.assertUInt32(r);while(r>127){this.buf.push(r&127|128);r=r>>>7}this.buf.push(r);return this}int32(r){c.assertInt32(r);l.varint32write(r,this.buf);return this}bool(r){this.buf.push(r?1:0);return this}bytes(r){this.uint32(r.byteLength);return this.raw(r)}string(r){let i=this.textEncoder.encode(r);this.uint32(i.byteLength);return this.raw(i)}float(r){c.assertFloat32(r);let i=new Uint8Array(4);new DataView(i.buffer).setFloat32(0,r,true);return this.raw(i)}double(r){let i=new Uint8Array(8);new DataView(i.buffer).setFloat64(0,r,true);return this.raw(i)}fixed32(r){c.assertUInt32(r);let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,r,true);return this.raw(i)}sfixed32(r){c.assertInt32(r);let i=new Uint8Array(4);new DataView(i.buffer).setInt32(0,r,true);return this.raw(i)}sint32(r){c.assertInt32(r);r=(r<<1^r>>31)>>>0;l.varint32write(r,this.buf);return this}sfixed64(r){let i=new Uint8Array(8);let s=new DataView(i.buffer);let l=a.PbLong.from(r);s.setInt32(0,l.lo,true);s.setInt32(4,l.hi,true);return this.raw(i)}fixed64(r){let i=new Uint8Array(8);let s=new DataView(i.buffer);let l=a.PbULong.from(r);s.setInt32(0,l.lo,true);s.setInt32(4,l.hi,true);return this.raw(i)}int64(r){let i=a.PbLong.from(r);l.varint64write(i.lo,i.hi,this.buf);return this}sint64(r){let i=a.PbLong.from(r),s=i.hi>>31,c=i.lo<<1^s,d=(i.hi<<1|i.lo>>>31)^s;l.varint64write(c,d,this.buf);return this}uint64(r){let i=a.PbULong.from(r);l.varint64write(i.lo,i.hi,this.buf);return this}}i.BinaryWriter=BinaryWriter},57582:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.listEnumNumbers=i.listEnumNames=i.listEnumValues=i.isEnumObject=void 0;function isEnumObject(r){if(typeof r!="object"||r===null){return false}if(!r.hasOwnProperty(0)){return false}for(let i of Object.keys(r)){let s=parseInt(i);if(!Number.isNaN(s)){let i=r[s];if(i===undefined)return false;if(r[i]!==s)return false}else{let s=r[i];if(s===undefined)return false;if(typeof s!=="number")return false;if(r[s]===undefined)return false}}return true}i.isEnumObject=isEnumObject;function listEnumValues(r){if(!isEnumObject(r))throw new Error("not a typescript enum object");let i=[];for(let[s,a]of Object.entries(r))if(typeof a=="number")i.push({name:s,number:a});return i}i.listEnumValues=listEnumValues;function listEnumNames(r){return listEnumValues(r).map((r=>r.name))}i.listEnumNames=listEnumNames;function listEnumNumbers(r){return listEnumValues(r).map((r=>r.number)).filter(((r,i,s)=>s.indexOf(r)==i))}i.listEnumNumbers=listEnumNumbers},79739:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.varint32read=i.varint32write=i.int64toString=i.int64fromString=i.varint64write=i.varint64read=void 0;function varint64read(){let r=0;let i=0;for(let s=0;s<28;s+=7){let a=this.buf[this.pos++];r|=(a&127)<>4;if((s&128)==0){this.assertBounds();return[r,i]}for(let s=3;s<=31;s+=7){let a=this.buf[this.pos++];i|=(a&127)<>>a;const c=!(l>>>7==0&&i==0);const d=(c?l|128:l)&255;s.push(d);if(!c){return}}const a=r>>>28&15|(i&7)<<4;const l=!(i>>3==0);s.push((l?a|128:a)&255);if(!l){return}for(let r=3;r<31;r=r+7){const a=i>>>r;const l=!(a>>>7==0);const c=(l?a|128:a)&255;s.push(c);if(!l){return}}s.push(i>>>31&1)}i.varint64write=varint64write;const s=(1<<16)*(1<<16);function int64fromString(r){let i=r[0]=="-";if(i)r=r.slice(1);const a=1e6;let l=0;let c=0;function add1e6digit(i,d){const p=Number(r.slice(i,d));c*=a;l=l*a+p;if(l>=s){c=c+(l/s|0);l=l%s}}add1e6digit(-24,-18);add1e6digit(-18,-12);add1e6digit(-12,-6);add1e6digit(-6);return[i,l,c]}i.int64fromString=int64fromString;function int64toString(r,i){if(i>>>0<=2097151){return""+(s*i+(r>>>0))}let a=r&16777215;let l=(r>>>24|i<<8)>>>0&16777215;let c=i>>16&65535;let d=a+l*6777216+c*6710656;let p=l+c*8147497;let A=c*2;let u=1e7;if(d>=u){p+=Math.floor(d/u);d%=u}if(p>=u){A+=Math.floor(p/u);p%=u}function decimalFrom1e7(r,i){let s=r?String(r):"";if(i){return"0000000".slice(s.length)+s}return s}return decimalFrom1e7(A,0)+decimalFrom1e7(p,A)+decimalFrom1e7(d,1)}i.int64toString=int64toString;function varint32write(r,i){if(r>=0){while(r>127){i.push(r&127|128);r=r>>>7}i.push(r)}else{for(let s=0;s<9;s++){i.push(r&127|128);r=r>>7}i.push(1)}}i.varint32write=varint32write;function varint32read(){let r=this.buf[this.pos++];let i=r&127;if((r&128)==0){this.assertBounds();return i}r=this.buf[this.pos++];i|=(r&127)<<7;if((r&128)==0){this.assertBounds();return i}r=this.buf[this.pos++];i|=(r&127)<<14;if((r&128)==0){this.assertBounds();return i}r=this.buf[this.pos++];i|=(r&127)<<21;if((r&128)==0){this.assertBounds();return i}r=this.buf[this.pos++];i|=(r&15)<<28;for(let i=5;(r&128)!==0&&i<10;i++)r=this.buf[this.pos++];if((r&128)!=0)throw new Error("invalid varint");this.assertBounds();return i>>>0}i.varint32read=varint32read},4800:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(23519);Object.defineProperty(i,"typeofJsonValue",{enumerable:true,get:function(){return a.typeofJsonValue}});Object.defineProperty(i,"isJsonObject",{enumerable:true,get:function(){return a.isJsonObject}});var l=s(77089);Object.defineProperty(i,"base64decode",{enumerable:true,get:function(){return l.base64decode}});Object.defineProperty(i,"base64encode",{enumerable:true,get:function(){return l.base64encode}});var c=s(36397);Object.defineProperty(i,"utf8read",{enumerable:true,get:function(){return c.utf8read}});var d=s(29711);Object.defineProperty(i,"WireType",{enumerable:true,get:function(){return d.WireType}});Object.defineProperty(i,"mergeBinaryOptions",{enumerable:true,get:function(){return d.mergeBinaryOptions}});Object.defineProperty(i,"UnknownFieldHandler",{enumerable:true,get:function(){return d.UnknownFieldHandler}});var p=s(95318);Object.defineProperty(i,"BinaryReader",{enumerable:true,get:function(){return p.BinaryReader}});Object.defineProperty(i,"binaryReadOptions",{enumerable:true,get:function(){return p.binaryReadOptions}});var A=s(56161);Object.defineProperty(i,"BinaryWriter",{enumerable:true,get:function(){return A.BinaryWriter}});Object.defineProperty(i,"binaryWriteOptions",{enumerable:true,get:function(){return A.binaryWriteOptions}});var u=s(50335);Object.defineProperty(i,"PbLong",{enumerable:true,get:function(){return u.PbLong}});Object.defineProperty(i,"PbULong",{enumerable:true,get:function(){return u.PbULong}});var h=s(81967);Object.defineProperty(i,"jsonReadOptions",{enumerable:true,get:function(){return h.jsonReadOptions}});Object.defineProperty(i,"jsonWriteOptions",{enumerable:true,get:function(){return h.jsonWriteOptions}});Object.defineProperty(i,"mergeJsonOptions",{enumerable:true,get:function(){return h.mergeJsonOptions}});var g=s(18523);Object.defineProperty(i,"MESSAGE_TYPE",{enumerable:true,get:function(){return g.MESSAGE_TYPE}});var y=s(48806);Object.defineProperty(i,"MessageType",{enumerable:true,get:function(){return y.MessageType}});var b=s(66625);Object.defineProperty(i,"ScalarType",{enumerable:true,get:function(){return b.ScalarType}});Object.defineProperty(i,"LongType",{enumerable:true,get:function(){return b.LongType}});Object.defineProperty(i,"RepeatType",{enumerable:true,get:function(){return b.RepeatType}});Object.defineProperty(i,"normalizeFieldInfo",{enumerable:true,get:function(){return b.normalizeFieldInfo}});Object.defineProperty(i,"readFieldOptions",{enumerable:true,get:function(){return b.readFieldOptions}});Object.defineProperty(i,"readFieldOption",{enumerable:true,get:function(){return b.readFieldOption}});Object.defineProperty(i,"readMessageOption",{enumerable:true,get:function(){return b.readMessageOption}});var C=s(44678);Object.defineProperty(i,"ReflectionTypeCheck",{enumerable:true,get:function(){return C.ReflectionTypeCheck}});var B=s(31126);Object.defineProperty(i,"reflectionCreate",{enumerable:true,get:function(){return B.reflectionCreate}});var I=s(28412);Object.defineProperty(i,"reflectionScalarDefault",{enumerable:true,get:function(){return I.reflectionScalarDefault}});var w=s(3846);Object.defineProperty(i,"reflectionMergePartial",{enumerable:true,get:function(){return w.reflectionMergePartial}});var v=s(86251);Object.defineProperty(i,"reflectionEquals",{enumerable:true,get:function(){return v.reflectionEquals}});var S=s(22974);Object.defineProperty(i,"ReflectionBinaryReader",{enumerable:true,get:function(){return S.ReflectionBinaryReader}});var Q=s(30892);Object.defineProperty(i,"ReflectionBinaryWriter",{enumerable:true,get:function(){return Q.ReflectionBinaryWriter}});var N=s(44825);Object.defineProperty(i,"ReflectionJsonReader",{enumerable:true,get:function(){return N.ReflectionJsonReader}});var R=s(32015);Object.defineProperty(i,"ReflectionJsonWriter",{enumerable:true,get:function(){return R.ReflectionJsonWriter}});var k=s(51263);Object.defineProperty(i,"containsMessageType",{enumerable:true,get:function(){return k.containsMessageType}});var T=s(64478);Object.defineProperty(i,"isOneofGroup",{enumerable:true,get:function(){return T.isOneofGroup}});Object.defineProperty(i,"setOneofValue",{enumerable:true,get:function(){return T.setOneofValue}});Object.defineProperty(i,"getOneofValue",{enumerable:true,get:function(){return T.getOneofValue}});Object.defineProperty(i,"clearOneofValue",{enumerable:true,get:function(){return T.clearOneofValue}});Object.defineProperty(i,"getSelectedOneofValue",{enumerable:true,get:function(){return T.getSelectedOneofValue}});var _=s(57582);Object.defineProperty(i,"listEnumValues",{enumerable:true,get:function(){return _.listEnumValues}});Object.defineProperty(i,"listEnumNames",{enumerable:true,get:function(){return _.listEnumNames}});Object.defineProperty(i,"listEnumNumbers",{enumerable:true,get:function(){return _.listEnumNumbers}});Object.defineProperty(i,"isEnumObject",{enumerable:true,get:function(){return _.isEnumObject}});var x=s(4120);Object.defineProperty(i,"lowerCamelCase",{enumerable:true,get:function(){return x.lowerCamelCase}});var D=s(7954);Object.defineProperty(i,"assert",{enumerable:true,get:function(){return D.assert}});Object.defineProperty(i,"assertNever",{enumerable:true,get:function(){return D.assertNever}});Object.defineProperty(i,"assertInt32",{enumerable:true,get:function(){return D.assertInt32}});Object.defineProperty(i,"assertUInt32",{enumerable:true,get:function(){return D.assertUInt32}});Object.defineProperty(i,"assertFloat32",{enumerable:true,get:function(){return D.assertFloat32}})},81967:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.mergeJsonOptions=i.jsonWriteOptions=i.jsonReadOptions=void 0;const s={emitDefaultValues:false,enumAsInteger:false,useProtoFieldName:false,prettySpaces:0},a={ignoreUnknownFields:false};function jsonReadOptions(r){return r?Object.assign(Object.assign({},a),r):a}i.jsonReadOptions=jsonReadOptions;function jsonWriteOptions(r){return r?Object.assign(Object.assign({},s),r):s}i.jsonWriteOptions=jsonWriteOptions;function mergeJsonOptions(r,i){var s,a;let l=Object.assign(Object.assign({},r),i);l.typeRegistry=[...(s=r===null||r===void 0?void 0:r.typeRegistry)!==null&&s!==void 0?s:[],...(a=i===null||i===void 0?void 0:i.typeRegistry)!==null&&a!==void 0?a:[]];return l}i.mergeJsonOptions=mergeJsonOptions},23519:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isJsonObject=i.typeofJsonValue=void 0;function typeofJsonValue(r){let i=typeof r;if(i=="object"){if(Array.isArray(r))return"array";if(r===null)return"null"}return i}i.typeofJsonValue=typeofJsonValue;function isJsonObject(r){return r!==null&&typeof r=="object"&&!Array.isArray(r)}i.isJsonObject=isJsonObject},4120:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.lowerCamelCase=void 0;function lowerCamelCase(r){let i=false;const s=[];for(let a=0;a{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.MESSAGE_TYPE=void 0;i.MESSAGE_TYPE=Symbol.for("protobuf-ts/message-type")},48806:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.MessageType=void 0;const a=s(18523);const l=s(66625);const c=s(44678);const d=s(44825);const p=s(32015);const A=s(22974);const u=s(30892);const h=s(31126);const g=s(3846);const y=s(23519);const b=s(81967);const C=s(86251);const B=s(56161);const I=s(95318);const w=Object.getOwnPropertyDescriptors(Object.getPrototypeOf({}));class MessageType{constructor(r,i,s){this.defaultCheckDepth=16;this.typeName=r;this.fields=i.map(l.normalizeFieldInfo);this.options=s!==null&&s!==void 0?s:{};this.messagePrototype=Object.create(null,Object.assign(Object.assign({},w),{[a.MESSAGE_TYPE]:{value:this}}));this.refTypeCheck=new c.ReflectionTypeCheck(this);this.refJsonReader=new d.ReflectionJsonReader(this);this.refJsonWriter=new p.ReflectionJsonWriter(this);this.refBinReader=new A.ReflectionBinaryReader(this);this.refBinWriter=new u.ReflectionBinaryWriter(this)}create(r){let i=h.reflectionCreate(this);if(r!==undefined){g.reflectionMergePartial(this,i,r)}return i}clone(r){let i=this.create();g.reflectionMergePartial(this,i,r);return i}equals(r,i){return C.reflectionEquals(this,r,i)}is(r,i=this.defaultCheckDepth){return this.refTypeCheck.is(r,i,false)}isAssignable(r,i=this.defaultCheckDepth){return this.refTypeCheck.is(r,i,true)}mergePartial(r,i){g.reflectionMergePartial(this,r,i)}fromBinary(r,i){let s=I.binaryReadOptions(i);return this.internalBinaryRead(s.readerFactory(r),r.byteLength,s)}fromJson(r,i){return this.internalJsonRead(r,b.jsonReadOptions(i))}fromJsonString(r,i){let s=JSON.parse(r);return this.fromJson(s,i)}toJson(r,i){return this.internalJsonWrite(r,b.jsonWriteOptions(i))}toJsonString(r,i){var s;let a=this.toJson(r,i);return JSON.stringify(a,null,(s=i===null||i===void 0?void 0:i.prettySpaces)!==null&&s!==void 0?s:0)}toBinary(r,i){let s=B.binaryWriteOptions(i);return this.internalBinaryWrite(r,s.writerFactory(),s).finish()}internalJsonRead(r,i,s){if(r!==null&&typeof r=="object"&&!Array.isArray(r)){let a=s!==null&&s!==void 0?s:this.create();this.refJsonReader.read(r,a,i);return a}throw new Error(`Unable to parse message ${this.typeName} from JSON ${y.typeofJsonValue(r)}.`)}internalJsonWrite(r,i){return this.refJsonWriter.write(r,i)}internalBinaryWrite(r,i,s){this.refBinWriter.write(r,i,s);return i}internalBinaryRead(r,i,s,a){let l=a!==null&&a!==void 0?a:this.create();this.refBinReader.read(r,l,s,i);return l}}i.MessageType=MessageType},64478:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getSelectedOneofValue=i.clearOneofValue=i.setUnknownOneofValue=i.setOneofValue=i.getOneofValue=i.isOneofGroup=void 0;function isOneofGroup(r){if(typeof r!="object"||r===null||!r.hasOwnProperty("oneofKind")){return false}switch(typeof r.oneofKind){case"string":if(r[r.oneofKind]===undefined)return false;return Object.keys(r).length==2;case"undefined":return Object.keys(r).length==1;default:return false}}i.isOneofGroup=isOneofGroup;function getOneofValue(r,i){return r[i]}i.getOneofValue=getOneofValue;function setOneofValue(r,i,s){if(r.oneofKind!==undefined){delete r[r.oneofKind]}r.oneofKind=i;if(s!==undefined){r[i]=s}}i.setOneofValue=setOneofValue;function setUnknownOneofValue(r,i,s){if(r.oneofKind!==undefined){delete r[r.oneofKind]}r.oneofKind=i;if(s!==undefined&&i!==undefined){r[i]=s}}i.setUnknownOneofValue=setUnknownOneofValue;function clearOneofValue(r){if(r.oneofKind!==undefined){delete r[r.oneofKind]}r.oneofKind=undefined}i.clearOneofValue=clearOneofValue;function getSelectedOneofValue(r){if(r.oneofKind===undefined){return undefined}return r[r.oneofKind]}i.getSelectedOneofValue=getSelectedOneofValue},50335:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.PbLong=i.PbULong=i.detectBi=void 0;const a=s(79739);let l;function detectBi(){const r=new DataView(new ArrayBuffer(8));const i=globalThis.BigInt!==undefined&&typeof r.getBigInt64==="function"&&typeof r.getBigUint64==="function"&&typeof r.setBigInt64==="function"&&typeof r.setBigUint64==="function";l=i?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:r}:undefined}i.detectBi=detectBi;detectBi();function assertBi(r){if(!r)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}const c=/^-?[0-9]+$/;const d=4294967296;const p=2147483648;class SharedPbLong{constructor(r,i){this.lo=r|0;this.hi=i|0}isZero(){return this.lo==0&&this.hi==0}toNumber(){let r=this.hi*d+(this.lo>>>0);if(!Number.isSafeInteger(r))throw new Error("cannot convert to safe number");return r}}class PbULong extends SharedPbLong{static from(r){if(l)switch(typeof r){case"string":if(r=="0")return this.ZERO;if(r=="")throw new Error("string is no integer");r=l.C(r);case"number":if(r===0)return this.ZERO;r=l.C(r);case"bigint":if(!r)return this.ZERO;if(rl.UMAX)throw new Error("ulong too large");l.V.setBigUint64(0,r,true);return new PbULong(l.V.getInt32(0,true),l.V.getInt32(4,true))}else switch(typeof r){case"string":if(r=="0")return this.ZERO;r=r.trim();if(!c.test(r))throw new Error("string is no integer");let[i,s,l]=a.int64fromString(r);if(i)throw new Error("signed value for ulong");return new PbULong(s,l);case"number":if(r==0)return this.ZERO;if(!Number.isSafeInteger(r))throw new Error("number is no integer");if(r<0)throw new Error("signed value for ulong");return new PbULong(r,r/d)}throw new Error("unknown value "+typeof r)}toString(){return l?this.toBigInt().toString():a.int64toString(this.lo,this.hi)}toBigInt(){assertBi(l);l.V.setInt32(0,this.lo,true);l.V.setInt32(4,this.hi,true);return l.V.getBigUint64(0,true)}}i.PbULong=PbULong;PbULong.ZERO=new PbULong(0,0);class PbLong extends SharedPbLong{static from(r){if(l)switch(typeof r){case"string":if(r=="0")return this.ZERO;if(r=="")throw new Error("string is no integer");r=l.C(r);case"number":if(r===0)return this.ZERO;r=l.C(r);case"bigint":if(!r)return this.ZERO;if(rl.MAX)throw new Error("signed long too large");l.V.setBigInt64(0,r,true);return new PbLong(l.V.getInt32(0,true),l.V.getInt32(4,true))}else switch(typeof r){case"string":if(r=="0")return this.ZERO;r=r.trim();if(!c.test(r))throw new Error("string is no integer");let[i,s,l]=a.int64fromString(r);if(i){if(l>p||l==p&&s!=0)throw new Error("signed long too small")}else if(l>=p)throw new Error("signed long too large");let A=new PbLong(s,l);return i?A.negate():A;case"number":if(r==0)return this.ZERO;if(!Number.isSafeInteger(r))throw new Error("number is no integer");return r>0?new PbLong(r,r/d):new PbLong(-r,-r/d).negate()}throw new Error("unknown value "+typeof r)}isNegative(){return(this.hi&p)!==0}negate(){let r=~this.hi,i=this.lo;if(i)i=~i+1;else r+=1;return new PbLong(i,r)}toString(){if(l)return this.toBigInt().toString();if(this.isNegative()){let r=this.negate();return"-"+a.int64toString(r.lo,r.hi)}return a.int64toString(this.lo,this.hi)}toBigInt(){assertBi(l);l.V.setInt32(0,this.lo,true);l.V.setInt32(4,this.hi,true);return l.V.getBigInt64(0,true)}}i.PbLong=PbLong;PbLong.ZERO=new PbLong(0,0)},36397:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.utf8read=void 0;const fromCharCodes=r=>String.fromCharCode.apply(String,r);function utf8read(r){if(r.length<1)return"";let i=0,s=[],a=[],l=0,c;let d=r.length;while(i191&&c<224)a[l++]=(c&31)<<6|r[i++]&63;else if(c>239&&c<365){c=((c&7)<<18|(r[i++]&63)<<12|(r[i++]&63)<<6|r[i++]&63)-65536;a[l++]=55296+(c>>10);a[l++]=56320+(c&1023)}else a[l++]=(c&15)<<12|(r[i++]&63)<<6|r[i++]&63;if(l>8191){s.push(fromCharCodes(a));l=0}}if(s.length){if(l)s.push(fromCharCodes(a.slice(0,l)));return s.join("")}return fromCharCodes(a.slice(0,l))}i.utf8read=utf8read},22974:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ReflectionBinaryReader=void 0;const a=s(29711);const l=s(66625);const c=s(8621);const d=s(28412);class ReflectionBinaryReader{constructor(r){this.info=r}prepare(){var r;if(!this.fieldNoToField){const i=(r=this.info.fields)!==null&&r!==void 0?r:[];this.fieldNoToField=new Map(i.map((r=>[r.no,r])))}}read(r,i,s,c){this.prepare();const d=c===undefined?r.len:r.pos+c;while(r.pos{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ReflectionBinaryWriter=void 0;const a=s(29711);const l=s(66625);const c=s(7954);const d=s(50335);class ReflectionBinaryWriter{constructor(r){this.info=r}prepare(){if(!this.fields){const r=this.info.fields?this.info.fields.concat():[];this.fields=r.sort(((r,i)=>r.no-i.no))}}write(r,i,s){this.prepare();for(const a of this.fields){let d,p,A=a.repeat,u=a.localName;if(a.oneof){const i=r[a.oneof];if(i.oneofKind!==u)continue;d=i[u];p=true}else{d=r[u];p=false}switch(a.kind){case"scalar":case"enum":let r=a.kind=="enum"?l.ScalarType.INT32:a.T;if(A){c.assert(Array.isArray(d));if(A==l.RepeatType.PACKED)this.packed(i,r,a.no,d);else for(const s of d)this.scalar(i,r,a.no,s,true)}else if(d===undefined)c.assert(a.opt);else this.scalar(i,r,a.no,d,p||a.opt);break;case"message":if(A){c.assert(Array.isArray(d));for(const r of d)this.message(i,s,a.T(),a.no,r)}else{this.message(i,s,a.T(),a.no,d)}break;case"map":c.assert(typeof d=="object"&&d!==null);for(const[r,l]of Object.entries(d))this.mapEntry(i,s,a,r,l);break}}let d=s.writeUnknownFields;if(d!==false)(d===true?a.UnknownFieldHandler.onWrite:d)(this.info.typeName,r,i)}mapEntry(r,i,s,d,p){r.tag(s.no,a.WireType.LengthDelimited);r.fork();let A=d;switch(s.K){case l.ScalarType.INT32:case l.ScalarType.FIXED32:case l.ScalarType.UINT32:case l.ScalarType.SFIXED32:case l.ScalarType.SINT32:A=Number.parseInt(d);break;case l.ScalarType.BOOL:c.assert(d=="true"||d=="false");A=d=="true";break}this.scalar(r,s.K,1,A,true);switch(s.V.kind){case"scalar":this.scalar(r,s.V.T,2,p,true);break;case"enum":this.scalar(r,l.ScalarType.INT32,2,p,true);break;case"message":this.message(r,i,s.V.T(),2,p);break}r.join()}message(r,i,s,l,c){if(c===undefined)return;s.internalBinaryWrite(c,r.tag(l,a.WireType.LengthDelimited).fork(),i);r.join()}scalar(r,i,s,a,l){let[c,d,p]=this.scalarInfo(i,a);if(!p||l){r.tag(s,c);r[d](a)}}packed(r,i,s,d){if(!d.length)return;c.assert(i!==l.ScalarType.BYTES&&i!==l.ScalarType.STRING);r.tag(s,a.WireType.LengthDelimited);r.fork();let[,p]=this.scalarInfo(i);for(let i=0;i{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.containsMessageType=void 0;const a=s(18523);function containsMessageType(r){return r[a.MESSAGE_TYPE]!=null}i.containsMessageType=containsMessageType},31126:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.reflectionCreate=void 0;const a=s(28412);const l=s(18523);function reflectionCreate(r){const i=r.messagePrototype?Object.create(r.messagePrototype):Object.defineProperty({},l.MESSAGE_TYPE,{value:r});for(let s of r.fields){let r=s.localName;if(s.opt)continue;if(s.oneof)i[s.oneof]={oneofKind:undefined};else if(s.repeat)i[r]=[];else switch(s.kind){case"scalar":i[r]=a.reflectionScalarDefault(s.T,s.L);break;case"enum":i[r]=0;break;case"map":i[r]={};break}}return i}i.reflectionCreate=reflectionCreate},86251:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.reflectionEquals=void 0;const a=s(66625);function reflectionEquals(r,i,s){if(i===s)return true;if(!i||!s)return false;for(let c of r.fields){let r=c.localName;let d=c.oneof?i[c.oneof][r]:i[r];let p=c.oneof?s[c.oneof][r]:s[r];switch(c.kind){case"enum":case"scalar":let r=c.kind=="enum"?a.ScalarType.INT32:c.T;if(!(c.repeat?repeatedPrimitiveEq(r,d,p):primitiveEq(r,d,p)))return false;break;case"map":if(!(c.V.kind=="message"?repeatedMsgEq(c.V.T(),l(d),l(p)):repeatedPrimitiveEq(c.V.kind=="enum"?a.ScalarType.INT32:c.V.T,l(d),l(p))))return false;break;case"message":let i=c.T();if(!(c.repeat?repeatedMsgEq(i,d,p):i.equals(d,p)))return false;break}}return true}i.reflectionEquals=reflectionEquals;const l=Object.values;function primitiveEq(r,i,s){if(i===s)return true;if(r!==a.ScalarType.BYTES)return false;let l=i;let c=s;if(l.length!==c.length)return false;for(let r=0;r{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.readMessageOption=i.readFieldOption=i.readFieldOptions=i.normalizeFieldInfo=i.RepeatType=i.LongType=i.ScalarType=void 0;const a=s(4120);var l;(function(r){r[r["DOUBLE"]=1]="DOUBLE";r[r["FLOAT"]=2]="FLOAT";r[r["INT64"]=3]="INT64";r[r["UINT64"]=4]="UINT64";r[r["INT32"]=5]="INT32";r[r["FIXED64"]=6]="FIXED64";r[r["FIXED32"]=7]="FIXED32";r[r["BOOL"]=8]="BOOL";r[r["STRING"]=9]="STRING";r[r["BYTES"]=12]="BYTES";r[r["UINT32"]=13]="UINT32";r[r["SFIXED32"]=15]="SFIXED32";r[r["SFIXED64"]=16]="SFIXED64";r[r["SINT32"]=17]="SINT32";r[r["SINT64"]=18]="SINT64"})(l=i.ScalarType||(i.ScalarType={}));var c;(function(r){r[r["BIGINT"]=0]="BIGINT";r[r["STRING"]=1]="STRING";r[r["NUMBER"]=2]="NUMBER"})(c=i.LongType||(i.LongType={}));var d;(function(r){r[r["NO"]=0]="NO";r[r["PACKED"]=1]="PACKED";r[r["UNPACKED"]=2]="UNPACKED"})(d=i.RepeatType||(i.RepeatType={}));function normalizeFieldInfo(r){var i,s,l,c;r.localName=(i=r.localName)!==null&&i!==void 0?i:a.lowerCamelCase(r.name);r.jsonName=(s=r.jsonName)!==null&&s!==void 0?s:a.lowerCamelCase(r.name);r.repeat=(l=r.repeat)!==null&&l!==void 0?l:d.NO;r.opt=(c=r.opt)!==null&&c!==void 0?c:r.repeat?false:r.oneof?false:r.kind=="message";return r}i.normalizeFieldInfo=normalizeFieldInfo;function readFieldOptions(r,i,s,a){var l;const c=(l=r.fields.find(((r,s)=>r.localName==i||s==i)))===null||l===void 0?void 0:l.options;return c&&c[s]?a.fromJson(c[s]):undefined}i.readFieldOptions=readFieldOptions;function readFieldOption(r,i,s,a){var l;const c=(l=r.fields.find(((r,s)=>r.localName==i||s==i)))===null||l===void 0?void 0:l.options;if(!c){return undefined}const d=c[s];if(d===undefined){return d}return a?a.fromJson(d):d}i.readFieldOption=readFieldOption;function readMessageOption(r,i,s){const a=r.options;const l=a[i];if(l===undefined){return l}return s?s.fromJson(l):l}i.readMessageOption=readMessageOption},44825:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ReflectionJsonReader=void 0;const a=s(23519);const l=s(77089);const c=s(66625);const d=s(50335);const p=s(7954);const A=s(8621);class ReflectionJsonReader{constructor(r){this.info=r}prepare(){var r;if(this.fMap===undefined){this.fMap={};const i=(r=this.info.fields)!==null&&r!==void 0?r:[];for(const r of i){this.fMap[r.name]=r;this.fMap[r.jsonName]=r;this.fMap[r.localName]=r}}}assert(r,i,s){if(!r){let r=a.typeofJsonValue(s);if(r=="number"||r=="boolean")r=s.toString();throw new Error(`Cannot parse JSON ${r} for ${this.info.typeName}#${i}`)}}read(r,i,s){this.prepare();const l=[];for(const[d,p]of Object.entries(r)){const r=this.fMap[d];if(!r){if(!s.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${d}`);continue}const A=r.localName;let u;if(r.oneof){if(p===null&&(r.kind!=="enum"||r.T()[0]!=="google.protobuf.NullValue")){continue}if(l.includes(r.oneof))throw new Error(`Multiple members of the oneof group "${r.oneof}" of ${this.info.typeName} are present in JSON.`);l.push(r.oneof);u=i[r.oneof]={oneofKind:A}}else{u=i}if(r.kind=="map"){if(p===null){continue}this.assert(a.isJsonObject(p),r.name,p);const i=u[A];for(const[a,l]of Object.entries(p)){this.assert(l!==null,r.name+" map value",null);let d;switch(r.V.kind){case"message":d=r.V.T().internalJsonRead(l,s);break;case"enum":d=this.enum(r.V.T(),l,r.name,s.ignoreUnknownFields);if(d===false)continue;break;case"scalar":d=this.scalar(l,r.V.T,r.V.L,r.name);break}this.assert(d!==undefined,r.name+" map value",l);let p=a;if(r.K==c.ScalarType.BOOL)p=p=="true"?true:p=="false"?false:p;p=this.scalar(p,r.K,c.LongType.STRING,r.name).toString();i[p]=d}}else if(r.repeat){if(p===null)continue;this.assert(Array.isArray(p),r.name,p);const i=u[A];for(const a of p){this.assert(a!==null,r.name,null);let l;switch(r.kind){case"message":l=r.T().internalJsonRead(a,s);break;case"enum":l=this.enum(r.T(),a,r.name,s.ignoreUnknownFields);if(l===false)continue;break;case"scalar":l=this.scalar(a,r.T,r.L,r.name);break}this.assert(l!==undefined,r.name,p);i.push(l)}}else{switch(r.kind){case"message":if(p===null&&r.T().typeName!="google.protobuf.Value"){this.assert(r.oneof===undefined,r.name+" (oneof member)",null);continue}u[A]=r.T().internalJsonRead(p,s,u[A]);break;case"enum":let i=this.enum(r.T(),p,r.name,s.ignoreUnknownFields);if(i===false)continue;u[A]=i;break;case"scalar":u[A]=this.scalar(p,r.T,r.L,r.name);break}}}}enum(r,i,s,a){if(r[0]=="google.protobuf.NullValue")p.assert(i===null||i==="NULL_VALUE",`Unable to parse field ${this.info.typeName}#${s}, enum ${r[0]} only accepts null.`);if(i===null)return 0;switch(typeof i){case"number":p.assert(Number.isInteger(i),`Unable to parse field ${this.info.typeName}#${s}, enum can only be integral number, got ${i}.`);return i;case"string":let l=i;if(r[2]&&i.substring(0,r[2].length)===r[2])l=i.substring(r[2].length);let c=r[1][l];if(typeof c==="undefined"&&a){return false}p.assert(typeof c=="number",`Unable to parse field ${this.info.typeName}#${s}, enum ${r[0]} has no value for "${i}".`);return c}p.assert(false,`Unable to parse field ${this.info.typeName}#${s}, cannot parse enum value from ${typeof i}".`)}scalar(r,i,s,a){let u;try{switch(i){case c.ScalarType.DOUBLE:case c.ScalarType.FLOAT:if(r===null)return 0;if(r==="NaN")return Number.NaN;if(r==="Infinity")return Number.POSITIVE_INFINITY;if(r==="-Infinity")return Number.NEGATIVE_INFINITY;if(r===""){u="empty string";break}if(typeof r=="string"&&r.trim().length!==r.length){u="extra whitespace";break}if(typeof r!="string"&&typeof r!="number"){break}let a=Number(r);if(Number.isNaN(a)){u="not a number";break}if(!Number.isFinite(a)){u="too large or small";break}if(i==c.ScalarType.FLOAT)p.assertFloat32(a);return a;case c.ScalarType.INT32:case c.ScalarType.FIXED32:case c.ScalarType.SFIXED32:case c.ScalarType.SINT32:case c.ScalarType.UINT32:if(r===null)return 0;let h;if(typeof r=="number")h=r;else if(r==="")u="empty string";else if(typeof r=="string"){if(r.trim().length!==r.length)u="extra whitespace";else h=Number(r)}if(h===undefined)break;if(i==c.ScalarType.UINT32)p.assertUInt32(h);else p.assertInt32(h);return h;case c.ScalarType.INT64:case c.ScalarType.SFIXED64:case c.ScalarType.SINT64:if(r===null)return A.reflectionLongConvert(d.PbLong.ZERO,s);if(typeof r!="number"&&typeof r!="string")break;return A.reflectionLongConvert(d.PbLong.from(r),s);case c.ScalarType.FIXED64:case c.ScalarType.UINT64:if(r===null)return A.reflectionLongConvert(d.PbULong.ZERO,s);if(typeof r!="number"&&typeof r!="string")break;return A.reflectionLongConvert(d.PbULong.from(r),s);case c.ScalarType.BOOL:if(r===null)return false;if(typeof r!=="boolean")break;return r;case c.ScalarType.STRING:if(r===null)return"";if(typeof r!=="string"){u="extra whitespace";break}try{encodeURIComponent(r)}catch(u){u="invalid UTF8";break}return r;case c.ScalarType.BYTES:if(r===null||r==="")return new Uint8Array(0);if(typeof r!=="string")break;return l.base64decode(r)}}catch(r){u=r.message}this.assert(false,a+(u?" - "+u:""),r)}}i.ReflectionJsonReader=ReflectionJsonReader},32015:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ReflectionJsonWriter=void 0;const a=s(77089);const l=s(50335);const c=s(66625);const d=s(7954);class ReflectionJsonWriter{constructor(r){var i;this.fields=(i=r.fields)!==null&&i!==void 0?i:[]}write(r,i){const s={},a=r;for(const r of this.fields){if(!r.oneof){let l=this.field(r,a[r.localName],i);if(l!==undefined)s[i.useProtoFieldName?r.name:r.jsonName]=l;continue}const l=a[r.oneof];if(l.oneofKind!==r.localName)continue;const c=r.kind=="scalar"||r.kind=="enum"?Object.assign(Object.assign({},i),{emitDefaultValues:true}):i;let p=this.field(r,l[r.localName],c);d.assert(p!==undefined);s[i.useProtoFieldName?r.name:r.jsonName]=p}return s}field(r,i,s){let a=undefined;if(r.kind=="map"){d.assert(typeof i=="object"&&i!==null);const l={};switch(r.V.kind){case"scalar":for(const[s,a]of Object.entries(i)){const i=this.scalar(r.V.T,a,r.name,false,true);d.assert(i!==undefined);l[s.toString()]=i}break;case"message":const a=r.V.T();for(const[c,p]of Object.entries(i)){const i=this.message(a,p,r.name,s);d.assert(i!==undefined);l[c.toString()]=i}break;case"enum":const c=r.V.T();for(const[a,p]of Object.entries(i)){d.assert(p===undefined||typeof p=="number");const i=this.enum(c,p,r.name,false,true,s.enumAsInteger);d.assert(i!==undefined);l[a.toString()]=i}break}if(s.emitDefaultValues||Object.keys(l).length>0)a=l}else if(r.repeat){d.assert(Array.isArray(i));const l=[];switch(r.kind){case"scalar":for(let s=0;s0||s.emitDefaultValues)a=l}else{switch(r.kind){case"scalar":a=this.scalar(r.T,i,r.name,r.opt,s.emitDefaultValues);break;case"enum":a=this.enum(r.T(),i,r.name,r.opt,s.emitDefaultValues,s.enumAsInteger);break;case"message":a=this.message(r.T(),i,r.name,s);break}}return a}enum(r,i,s,a,l,c){if(r[0]=="google.protobuf.NullValue")return!l&&!a?undefined:null;if(i===undefined){d.assert(a);return undefined}if(i===0&&!l&&!a)return undefined;d.assert(typeof i=="number");d.assert(Number.isInteger(i));if(c||!r[1].hasOwnProperty(i))return i;if(r[2])return r[2]+r[1][i];return r[1][i]}message(r,i,s,a){if(i===undefined)return a.emitDefaultValues?null:undefined;return r.internalJsonWrite(i,a)}scalar(r,i,s,p,A){if(i===undefined){d.assert(p);return undefined}const u=A||p;switch(r){case c.ScalarType.INT32:case c.ScalarType.SFIXED32:case c.ScalarType.SINT32:if(i===0)return u?0:undefined;d.assertInt32(i);return i;case c.ScalarType.FIXED32:case c.ScalarType.UINT32:if(i===0)return u?0:undefined;d.assertUInt32(i);return i;case c.ScalarType.FLOAT:d.assertFloat32(i);case c.ScalarType.DOUBLE:if(i===0)return u?0:undefined;d.assert(typeof i=="number");if(Number.isNaN(i))return"NaN";if(i===Number.POSITIVE_INFINITY)return"Infinity";if(i===Number.NEGATIVE_INFINITY)return"-Infinity";return i;case c.ScalarType.STRING:if(i==="")return u?"":undefined;d.assert(typeof i=="string");return i;case c.ScalarType.BOOL:if(i===false)return u?false:undefined;d.assert(typeof i=="boolean");return i;case c.ScalarType.UINT64:case c.ScalarType.FIXED64:d.assert(typeof i=="number"||typeof i=="string"||typeof i=="bigint");let r=l.PbULong.from(i);if(r.isZero()&&!u)return undefined;return r.toString();case c.ScalarType.INT64:case c.ScalarType.SFIXED64:case c.ScalarType.SINT64:d.assert(typeof i=="number"||typeof i=="string"||typeof i=="bigint");let s=l.PbLong.from(i);if(s.isZero()&&!u)return undefined;return s.toString();case c.ScalarType.BYTES:d.assert(i instanceof Uint8Array);if(!i.byteLength)return u?"":undefined;return a.base64encode(i)}}}i.ReflectionJsonWriter=ReflectionJsonWriter},8621:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.reflectionLongConvert=void 0;const a=s(66625);function reflectionLongConvert(r,i){switch(i){case a.LongType.BIGINT:return r.toBigInt();case a.LongType.NUMBER:return r.toNumber();default:return r.toString()}}i.reflectionLongConvert=reflectionLongConvert},3846:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.reflectionMergePartial=void 0;function reflectionMergePartial(r,i,s){let a,l=s,c;for(let s of r.fields){let r=s.localName;if(s.oneof){const d=l[s.oneof];if((d===null||d===void 0?void 0:d.oneofKind)==undefined){continue}a=d[r];c=i[s.oneof];c.oneofKind=d.oneofKind;if(a==undefined){delete c[r];continue}}else{a=l[r];c=i;if(a==undefined){continue}}if(s.repeat)c[r].length=a.length;switch(s.kind){case"scalar":case"enum":if(s.repeat)for(let i=0;i{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.reflectionScalarDefault=void 0;const a=s(66625);const l=s(8621);const c=s(50335);function reflectionScalarDefault(r,i=a.LongType.STRING){switch(r){case a.ScalarType.BOOL:return false;case a.ScalarType.UINT64:case a.ScalarType.FIXED64:return l.reflectionLongConvert(c.PbULong.ZERO,i);case a.ScalarType.INT64:case a.ScalarType.SFIXED64:case a.ScalarType.SINT64:return l.reflectionLongConvert(c.PbLong.ZERO,i);case a.ScalarType.DOUBLE:case a.ScalarType.FLOAT:return 0;case a.ScalarType.BYTES:return new Uint8Array(0);case a.ScalarType.STRING:return"";default:return 0}}i.reflectionScalarDefault=reflectionScalarDefault},44678:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ReflectionTypeCheck=void 0;const a=s(66625);const l=s(64478);class ReflectionTypeCheck{constructor(r){var i;this.fields=(i=r.fields)!==null&&i!==void 0?i:[]}prepare(){if(this.data)return;const r=[],i=[],s=[];for(let a of this.fields){if(a.oneof){if(!s.includes(a.oneof)){s.push(a.oneof);r.push(a.oneof);i.push(a.oneof)}}else{i.push(a.localName);switch(a.kind){case"scalar":case"enum":if(!a.opt||a.repeat)r.push(a.localName);break;case"message":if(a.repeat)r.push(a.localName);break;case"map":r.push(a.localName);break}}}this.data={req:r,known:i,oneofs:Object.values(s)}}is(r,i,s=false){if(i<0)return true;if(r===null||r===undefined||typeof r!="object")return false;this.prepare();let a=Object.keys(r),c=this.data;if(a.length!a.includes(r))))return false;if(!s){if(a.some((r=>!c.known.includes(r))))return false}if(i<1){return true}for(const a of c.oneofs){const c=r[a];if(!l.isOneofGroup(c))return false;if(c.oneofKind===undefined)continue;const d=this.fields.find((r=>r.localName===c.oneofKind));if(!d)return false;if(!this.field(c[c.oneofKind],d,s,i))return false}for(const a of this.fields){if(a.oneof!==undefined)continue;if(!this.field(r[a.localName],a,s,i))return false}return true}field(r,i,s,l){let c=i.repeat;switch(i.kind){case"scalar":if(r===undefined)return i.opt;if(c)return this.scalars(r,i.T,l,i.L);return this.scalar(r,i.T,i.L);case"enum":if(r===undefined)return i.opt;if(c)return this.scalars(r,a.ScalarType.INT32,l);return this.scalar(r,a.ScalarType.INT32);case"message":if(r===undefined)return true;if(c)return this.messages(r,i.T(),s,l);return this.message(r,i.T(),s,l);case"map":if(typeof r!="object"||r===null)return false;if(l<2)return true;if(!this.mapKeys(r,i.K,l))return false;switch(i.V.kind){case"scalar":return this.scalars(Object.values(r),i.V.T,l,i.V.L);case"enum":return this.scalars(Object.values(r),a.ScalarType.INT32,l);case"message":return this.messages(Object.values(r),i.V.T(),s,l)}break}return true}message(r,i,s,a){if(s){return i.isAssignable(r,a)}return i.is(r,a)}messages(r,i,s,a){if(!Array.isArray(r))return false;if(a<2)return true;if(s){for(let s=0;sparseInt(r))),i,s);case a.ScalarType.BOOL:return this.scalars(l.slice(0,s).map((r=>r=="true"?true:r=="false"?false:r)),i,s);default:return this.scalars(l,i,s,a.LongType.STRING)}}}i.ReflectionTypeCheck=ReflectionTypeCheck},7328:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});var a=s(12185);class AbortSignal extends a.EventTarget{constructor(){super();throw new TypeError("AbortSignal cannot be constructed directly")}get aborted(){const r=l.get(this);if(typeof r!=="boolean"){throw new TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?"null":typeof this}`)}return r}}a.defineEventAttribute(AbortSignal.prototype,"abort");function createAbortSignal(){const r=Object.create(AbortSignal.prototype);a.EventTarget.call(r);l.set(r,false);return r}function abortSignal(r){if(l.get(r)!==false){return}l.set(r,true);r.dispatchEvent({type:"abort"})}const l=new WeakMap;Object.defineProperties(AbortSignal.prototype,{aborted:{enumerable:true}});if(typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol"){Object.defineProperty(AbortSignal.prototype,Symbol.toStringTag,{configurable:true,value:"AbortSignal"})}class AbortController{constructor(){c.set(this,createAbortSignal())}get signal(){return getSignal(this)}abort(){abortSignal(getSignal(this))}}const c=new WeakMap;function getSignal(r){const i=c.get(r);if(i==null){throw new TypeError(`Expected 'this' to be an 'AbortController' object, but got ${r===null?"null":typeof r}`)}return i}Object.defineProperties(AbortController.prototype,{signal:{enumerable:true},abort:{enumerable:true}});if(typeof Symbol==="function"&&typeof Symbol.toStringTag==="symbol"){Object.defineProperty(AbortController.prototype,Symbol.toStringTag,{configurable:true,value:"AbortController"})}i.AbortController=AbortController;i.AbortSignal=AbortSignal;i["default"]=AbortController;r.exports=AbortController;r.exports.AbortController=r.exports["default"]=AbortController;r.exports.AbortSignal=AbortSignal},78212:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.req=i.json=i.toBuffer=void 0;const d=c(s(13685));const p=c(s(95687));async function toBuffer(r){let i=0;const s=[];for await(const a of r){i+=a.length;s.push(a)}return Buffer.concat(s,i)}i.toBuffer=toBuffer;async function json(r){const i=await toBuffer(r);const s=i.toString("utf8");try{return JSON.parse(s)}catch(r){const i=r;i.message+=` (input: ${s})`;throw i}}i.json=json;function req(r,i={}){const s=typeof r==="string"?r:r.href;const a=(s.startsWith("https:")?p:d).request(r,i);const l=new Promise(((r,i)=>{a.once("response",r).once("error",i).end()}));a.then=l.then.bind(l);return a}i.req=req},350:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__exportStar||function(r,i){for(var s in r)if(s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s))a(i,r,s)};Object.defineProperty(i,"__esModule",{value:true});i.Agent=void 0;const p=c(s(41808));const A=c(s(13685));const u=s(95687);d(s(78212),i);const h=Symbol("AgentBaseInternalState");class Agent extends A.Agent{constructor(r){super(r);this[h]={}}isSecureEndpoint(r){if(r){if(typeof r.secureEndpoint==="boolean"){return r.secureEndpoint}if(typeof r.protocol==="string"){return r.protocol==="https:"}}const{stack:i}=new Error;if(typeof i!=="string")return false;return i.split("\n").some((r=>r.indexOf("(https.js:")!==-1||r.indexOf("node:https:")!==-1))}incrementSockets(r){if(this.maxSockets===Infinity&&this.maxTotalSockets===Infinity){return null}if(!this.sockets[r]){this.sockets[r]=[]}const i=new p.Socket({writable:false});this.sockets[r].push(i);this.totalSocketCount++;return i}decrementSockets(r,i){if(!this.sockets[r]||i===null){return}const s=this.sockets[r];const a=s.indexOf(i);if(a!==-1){s.splice(a,1);this.totalSocketCount--;if(s.length===0){delete this.sockets[r]}}}getName(r){const i=typeof r.secureEndpoint==="boolean"?r.secureEndpoint:this.isSecureEndpoint(r);if(i){return u.Agent.prototype.getName.call(this,r)}return super.getName(r)}createSocket(r,i,s){const a={...i,secureEndpoint:this.isSecureEndpoint(i)};const l=this.getName(a);const c=this.incrementSockets(l);Promise.resolve().then((()=>this.connect(r,a))).then((d=>{this.decrementSockets(l,c);if(d instanceof A.Agent){return d.addRequest(r,a)}this[h].currentSocket=d;super.createSocket(r,i,s)}),(r=>{this.decrementSockets(l,c);s(r)}))}createConnection(){const r=this[h].currentSocket;this[h].currentSocket=undefined;if(!r){throw new Error("No socket was returned in the `connect()` function")}return r}get defaultPort(){return this[h].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(r){if(this[h]){this[h].defaultPort=r}}get protocol(){return this[h].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(r){if(this[h]){this[h].protocol=r}}}i.Agent=Agent},71610:(r,i,s)=>{var a=s(84523);var l=s(71017);var c=s(79698);var d=s(16879);var p=s(272);var A=s(22011);var u=s(6051);var h=r.exports={};var g=/[\/\\]/g;var processPatterns=function(r,i){var s=[];c(r).forEach((function(r){var a=r.indexOf("!")===0;if(a){r=r.slice(1)}var l=i(r);if(a){s=d(s,l)}else{s=p(s,l)}}));return s};h.exists=function(){var r=l.join.apply(l,arguments);return a.existsSync(r)};h.expand=function(...r){var i=A(r[0])?r.shift():{};var s=Array.isArray(r[0])?r[0]:r;if(s.length===0){return[]}var c=processPatterns(s,(function(r){return u.sync(r,i)}));if(i.filter){c=c.filter((function(r){r=l.join(i.cwd||"",r);try{if(typeof i.filter==="function"){return i.filter(r)}else{return a.statSync(r)[i.filter]()}}catch(r){return false}}))}return c};h.expandMapping=function(r,i,s){s=Object.assign({rename:function(r,i){return l.join(r||"",i)}},s);var a=[];var c={};h.expand(s,r).forEach((function(r){var d=r;if(s.flatten){d=l.basename(d)}if(s.ext){d=d.replace(/(\.[^\/]*)?$/,s.ext)}var p=s.rename(i,d,s);if(s.cwd){r=l.join(s.cwd,r)}p=p.replace(g,"/");r=r.replace(g,"/");if(c[p]){c[p].src.push(r)}else{a.push({src:[r],dest:p});c[p]=a[a.length-1]}}));return a};h.normalizeFilesArray=function(r){var i=[];r.forEach((function(r){var s;if("src"in r||"dest"in r){i.push(r)}}));if(i.length===0){return[]}i=_(i).chain().forEach((function(r){if(!("src"in r)||!r.src){return}if(Array.isArray(r.src)){r.src=c(r.src)}else{r.src=[r.src]}})).map((function(r){var i=Object.assign({},r);delete i.src;delete i.dest;if(r.expand){return h.expandMapping(r.src,r.dest,i).map((function(i){var s=Object.assign({},r);s.orig=Object.assign({},r);s.src=i.src;s.dest=i.dest;["expand","cwd","flatten","rename","ext"].forEach((function(r){delete s[r]}));return s}))}var s=Object.assign({},r);s.orig=Object.assign({},r);if("src"in s){Object.defineProperty(s,"src",{enumerable:true,get:function fn(){var s;if(!("result"in fn)){s=r.src;s=Array.isArray(s)?c(s):[s];fn.result=h.expand(i,s)}return fn.result}})}if("dest"in s){s.dest=r.dest}return s})).flatten().value();return i}},49199:(r,i,s)=>{var a=s(84523);var l=s(71017);var c=s(47296);var d=s(26149);var p=s(37321);var A=s(28802);var u=s(12781).Stream;var h=s(40247).PassThrough;var g=r.exports={};g.file=s(71610);g.collectStream=function(r,i){var s=[];var a=0;r.on("error",i);r.on("data",(function(r){s.push(r);a+=r.length}));r.on("end",(function(){var r=Buffer.alloc(a);var l=0;s.forEach((function(i){i.copy(r,l);l+=i.length}));i(null,r)}))};g.dateify=function(r){r=r||new Date;if(r instanceof Date){r=r}else if(typeof r==="string"){r=new Date(r)}else{r=new Date}return r};g.defaults=function(r,i,s){var a=arguments;a[0]=a[0]||{};return A(...a)};g.isStream=function(r){return c(r)};g.lazyReadStream=function(r){return new d.Readable((function(){return a.createReadStream(r)}))};g.normalizeInputSource=function(r){if(r===null){return Buffer.alloc(0)}else if(typeof r==="string"){return Buffer.from(r)}else if(g.isStream(r)){return r.pipe(new h)}return r};g.sanitizePath=function(r){return p(r,false).replace(/^\w+:/,"").replace(/^(\.\.\/|\/)+/,"")};g.trailingSlashIt=function(r){return r.slice(-1)!=="/"?r+"/":r};g.unixifyPath=function(r){return p(r,false).replace(/^\w+:/,"")};g.walkdir=function(r,i,s){var c=[];if(typeof i==="function"){s=i;i=r}a.readdir(r,(function(d,p){var A=0;var u;var h;if(d){return s(d)}(function next(){u=p[A++];if(!u){return s(null,c)}h=l.join(r,u);a.stat(h,(function(r,a){c.push({path:h,relative:l.relative(i,h).replace(/\\/g,"/"),stats:a});if(a&&a.isDirectory()){g.walkdir(h,i,(function(r,i){if(r){return s(r)}i.forEach((function(r){c.push(r)}));next()}))}else{next()}}))})()}))}},20153:(r,i,s)=>{ -/** - * Archiver Vending - * - * @ignore - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(96697);var l={};var vending=function(r,i){return vending.create(r,i)};vending.create=function(r,i){if(l[r]){var s=new a(r,i);s.setFormat(r);s.setModule(new l[r](i));return s}else{throw new Error("create("+r+"): format not registered")}};vending.registerFormat=function(r,i){if(l[r]){throw new Error("register("+r+"): format already registered")}if(typeof i!=="function"){throw new Error("register("+r+"): format module invalid")}if(typeof i.prototype.append!=="function"||typeof i.prototype.finalize!=="function"){throw new Error("register("+r+"): format module missing methods")}l[r]=i};vending.isRegisteredFormat=function(r){if(l[r]){return true}return false};vending.registerFormat("zip",s(13174));vending.registerFormat("tar",s(1135));vending.registerFormat("json",s(61586));r.exports=vending},96697:(r,i,s)=>{ -/** - * Archiver Core - * - * @ignore - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(57147);var l=s(7817);var c=s(76044);var d=s(71017);var p=s(49199);var A=s(73837).inherits;var u=s(9354);var h=s(40247).Transform;var g=process.platform==="win32";var Archiver=function(r,i){if(!(this instanceof Archiver)){return new Archiver(r,i)}if(typeof r!=="string"){i=r;r="zip"}i=this.options=p.defaults(i,{highWaterMark:1024*1024,statConcurrency:4});h.call(this,i);this._format=false;this._module=false;this._pending=0;this._pointer=0;this._entriesCount=0;this._entriesProcessedCount=0;this._fsEntriesTotalBytes=0;this._fsEntriesProcessedBytes=0;this._queue=c.queue(this._onQueueTask.bind(this),1);this._queue.drain(this._onQueueDrain.bind(this));this._statQueue=c.queue(this._onStatQueueTask.bind(this),i.statConcurrency);this._statQueue.drain(this._onQueueDrain.bind(this));this._state={aborted:false,finalize:false,finalizing:false,finalized:false,modulePiped:false};this._streams=[]};A(Archiver,h);Archiver.prototype._abort=function(){this._state.aborted=true;this._queue.kill();this._statQueue.kill();if(this._queue.idle()){this._shutdown()}};Archiver.prototype._append=function(r,i){i=i||{};var s={source:null,filepath:r};if(!i.name){i.name=r}i.sourcePath=r;s.data=i;this._entriesCount++;if(i.stats&&i.stats instanceof a.Stats){s=this._updateQueueTaskWithStats(s,i.stats);if(s){if(i.stats.size){this._fsEntriesTotalBytes+=i.stats.size}this._queue.push(s)}}else{this._statQueue.push(s)}};Archiver.prototype._finalize=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return}this._state.finalizing=true;this._moduleFinalize();this._state.finalizing=false;this._state.finalized=true};Archiver.prototype._maybeFinalize=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return false}if(this._state.finalize&&this._pending===0&&this._queue.idle()&&this._statQueue.idle()){this._finalize();return true}return false};Archiver.prototype._moduleAppend=function(r,i,s){if(this._state.aborted){s();return}this._module.append(r,i,function(r){this._task=null;if(this._state.aborted){this._shutdown();return}if(r){this.emit("error",r);setImmediate(s);return}this.emit("entry",i);this._entriesProcessedCount++;if(i.stats&&i.stats.size){this._fsEntriesProcessedBytes+=i.stats.size}this.emit("progress",{entries:{total:this._entriesCount,processed:this._entriesProcessedCount},fs:{totalBytes:this._fsEntriesTotalBytes,processedBytes:this._fsEntriesProcessedBytes}});setImmediate(s)}.bind(this))};Archiver.prototype._moduleFinalize=function(){if(typeof this._module.finalize==="function"){this._module.finalize()}else if(typeof this._module.end==="function"){this._module.end()}else{this.emit("error",new u("NOENDMETHOD"))}};Archiver.prototype._modulePipe=function(){this._module.on("error",this._onModuleError.bind(this));this._module.pipe(this);this._state.modulePiped=true};Archiver.prototype._moduleSupports=function(r){if(!this._module.supports||!this._module.supports[r]){return false}return this._module.supports[r]};Archiver.prototype._moduleUnpipe=function(){this._module.unpipe(this);this._state.modulePiped=false};Archiver.prototype._normalizeEntryData=function(r,i){r=p.defaults(r,{type:"file",name:null,date:null,mode:null,prefix:null,sourcePath:null,stats:false});if(i&&r.stats===false){r.stats=i}var s=r.type==="directory";if(r.name){if(typeof r.prefix==="string"&&""!==r.prefix){r.name=r.prefix+"/"+r.name;r.prefix=null}r.name=p.sanitizePath(r.name);if(r.type!=="symlink"&&r.name.slice(-1)==="/"){s=true;r.type="directory"}else if(s){r.name+="/"}}if(typeof r.mode==="number"){if(g){r.mode&=511}else{r.mode&=4095}}else if(r.stats&&r.mode===null){if(g){r.mode=r.stats.mode&511}else{r.mode=r.stats.mode&4095}if(g&&s){r.mode=493}}else if(r.mode===null){r.mode=s?493:420}if(r.stats&&r.date===null){r.date=r.stats.mtime}else{r.date=p.dateify(r.date)}return r};Archiver.prototype._onModuleError=function(r){this.emit("error",r)};Archiver.prototype._onQueueDrain=function(){if(this._state.finalizing||this._state.finalized||this._state.aborted){return}if(this._state.finalize&&this._pending===0&&this._queue.idle()&&this._statQueue.idle()){this._finalize()}};Archiver.prototype._onQueueTask=function(r,i){var fullCallback=()=>{if(r.data.callback){r.data.callback()}i()};if(this._state.finalizing||this._state.finalized||this._state.aborted){fullCallback();return}this._task=r;this._moduleAppend(r.source,r.data,fullCallback)};Archiver.prototype._onStatQueueTask=function(r,i){if(this._state.finalizing||this._state.finalized||this._state.aborted){i();return}a.lstat(r.filepath,function(s,a){if(this._state.aborted){setImmediate(i);return}if(s){this._entriesCount--;this.emit("warning",s);setImmediate(i);return}r=this._updateQueueTaskWithStats(r,a);if(r){if(a.size){this._fsEntriesTotalBytes+=a.size}this._queue.push(r)}setImmediate(i)}.bind(this))};Archiver.prototype._shutdown=function(){this._moduleUnpipe();this.end()};Archiver.prototype._transform=function(r,i,s){if(r){this._pointer+=r.length}s(null,r)};Archiver.prototype._updateQueueTaskWithStats=function(r,i){if(i.isFile()){r.data.type="file";r.data.sourceType="stream";r.source=p.lazyReadStream(r.filepath)}else if(i.isDirectory()&&this._moduleSupports("directory")){r.data.name=p.trailingSlashIt(r.data.name);r.data.type="directory";r.data.sourcePath=p.trailingSlashIt(r.filepath);r.data.sourceType="buffer";r.source=Buffer.concat([])}else if(i.isSymbolicLink()&&this._moduleSupports("symlink")){var s=a.readlinkSync(r.filepath);var l=d.dirname(r.filepath);r.data.type="symlink";r.data.linkname=d.relative(l,d.resolve(l,s));r.data.sourceType="buffer";r.source=Buffer.concat([])}else{if(i.isDirectory()){this.emit("warning",new u("DIRECTORYNOTSUPPORTED",r.data))}else if(i.isSymbolicLink()){this.emit("warning",new u("SYMLINKNOTSUPPORTED",r.data))}else{this.emit("warning",new u("ENTRYNOTSUPPORTED",r.data))}return null}r.data=this._normalizeEntryData(r.data,i);return r};Archiver.prototype.abort=function(){if(this._state.aborted||this._state.finalized){return this}this._abort();return this};Archiver.prototype.append=function(r,i){if(this._state.finalize||this._state.aborted){this.emit("error",new u("QUEUECLOSED"));return this}i=this._normalizeEntryData(i);if(typeof i.name!=="string"||i.name.length===0){this.emit("error",new u("ENTRYNAMEREQUIRED"));return this}if(i.type==="directory"&&!this._moduleSupports("directory")){this.emit("error",new u("DIRECTORYNOTSUPPORTED",{name:i.name}));return this}r=p.normalizeInputSource(r);if(Buffer.isBuffer(r)){i.sourceType="buffer"}else if(p.isStream(r)){i.sourceType="stream"}else{this.emit("error",new u("INPUTSTEAMBUFFERREQUIRED",{name:i.name}));return this}this._entriesCount++;this._queue.push({data:i,source:r});return this};Archiver.prototype.directory=function(r,i,s){if(this._state.finalize||this._state.aborted){this.emit("error",new u("QUEUECLOSED"));return this}if(typeof r!=="string"||r.length===0){this.emit("error",new u("DIRECTORYDIRPATHREQUIRED"));return this}this._pending++;if(i===false){i=""}else if(typeof i!=="string"){i=r}var a=false;if(typeof s==="function"){a=s;s={}}else if(typeof s!=="object"){s={}}var c={stat:true,dot:true};function onGlobEnd(){this._pending--;this._maybeFinalize()}function onGlobError(r){this.emit("error",r)}function onGlobMatch(l){d.pause();var c=false;var p=Object.assign({},s);p.name=l.relative;p.prefix=i;p.stats=l.stat;p.callback=d.resume.bind(d);try{if(a){p=a(p);if(p===false){c=true}else if(typeof p!=="object"){throw new u("DIRECTORYFUNCTIONINVALIDDATA",{dirpath:r})}}}catch(r){this.emit("error",r);return}if(c){d.resume();return}this._append(l.absolute,p)}var d=l(r,c);d.on("error",onGlobError.bind(this));d.on("match",onGlobMatch.bind(this));d.on("end",onGlobEnd.bind(this));return this};Archiver.prototype.file=function(r,i){if(this._state.finalize||this._state.aborted){this.emit("error",new u("QUEUECLOSED"));return this}if(typeof r!=="string"||r.length===0){this.emit("error",new u("FILEFILEPATHREQUIRED"));return this}this._append(r,i);return this};Archiver.prototype.glob=function(r,i,s){this._pending++;i=p.defaults(i,{stat:true,pattern:r});function onGlobEnd(){this._pending--;this._maybeFinalize()}function onGlobError(r){this.emit("error",r)}function onGlobMatch(r){a.pause();var i=Object.assign({},s);i.callback=a.resume.bind(a);i.stats=r.stat;i.name=r.relative;this._append(r.absolute,i)}var a=l(i.cwd||".",i);a.on("error",onGlobError.bind(this));a.on("match",onGlobMatch.bind(this));a.on("end",onGlobEnd.bind(this));return this};Archiver.prototype.finalize=function(){if(this._state.aborted){var r=new u("ABORTED");this.emit("error",r);return Promise.reject(r)}if(this._state.finalize){var i=new u("FINALIZING");this.emit("error",i);return Promise.reject(i)}this._state.finalize=true;if(this._pending===0&&this._queue.idle()&&this._statQueue.idle()){this._finalize()}var s=this;return new Promise((function(r,i){var a;s._module.on("end",(function(){if(!a){r()}}));s._module.on("error",(function(r){a=true;i(r)}))}))};Archiver.prototype.setFormat=function(r){if(this._format){this.emit("error",new u("FORMATSET"));return this}this._format=r;return this};Archiver.prototype.setModule=function(r){if(this._state.aborted){this.emit("error",new u("ABORTED"));return this}if(this._state.module){this.emit("error",new u("MODULESET"));return this}this._module=r;this._modulePipe();return this};Archiver.prototype.symlink=function(r,i,s){if(this._state.finalize||this._state.aborted){this.emit("error",new u("QUEUECLOSED"));return this}if(typeof r!=="string"||r.length===0){this.emit("error",new u("SYMLINKFILEPATHREQUIRED"));return this}if(typeof i!=="string"||i.length===0){this.emit("error",new u("SYMLINKTARGETREQUIRED",{filepath:r}));return this}if(!this._moduleSupports("symlink")){this.emit("error",new u("SYMLINKNOTSUPPORTED",{filepath:r}));return this}var a={};a.type="symlink";a.name=r.replace(/\\/g,"/");a.linkname=i.replace(/\\/g,"/");a.sourceType="buffer";if(typeof s==="number"){a.mode=s}this._entriesCount++;this._queue.push({data:a,source:Buffer.concat([])});return this};Archiver.prototype.pointer=function(){return this._pointer};Archiver.prototype.use=function(r){this._streams.push(r);return this};r.exports=Archiver},9354:(r,i,s)=>{ -/** - * Archiver Core - * - * @ignore - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(73837);const l={ABORTED:"archive was aborted",DIRECTORYDIRPATHREQUIRED:"diretory dirpath argument must be a non-empty string value",DIRECTORYFUNCTIONINVALIDDATA:"invalid data returned by directory custom data function",ENTRYNAMEREQUIRED:"entry name must be a non-empty string value",FILEFILEPATHREQUIRED:"file filepath argument must be a non-empty string value",FINALIZING:"archive already finalizing",QUEUECLOSED:"queue closed",NOENDMETHOD:"no suitable finalize/end method defined by module",DIRECTORYNOTSUPPORTED:"support for directory entries not defined by module",FORMATSET:"archive format already set",INPUTSTEAMBUFFERREQUIRED:"input source must be valid Stream or Buffer instance",MODULESET:"module already set",SYMLINKNOTSUPPORTED:"support for symlink entries not defined by module",SYMLINKFILEPATHREQUIRED:"symlink filepath argument must be a non-empty string value",SYMLINKTARGETREQUIRED:"symlink target argument must be a non-empty string value",ENTRYNOTSUPPORTED:"entry not supported"};function ArchiverError(r,i){Error.captureStackTrace(this,this.constructor);this.message=l[r]||r;this.code=r;this.data=i}a.inherits(ArchiverError,Error);i=r.exports=ArchiverError},61586:(r,i,s)=>{ -/** - * JSON Format Plugin - * - * @module plugins/json - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(73837).inherits;var l=s(40247).Transform;var c=s(94637);var d=s(49199);var Json=function(r){if(!(this instanceof Json)){return new Json(r)}r=this.options=d.defaults(r,{});l.call(this,r);this.supports={directory:true,symlink:true};this.files=[]};a(Json,l);Json.prototype._transform=function(r,i,s){s(null,r)};Json.prototype._writeStringified=function(){var r=JSON.stringify(this.files);this.write(r)};Json.prototype.append=function(r,i,s){var a=this;i.crc32=0;function onend(r,l){if(r){s(r);return}i.size=l.length||0;i.crc32=c.unsigned(l);a.files.push(i);s(null,i)}if(i.sourceType==="buffer"){onend(null,r)}else if(i.sourceType==="stream"){d.collectStream(r,onend)}};Json.prototype.finalize=function(){this._writeStringified();this.end()};r.exports=Json},1135:(r,i,s)=>{ -/** - * TAR Format Plugin - * - * @module plugins/tar - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(59796);var l=s(63318);var c=s(49199);var Tar=function(r){if(!(this instanceof Tar)){return new Tar(r)}r=this.options=c.defaults(r,{gzip:false});if(typeof r.gzipOptions!=="object"){r.gzipOptions={}}this.supports={directory:true,symlink:true};this.engine=l.pack(r);this.compressor=false;if(r.gzip){this.compressor=a.createGzip(r.gzipOptions);this.compressor.on("error",this._onCompressorError.bind(this))}};Tar.prototype._onCompressorError=function(r){this.engine.emit("error",r)};Tar.prototype.append=function(r,i,s){var a=this;i.mtime=i.date;function append(r,l){if(r){s(r);return}a.engine.entry(i,l,(function(r){s(r,i)}))}if(i.sourceType==="buffer"){append(null,r)}else if(i.sourceType==="stream"&&i.stats){i.size=i.stats.size;var l=a.engine.entry(i,(function(r){s(r,i)}));r.pipe(l)}else if(i.sourceType==="stream"){c.collectStream(r,append)}};Tar.prototype.finalize=function(){this.engine.finalize()};Tar.prototype.on=function(){return this.engine.on.apply(this.engine,arguments)};Tar.prototype.pipe=function(r,i){if(this.compressor){return this.engine.pipe.apply(this.engine,[this.compressor]).pipe(r,i)}else{return this.engine.pipe.apply(this.engine,arguments)}};Tar.prototype.unpipe=function(){if(this.compressor){return this.compressor.unpipe.apply(this.compressor,arguments)}else{return this.engine.unpipe.apply(this.engine,arguments)}};r.exports=Tar},13174:(r,i,s)=>{ -/** - * ZIP Format Plugin - * - * @module plugins/zip - * @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE} - * @copyright (c) 2012-2014 Chris Talkington, contributors. - */ -var a=s(86589);var l=s(49199);var Zip=function(r){if(!(this instanceof Zip)){return new Zip(r)}r=this.options=l.defaults(r,{comment:"",forceUTC:false,namePrependSlash:false,store:false});this.supports={directory:true,symlink:true};this.engine=new a(r)};Zip.prototype.append=function(r,i,s){this.engine.entry(r,i,s)};Zip.prototype.finalize=function(){this.engine.finalize()};Zip.prototype.on=function(){return this.engine.on.apply(this.engine,arguments)};Zip.prototype.pipe=function(){return this.engine.pipe.apply(this.engine,arguments)};Zip.prototype.unpipe=function(){return this.engine.unpipe.apply(this.engine,arguments)};r.exports=Zip},76044:function(r,i){(function(r,s){true?s(i):0})(this,(function(r){"use strict";function apply(r,...i){return(...s)=>r(...i,...s)}function initialParams(r){return function(...i){var s=i.pop();return r.call(this,i,s)}}var i=typeof queueMicrotask==="function"&&queueMicrotask;var s=typeof setImmediate==="function"&&setImmediate;var a=typeof process==="object"&&typeof process.nextTick==="function";function fallback(r){setTimeout(r,0)}function wrap(r){return(i,...s)=>r((()=>i(...s)))}var l;if(i){l=queueMicrotask}else if(s){l=setImmediate}else if(a){l=process.nextTick}else{l=fallback}var c=wrap(l);function asyncify(r){if(isAsync(r)){return function(...i){const s=i.pop();const a=r.apply(this,i);return handlePromise(a,s)}}return initialParams((function(i,s){var a;try{a=r.apply(this,i)}catch(r){return s(r)}if(a&&typeof a.then==="function"){return handlePromise(a,s)}else{s(null,a)}}))}function handlePromise(r,i){return r.then((r=>{invokeCallback(i,null,r)}),(r=>{invokeCallback(i,r&&(r instanceof Error||r.message)?r:new Error(r))}))}function invokeCallback(r,i,s){try{r(i,s)}catch(r){c((r=>{throw r}),r)}}function isAsync(r){return r[Symbol.toStringTag]==="AsyncFunction"}function isAsyncGenerator(r){return r[Symbol.toStringTag]==="AsyncGenerator"}function isAsyncIterable(r){return typeof r[Symbol.asyncIterator]==="function"}function wrapAsync(r){if(typeof r!=="function")throw new Error("expected a function");return isAsync(r)?asyncify(r):r}function awaitify(r,i){if(!i)i=r.length;if(!i)throw new Error("arity is undefined");function awaitable(...s){if(typeof s[i-1]==="function"){return r.apply(this,s)}return new Promise(((a,l)=>{s[i-1]=(r,...i)=>{if(r)return l(r);a(i.length>1?i:i[0])};r.apply(this,s)}))}return awaitable}function applyEach$1(r){return function applyEach(i,...s){const a=awaitify((function(a){var l=this;return r(i,((r,i)=>{wrapAsync(r).apply(l,s.concat(i))}),a)}));return a}}function _asyncMap(r,i,s,a){i=i||[];var l=[];var c=0;var d=wrapAsync(s);return r(i,((r,i,s)=>{var a=c++;d(r,((r,i)=>{l[a]=i;s(r)}))}),(r=>{a(r,l)}))}function isArrayLike(r){return r&&typeof r.length==="number"&&r.length>=0&&r.length%1===0}const d={};function once(r){function wrapper(...i){if(r===null)return;var s=r;r=null;s.apply(this,i)}Object.assign(wrapper,r);return wrapper}function getIterator(r){return r[Symbol.iterator]&&r[Symbol.iterator]()}function createArrayIterator(r){var i=-1;var s=r.length;return function next(){return++i=i||p||l)return;p=true;r.next().then((({value:r,done:i})=>{if(c||l)return;p=false;if(i){l=true;if(A<=0){a(null)}return}A++;s(r,u,iterateeCallback);u++;replenish()})).catch(handleError)}function iterateeCallback(r,i){A-=1;if(c)return;if(r)return handleError(r);if(r===false){l=true;c=true;return}if(i===d||l&&A<=0){l=true;return a(null)}replenish()}function handleError(r){if(c)return;p=false;l=true;a(r)}replenish()}var eachOfLimit$2=r=>(i,s,a)=>{a=once(a);if(r<=0){throw new RangeError("concurrency limit cannot be less than 1")}if(!i){return a(null)}if(isAsyncGenerator(i)){return asyncEachOfLimit(i,r,s,a)}if(isAsyncIterable(i)){return asyncEachOfLimit(i[Symbol.asyncIterator](),r,s,a)}var l=createIterator(i);var c=false;var p=false;var A=0;var u=false;function iterateeCallback(r,i){if(p)return;A-=1;if(r){c=true;a(r)}else if(r===false){c=true;p=true}else if(i===d||c&&A<=0){c=true;return a(null)}else if(!u){replenish()}}function replenish(){u=true;while(A1?a:a[0])}callback[C]=new Promise(((s,a)=>{r=s,i=a}));return callback}function auto(r,i,s){if(typeof i!=="number"){s=i;i=null}s=once(s||promiseCallback());var a=Object.keys(r).length;if(!a){return s(null)}if(!i){i=a}var l={};var c=0;var d=false;var p=false;var A=Object.create(null);var u=[];var h=[];var g={};Object.keys(r).forEach((i=>{var s=r[i];if(!Array.isArray(s)){enqueueTask(i,[s]);h.push(i);return}var a=s.slice(0,s.length-1);var l=a.length;if(l===0){enqueueTask(i,s);h.push(i);return}g[i]=l;a.forEach((c=>{if(!r[c]){throw new Error("async.auto task `"+i+"` has a non-existent dependency `"+c+"` in "+a.join(", "))}addListener(c,(()=>{l--;if(l===0){enqueueTask(i,s)}}))}))}));checkForDeadlocks();processQueue();function enqueueTask(r,i){u.push((()=>runTask(r,i)))}function processQueue(){if(d)return;if(u.length===0&&c===0){return s(null,l)}while(u.length&&cr()));processQueue()}function runTask(r,i){if(p)return;var a=onlyOnce(((i,...a)=>{c--;if(i===false){d=true;return}if(a.length<2){[a]=a}if(i){var u={};Object.keys(l).forEach((r=>{u[r]=l[r]}));u[r]=a;p=true;A=Object.create(null);if(d)return;s(i,u)}else{l[r]=a;taskComplete(r)}}));c++;var u=wrapAsync(i[i.length-1]);if(i.length>1){u(l,a)}else{u(a)}}function checkForDeadlocks(){var r;var i=0;while(h.length){r=h.pop();i++;getDependents(r).forEach((r=>{if(--g[r]===0){h.push(r)}}))}if(i!==a){throw new Error("async.auto cannot execute tasks due to a recursive dependency")}}function getDependents(i){var s=[];Object.keys(r).forEach((a=>{const l=r[a];if(Array.isArray(l)&&l.indexOf(i)>=0){s.push(a)}}));return s}return s[C]}var B=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/;var I=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/;var w=/,/;var v=/(=.+)?(\s*)$/;function stripComments(r){let i="";let s=0;let a=r.indexOf("*/");while(sr.replace(v,"").trim()))}function autoInject(r,i){var s={};Object.keys(r).forEach((i=>{var a=r[i];var l;var c=isAsync(a);var d=!c&&a.length===1||c&&a.length===0;if(Array.isArray(a)){l=[...a];a=l.pop();s[i]=l.concat(l.length>0?newTask:a)}else if(d){s[i]=a}else{l=parseParams(a);if(a.length===0&&!c&&l.length===0){throw new Error("autoInject task functions require explicit parameters.")}if(!c)l.pop();s[i]=l.concat(newTask)}function newTask(r,i){var s=l.map((i=>r[i]));s.push(i);wrapAsync(a)(...s)}}));return auto(s,i)}class DLL{constructor(){this.head=this.tail=null;this.length=0}removeLink(r){if(r.prev)r.prev.next=r.next;else this.head=r.next;if(r.next)r.next.prev=r.prev;else this.tail=r.prev;r.prev=r.next=null;this.length-=1;return r}empty(){while(this.head)this.shift();return this}insertAfter(r,i){i.prev=r;i.next=r.next;if(r.next)r.next.prev=i;else this.tail=i;r.next=i;this.length+=1}insertBefore(r,i){i.prev=r.prev;i.next=r;if(r.prev)r.prev.next=i;else this.head=i;r.prev=i;this.length+=1}unshift(r){if(this.head)this.insertBefore(this.head,r);else setInitial(this,r)}push(r){if(this.tail)this.insertAfter(this.tail,r);else setInitial(this,r)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){var r=this.head;while(r){yield r.data;r=r.next}}remove(r){var i=this.head;while(i){var{next:s}=i;if(r(i)){this.removeLink(i)}i=s}return this}}function setInitial(r,i){r.length=1;r.head=r.tail=i}function queue$1(r,i,s){if(i==null){i=1}else if(i===0){throw new RangeError("Concurrency must not be zero")}var a=wrapAsync(r);var l=0;var d=[];const p={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function on(r,i){p[r].push(i)}function once(r,i){const handleAndRemove=(...s)=>{off(r,handleAndRemove);i(...s)};p[r].push(handleAndRemove)}function off(r,i){if(!r)return Object.keys(p).forEach((r=>p[r]=[]));if(!i)return p[r]=[];p[r]=p[r].filter((r=>r!==i))}function trigger(r,...i){p[r].forEach((r=>r(...i)))}var A=false;function _insert(r,i,s,a){if(a!=null&&typeof a!=="function"){throw new Error("task callback must be a function")}h.started=true;var l,d;function promiseCallback(r,...i){if(r)return s?d(r):l();if(i.length<=1)return l(i[0]);l(i)}var p=h._createTaskItem(r,s?promiseCallback:a||promiseCallback);if(i){h._tasks.unshift(p)}else{h._tasks.push(p)}if(!A){A=true;c((()=>{A=false;h.process()}))}if(s||!a){return new Promise(((r,i)=>{l=r;d=i}))}}function _createCB(r){return function(i,...s){l-=1;for(var a=0,c=r.length;a0){d.splice(A,1)}p.callback(i,...s);if(i!=null){trigger("error",i,p.data)}}if(l<=h.concurrency-h.buffer){trigger("unsaturated")}if(h.idle()){trigger("drain")}h.process()}}function _maybeDrain(r){if(r.length===0&&h.idle()){c((()=>trigger("drain")));return true}return false}const eventMethod=r=>i=>{if(!i){return new Promise(((i,s)=>{once(r,((r,a)=>{if(r)return s(r);i(a)}))}))}off(r);on(r,i)};var u=false;var h={_tasks:new DLL,_createTaskItem(r,i){return{data:r,callback:i}},*[Symbol.iterator](){yield*h._tasks[Symbol.iterator]()},concurrency:i,payload:s,buffer:i/4,started:false,paused:false,push(r,i){if(Array.isArray(r)){if(_maybeDrain(r))return;return r.map((r=>_insert(r,false,false,i)))}return _insert(r,false,false,i)},pushAsync(r,i){if(Array.isArray(r)){if(_maybeDrain(r))return;return r.map((r=>_insert(r,false,true,i)))}return _insert(r,false,true,i)},kill(){off();h._tasks.empty()},unshift(r,i){if(Array.isArray(r)){if(_maybeDrain(r))return;return r.map((r=>_insert(r,true,false,i)))}return _insert(r,true,false,i)},unshiftAsync(r,i){if(Array.isArray(r)){if(_maybeDrain(r))return;return r.map((r=>_insert(r,true,true,i)))}return _insert(r,true,true,i)},remove(r){h._tasks.remove(r)},process(){if(u){return}u=true;while(!h.paused&&l{l(i,r,((r,s)=>{i=s;a(r)}))}),(r=>a(r,i)))}var S=awaitify(reduce,4);function seq(...r){var i=r.map(wrapAsync);return function(...r){var s=this;var a=r[r.length-1];if(typeof a=="function"){r.pop()}else{a=promiseCallback()}S(i,r,((r,i,a)=>{i.apply(s,r.concat(((r,...i)=>{a(r,i)})))}),((r,i)=>a(r,...i)));return a[C]}}function compose(...r){return seq(...r.reverse())}function mapLimit(r,i,s,a){return _asyncMap(eachOfLimit$2(i),r,s,a)}var Q=awaitify(mapLimit,4);function concatLimit(r,i,s,a){var l=wrapAsync(s);return Q(r,i,((r,i)=>{l(r,((r,...s)=>{if(r)return i(r);return i(r,s)}))}),((r,i)=>{var s=[];for(var l=0;l{var p=false;var A;const u=wrapAsync(l);s(a,((s,a,l)=>{u(s,((a,c)=>{if(a||a===false)return l(a);if(r(c)&&!A){p=true;A=i(true,s);return l(null,d)}l()}))}),(r=>{if(r)return c(r);c(null,p?A:i(false))}))}}function detect(r,i,s){return _createTester((r=>r),((r,i)=>i))(A,r,i,s)}var T=awaitify(detect,3);function detectLimit(r,i,s,a){return _createTester((r=>r),((r,i)=>i))(eachOfLimit$2(i),r,s,a)}var _=awaitify(detectLimit,4);function detectSeries(r,i,s){return _createTester((r=>r),((r,i)=>i))(eachOfLimit$2(1),r,i,s)}var x=awaitify(detectSeries,3);function consoleFunc(r){return(i,...s)=>wrapAsync(i)(...s,((i,...s)=>{if(typeof console==="object"){if(i){if(console.error){console.error(i)}}else if(console[r]){s.forEach((i=>console[r](i)))}}}))}var D=consoleFunc("dir");function doWhilst(r,i,s){s=onlyOnce(s);var a=wrapAsync(r);var l=wrapAsync(i);var c;function next(r,...i){if(r)return s(r);if(r===false)return;c=i;l(...i,check)}function check(r,i){if(r)return s(r);if(r===false)return;if(!i)return s(null,...c);a(next)}return check(null,true)}var P=awaitify(doWhilst,3);function doUntil(r,i,s){const a=wrapAsync(i);return P(r,((...r)=>{const i=r.pop();a(...r,((r,s)=>i(r,!s)))}),s)}function _withoutIndex(r){return(i,s,a)=>r(i,a)}function eachLimit$2(r,i,s){return A(r,_withoutIndex(wrapAsync(i)),s)}var O=awaitify(eachLimit$2,3);function eachLimit(r,i,s,a){return eachOfLimit$2(i)(r,_withoutIndex(wrapAsync(s)),a)}var L=awaitify(eachLimit,4);function eachSeries(r,i,s){return L(r,1,i,s)}var F=awaitify(eachSeries,3);function ensureAsync(r){if(isAsync(r))return r;return function(...i){var s=i.pop();var a=true;i.push(((...r)=>{if(a){c((()=>s(...r)))}else{s(...r)}}));r.apply(this,i);a=false}}function every(r,i,s){return _createTester((r=>!r),(r=>!r))(A,r,i,s)}var M=awaitify(every,3);function everyLimit(r,i,s,a){return _createTester((r=>!r),(r=>!r))(eachOfLimit$2(i),r,s,a)}var U=awaitify(everyLimit,4);function everySeries(r,i,s){return _createTester((r=>!r),(r=>!r))(g,r,i,s)}var H=awaitify(everySeries,3);function filterArray(r,i,s,a){var l=new Array(i.length);r(i,((r,i,a)=>{s(r,((r,s)=>{l[i]=!!s;a(r)}))}),(r=>{if(r)return a(r);var s=[];for(var c=0;c{s(r,((s,c)=>{if(s)return a(s);if(c){l.push({index:i,value:r})}a(s)}))}),(r=>{if(r)return a(r);a(null,l.sort(((r,i)=>r.index-i.index)).map((r=>r.value)))}))}function _filter(r,i,s,a){var l=isArrayLike(i)?filterArray:filterGeneric;return l(r,i,wrapAsync(s),a)}function filter(r,i,s){return _filter(A,r,i,s)}var q=awaitify(filter,3);function filterLimit(r,i,s,a){return _filter(eachOfLimit$2(i),r,s,a)}var G=awaitify(filterLimit,4);function filterSeries(r,i,s){return _filter(g,r,i,s)}var j=awaitify(filterSeries,3);function forever(r,i){var s=onlyOnce(i);var a=wrapAsync(ensureAsync(r));function next(r){if(r)return s(r);if(r===false)return;a(next)}return next()}var z=awaitify(forever,2);function groupByLimit(r,i,s,a){var l=wrapAsync(s);return Q(r,i,((r,i)=>{l(r,((s,a)=>{if(s)return i(s);return i(s,{key:a,val:r})}))}),((r,i)=>{var s={};var{hasOwnProperty:l}=Object.prototype;for(var c=0;c{c(r,i,((r,a)=>{if(r)return s(r);l[i]=a;s(r)}))}),(r=>a(r,l)))}var Y=awaitify(mapValuesLimit,4);function mapValues(r,i,s){return Y(r,Infinity,i,s)}function mapValuesSeries(r,i,s){return Y(r,1,i,s)}function memoize(r,i=(r=>r)){var s=Object.create(null);var a=Object.create(null);var l=wrapAsync(r);var d=initialParams(((r,d)=>{var p=i(...r);if(p in s){c((()=>d(null,...s[p])))}else if(p in a){a[p].push(d)}else{a[p]=[d];l(...r,((r,...i)=>{if(!r){s[p]=i}var l=a[p];delete a[p];for(var c=0,d=l.length;c{var a=isArrayLike(i)?[]:{};r(i,((r,i,s)=>{wrapAsync(r)(((r,...l)=>{if(l.length<2){[l]=l}a[i]=l;s(r)}))}),(r=>s(r,a)))}),3);function parallel(r,i){return K(A,r,i)}function parallelLimit(r,i,s){return K(eachOfLimit$2(i),r,s)}function queue(r,i){var s=wrapAsync(r);return queue$1(((r,i)=>{s(r[0],i)}),i,1)}class Heap{constructor(){this.heap=[];this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){this.heap=[];return this}percUp(r){let i;while(r>0&&smaller(this.heap[r],this.heap[i=parent(r)])){let s=this.heap[r];this.heap[r]=this.heap[i];this.heap[i]=s;r=i}}percDown(r){let i;while((i=leftChi(r))=0;r--){this.percDown(r)}return this}}function leftChi(r){return(r<<1)+1}function parent(r){return(r+1>>1)-1}function smaller(r,i){if(r.priority!==i.priority){return r.priority({data:r,priority:i,callback:s});function createDataItems(r,i){if(!Array.isArray(r)){return{data:r,priority:i}}return r.map((r=>({data:r,priority:i})))}s.push=function(r,i=0,s){return a(createDataItems(r,i),s)};s.pushAsync=function(r,i=0,s){return l(createDataItems(r,i),s)};delete s.unshift;delete s.unshiftAsync;return s}function race(r,i){i=once(i);if(!Array.isArray(r))return i(new TypeError("First argument to race must be an array of functions"));if(!r.length)return i();for(var s=0,a=r.length;s{let a={};if(r){a.error=r}if(i.length>0){var l=i;if(i.length<=1){[l]=i}a.value=l}s(null,a)}));return i.apply(this,r)}))}function reflectAll(r){var i;if(Array.isArray(r)){i=r.map(reflect)}else{i={};Object.keys(r).forEach((s=>{i[s]=reflect.call(this,r[s])}))}return i}function reject$2(r,i,s,a){const l=wrapAsync(s);return _filter(r,i,((r,i)=>{l(r,((r,s)=>{i(r,!s)}))}),a)}function reject(r,i,s){return reject$2(A,r,i,s)}var Z=awaitify(reject,3);function rejectLimit(r,i,s,a){return reject$2(eachOfLimit$2(i),r,s,a)}var ee=awaitify(rejectLimit,4);function rejectSeries(r,i,s){return reject$2(g,r,i,s)}var te=awaitify(rejectSeries,3);function constant(r){return function(){return r}}const re=5;const ie=0;function retry(r,i,s){var a={times:re,intervalFunc:constant(ie)};if(arguments.length<3&&typeof r==="function"){s=i||promiseCallback();i=r}else{parseTimes(a,r);s=s||promiseCallback()}if(typeof i!=="function"){throw new Error("Invalid arguments for async.retry")}var l=wrapAsync(i);var c=1;function retryAttempt(){l(((r,...i)=>{if(r===false)return;if(r&&c++{if(i.lengthr))(A,r,i,s)}var ne=awaitify(some,3);function someLimit(r,i,s,a){return _createTester(Boolean,(r=>r))(eachOfLimit$2(i),r,s,a)}var se=awaitify(someLimit,4);function someSeries(r,i,s){return _createTester(Boolean,(r=>r))(g,r,i,s)}var ae=awaitify(someSeries,3);function sortBy(r,i,s){var a=wrapAsync(i);return u(r,((r,i)=>{a(r,((s,a)=>{if(s)return i(s);i(s,{value:r,criteria:a})}))}),((r,i)=>{if(r)return s(r);s(null,i.sort(comparator).map((r=>r.value)))}));function comparator(r,i){var s=r.criteria,a=i.criteria;return sa?1:0}}var oe=awaitify(sortBy,3);function timeout(r,i,s){var a=wrapAsync(r);return initialParams(((l,c)=>{var d=false;var p;function timeoutCallback(){var i=r.name||"anonymous";var a=new Error('Callback function "'+i+'" timed out.');a.code="ETIMEDOUT";if(s){a.info=s}d=true;c(a)}l.push(((...r)=>{if(!d){c(...r);clearTimeout(p)}}));p=setTimeout(timeoutCallback,i);a(...l)}))}function range(r){var i=Array(r);while(r--){i[r]=r}return i}function timesLimit(r,i,s,a){var l=wrapAsync(s);return Q(range(r),i,l,a)}function times(r,i,s){return timesLimit(r,Infinity,i,s)}function timesSeries(r,i,s){return timesLimit(r,1,i,s)}function transform(r,i,s,a){if(arguments.length<=3&&typeof i==="function"){a=s;s=i;i=Array.isArray(r)?[]:{}}a=once(a||promiseCallback());var l=wrapAsync(s);A(r,((r,s,a)=>{l(i,r,s,a)}),(r=>a(r,i)));return a[C]}function tryEach(r,i){var s=null;var a;return F(r,((r,i)=>{wrapAsync(r)(((r,...l)=>{if(r===false)return i(r);if(l.length<2){[a]=l}else{a=l}s=r;i(r?null:{})}))}),(()=>i(s,a)))}var le=awaitify(tryEach);function unmemoize(r){return(...i)=>(r.unmemoized||r)(...i)}function whilst(r,i,s){s=onlyOnce(s);var a=wrapAsync(i);var l=wrapAsync(r);var c=[];function next(r,...i){if(r)return s(r);c=i;if(r===false)return;l(check)}function check(r,i){if(r)return s(r);if(r===false)return;if(!i)return s(null,...c);a(next)}return l(check)}var ce=awaitify(whilst,3);function until(r,i,s){const a=wrapAsync(r);return ce((r=>a(((i,s)=>r(i,!s)))),i,s)}function waterfall(r,i){i=once(i);if(!Array.isArray(r))return i(new Error("First argument to waterfall must be an array of functions"));if(!r.length)return i();var s=0;function nextTask(i){var a=wrapAsync(r[s++]);a(...i,onlyOnce(next))}function next(a,...l){if(a===false)return;if(a||s===r.length){return i(a,...l)}nextTask(l)}nextTask([])}var de=awaitify(waterfall);var pe={apply:apply,applyEach:h,applyEachSeries:b,asyncify:asyncify,auto:auto,autoInject:autoInject,cargo:cargo$1,cargoQueue:cargo,compose:compose,concat:R,concatLimit:N,concatSeries:k,constant:constant$1,detect:T,detectLimit:_,detectSeries:x,dir:D,doUntil:doUntil,doWhilst:P,each:O,eachLimit:L,eachOf:A,eachOfLimit:p,eachOfSeries:g,eachSeries:F,ensureAsync:ensureAsync,every:M,everyLimit:U,everySeries:H,filter:q,filterLimit:G,filterSeries:j,forever:z,groupBy:groupBy,groupByLimit:V,groupBySeries:groupBySeries,log:W,map:u,mapLimit:Q,mapSeries:y,mapValues:mapValues,mapValuesLimit:Y,mapValuesSeries:mapValuesSeries,memoize:memoize,nextTick:$,parallel:parallel,parallelLimit:parallelLimit,priorityQueue:priorityQueue,queue:queue,race:X,reduce:S,reduceRight:reduceRight,reflect:reflect,reflectAll:reflectAll,reject:Z,rejectLimit:ee,rejectSeries:te,retry:retry,retryable:retryable,seq:seq,series:series,setImmediate:c,some:ne,someLimit:se,someSeries:ae,sortBy:oe,timeout:timeout,times:times,timesLimit:timesLimit,timesSeries:timesSeries,transform:transform,tryEach:le,unmemoize:unmemoize,until:until,waterfall:de,whilst:ce,all:M,allLimit:U,allSeries:H,any:ne,anyLimit:se,anySeries:ae,find:T,findLimit:_,findSeries:x,flatMap:R,flatMapLimit:N,flatMapSeries:k,forEach:O,forEachSeries:F,forEachLimit:L,forEachOf:A,forEachOfSeries:g,forEachOfLimit:p,inject:S,foldl:S,foldr:reduceRight,select:q,selectLimit:G,selectSeries:j,wrapSync:asyncify,during:ce,doDuring:P};r.all=M;r.allLimit=U;r.allSeries=H;r.any=ne;r.anyLimit=se;r.anySeries=ae;r.apply=apply;r.applyEach=h;r.applyEachSeries=b;r.asyncify=asyncify;r.auto=auto;r.autoInject=autoInject;r.cargo=cargo$1;r.cargoQueue=cargo;r.compose=compose;r.concat=R;r.concatLimit=N;r.concatSeries=k;r.constant=constant$1;r.default=pe;r.detect=T;r.detectLimit=_;r.detectSeries=x;r.dir=D;r.doDuring=P;r.doUntil=doUntil;r.doWhilst=P;r.during=ce;r.each=O;r.eachLimit=L;r.eachOf=A;r.eachOfLimit=p;r.eachOfSeries=g;r.eachSeries=F;r.ensureAsync=ensureAsync;r.every=M;r.everyLimit=U;r.everySeries=H;r.filter=q;r.filterLimit=G;r.filterSeries=j;r.find=T;r.findLimit=_;r.findSeries=x;r.flatMap=R;r.flatMapLimit=N;r.flatMapSeries=k;r.foldl=S;r.foldr=reduceRight;r.forEach=O;r.forEachLimit=L;r.forEachOf=A;r.forEachOfLimit=p;r.forEachOfSeries=g;r.forEachSeries=F;r.forever=z;r.groupBy=groupBy;r.groupByLimit=V;r.groupBySeries=groupBySeries;r.inject=S;r.log=W;r.map=u;r.mapLimit=Q;r.mapSeries=y;r.mapValues=mapValues;r.mapValuesLimit=Y;r.mapValuesSeries=mapValuesSeries;r.memoize=memoize;r.nextTick=$;r.parallel=parallel;r.parallelLimit=parallelLimit;r.priorityQueue=priorityQueue;r.queue=queue;r.race=X;r.reduce=S;r.reduceRight=reduceRight;r.reflect=reflect;r.reflectAll=reflectAll;r.reject=Z;r.rejectLimit=ee;r.rejectSeries=te;r.retry=retry;r.retryable=retryable;r.select=q;r.selectLimit=G;r.selectSeries=j;r.seq=seq;r.series=series;r.setImmediate=c;r.some=ne;r.someLimit=se;r.someSeries=ae;r.sortBy=oe;r.timeout=timeout;r.times=times;r.timesLimit=timesLimit;r.timesSeries=timesSeries;r.transform=transform;r.tryEach=le;r.unmemoize=unmemoize;r.until=until;r.waterfall=de;r.whilst=ce;r.wrapSync=asyncify;Object.defineProperty(r,"__esModule",{value:true})}))},98103:r=>{function isBuffer(r){return Buffer.isBuffer(r)||r instanceof Uint8Array}function isEncoding(r){return Buffer.isEncoding(r)}function alloc(r,i,s){return Buffer.alloc(r,i,s)}function allocUnsafe(r){return Buffer.allocUnsafe(r)}function allocUnsafeSlow(r){return Buffer.allocUnsafeSlow(r)}function byteLength(r,i){return Buffer.byteLength(r,i)}function compare(r,i){return Buffer.compare(r,i)}function concat(r,i){return Buffer.concat(r,i)}function copy(r,i,s,a,l){return toBuffer(r).copy(i,s,a,l)}function equals(r,i){return toBuffer(r).equals(i)}function fill(r,i,s,a,l){return toBuffer(r).fill(i,s,a,l)}function from(r,i,s){return Buffer.from(r,i,s)}function includes(r,i,s,a){return toBuffer(r).includes(i,s,a)}function indexOf(r,i,s,a){return toBuffer(r).indexOf(i,s,a)}function lastIndexOf(r,i,s,a){return toBuffer(r).lastIndexOf(i,s,a)}function swap16(r){return toBuffer(r).swap16()}function swap32(r){return toBuffer(r).swap32()}function swap64(r){return toBuffer(r).swap64()}function toBuffer(r){if(Buffer.isBuffer(r))return r;return Buffer.from(r.buffer,r.byteOffset,r.byteLength)}function toString(r,i,s,a){return toBuffer(r).toString(i,s,a)}function write(r,i,s,a,l){return toBuffer(r).write(i,s,a,l)}function writeDoubleLE(r,i,s){return toBuffer(r).writeDoubleLE(i,s)}function writeFloatLE(r,i,s){return toBuffer(r).writeFloatLE(i,s)}function writeUInt32LE(r,i,s){return toBuffer(r).writeUInt32LE(i,s)}function writeInt32LE(r,i,s){return toBuffer(r).writeInt32LE(i,s)}function readDoubleLE(r,i){return toBuffer(r).readDoubleLE(i)}function readFloatLE(r,i){return toBuffer(r).readFloatLE(i)}function readUInt32LE(r,i){return toBuffer(r).readUInt32LE(i)}function readInt32LE(r,i){return toBuffer(r).readInt32LE(i)}r.exports={isBuffer:isBuffer,isEncoding:isEncoding,alloc:alloc,allocUnsafe:allocUnsafe,allocUnsafeSlow:allocUnsafeSlow,byteLength:byteLength,compare:compare,concat:concat,copy:copy,equals:equals,fill:fill,from:from,includes:includes,indexOf:indexOf,lastIndexOf:lastIndexOf,swap16:swap16,swap32:swap32,swap64:swap64,toBuffer:toBuffer,toString:toString,write:write,writeDoubleLE:writeDoubleLE,writeFloatLE:writeFloatLE,writeUInt32LE:writeUInt32LE,writeInt32LE:writeInt32LE,readDoubleLE:readDoubleLE,readFloatLE:readFloatLE,readUInt32LE:readUInt32LE,readInt32LE:readInt32LE}},62738:r=>{"use strict";r.exports=balanced;function balanced(r,i,s){if(r instanceof RegExp)r=maybeMatch(r,s);if(i instanceof RegExp)i=maybeMatch(i,s);var a=range(r,i,s);return a&&{start:a[0],end:a[1],pre:s.slice(0,a[0]),body:s.slice(a[0]+r.length,a[1]),post:s.slice(a[1]+i.length)}}function maybeMatch(r,i){var s=i.match(r);return s?s[0]:null}balanced.range=range;function range(r,i,s){var a,l,c,d,p;var A=s.indexOf(r);var u=s.indexOf(i,A+1);var h=A;if(A>=0&&u>0){if(r===i){return[A,u]}a=[];c=s.length;while(h>=0&&!p){if(h==A){a.push(h);A=s.indexOf(r,h+1)}else if(a.length==1){p=[a.pop(),u]}else{l=a.pop();if(l=0?A:u}if(a.length){p=[c,d]}}return p}},90527:(r,i,s)=>{var a=s(15790);var l=s(56088);var c=s(37601);var d=Function.bind;var p=d.bind(d);function bindApi(r,i,s){var a=p(c,null).apply(null,s?[i,s]:[i]);r.api={remove:a};r.remove=a;["before","error","after","wrap"].forEach((function(a){var c=s?[i,a,s]:[i,a];r[a]=r.api[a]=p(l,null).apply(null,c)}))}function HookSingular(){var r="h";var i={registry:{}};var s=a.bind(null,i,r);bindApi(s,i,r);return s}function HookCollection(){var r={registry:{}};var i=a.bind(null,r);bindApi(i,r);return i}var A=false;function Hook(){if(!A){console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4');A=true}return HookCollection()}Hook.Singular=HookSingular.bind();Hook.Collection=HookCollection.bind();r.exports=Hook;r.exports.Hook=Hook;r.exports.Singular=Hook.Singular;r.exports.Collection=Hook.Collection},56088:r=>{r.exports=addHook;function addHook(r,i,s,a){var l=a;if(!r.registry[s]){r.registry[s]=[]}if(i==="before"){a=function(r,i){return Promise.resolve().then(l.bind(null,i)).then(r.bind(null,i))}}if(i==="after"){a=function(r,i){var s;return Promise.resolve().then(r.bind(null,i)).then((function(r){s=r;return l(s,i)})).then((function(){return s}))}}if(i==="error"){a=function(r,i){return Promise.resolve().then(r.bind(null,i)).catch((function(r){return l(r,i)}))}}r.registry[s].push({hook:a,orig:l})}},15790:r=>{r.exports=register;function register(r,i,s,a){if(typeof s!=="function"){throw new Error("method for before hook must be a function")}if(!a){a={}}if(Array.isArray(i)){return i.reverse().reduce((function(i,s){return register.bind(null,r,s,i,a)}),s)()}return Promise.resolve().then((function(){if(!r.registry[i]){return s(a)}return r.registry[i].reduce((function(r,i){return i.hook.bind(null,r,a)}),s)()}))}},37601:r=>{r.exports=removeHook;function removeHook(r,i,s){if(!r.registry[i]){return}var a=r.registry[i].map((function(r){return r.orig})).indexOf(s);if(a===-1){return}r.registry[i].splice(a,1)}},62423:(r,i,s)=>{var a=s(82165);var l=s(82361).EventEmitter;var c=s(41132);var d=s(60789);var p=s(12781).Stream;i=r.exports=function(r,s){if(Buffer.isBuffer(r)){return i.parse(r)}var a=i.stream();if(r&&r.pipe){r.pipe(a)}else if(r){r.on(s||"data",(function(r){a.write(r)}));r.on("end",(function(){a.end()}))}return a};i.stream=function(r){if(r)return i.apply(null,arguments);var s=null;function getBytes(r,i,a){s={bytes:r,skip:a,cb:function(r){s=null;i(r)}};dispatch()}var A=null;function dispatch(){if(!s){if(b)y=true;return}if(typeof s==="function"){s()}else{var r=A+s.bytes;if(h.length>=r){var i;if(A==null){i=h.splice(0,r);if(!s.skip){i=i.slice()}}else{if(!s.skip){i=h.slice(A,r)}A=r}if(s.skip){s.cb()}else{s.cb(i)}}}}function builder(r){function next(){if(!y)r.next()}var i=words((function(r,i){return function(s){getBytes(r,(function(r){g.set(s,i(r));next()}))}}));i.tap=function(i){r.nest(i,g.store)};i.into=function(i,s){if(!g.get(i))g.set(i,{});var a=g;g=d(a.get(i));r.nest((function(){s.apply(this,arguments);this.tap((function(){g=a}))}),g.store)};i.flush=function(){g.store={};next()};i.loop=function(i){var s=false;r.nest(false,(function loop(){this.vars=g.store;i.call(this,(function(){s=true;next()}),g.store);this.tap(function(){if(s)r.next();else loop.call(this)}.bind(this))}),g.store)};i.buffer=function(r,i){if(typeof i==="string"){i=g.get(i)}getBytes(i,(function(i){g.set(r,i);next()}))};i.skip=function(r){if(typeof r==="string"){r=g.get(r)}getBytes(r,(function(){next()}))};i.scan=function find(r,i){if(typeof i==="string"){i=new Buffer(i)}else if(!Buffer.isBuffer(i)){throw new Error("search must be a Buffer or a string")}var a=0;s=function(){var l=h.indexOf(i,A+a);var c=l-A-a;if(l!==-1){s=null;if(A!=null){g.set(r,h.slice(A,A+a+c));A+=a+c+i.length}else{g.set(r,h.slice(0,a+c));h.splice(0,a+c+i.length)}next();dispatch()}else{c=Math.max(h.length-i.length-A-a,0)}a+=c};dispatch()};i.peek=function(i){A=0;r.nest((function(){i.call(this,g.store);this.tap((function(){A=null}))}))};return i}var u=a.light(builder);u.writable=true;var h=c();u.write=function(r){h.push(r);dispatch()};var g=d();var y=false,b=false;u.end=function(){b=true};u.pipe=p.prototype.pipe;Object.getOwnPropertyNames(l.prototype).forEach((function(r){u[r]=l.prototype[r]}));return u};i.parse=function parse(r){var i=words((function(l,c){return function(d){if(s+l<=r.length){var p=r.slice(s,s+l);s+=l;a.set(d,c(p))}else{a.set(d,null)}return i}}));var s=0;var a=d();i.vars=a.store;i.tap=function(r){r.call(i,a.store);return i};i.into=function(r,s){if(!a.get(r)){a.set(r,{})}var l=a;a=d(l.get(r));s.call(i,a.store);a=l;return i};i.loop=function(r){var s=false;var ender=function(){s=true};while(s===false){r.call(i,ender,a.store)}return i};i.buffer=function(l,c){if(typeof c==="string"){c=a.get(c)}var d=r.slice(s,Math.min(r.length,s+c));s+=c;a.set(l,d);return i};i.skip=function(r){if(typeof r==="string"){r=a.get(r)}s+=r;return i};i.scan=function(l,c){if(typeof c==="string"){c=new Buffer(c)}else if(!Buffer.isBuffer(c)){throw new Error("search must be a Buffer or a string")}a.set(l,null);for(var d=0;d+s<=r.length-c.length+1;d++){for(var p=0;p=r.length};return i};function decodeLEu(r){var i=0;for(var s=0;s{r.exports=function(r){function getset(r,s){var a=i.store;var l=r.split(".");l.slice(0,-1).forEach((function(r){if(a[r]===undefined)a[r]={};a=a[r]}));var c=l[l.length-1];if(arguments.length==1){return a[c]}else{return a[c]=s}}var i={get:function(r){return getset(r)},set:function(r,i){return getset(r,i)},store:r||{}};return i}},86672:function(r){(function(i,s){true?r.exports=s():0})(this,(function(){"use strict";var r=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function getCjsExportFromNamespace(r){return r&&r["default"]||r}var load=function(r,i,s={}){var a,l,c;for(a in i){c=i[a];s[a]=(l=r[a])!=null?l:c}return s};var overwrite=function(r,i,s={}){var a,l;for(a in r){l=r[a];if(i[a]!==void 0){s[a]=l}}return s};var i={load:load,overwrite:overwrite};var s;s=class DLList{constructor(r,i){this.incr=r;this.decr=i;this._first=null;this._last=null;this.length=0}push(r){var i;this.length++;if(typeof this.incr==="function"){this.incr()}i={value:r,prev:this._last,next:null};if(this._last!=null){this._last.next=i;this._last=i}else{this._first=this._last=i}return void 0}shift(){var r;if(this._first==null){return}else{this.length--;if(typeof this.decr==="function"){this.decr()}}r=this._first.value;if((this._first=this._first.next)!=null){this._first.prev=null}else{this._last=null}return r}first(){if(this._first!=null){return this._first.value}}getArray(){var r,i,s;r=this._first;s=[];while(r!=null){s.push((i=r,r=r.next,i.value))}return s}forEachShift(r){var i;i=this.shift();while(i!=null){r(i),i=this.shift()}return void 0}debug(){var r,i,s,a,l;r=this._first;l=[];while(r!=null){l.push((i=r,r=r.next,{value:i.value,prev:(s=i.prev)!=null?s.value:void 0,next:(a=i.next)!=null?a.value:void 0}))}return l}};var a=s;var l;l=class Events{constructor(r){this.instance=r;this._events={};if(this.instance.on!=null||this.instance.once!=null||this.instance.removeAllListeners!=null){throw new Error("An Emitter already exists for this object")}this.instance.on=(r,i)=>this._addListener(r,"many",i);this.instance.once=(r,i)=>this._addListener(r,"once",i);this.instance.removeAllListeners=(r=null)=>{if(r!=null){return delete this._events[r]}else{return this._events={}}}}_addListener(r,i,s){var a;if((a=this._events)[r]==null){a[r]=[]}this._events[r].push({cb:s,status:i});return this.instance}listenerCount(r){if(this._events[r]!=null){return this._events[r].length}else{return 0}}async trigger(r,...i){var s,a;try{if(r!=="debug"){this.trigger("debug",`Event triggered: ${r}`,i)}if(this._events[r]==null){return}this._events[r]=this._events[r].filter((function(r){return r.status!=="none"}));a=this._events[r].map((async r=>{var s,a;if(r.status==="none"){return}if(r.status==="once"){r.status="none"}try{a=typeof r.cb==="function"?r.cb(...i):void 0;if(typeof(a!=null?a.then:void 0)==="function"){return await a}else{return a}}catch(r){s=r;{this.trigger("error",s)}return null}}));return(await Promise.all(a)).find((function(r){return r!=null}))}catch(r){s=r;{this.trigger("error",s)}return null}}};var c=l;var d,p,A;d=a;p=c;A=class Queues{constructor(r){var i;this.Events=new p(this);this._length=0;this._lists=function(){var s,a,l;l=[];for(i=s=1,a=r;1<=a?s<=a:s>=a;i=1<=a?++s:--s){l.push(new d((()=>this.incr()),(()=>this.decr())))}return l}.call(this)}incr(){if(this._length++===0){return this.Events.trigger("leftzero")}}decr(){if(--this._length===0){return this.Events.trigger("zero")}}push(r){return this._lists[r.options.priority].push(r)}queued(r){if(r!=null){return this._lists[r].length}else{return this._length}}shiftAll(r){return this._lists.forEach((function(i){return i.forEachShift(r)}))}getFirst(r=this._lists){var i,s,a;for(i=0,s=r.length;i0){return a}}return[]}shiftLastFrom(r){return this.getFirst(this._lists.slice(r).reverse()).shift()}};var u=A;var h;h=class BottleneckError extends Error{};var g=h;var y,b,C,B,I;B=10;b=5;I=i;y=g;C=class Job{constructor(r,i,s,a,l,c,d,p){this.task=r;this.args=i;this.rejectOnDrop=l;this.Events=c;this._states=d;this.Promise=p;this.options=I.load(s,a);this.options.priority=this._sanitizePriority(this.options.priority);if(this.options.id===a.id){this.options.id=`${this.options.id}-${this._randomIndex()}`}this.promise=new this.Promise(((r,i)=>{this._resolve=r;this._reject=i}));this.retryCount=0}_sanitizePriority(r){var i;i=~~r!==r?b:r;if(i<0){return 0}else if(i>B-1){return B-1}else{return i}}_randomIndex(){return Math.random().toString(36).slice(2)}doDrop({error:r,message:i="This job has been dropped by Bottleneck"}={}){if(this._states.remove(this.options.id)){if(this.rejectOnDrop){this._reject(r!=null?r:new y(i))}this.Events.trigger("dropped",{args:this.args,options:this.options,task:this.task,promise:this.promise});return true}else{return false}}_assertStatus(r){var i;i=this._states.jobStatus(this.options.id);if(!(i===r||r==="DONE"&&i===null)){throw new y(`Invalid job status ${i}, expected ${r}. Please open an issue at https://github.com/SGrondin/bottleneck/issues`)}}doReceive(){this._states.start(this.options.id);return this.Events.trigger("received",{args:this.args,options:this.options})}doQueue(r,i){this._assertStatus("RECEIVED");this._states.next(this.options.id);return this.Events.trigger("queued",{args:this.args,options:this.options,reachedHWM:r,blocked:i})}doRun(){if(this.retryCount===0){this._assertStatus("QUEUED");this._states.next(this.options.id)}else{this._assertStatus("EXECUTING")}return this.Events.trigger("scheduled",{args:this.args,options:this.options})}async doExecute(r,i,s,a){var l,c,d;if(this.retryCount===0){this._assertStatus("RUNNING");this._states.next(this.options.id)}else{this._assertStatus("EXECUTING")}c={args:this.args,options:this.options,retryCount:this.retryCount};this.Events.trigger("executing",c);try{d=await(r!=null?r.schedule(this.options,this.task,...this.args):this.task(...this.args));if(i()){this.doDone(c);await a(this.options,c);this._assertStatus("DONE");return this._resolve(d)}}catch(r){l=r;return this._onFailure(l,c,i,s,a)}}doExpire(r,i,s){var a,l;if(this._states.jobStatus(this.options.id==="RUNNING")){this._states.next(this.options.id)}this._assertStatus("EXECUTING");l={args:this.args,options:this.options,retryCount:this.retryCount};a=new y(`This job timed out after ${this.options.expiration} ms.`);return this._onFailure(a,l,r,i,s)}async _onFailure(r,i,s,a,l){var c,d;if(s()){c=await this.Events.trigger("failed",r,i);if(c!=null){d=~~c;this.Events.trigger("retry",`Retrying ${this.options.id} after ${d} ms`,i);this.retryCount++;return a(d)}else{this.doDone(i);await l(this.options,i);this._assertStatus("DONE");return this._reject(r)}}}doDone(r){this._assertStatus("EXECUTING");this._states.next(this.options.id);return this.Events.trigger("done",r)}};var w=C;var v,S,Q;Q=i;v=g;S=class LocalDatastore{constructor(r,i,s){this.instance=r;this.storeOptions=i;this.clientId=this.instance._randomIndex();Q.load(s,s,this);this._nextRequest=this._lastReservoirRefresh=this._lastReservoirIncrease=Date.now();this._running=0;this._done=0;this._unblockTime=0;this.ready=this.Promise.resolve();this.clients={};this._startHeartbeat()}_startHeartbeat(){var r;if(this.heartbeat==null&&(this.storeOptions.reservoirRefreshInterval!=null&&this.storeOptions.reservoirRefreshAmount!=null||this.storeOptions.reservoirIncreaseInterval!=null&&this.storeOptions.reservoirIncreaseAmount!=null)){return typeof(r=this.heartbeat=setInterval((()=>{var r,i,s,a,l;a=Date.now();if(this.storeOptions.reservoirRefreshInterval!=null&&a>=this._lastReservoirRefresh+this.storeOptions.reservoirRefreshInterval){this._lastReservoirRefresh=a;this.storeOptions.reservoir=this.storeOptions.reservoirRefreshAmount;this.instance._drainAll(this.computeCapacity())}if(this.storeOptions.reservoirIncreaseInterval!=null&&a>=this._lastReservoirIncrease+this.storeOptions.reservoirIncreaseInterval){({reservoirIncreaseAmount:r,reservoirIncreaseMaximum:s,reservoir:l}=this.storeOptions);this._lastReservoirIncrease=a;i=s!=null?Math.min(r,s-l):r;if(i>0){this.storeOptions.reservoir+=i;return this.instance._drainAll(this.computeCapacity())}}}),this.heartbeatInterval)).unref==="function"?r.unref():void 0}else{return clearInterval(this.heartbeat)}}async __publish__(r){await this.yieldLoop();return this.instance.Events.trigger("message",r.toString())}async __disconnect__(r){await this.yieldLoop();clearInterval(this.heartbeat);return this.Promise.resolve()}yieldLoop(r=0){return new this.Promise((function(i,s){return setTimeout(i,r)}))}computePenalty(){var r;return(r=this.storeOptions.penalty)!=null?r:15*this.storeOptions.minTime||5e3}async __updateSettings__(r){await this.yieldLoop();Q.overwrite(r,r,this.storeOptions);this._startHeartbeat();this.instance._drainAll(this.computeCapacity());return true}async __running__(){await this.yieldLoop();return this._running}async __queued__(){await this.yieldLoop();return this.instance.queued()}async __done__(){await this.yieldLoop();return this._done}async __groupCheck__(r){await this.yieldLoop();return this._nextRequest+this.timeout=r}check(r,i){return this.conditionsCheck(r)&&this._nextRequest-i<=0}async __check__(r){var i;await this.yieldLoop();i=Date.now();return this.check(r,i)}async __register__(r,i,s){var a,l;await this.yieldLoop();a=Date.now();if(this.conditionsCheck(i)){this._running+=i;if(this.storeOptions.reservoir!=null){this.storeOptions.reservoir-=i}l=Math.max(this._nextRequest-a,0);this._nextRequest=a+l+this.storeOptions.minTime;return{success:true,wait:l,reservoir:this.storeOptions.reservoir}}else{return{success:false}}}strategyIsBlock(){return this.storeOptions.strategy===3}async __submit__(r,i){var s,a,l;await this.yieldLoop();if(this.storeOptions.maxConcurrent!=null&&i>this.storeOptions.maxConcurrent){throw new v(`Impossible to add a job having a weight of ${i} to a limiter having a maxConcurrent setting of ${this.storeOptions.maxConcurrent}`)}a=Date.now();l=this.storeOptions.highWater!=null&&r===this.storeOptions.highWater&&!this.check(i,a);s=this.strategyIsBlock()&&(l||this.isBlocked(a));if(s){this._unblockTime=a+this.computePenalty();this._nextRequest=this._unblockTime+this.storeOptions.minTime;this.instance._dropAllQueued()}return{reachedHWM:l,blocked:s,strategy:this.storeOptions.strategy}}async __free__(r,i){await this.yieldLoop();this._running-=i;this._done+=i;this.instance._drainAll(this.computeCapacity());return{running:this._running}}};var N=S;var R,k;R=g;k=class States{constructor(r){this.status=r;this._jobs={};this.counts=this.status.map((function(){return 0}))}next(r){var i,s;i=this._jobs[r];s=i+1;if(i!=null&&s{r[this.status[s]]=i;return r}),{})}};var T=k;var _,x;_=a;x=class Sync{constructor(r,i){this.schedule=this.schedule.bind(this);this.name=r;this.Promise=i;this._running=0;this._queue=new _}isEmpty(){return this._queue.length===0}async _tryToRun(){var r,i,s,a,l,c,d;if(this._running<1&&this._queue.length>0){this._running++;({task:d,args:r,resolve:l,reject:a}=this._queue.shift());i=await async function(){try{c=await d(...r);return function(){return l(c)}}catch(r){s=r;return function(){return a(s)}}}();this._running--;this._tryToRun();return i()}}schedule(r,...i){var s,a,l;l=a=null;s=new this.Promise((function(r,i){l=r;return a=i}));this._queue.push({task:r,args:i,resolve:l,reject:a});this._tryToRun();return s}};var D=x;var P="2.19.5";var O={version:P};var L=Object.freeze({version:P,default:O});var require$$2=()=>console.log("You must import the full version of Bottleneck in order to use this feature.");var require$$3=()=>console.log("You must import the full version of Bottleneck in order to use this feature.");var require$$4=()=>console.log("You must import the full version of Bottleneck in order to use this feature.");var F,M,U,H,q,G;G=i;F=c;H=require$$2;U=require$$3;q=require$$4;M=function(){class Group{constructor(r={}){this.deleteKey=this.deleteKey.bind(this);this.limiterOptions=r;G.load(this.limiterOptions,this.defaults,this);this.Events=new F(this);this.instances={};this.Bottleneck=le;this._startAutoCleanup();this.sharedConnection=this.connection!=null;if(this.connection==null){if(this.limiterOptions.datastore==="redis"){this.connection=new H(Object.assign({},this.limiterOptions,{Events:this.Events}))}else if(this.limiterOptions.datastore==="ioredis"){this.connection=new U(Object.assign({},this.limiterOptions,{Events:this.Events}))}}}key(r=""){var i;return(i=this.instances[r])!=null?i:(()=>{var i;i=this.instances[r]=new this.Bottleneck(Object.assign(this.limiterOptions,{id:`${this.id}-${r}`,timeout:this.timeout,connection:this.connection}));this.Events.trigger("created",i,r);return i})()}async deleteKey(r=""){var i,s;s=this.instances[r];if(this.connection){i=await this.connection.__runCommand__(["del",...q.allKeys(`${this.id}-${r}`)])}if(s!=null){delete this.instances[r];await s.disconnect()}return s!=null||i>0}limiters(){var r,i,s,a;i=this.instances;s=[];for(r in i){a=i[r];s.push({key:r,limiter:a})}return s}keys(){return Object.keys(this.instances)}async clusterKeys(){var r,i,s,a,l,c,d,p,A;if(this.connection==null){return this.Promise.resolve(this.keys())}c=[];r=null;A=`b_${this.id}-`.length;i="_settings".length;while(r!==0){[p,s]=await this.connection.__runCommand__(["scan",r!=null?r:0,"match",`b_${this.id}-*_settings`,"count",1e4]);r=~~p;for(a=0,d=s.length;a{var r,i,s,a,l,c;l=Date.now();s=this.instances;a=[];for(i in s){c=s[i];try{if(await c._store.__groupCheck__(l)){a.push(this.deleteKey(i))}else{a.push(void 0)}}catch(i){r=i;a.push(c.Events.trigger("error",r))}}return a}),this.timeout/2)).unref==="function"?r.unref():void 0}updateSettings(r={}){G.overwrite(r,this.defaults,this);G.overwrite(r,r,this.limiterOptions);if(r.timeout!=null){return this._startAutoCleanup()}}disconnect(r=true){var i;if(!this.sharedConnection){return(i=this.connection)!=null?i.disconnect(r):void 0}}}Group.prototype.defaults={timeout:1e3*60*5,connection:null,Promise:Promise,id:"group-key"};return Group}.call(r);var j=M;var z,V,W;W=i;V=c;z=function(){class Batcher{constructor(r={}){this.options=r;W.load(this.options,this.defaults,this);this.Events=new V(this);this._arr=[];this._resetPromise();this._lastFlush=Date.now()}_resetPromise(){return this._promise=new this.Promise(((r,i)=>this._resolve=r))}_flush(){clearTimeout(this._timeout);this._lastFlush=Date.now();this._resolve();this.Events.trigger("batch",this._arr);this._arr=[];return this._resetPromise()}add(r){var i;this._arr.push(r);i=this._promise;if(this._arr.length===this.maxSize){this._flush()}else if(this.maxTime!=null&&this._arr.length===1){this._timeout=setTimeout((()=>this._flush()),this.maxTime)}return i}}Batcher.prototype.defaults={maxTime:null,maxSize:null,Promise:Promise};return Batcher}.call(r);var Y=z;var require$$4$1=()=>console.log("You must import the full version of Bottleneck in order to use this feature.");var J=getCjsExportFromNamespace(L);var $,K,X,Z,ee,te,re,ie,ne,se,ae,oe=[].splice;te=10;K=5;ae=i;re=u;Z=w;ee=N;ie=require$$4$1;X=c;ne=T;se=D;$=function(){class Bottleneck{constructor(r={},...i){var s,a;this._addToQueue=this._addToQueue.bind(this);this._validateOptions(r,i);ae.load(r,this.instanceDefaults,this);this._queues=new re(te);this._scheduled={};this._states=new ne(["RECEIVED","QUEUED","RUNNING","EXECUTING"].concat(this.trackDoneStatus?["DONE"]:[]));this._limiter=null;this.Events=new X(this);this._submitLock=new se("submit",this.Promise);this._registerLock=new se("register",this.Promise);a=ae.load(r,this.storeDefaults,{});this._store=function(){if(this.datastore==="redis"||this.datastore==="ioredis"||this.connection!=null){s=ae.load(r,this.redisStoreDefaults,{});return new ie(this,a,s)}else if(this.datastore==="local"){s=ae.load(r,this.localStoreDefaults,{});return new ee(this,a,s)}else{throw new Bottleneck.prototype.BottleneckError(`Invalid datastore type: ${this.datastore}`)}}.call(this);this._queues.on("leftzero",(()=>{var r;return(r=this._store.heartbeat)!=null?typeof r.ref==="function"?r.ref():void 0:void 0}));this._queues.on("zero",(()=>{var r;return(r=this._store.heartbeat)!=null?typeof r.unref==="function"?r.unref():void 0:void 0}))}_validateOptions(r,i){if(!(r!=null&&typeof r==="object"&&i.length===0)){throw new Bottleneck.prototype.BottleneckError("Bottleneck v2 takes a single object argument. Refer to https://github.com/SGrondin/bottleneck#upgrading-to-v2 if you're upgrading from Bottleneck v1.")}}ready(){return this._store.ready}clients(){return this._store.clients}channel(){return`b_${this.id}`}channel_client(){return`b_${this.id}_${this._store.clientId}`}publish(r){return this._store.__publish__(r)}disconnect(r=true){return this._store.__disconnect__(r)}chain(r){this._limiter=r;return this}queued(r){return this._queues.queued(r)}clusterQueued(){return this._store.__queued__()}empty(){return this.queued()===0&&this._submitLock.isEmpty()}running(){return this._store.__running__()}done(){return this._store.__done__()}jobStatus(r){return this._states.jobStatus(r)}jobs(r){return this._states.statusJobs(r)}counts(){return this._states.statusCounts()}_randomIndex(){return Math.random().toString(36).slice(2)}check(r=1){return this._store.__check__(r)}_clearGlobalState(r){if(this._scheduled[r]!=null){clearTimeout(this._scheduled[r].expiration);delete this._scheduled[r];return true}else{return false}}async _free(r,i,s,a){var l,c;try{({running:c}=await this._store.__free__(r,s.weight));this.Events.trigger("debug",`Freed ${s.id}`,a);if(c===0&&this.empty()){return this.Events.trigger("idle")}}catch(r){l=r;return this.Events.trigger("error",l)}}_run(r,i,s){var a,l,c;i.doRun();a=this._clearGlobalState.bind(this,r);c=this._run.bind(this,r,i);l=this._free.bind(this,r,i);return this._scheduled[r]={timeout:setTimeout((()=>i.doExecute(this._limiter,a,c,l)),s),expiration:i.options.expiration!=null?setTimeout((function(){return i.doExpire(a,c,l)}),s+i.options.expiration):void 0,job:i}}_drainOne(r){return this._registerLock.schedule((()=>{var i,s,a,l,c;if(this.queued()===0){return this.Promise.resolve(null)}c=this._queues.getFirst();({options:l,args:i}=a=c.first());if(r!=null&&l.weight>r){return this.Promise.resolve(null)}this.Events.trigger("debug",`Draining ${l.id}`,{args:i,options:l});s=this._randomIndex();return this._store.__register__(s,l.weight,l.expiration).then((({success:r,wait:d,reservoir:p})=>{var A;this.Events.trigger("debug",`Drained ${l.id}`,{success:r,args:i,options:l});if(r){c.shift();A=this.empty();if(A){this.Events.trigger("empty")}if(p===0){this.Events.trigger("depleted",A)}this._run(s,a,d);return this.Promise.resolve(l.weight)}else{return this.Promise.resolve(null)}}))}))}_drainAll(r,i=0){return this._drainOne(r).then((s=>{var a;if(s!=null){a=r!=null?r-s:r;return this._drainAll(a,i+s)}else{return this.Promise.resolve(i)}})).catch((r=>this.Events.trigger("error",r)))}_dropAllQueued(r){return this._queues.shiftAll((function(i){return i.doDrop({message:r})}))}stop(r={}){var i,s;r=ae.load(r,this.stopDefaults);s=r=>{var i;i=()=>{var i;i=this._states.counts;return i[0]+i[1]+i[2]+i[3]===r};return new this.Promise(((r,s)=>{if(i()){return r()}else{return this.on("done",(()=>{if(i()){this.removeAllListeners("done");return r()}}))}}))};i=r.dropWaitingJobs?(this._run=function(i,s){return s.doDrop({message:r.dropErrorMessage})},this._drainOne=()=>this.Promise.resolve(null),this._registerLock.schedule((()=>this._submitLock.schedule((()=>{var i,a,l;a=this._scheduled;for(i in a){l=a[i];if(this.jobStatus(l.job.options.id)==="RUNNING"){clearTimeout(l.timeout);clearTimeout(l.expiration);l.job.doDrop({message:r.dropErrorMessage})}}this._dropAllQueued(r.dropErrorMessage);return s(0)}))))):this.schedule({priority:te-1,weight:0},(()=>s(1)));this._receive=function(i){return i._reject(new Bottleneck.prototype.BottleneckError(r.enqueueErrorMessage))};this.stop=()=>this.Promise.reject(new Bottleneck.prototype.BottleneckError("stop() has already been called"));return i}async _addToQueue(r){var i,s,a,l,c,d,p;({args:i,options:l}=r);try{({reachedHWM:c,blocked:s,strategy:p}=await this._store.__submit__(this.queued(),l.weight))}catch(s){a=s;this.Events.trigger("debug",`Could not queue ${l.id}`,{args:i,options:l,error:a});r.doDrop({error:a});return false}if(s){r.doDrop();return true}else if(c){d=p===Bottleneck.prototype.strategy.LEAK?this._queues.shiftLastFrom(l.priority):p===Bottleneck.prototype.strategy.OVERFLOW_PRIORITY?this._queues.shiftLastFrom(l.priority+1):p===Bottleneck.prototype.strategy.OVERFLOW?r:void 0;if(d!=null){d.doDrop()}if(d==null||p===Bottleneck.prototype.strategy.OVERFLOW){if(d==null){r.doDrop()}return c}}r.doQueue(c,s);this._queues.push(r);await this._drainAll();return c}_receive(r){if(this._states.jobStatus(r.options.id)!=null){r._reject(new Bottleneck.prototype.BottleneckError(`A job with the same id already exists (id=${r.options.id})`));return false}else{r.doReceive();return this._submitLock.schedule(this._addToQueue,r)}}submit(...r){var i,s,a,l,c,d,p;if(typeof r[0]==="function"){c=r,[s,...r]=c,[i]=oe.call(r,-1);l=ae.load({},this.jobDefaults)}else{d=r,[l,s,...r]=d,[i]=oe.call(r,-1);l=ae.load(l,this.jobDefaults)}p=(...r)=>new this.Promise((function(i,a){return s(...r,(function(...r){return(r[0]!=null?a:i)(r)}))}));a=new Z(p,r,l,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise);a.promise.then((function(r){return typeof i==="function"?i(...r):void 0})).catch((function(r){if(Array.isArray(r)){return typeof i==="function"?i(...r):void 0}else{return typeof i==="function"?i(r):void 0}}));return this._receive(a)}schedule(...r){var i,s,a;if(typeof r[0]==="function"){[a,...r]=r;s={}}else{[s,a,...r]=r}i=new Z(a,r,s,this.jobDefaults,this.rejectOnDrop,this.Events,this._states,this.Promise);this._receive(i);return i.promise}wrap(r){var i,s;i=this.schedule.bind(this);s=function(...s){return i(r.bind(this),...s)};s.withOptions=function(s,...a){return i(s,r,...a)};return s}async updateSettings(r={}){await this._store.__updateSettings__(ae.overwrite(r,this.storeDefaults));ae.overwrite(r,this.instanceDefaults,this);return this}currentReservoir(){return this._store.__currentReservoir__()}incrementReservoir(r=0){return this._store.__incrementReservoir__(r)}}Bottleneck.default=Bottleneck;Bottleneck.Events=X;Bottleneck.version=Bottleneck.prototype.version=J.version;Bottleneck.strategy=Bottleneck.prototype.strategy={LEAK:1,OVERFLOW:2,OVERFLOW_PRIORITY:4,BLOCK:3};Bottleneck.BottleneckError=Bottleneck.prototype.BottleneckError=g;Bottleneck.Group=Bottleneck.prototype.Group=j;Bottleneck.RedisConnection=Bottleneck.prototype.RedisConnection=require$$2;Bottleneck.IORedisConnection=Bottleneck.prototype.IORedisConnection=require$$3;Bottleneck.Batcher=Bottleneck.prototype.Batcher=Y;Bottleneck.prototype.jobDefaults={priority:K,weight:1,expiration:null,id:""};Bottleneck.prototype.storeDefaults={maxConcurrent:null,minTime:0,highWater:null,strategy:Bottleneck.prototype.strategy.LEAK,penalty:null,reservoir:null,reservoirRefreshInterval:null,reservoirRefreshAmount:null,reservoirIncreaseInterval:null,reservoirIncreaseAmount:null,reservoirIncreaseMaximum:null};Bottleneck.prototype.localStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:250};Bottleneck.prototype.redisStoreDefaults={Promise:Promise,timeout:null,heartbeatInterval:5e3,clientTimeout:1e4,Redis:null,clientOptions:{},clusterNodes:null,clearDatastore:false,connection:null};Bottleneck.prototype.instanceDefaults={datastore:"local",connection:null,id:"",rejectOnDrop:true,trackDoneStatus:false,Promise:Promise};Bottleneck.prototype.stopDefaults={enqueueErrorMessage:"This limiter has been stopped and cannot accept new jobs.",dropWaitingJobs:true,dropErrorMessage:"This limiter has been stopped."};return Bottleneck}.call(r);var le=$;var ce=le;return ce}))},37282:(r,i,s)=>{var a=s(23743);var l=s(62738);r.exports=expandTop;var c="\0SLASH"+Math.random()+"\0";var d="\0OPEN"+Math.random()+"\0";var p="\0CLOSE"+Math.random()+"\0";var A="\0COMMA"+Math.random()+"\0";var u="\0PERIOD"+Math.random()+"\0";function numeric(r){return parseInt(r,10)==r?parseInt(r,10):r.charCodeAt(0)}function escapeBraces(r){return r.split("\\\\").join(c).split("\\{").join(d).split("\\}").join(p).split("\\,").join(A).split("\\.").join(u)}function unescapeBraces(r){return r.split(c).join("\\").split(d).join("{").split(p).join("}").split(A).join(",").split(u).join(".")}function parseCommaParts(r){if(!r)return[""];var i=[];var s=l("{","}",r);if(!s)return r.split(",");var a=s.pre;var c=s.body;var d=s.post;var p=a.split(",");p[p.length-1]+="{"+c+"}";var A=parseCommaParts(d);if(d.length){p[p.length-1]+=A.shift();p.push.apply(p,A)}i.push.apply(i,p);return i}function expandTop(r){if(!r)return[];if(r.substr(0,2)==="{}"){r="\\{\\}"+r.substr(2)}return expand(escapeBraces(r),true).map(unescapeBraces)}function identity(r){return r}function embrace(r){return"{"+r+"}"}function isPadded(r){return/^-?0\d/.test(r)}function lte(r,i){return r<=i}function gte(r,i){return r>=i}function expand(r,i){var s=[];var c=l("{","}",r);if(!c||/\$$/.test(c.pre))return[r];var d=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(c.body);var A=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(c.body);var u=d||A;var h=c.body.indexOf(",")>=0;if(!u&&!h){if(c.post.match(/,.*\}/)){r=c.pre+"{"+c.body+p+c.post;return expand(r)}return[r]}var g;if(u){g=c.body.split(/\.\./)}else{g=parseCommaParts(c.body);if(g.length===1){g=expand(g[0],false).map(embrace);if(g.length===1){var y=c.post.length?expand(c.post,false):[""];return y.map((function(r){return c.pre+g[0]+r}))}}}var b=c.pre;var y=c.post.length?expand(c.post,false):[""];var C;if(u){var B=numeric(g[0]);var I=numeric(g[1]);var w=Math.max(g[0].length,g[1].length);var v=g.length==3?Math.abs(numeric(g[2])):1;var S=lte;var Q=I0){var _=new Array(T+1).join("0");if(R<0)k="-"+_+k.slice(1);else k=_+k}}}C.push(k)}}else{C=a(g,(function(r){return expand(r,false)}))}for(var x=0;x{var a=s(62738);r.exports=expandTop;var l="\0SLASH"+Math.random()+"\0";var c="\0OPEN"+Math.random()+"\0";var d="\0CLOSE"+Math.random()+"\0";var p="\0COMMA"+Math.random()+"\0";var A="\0PERIOD"+Math.random()+"\0";function numeric(r){return parseInt(r,10)==r?parseInt(r,10):r.charCodeAt(0)}function escapeBraces(r){return r.split("\\\\").join(l).split("\\{").join(c).split("\\}").join(d).split("\\,").join(p).split("\\.").join(A)}function unescapeBraces(r){return r.split(l).join("\\").split(c).join("{").split(d).join("}").split(p).join(",").split(A).join(".")}function parseCommaParts(r){if(!r)return[""];var i=[];var s=a("{","}",r);if(!s)return r.split(",");var l=s.pre;var c=s.body;var d=s.post;var p=l.split(",");p[p.length-1]+="{"+c+"}";var A=parseCommaParts(d);if(d.length){p[p.length-1]+=A.shift();p.push.apply(p,A)}i.push.apply(i,p);return i}function expandTop(r){if(!r)return[];if(r.substr(0,2)==="{}"){r="\\{\\}"+r.substr(2)}return expand(escapeBraces(r),true).map(unescapeBraces)}function embrace(r){return"{"+r+"}"}function isPadded(r){return/^-?0\d/.test(r)}function lte(r,i){return r<=i}function gte(r,i){return r>=i}function expand(r,i){var s=[];var l=a("{","}",r);if(!l)return[r];var c=l.pre;var p=l.post.length?expand(l.post,false):[""];if(/\$$/.test(l.pre)){for(var A=0;A=0;if(!y&&!b){if(l.post.match(/,.*\}/)){r=l.pre+"{"+l.body+d+l.post;return expand(r)}return[r]}var C;if(y){C=l.body.split(/\.\./)}else{C=parseCommaParts(l.body);if(C.length===1){C=expand(C[0],false).map(embrace);if(C.length===1){return p.map((function(r){return l.pre+C[0]+r}))}}}var B;if(y){var I=numeric(C[0]);var w=numeric(C[1]);var v=Math.max(C[0].length,C[1].length);var S=C.length==3?Math.abs(numeric(C[2])):1;var Q=lte;var N=w0){var x=new Array(_+1).join("0");if(k<0)T="-"+x+T.slice(1);else T=x+T}}}B.push(T)}}else{B=[];for(var D=0;D{r.exports=Buffers;function Buffers(r){if(!(this instanceof Buffers))return new Buffers(r);this.buffers=r||[];this.length=this.buffers.reduce((function(r,i){return r+i.length}),0)}Buffers.prototype.push=function(){for(var r=0;r=0?r:this.length-r;var l=[].slice.call(arguments,2);if(i===undefined){i=this.length-a}else if(i>this.length-a){i=this.length-a}for(var r=0;r0){var u=a-p;if(u+i0){var b=l.slice();b.unshift(g);b.push(y);s.splice.apply(s,[A,1].concat(b));A+=b.length;l=[]}else{s.splice(A,1,g,y);A+=2}}else{c.push(s[A].slice(u));s[A]=s[A].slice(0,u);A++}}if(l.length>0){s.splice.apply(s,[A,0].concat(l));A+=l.length}while(c.lengththis.length)i=this.length;var a=0;for(var l=0;l=i-r?Math.min(u+(i-r)-d,A):A;s[p].copy(c,d,u,h);d+=h-u}return c};Buffers.prototype.pos=function(r){if(r<0||r>=this.length)throw new Error("oob");var i=r,s=0,a=null;for(;;){a=this.buffers[s];if(i=this.buffers[s].length){a=0;s++;if(s>=this.buffers.length){return-1}}var A=this.buffers[s][a];if(A==r[l]){if(l==0){c={i:s,j:a,pos:d}}l++;if(l==r.length){return c.pos}}else if(l!=0){s=c.i;a=c.j;d=c.pos;l=0}a++;d++}};Buffers.prototype.toBuffer=function(){return this.slice()};Buffers.prototype.toString=function(r,i,s){return this.slice(i,s).toString(r)}},82165:(r,i,s)=>{var a=s(33796);var l=s(82361).EventEmitter;r.exports=Chainsaw;function Chainsaw(r){var i=Chainsaw.saw(r,{});var s=r.call(i.handlers,i);if(s!==undefined)i.handlers=s;i.record();return i.chain()}Chainsaw.light=function ChainsawLight(r){var i=Chainsaw.saw(r,{});var s=r.call(i.handlers,i);if(s!==undefined)i.handlers=s;return i.chain()};Chainsaw.saw=function(r,i){var s=new l;s.handlers=i;s.actions=[];s.chain=function(){var r=a(s.handlers).map((function(i){if(this.isRoot)return i;var a=this.path;if(typeof i==="function"){this.update((function(){s.actions.push({path:a,args:[].slice.call(arguments)});return r}))}}));process.nextTick((function(){s.emit("begin");s.next()}));return r};s.pop=function(){return s.actions.shift()};s.next=function(){var r=s.pop();if(!r){s.emit("end")}else if(!r.trap){var i=s.handlers;r.path.forEach((function(r){i=i[r]}));i.apply(s.handlers,r.args)}};s.nest=function(i){var a=[].slice.call(arguments,1);var l=true;if(typeof i==="boolean"){var l=i;i=a.shift()}var c=Chainsaw.saw(r,{});var d=r.call(c.handlers,c);if(d!==undefined)c.handlers=d;if("undefined"!==typeof s.step){c.record()}i.apply(c.chain(),a);if(l!==false)c.on("end",s.next)};s.record=function(){upgradeChainsaw(s)};["trap","down","jump"].forEach((function(r){s[r]=function(){throw new Error("To use the trap, down and jump features, please "+"call record() first to start recording actions.")}}));return s};function upgradeChainsaw(r){r.step=0;r.pop=function(){return r.actions[r.step++]};r.trap=function(i,s){var a=Array.isArray(i)?i:[i];r.actions.push({path:a,step:r.step,cb:s,trap:true})};r.down=function(i){var s=(Array.isArray(i)?i:[i]).join("/");var a=r.actions.slice(r.step).map((function(i){if(i.trap&&i.step<=r.step)return false;return i.path.join("/")==s})).indexOf(true);if(a>=0)r.step+=a;else r.step=r.actions.length;var l=r.actions[r.step-1];if(l&&l.trap){r.step=l.step;l.cb()}else r.next()};r.jump=function(i){r.step=i;r.next()}}},80361:r=>{var i=r.exports=function(){};i.prototype.getName=function(){};i.prototype.getSize=function(){};i.prototype.getLastModifiedDate=function(){};i.prototype.isDirectory=function(){}},77643:(r,i,s)=>{var a=s(73837).inherits;var l=s(47296);var c=s(40247).Transform;var d=s(80361);var p=s(57151);var A=r.exports=function(r){if(!(this instanceof A)){return new A(r)}c.call(this,r);this.offset=0;this._archive={finish:false,finished:false,processing:false}};a(A,c);A.prototype._appendBuffer=function(r,i,s){};A.prototype._appendStream=function(r,i,s){};A.prototype._emitErrorCallback=function(r){if(r){this.emit("error",r)}};A.prototype._finish=function(r){};A.prototype._normalizeEntry=function(r){};A.prototype._transform=function(r,i,s){s(null,r)};A.prototype.entry=function(r,i,s){i=i||null;if(typeof s!=="function"){s=this._emitErrorCallback.bind(this)}if(!(r instanceof d)){s(new Error("not a valid instance of ArchiveEntry"));return}if(this._archive.finish||this._archive.finished){s(new Error("unacceptable entry after finish"));return}if(this._archive.processing){s(new Error("already processing an entry"));return}this._archive.processing=true;this._normalizeEntry(r);this._entry=r;i=p.normalizeInputSource(i);if(Buffer.isBuffer(i)){this._appendBuffer(r,i,s)}else if(l(i)){this._appendStream(r,i,s)}else{this._archive.processing=false;s(new Error("input source must be valid Stream or Buffer instance"));return}return this};A.prototype.finish=function(){if(this._archive.processing){this._archive.finish=true;return}this._finish()};A.prototype.getBytesWritten=function(){return this.offset};A.prototype.write=function(r,i){if(r){this.offset+=r.length}return c.prototype.write.call(this,r,i)}},16117:r=>{r.exports={WORD:4,DWORD:8,EMPTY:Buffer.alloc(0),SHORT:2,SHORT_MASK:65535,SHORT_SHIFT:16,SHORT_ZERO:Buffer.from(Array(2)),LONG:4,LONG_ZERO:Buffer.from(Array(4)),MIN_VERSION_INITIAL:10,MIN_VERSION_DATA_DESCRIPTOR:20,MIN_VERSION_ZIP64:45,VERSION_MADEBY:45,METHOD_STORED:0,METHOD_DEFLATED:8,PLATFORM_UNIX:3,PLATFORM_FAT:0,SIG_LFH:67324752,SIG_DD:134695760,SIG_CFH:33639248,SIG_EOCD:101010256,SIG_ZIP64_EOCD:101075792,SIG_ZIP64_EOCD_LOC:117853008,ZIP64_MAGIC_SHORT:65535,ZIP64_MAGIC:4294967295,ZIP64_EXTRA_ID:1,ZLIB_NO_COMPRESSION:0,ZLIB_BEST_SPEED:1,ZLIB_BEST_COMPRESSION:9,ZLIB_DEFAULT_COMPRESSION:-1,MODE_MASK:4095,DEFAULT_FILE_MODE:33188,DEFAULT_DIR_MODE:16877,EXT_FILE_ATTR_DIR:1106051088,EXT_FILE_ATTR_FILE:2175008800,S_IFMT:61440,S_IFIFO:4096,S_IFCHR:8192,S_IFDIR:16384,S_IFBLK:24576,S_IFREG:32768,S_IFLNK:40960,S_IFSOCK:49152,S_DOS_A:32,S_DOS_D:16,S_DOS_V:8,S_DOS_S:4,S_DOS_H:2,S_DOS_R:1}},11262:(r,i,s)=>{var a=s(97739);var l=1<<3;var c=1<<0;var d=1<<2;var p=1<<1;var A=1<<6;var u=1<<11;var h=r.exports=function(){if(!(this instanceof h)){return new h}this.descriptor=false;this.encryption=false;this.utf8=false;this.numberOfShannonFanoTrees=0;this.strongEncryption=false;this.slidingDictionarySize=0;return this};h.prototype.encode=function(){return a.getShortBytes((this.descriptor?l:0)|(this.utf8?u:0)|(this.encryption?c:0)|(this.strongEncryption?A:0))};h.prototype.parse=function(r,i){var s=a.getShortBytesValue(r,i);var g=new h;g.useDataDescriptor((s&l)!==0);g.useUTF8ForNames((s&u)!==0);g.useStrongEncryption((s&A)!==0);g.useEncryption((s&c)!==0);g.setSlidingDictionarySize((s&p)!==0?8192:4096);g.setNumberOfShannonFanoTrees((s&d)!==0?3:2);return g};h.prototype.setNumberOfShannonFanoTrees=function(r){this.numberOfShannonFanoTrees=r};h.prototype.getNumberOfShannonFanoTrees=function(){return this.numberOfShannonFanoTrees};h.prototype.setSlidingDictionarySize=function(r){this.slidingDictionarySize=r};h.prototype.getSlidingDictionarySize=function(){return this.slidingDictionarySize};h.prototype.useDataDescriptor=function(r){this.descriptor=r};h.prototype.usesDataDescriptor=function(){return this.descriptor};h.prototype.useEncryption=function(r){this.encryption=r};h.prototype.usesEncryption=function(){return this.encryption};h.prototype.useStrongEncryption=function(r){this.strongEncryption=r};h.prototype.usesStrongEncryption=function(){return this.strongEncryption};h.prototype.useUTF8ForNames=function(r){this.utf8=r};h.prototype.usesUTF8ForNames=function(){return this.utf8}},65923:r=>{r.exports={PERM_MASK:4095,FILE_TYPE_FLAG:61440,LINK_FLAG:40960,FILE_FLAG:32768,DIR_FLAG:16384,DEFAULT_LINK_PERM:511,DEFAULT_DIR_PERM:493,DEFAULT_FILE_PERM:420}},97739:r=>{var i=r.exports={};i.dateToDos=function(r,i){i=i||false;var s=i?r.getFullYear():r.getUTCFullYear();if(s<1980){return 2162688}else if(s>=2044){return 2141175677}var a={year:s,month:i?r.getMonth():r.getUTCMonth(),date:i?r.getDate():r.getUTCDate(),hours:i?r.getHours():r.getUTCHours(),minutes:i?r.getMinutes():r.getUTCMinutes(),seconds:i?r.getSeconds():r.getUTCSeconds()};return a.year-1980<<25|a.month+1<<21|a.date<<16|a.hours<<11|a.minutes<<5|a.seconds/2};i.dosToDate=function(r){return new Date((r>>25&127)+1980,(r>>21&15)-1,r>>16&31,r>>11&31,r>>5&63,(r&31)<<1)};i.fromDosTime=function(r){return i.dosToDate(r.readUInt32LE(0))};i.getEightBytes=function(r){var i=Buffer.alloc(8);i.writeUInt32LE(r%4294967296,0);i.writeUInt32LE(r/4294967296|0,4);return i};i.getShortBytes=function(r){var i=Buffer.alloc(2);i.writeUInt16LE((r&65535)>>>0,0);return i};i.getShortBytesValue=function(r,i){return r.readUInt16LE(i)};i.getLongBytes=function(r){var i=Buffer.alloc(4);i.writeUInt32LE((r&4294967295)>>>0,0);return i};i.getLongBytesValue=function(r,i){return r.readUInt32LE(i)};i.toDosTime=function(r){return i.getLongBytes(i.dateToDos(r))}},84907:(r,i,s)=>{var a=s(73837).inherits;var l=s(37321);var c=s(80361);var d=s(11262);var p=s(65923);var A=s(16117);var u=s(97739);var h=r.exports=function(r){if(!(this instanceof h)){return new h(r)}c.call(this);this.platform=A.PLATFORM_FAT;this.method=-1;this.name=null;this.size=0;this.csize=0;this.gpb=new d;this.crc=0;this.time=-1;this.minver=A.MIN_VERSION_INITIAL;this.mode=-1;this.extra=null;this.exattr=0;this.inattr=0;this.comment=null;if(r){this.setName(r)}};a(h,c);h.prototype.getCentralDirectoryExtra=function(){return this.getExtra()};h.prototype.getComment=function(){return this.comment!==null?this.comment:""};h.prototype.getCompressedSize=function(){return this.csize};h.prototype.getCrc=function(){return this.crc};h.prototype.getExternalAttributes=function(){return this.exattr};h.prototype.getExtra=function(){return this.extra!==null?this.extra:A.EMPTY};h.prototype.getGeneralPurposeBit=function(){return this.gpb};h.prototype.getInternalAttributes=function(){return this.inattr};h.prototype.getLastModifiedDate=function(){return this.getTime()};h.prototype.getLocalFileDataExtra=function(){return this.getExtra()};h.prototype.getMethod=function(){return this.method};h.prototype.getName=function(){return this.name};h.prototype.getPlatform=function(){return this.platform};h.prototype.getSize=function(){return this.size};h.prototype.getTime=function(){return this.time!==-1?u.dosToDate(this.time):-1};h.prototype.getTimeDos=function(){return this.time!==-1?this.time:0};h.prototype.getUnixMode=function(){return this.platform!==A.PLATFORM_UNIX?0:this.getExternalAttributes()>>A.SHORT_SHIFT&A.SHORT_MASK};h.prototype.getVersionNeededToExtract=function(){return this.minver};h.prototype.setComment=function(r){if(Buffer.byteLength(r)!==r.length){this.getGeneralPurposeBit().useUTF8ForNames(true)}this.comment=r};h.prototype.setCompressedSize=function(r){if(r<0){throw new Error("invalid entry compressed size")}this.csize=r};h.prototype.setCrc=function(r){if(r<0){throw new Error("invalid entry crc32")}this.crc=r};h.prototype.setExternalAttributes=function(r){this.exattr=r>>>0};h.prototype.setExtra=function(r){this.extra=r};h.prototype.setGeneralPurposeBit=function(r){if(!(r instanceof d)){throw new Error("invalid entry GeneralPurposeBit")}this.gpb=r};h.prototype.setInternalAttributes=function(r){this.inattr=r};h.prototype.setMethod=function(r){if(r<0){throw new Error("invalid entry compression method")}this.method=r};h.prototype.setName=function(r,i=false){r=l(r,false).replace(/^\w+:/,"").replace(/^(\.\.\/|\/)+/,"");if(i){r=`/${r}`}if(Buffer.byteLength(r)!==r.length){this.getGeneralPurposeBit().useUTF8ForNames(true)}this.name=r};h.prototype.setPlatform=function(r){this.platform=r};h.prototype.setSize=function(r){if(r<0){throw new Error("invalid entry size")}this.size=r};h.prototype.setTime=function(r,i){if(!(r instanceof Date)){throw new Error("invalid entry time")}this.time=u.dateToDos(r,i)};h.prototype.setUnixMode=function(r){r|=this.isDirectory()?A.S_IFDIR:A.S_IFREG;var i=0;i|=r<A.ZIP64_MAGIC||this.size>A.ZIP64_MAGIC}},72086:(r,i,s)=>{var a=s(73837).inherits;var l=s(13467);var{CRC32Stream:c}=s(70347);var{DeflateCRC32Stream:d}=s(70347);var p=s(77643);var A=s(84907);var u=s(11262);var h=s(16117);var g=s(57151);var y=s(97739);var b=r.exports=function(r){if(!(this instanceof b)){return new b(r)}r=this.options=this._defaults(r);p.call(this,r);this._entry=null;this._entries=[];this._archive={centralLength:0,centralOffset:0,comment:"",finish:false,finished:false,processing:false,forceZip64:r.forceZip64,forceLocalTime:r.forceLocalTime}};a(b,p);b.prototype._afterAppend=function(r){this._entries.push(r);if(r.getGeneralPurposeBit().usesDataDescriptor()){this._writeDataDescriptor(r)}this._archive.processing=false;this._entry=null;if(this._archive.finish&&!this._archive.finished){this._finish()}};b.prototype._appendBuffer=function(r,i,s){if(i.length===0){r.setMethod(h.METHOD_STORED)}var a=r.getMethod();if(a===h.METHOD_STORED){r.setSize(i.length);r.setCompressedSize(i.length);r.setCrc(l.buf(i)>>>0)}this._writeLocalFileHeader(r);if(a===h.METHOD_STORED){this.write(i);this._afterAppend(r);s(null,r);return}else if(a===h.METHOD_DEFLATED){this._smartStream(r,s).end(i);return}else{s(new Error("compression method "+a+" not implemented"));return}};b.prototype._appendStream=function(r,i,s){r.getGeneralPurposeBit().useDataDescriptor(true);r.setVersionNeededToExtract(h.MIN_VERSION_DATA_DESCRIPTOR);this._writeLocalFileHeader(r);var a=this._smartStream(r,s);i.once("error",(function(r){a.emit("error",r);a.end()}));i.pipe(a)};b.prototype._defaults=function(r){if(typeof r!=="object"){r={}}if(typeof r.zlib!=="object"){r.zlib={}}if(typeof r.zlib.level!=="number"){r.zlib.level=h.ZLIB_BEST_SPEED}r.forceZip64=!!r.forceZip64;r.forceLocalTime=!!r.forceLocalTime;return r};b.prototype._finish=function(){this._archive.centralOffset=this.offset;this._entries.forEach(function(r){this._writeCentralFileHeader(r)}.bind(this));this._archive.centralLength=this.offset-this._archive.centralOffset;if(this.isZip64()){this._writeCentralDirectoryZip64()}this._writeCentralDirectoryEnd();this._archive.processing=false;this._archive.finish=true;this._archive.finished=true;this.end()};b.prototype._normalizeEntry=function(r){if(r.getMethod()===-1){r.setMethod(h.METHOD_DEFLATED)}if(r.getMethod()===h.METHOD_DEFLATED){r.getGeneralPurposeBit().useDataDescriptor(true);r.setVersionNeededToExtract(h.MIN_VERSION_DATA_DESCRIPTOR)}if(r.getTime()===-1){r.setTime(new Date,this._archive.forceLocalTime)}r._offsets={file:0,data:0,contents:0}};b.prototype._smartStream=function(r,i){var s=r.getMethod()===h.METHOD_DEFLATED;var a=s?new d(this.options.zlib):new c;var l=null;function handleStuff(){var s=a.digest().readUInt32BE(0);r.setCrc(s);r.setSize(a.size());r.setCompressedSize(a.size(true));this._afterAppend(r);i(l,r)}a.once("end",handleStuff.bind(this));a.once("error",(function(r){l=r}));a.pipe(this,{end:false});return a};b.prototype._writeCentralDirectoryEnd=function(){var r=this._entries.length;var i=this._archive.centralLength;var s=this._archive.centralOffset;if(this.isZip64()){r=h.ZIP64_MAGIC_SHORT;i=h.ZIP64_MAGIC;s=h.ZIP64_MAGIC}this.write(y.getLongBytes(h.SIG_EOCD));this.write(h.SHORT_ZERO);this.write(h.SHORT_ZERO);this.write(y.getShortBytes(r));this.write(y.getShortBytes(r));this.write(y.getLongBytes(i));this.write(y.getLongBytes(s));var a=this.getComment();var l=Buffer.byteLength(a);this.write(y.getShortBytes(l));this.write(a)};b.prototype._writeCentralDirectoryZip64=function(){this.write(y.getLongBytes(h.SIG_ZIP64_EOCD));this.write(y.getEightBytes(44));this.write(y.getShortBytes(h.MIN_VERSION_ZIP64));this.write(y.getShortBytes(h.MIN_VERSION_ZIP64));this.write(h.LONG_ZERO);this.write(h.LONG_ZERO);this.write(y.getEightBytes(this._entries.length));this.write(y.getEightBytes(this._entries.length));this.write(y.getEightBytes(this._archive.centralLength));this.write(y.getEightBytes(this._archive.centralOffset));this.write(y.getLongBytes(h.SIG_ZIP64_EOCD_LOC));this.write(h.LONG_ZERO);this.write(y.getEightBytes(this._archive.centralOffset+this._archive.centralLength));this.write(y.getLongBytes(1))};b.prototype._writeCentralFileHeader=function(r){var i=r.getGeneralPurposeBit();var s=r.getMethod();var a=r._offsets.file;var l=r.getSize();var c=r.getCompressedSize();if(r.isZip64()||a>h.ZIP64_MAGIC){l=h.ZIP64_MAGIC;c=h.ZIP64_MAGIC;a=h.ZIP64_MAGIC;r.setVersionNeededToExtract(h.MIN_VERSION_ZIP64);var d=Buffer.concat([y.getShortBytes(h.ZIP64_EXTRA_ID),y.getShortBytes(24),y.getEightBytes(r.getSize()),y.getEightBytes(r.getCompressedSize()),y.getEightBytes(r._offsets.file)],28);r.setExtra(d)}this.write(y.getLongBytes(h.SIG_CFH));this.write(y.getShortBytes(r.getPlatform()<<8|h.VERSION_MADEBY));this.write(y.getShortBytes(r.getVersionNeededToExtract()));this.write(i.encode());this.write(y.getShortBytes(s));this.write(y.getLongBytes(r.getTimeDos()));this.write(y.getLongBytes(r.getCrc()));this.write(y.getLongBytes(c));this.write(y.getLongBytes(l));var p=r.getName();var A=r.getComment();var u=r.getCentralDirectoryExtra();if(i.usesUTF8ForNames()){p=Buffer.from(p);A=Buffer.from(A)}this.write(y.getShortBytes(p.length));this.write(y.getShortBytes(u.length));this.write(y.getShortBytes(A.length));this.write(h.SHORT_ZERO);this.write(y.getShortBytes(r.getInternalAttributes()));this.write(y.getLongBytes(r.getExternalAttributes()));this.write(y.getLongBytes(a));this.write(p);this.write(u);this.write(A)};b.prototype._writeDataDescriptor=function(r){this.write(y.getLongBytes(h.SIG_DD));this.write(y.getLongBytes(r.getCrc()));if(r.isZip64()){this.write(y.getEightBytes(r.getCompressedSize()));this.write(y.getEightBytes(r.getSize()))}else{this.write(y.getLongBytes(r.getCompressedSize()));this.write(y.getLongBytes(r.getSize()))}};b.prototype._writeLocalFileHeader=function(r){var i=r.getGeneralPurposeBit();var s=r.getMethod();var a=r.getName();var l=r.getLocalFileDataExtra();if(r.isZip64()){i.useDataDescriptor(true);r.setVersionNeededToExtract(h.MIN_VERSION_ZIP64)}if(i.usesUTF8ForNames()){a=Buffer.from(a)}r._offsets.file=this.offset;this.write(y.getLongBytes(h.SIG_LFH));this.write(y.getShortBytes(r.getVersionNeededToExtract()));this.write(i.encode());this.write(y.getShortBytes(s));this.write(y.getLongBytes(r.getTimeDos()));r._offsets.data=this.offset;if(i.usesDataDescriptor()){this.write(h.LONG_ZERO);this.write(h.LONG_ZERO);this.write(h.LONG_ZERO)}else{this.write(y.getLongBytes(r.getCrc()));this.write(y.getLongBytes(r.getCompressedSize()));this.write(y.getLongBytes(r.getSize()))}this.write(y.getShortBytes(a.length));this.write(y.getShortBytes(l.length));this.write(a);this.write(l);r._offsets.contents=this.offset};b.prototype.getComment=function(r){return this._archive.comment!==null?this._archive.comment:""};b.prototype.isZip64=function(){return this._archive.forceZip64||this._entries.length>h.ZIP64_MAGIC_SHORT||this._archive.centralLength>h.ZIP64_MAGIC||this._archive.centralOffset>h.ZIP64_MAGIC};b.prototype.setComment=function(r){this._archive.comment=r}},60122:(r,i,s)=>{r.exports={ArchiveEntry:s(80361),ZipArchiveEntry:s(84907),ArchiveOutputStream:s(77643),ZipArchiveOutputStream:s(72086)}},57151:(r,i,s)=>{var a=s(12781).Stream;var l=s(40247).PassThrough;var c=s(47296);var d=r.exports={};d.normalizeInputSource=function(r){if(r===null){return Buffer.alloc(0)}else if(typeof r==="string"){return Buffer.from(r)}else if(c(r)&&!r._readableState){var i=new l;r.pipe(i);return i}return r}},23743:r=>{r.exports=function(r,s){var a=[];for(var l=0;l{function isArray(r){if(Array.isArray){return Array.isArray(r)}return objectToString(r)==="[object Array]"}i.isArray=isArray;function isBoolean(r){return typeof r==="boolean"}i.isBoolean=isBoolean;function isNull(r){return r===null}i.isNull=isNull;function isNullOrUndefined(r){return r==null}i.isNullOrUndefined=isNullOrUndefined;function isNumber(r){return typeof r==="number"}i.isNumber=isNumber;function isString(r){return typeof r==="string"}i.isString=isString;function isSymbol(r){return typeof r==="symbol"}i.isSymbol=isSymbol;function isUndefined(r){return r===void 0}i.isUndefined=isUndefined;function isRegExp(r){return objectToString(r)==="[object RegExp]"}i.isRegExp=isRegExp;function isObject(r){return typeof r==="object"&&r!==null}i.isObject=isObject;function isDate(r){return objectToString(r)==="[object Date]"}i.isDate=isDate;function isError(r){return objectToString(r)==="[object Error]"||r instanceof Error}i.isError=isError;function isFunction(r){return typeof r==="function"}i.isFunction=isFunction;function isPrimitive(r){return r===null||typeof r==="boolean"||typeof r==="number"||typeof r==="string"||typeof r==="symbol"||typeof r==="undefined"}i.isPrimitive=isPrimitive;i.isBuffer=s(14300).Buffer.isBuffer;function objectToString(r){return Object.prototype.toString.call(r)}},13467:(r,i)=>{ -/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ -var s;(function(r){if(typeof DO_NOT_EXPORT_CRC==="undefined"){if(true){r(i)}else{}}else{r(s={})}})((function(r){r.version="1.2.2";function signed_crc_table(){var r=0,i=new Array(256);for(var s=0;s!=256;++s){r=s;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;r=r&1?-306674912^r>>>1:r>>>1;i[s]=r}return typeof Int32Array!=="undefined"?new Int32Array(i):i}var i=signed_crc_table();function slice_by_16_tables(r){var i=0,s=0,a=0,l=typeof Int32Array!=="undefined"?new Int32Array(4096):new Array(4096);for(a=0;a!=256;++a)l[a]=r[a];for(a=0;a!=256;++a){s=r[a];for(i=256+a;i<4096;i+=256)s=l[i]=s>>>8^r[s&255]}var c=[];for(a=1;a!=16;++a)c[a-1]=typeof Int32Array!=="undefined"?l.subarray(a*256,a*256+256):l.slice(a*256,a*256+256);return c}var s=slice_by_16_tables(i);var a=s[0],l=s[1],c=s[2],d=s[3],p=s[4];var A=s[5],u=s[6],h=s[7],g=s[8],y=s[9];var b=s[10],C=s[11],B=s[12],I=s[13],w=s[14];function crc32_bstr(r,s){var a=s^-1;for(var l=0,c=r.length;l>>8^i[(a^r.charCodeAt(l++))&255];return~a}function crc32_buf(r,s){var v=s^-1,S=r.length-15,Q=0;for(;Q>8&255]^B[r[Q++]^v>>16&255]^C[r[Q++]^v>>>24]^b[r[Q++]]^y[r[Q++]]^g[r[Q++]]^h[r[Q++]]^u[r[Q++]]^A[r[Q++]]^p[r[Q++]]^d[r[Q++]]^c[r[Q++]]^l[r[Q++]]^a[r[Q++]]^i[r[Q++]];S+=15;while(Q>>8^i[(v^r[Q++])&255];return~v}function crc32_str(r,s){var a=s^-1;for(var l=0,c=r.length,d=0,p=0;l>>8^i[(a^d)&255]}else if(d<2048){a=a>>>8^i[(a^(192|d>>6&31))&255];a=a>>>8^i[(a^(128|d&63))&255]}else if(d>=55296&&d<57344){d=(d&1023)+64;p=r.charCodeAt(l++)&1023;a=a>>>8^i[(a^(240|d>>8&7))&255];a=a>>>8^i[(a^(128|d>>2&63))&255];a=a>>>8^i[(a^(128|p>>6&15|(d&3)<<4))&255];a=a>>>8^i[(a^(128|p&63))&255]}else{a=a>>>8^i[(a^(224|d>>12&15))&255];a=a>>>8^i[(a^(128|d>>6&63))&255];a=a>>>8^i[(a^(128|d&63))&255]}}return~a}r.table=i;r.bstr=crc32_bstr;r.buf=crc32_buf;r.str=crc32_str}))},36735:(r,i,s)=>{"use strict";const{Transform:a}=s(40247);const l=s(13467);class CRC32Stream extends a{constructor(r){super(r);this.checksum=Buffer.allocUnsafe(4);this.checksum.writeInt32BE(0,0);this.rawSize=0}_transform(r,i,s){if(r){this.checksum=l.buf(r,this.checksum)>>>0;this.rawSize+=r.length}s(null,r)}digest(r){const i=Buffer.allocUnsafe(4);i.writeUInt32BE(this.checksum>>>0,0);return r?i.toString(r):i}hex(){return this.digest("hex").toUpperCase()}size(){return this.rawSize}}r.exports=CRC32Stream},68214:(r,i,s)=>{"use strict";const{DeflateRaw:a}=s(59796);const l=s(13467);class DeflateCRC32Stream extends a{constructor(r){super(r);this.checksum=Buffer.allocUnsafe(4);this.checksum.writeInt32BE(0,0);this.rawSize=0;this.compressedSize=0}push(r,i){if(r){this.compressedSize+=r.length}return super.push(r,i)}_transform(r,i,s){if(r){this.checksum=l.buf(r,this.checksum)>>>0;this.rawSize+=r.length}super._transform(r,i,s)}digest(r){const i=Buffer.allocUnsafe(4);i.writeUInt32BE(this.checksum>>>0,0);return r?i.toString(r):i}hex(){return this.digest("hex").toUpperCase()}size(r=false){if(r){return this.compressedSize}else{return this.rawSize}}}r.exports=DeflateCRC32Stream},70347:(r,i,s)=>{"use strict";r.exports={CRC32Stream:s(36735),DeflateCRC32Stream:s(68214)}},95380:(r,i,s)=>{i.formatArgs=formatArgs;i.save=save;i.load=load;i.useColors=useColors;i.storage=localstorage();i.destroy=(()=>{let r=false;return()=>{if(!r){r=true;console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}}})();i.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window!=="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)){return true}if(typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)){return false}let r;return typeof document!=="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!=="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!=="undefined"&&navigator.userAgent&&(r=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(r[1],10)>=31||typeof navigator!=="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(i){i[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+i[0]+(this.useColors?"%c ":" ")+"+"+r.exports.humanize(this.diff);if(!this.useColors){return}const s="color: "+this.color;i.splice(1,0,s,"color: inherit");let a=0;let l=0;i[0].replace(/%[a-zA-Z%]/g,(r=>{if(r==="%%"){return}a++;if(r==="%c"){l=a}}));i.splice(l,0,s)}i.log=console.debug||console.log||(()=>{});function save(r){try{if(r){i.storage.setItem("debug",r)}else{i.storage.removeItem("debug")}}catch(r){}}function load(){let r;try{r=i.storage.getItem("debug")}catch(r){}if(!r&&typeof process!=="undefined"&&"env"in process){r=process.env.DEBUG}return r}function localstorage(){try{return localStorage}catch(r){}}r.exports=s(50101)(i);const{formatters:a}=r.exports;a.j=function(r){try{return JSON.stringify(r)}catch(r){return"[UnexpectedJSONParseError]: "+r.message}}},50101:(r,i,s)=>{function setup(r){createDebug.debug=createDebug;createDebug.default=createDebug;createDebug.coerce=coerce;createDebug.disable=disable;createDebug.enable=enable;createDebug.enabled=enabled;createDebug.humanize=s(91111);createDebug.destroy=destroy;Object.keys(r).forEach((i=>{createDebug[i]=r[i]}));createDebug.names=[];createDebug.skips=[];createDebug.formatters={};function selectColor(r){let i=0;for(let s=0;s{if(i==="%%"){return"%"}c++;const l=createDebug.formatters[a];if(typeof l==="function"){const a=r[c];i=l.call(s,a);r.splice(c,1);c--}return i}));createDebug.formatArgs.call(s,r);const d=s.log||createDebug.log;d.apply(s,r)}debug.namespace=r;debug.useColors=createDebug.useColors();debug.color=createDebug.selectColor(r);debug.extend=extend;debug.destroy=createDebug.destroy;Object.defineProperty(debug,"enabled",{enumerable:true,configurable:false,get:()=>{if(s!==null){return s}if(a!==createDebug.namespaces){a=createDebug.namespaces;l=createDebug.enabled(r)}return l},set:r=>{s=r}});if(typeof createDebug.init==="function"){createDebug.init(debug)}return debug}function extend(r,i){const s=createDebug(this.namespace+(typeof i==="undefined"?":":i)+r);s.log=this.log;return s}function enable(r){createDebug.save(r);createDebug.namespaces=r;createDebug.names=[];createDebug.skips=[];let i;const s=(typeof r==="string"?r:"").split(/[\s,]+/);const a=s.length;for(i=0;i"-"+r))].join(",");createDebug.enable("");return r}function enabled(r){if(r[r.length-1]==="*"){return true}let i;let s;for(i=0,s=createDebug.skips.length;i{if(typeof process==="undefined"||process.type==="renderer"||process.browser===true||process.__nwjs){r.exports=s(95380)}else{r.exports=s(846)}},846:(r,i,s)=>{const a=s(76224);const l=s(73837);i.init=init;i.log=log;i.formatArgs=formatArgs;i.save=save;i.load=load;i.useColors=useColors;i.destroy=l.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");i.colors=[6,2,3,4,5,1];try{const r=s(72128);if(r&&(r.stderr||r).level>=2){i.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221]}}catch(r){}i.inspectOpts=Object.keys(process.env).filter((r=>/^debug_/i.test(r))).reduce(((r,i)=>{const s=i.substring(6).toLowerCase().replace(/_([a-z])/g,((r,i)=>i.toUpperCase()));let a=process.env[i];if(/^(yes|on|true|enabled)$/i.test(a)){a=true}else if(/^(no|off|false|disabled)$/i.test(a)){a=false}else if(a==="null"){a=null}else{a=Number(a)}r[s]=a;return r}),{});function useColors(){return"colors"in i.inspectOpts?Boolean(i.inspectOpts.colors):a.isatty(process.stderr.fd)}function formatArgs(i){const{namespace:s,useColors:a}=this;if(a){const a=this.color;const l="[3"+(a<8?a:"8;5;"+a);const c=` ${l};1m${s} `;i[0]=c+i[0].split("\n").join("\n"+c);i.push(l+"m+"+r.exports.humanize(this.diff)+"")}else{i[0]=getDate()+s+" "+i[0]}}function getDate(){if(i.inspectOpts.hideDate){return""}return(new Date).toISOString()+" "}function log(...r){return process.stderr.write(l.formatWithOptions(i.inspectOpts,...r)+"\n")}function save(r){if(r){process.env.DEBUG=r}else{delete process.env.DEBUG}}function load(){return process.env.DEBUG}function init(r){r.inspectOpts={};const s=Object.keys(i.inspectOpts);for(let a=0;ar.trim())).join(" ")};c.O=function(r){this.inspectOpts.colors=this.useColors;return l.inspect(r,this.inspectOpts)}},79306:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});class Deprecation extends Error{constructor(r){super(r);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}this.name="Deprecation"}}i.Deprecation=Deprecation},10684:r=>{"use strict";function _process(r,i){var s;var a;if(typeof i==="function"){a=i(r);if(a!==undefined){r=a}}else if(Array.isArray(i)){for(s=0;s=0){r=r.replace(/\[/g,i).replace(/]/g,"")}var s=r.split(i);var a=s.filter(blacklistFilter);if(a.length!==s.length){throw Error("Refusing to update blacklisted property "+r)}return s}var s=Object.prototype.hasOwnProperty;function DotObject(r,i,s,a){if(!(this instanceof DotObject)){return new DotObject(r,i,s,a)}if(typeof i==="undefined")i=false;if(typeof s==="undefined")s=true;if(typeof a==="undefined")a=true;this.separator=r||".";this.override=i;this.useArray=s;this.useBrackets=a;this.keepArray=false;this.cleanup=[]}var a=new DotObject(".",false,true,true);function wrap(r){return function(){return a[r].apply(a,arguments)}}DotObject.prototype._fill=function(r,i,s,a){var l=r.shift();if(r.length>0){i[l]=i[l]||(this.useArray&&isIndex(r[0])?[]:{});if(!isArrayOrObject(i[l])){if(this.override){i[l]={}}else{if(!(isArrayOrObject(s)&&isEmptyObject(s))){throw new Error("Trying to redefine `"+l+"` which is a "+typeof i[l])}return}}this._fill(r,i[l],s,a)}else{if(!this.override&&isArrayOrObject(i[l])&&!isEmptyObject(i[l])){if(!(isArrayOrObject(s)&&isEmptyObject(s))){throw new Error("Trying to redefine non-empty obj['"+l+"']")}return}i[l]=_process(s,a)}};DotObject.prototype.object=function(r,i){var s=this;Object.keys(r).forEach((function(a){var l=i===undefined?null:i[a];var c=parsePath(a,s.separator).join(s.separator);if(c.indexOf(s.separator)!==-1){s._fill(c.split(s.separator),r,r[a],l);delete r[a]}else{r[a]=_process(r[a],l)}}));return r};DotObject.prototype.str=function(r,i,s,a){var l=parsePath(r,this.separator).join(this.separator);if(r.indexOf(this.separator)!==-1){this._fill(l.split(this.separator),s,i,a)}else{s[r]=_process(i,a)}return s};DotObject.prototype.pick=function(r,i,s,a){var l;var c;var d;var p;var A;c=parsePath(r,this.separator);for(l=0;l{"use strict"; -/** - * @author Toru Nagashima - * @copyright 2015 Toru Nagashima. All rights reserved. - * See LICENSE file in root directory for full license. - */Object.defineProperty(i,"__esModule",{value:true});const s=new WeakMap;const a=new WeakMap;function pd(r){const i=s.get(r);console.assert(i!=null,"'this' is expected an Event object, but got",r);return i}function setCancelFlag(r){if(r.passiveListener!=null){if(typeof console!=="undefined"&&typeof console.error==="function"){console.error("Unable to preventDefault inside passive event listener invocation.",r.passiveListener)}return}if(!r.event.cancelable){return}r.canceled=true;if(typeof r.event.preventDefault==="function"){r.event.preventDefault()}}function Event(r,i){s.set(this,{eventTarget:r,event:i,eventPhase:2,currentTarget:r,canceled:false,stopped:false,immediateStopped:false,passiveListener:null,timeStamp:i.timeStamp||Date.now()});Object.defineProperty(this,"isTrusted",{value:false,enumerable:true});const a=Object.keys(i);for(let r=0;r0){const r=new Array(arguments.length);for(let i=0;i{r.exports=class FixedFIFO{constructor(r){if(!(r>0)||(r-1&r)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(r);this.mask=r-1;this.top=0;this.btm=0;this.next=null}clear(){this.top=this.btm=0;this.next=null;this.buffer.fill(undefined)}push(r){if(this.buffer[this.top]!==undefined)return false;this.buffer[this.top]=r;this.top=this.top+1&this.mask;return true}shift(){const r=this.buffer[this.btm];if(r===undefined)return undefined;this.buffer[this.btm]=undefined;this.btm=this.btm+1&this.mask;return r}peek(){return this.buffer[this.btm]}isEmpty(){return this.buffer[this.btm]===undefined}}},20164:(r,i,s)=>{const a=s(20791);r.exports=class FastFIFO{constructor(r){this.hwm=r||16;this.head=new a(this.hwm);this.tail=this.head;this.length=0}clear(){this.head=this.tail;this.head.clear();this.length=0}push(r){this.length++;if(!this.head.push(r)){const i=this.head;this.head=i.next=new a(2*this.head.buffer.length);this.head.push(r)}}shift(){if(this.length!==0)this.length--;const r=this.tail.shift();if(r===undefined&&this.tail.next){const r=this.tail.next;this.tail.next=null;this.tail=r;return this.tail.shift()}return r}peek(){const r=this.tail.peek();if(r===undefined&&this.tail.next)return this.tail.next.peek();return r}isEmpty(){return this.length===0}}},93980:(r,i,s)=>{"use strict";const a=s(39007);const l=s(69889);const c=s(58254);r.exports={XMLParser:l,XMLValidator:a,XMLBuilder:c}},86002:(r,i)=>{"use strict";const s=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";const a=s+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040";const l="["+s+"]["+a+"]*";const c=new RegExp("^"+l+"$");const getAllMatches=function(r,i){const s=[];let a=i.exec(r);while(a){const l=[];l.startIndex=i.lastIndex-a[0].length;const c=a.length;for(let r=0;r{"use strict";const a=s(86002);const l={allowBooleanAttributes:false,unpairedTags:[]};i.validate=function(r,i){i=Object.assign({},l,i);const s=[];let a=false;let c=false;if(r[0]==="\ufeff"){r=r.substr(1)}for(let l=0;l"&&r[l]!==" "&&r[l]!=="\t"&&r[l]!=="\n"&&r[l]!=="\r";l++){A+=r[l]}A=A.trim();if(A[A.length-1]==="/"){A=A.substring(0,A.length-1);l--}if(!validateTagName(A)){let i;if(A.trim().length===0){i="Invalid space after '<'."}else{i="Tag '"+A+"' is an invalid name."}return getErrorObject("InvalidTag",i,getLineNumberForPosition(r,l))}const u=readAttributeStr(r,l);if(u===false){return getErrorObject("InvalidAttr","Attributes for '"+A+"' have open quote.",getLineNumberForPosition(r,l))}let h=u.value;l=u.index;if(h[h.length-1]==="/"){const s=l-h.length;h=h.substring(0,h.length-1);const c=validateAttributeString(h,i);if(c===true){a=true}else{return getErrorObject(c.err.code,c.err.msg,getLineNumberForPosition(r,s+c.err.line))}}else if(p){if(!u.tagClosed){return getErrorObject("InvalidTag","Closing tag '"+A+"' doesn't have proper closing.",getLineNumberForPosition(r,l))}else if(h.trim().length>0){return getErrorObject("InvalidTag","Closing tag '"+A+"' can't have attributes or invalid starting.",getLineNumberForPosition(r,d))}else if(s.length===0){return getErrorObject("InvalidTag","Closing tag '"+A+"' has not been opened.",getLineNumberForPosition(r,d))}else{const i=s.pop();if(A!==i.tagName){let s=getLineNumberForPosition(r,i.tagStartPos);return getErrorObject("InvalidTag","Expected closing tag '"+i.tagName+"' (opened in line "+s.line+", col "+s.col+") instead of closing tag '"+A+"'.",getLineNumberForPosition(r,d))}if(s.length==0){c=true}}}else{const p=validateAttributeString(h,i);if(p!==true){return getErrorObject(p.err.code,p.err.msg,getLineNumberForPosition(r,l-h.length+p.err.line))}if(c===true){return getErrorObject("InvalidXml","Multiple possible root nodes found.",getLineNumberForPosition(r,l))}else if(i.unpairedTags.indexOf(A)!==-1){}else{s.push({tagName:A,tagStartPos:d})}a=true}for(l++;l0){return getErrorObject("InvalidXml","Invalid '"+JSON.stringify(s.map((r=>r.tagName)),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}return true};function isWhiteSpace(r){return r===" "||r==="\t"||r==="\n"||r==="\r"}function readPI(r,i){const s=i;for(;i5&&a==="xml"){return getErrorObject("InvalidXml","XML declaration allowed only at the start of the document.",getLineNumberForPosition(r,i))}else if(r[i]=="?"&&r[i+1]==">"){i++;break}else{continue}}}return i}function readCommentAndCDATA(r,i){if(r.length>i+5&&r[i+1]==="-"&&r[i+2]==="-"){for(i+=3;i"){i+=2;break}}}else if(r.length>i+8&&r[i+1]==="D"&&r[i+2]==="O"&&r[i+3]==="C"&&r[i+4]==="T"&&r[i+5]==="Y"&&r[i+6]==="P"&&r[i+7]==="E"){let s=1;for(i+=8;i"){s--;if(s===0){break}}}}else if(r.length>i+9&&r[i+1]==="["&&r[i+2]==="C"&&r[i+3]==="D"&&r[i+4]==="A"&&r[i+5]==="T"&&r[i+6]==="A"&&r[i+7]==="["){for(i+=8;i"){i+=2;break}}}return i}const c='"';const d="'";function readAttributeStr(r,i){let s="";let a="";let l=false;for(;i"){if(a===""){l=true;break}}s+=r[i]}if(a!==""){return false}return{value:s,index:i,tagClosed:l}}const p=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function validateAttributeString(r,i){const s=a.getAllMatches(r,p);const l={};for(let r=0;r{"use strict";const a=s(36258);const l={attributeNamePrefix:"@_",attributesGroupName:false,textNodeName:"#text",ignoreAttributes:true,cdataPropName:false,format:false,indentBy:" ",suppressEmptyNode:false,suppressUnpairedNode:true,suppressBooleanAttributes:true,tagValueProcessor:function(r,i){return i},attributeValueProcessor:function(r,i){return i},preserveOrder:false,commentPropName:false,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:true,stopNodes:[],oneListGroup:false};function Builder(r){this.options=Object.assign({},l,r);if(this.options.ignoreAttributes||this.options.attributesGroupName){this.isAttribute=function(){return false}}else{this.attrPrefixLen=this.options.attributeNamePrefix.length;this.isAttribute=isAttribute}this.processTextOrObjNode=processTextOrObjNode;if(this.options.format){this.indentate=indentate;this.tagEndChar=">\n";this.newLine="\n"}else{this.indentate=function(){return""};this.tagEndChar=">";this.newLine=""}}Builder.prototype.build=function(r){if(this.options.preserveOrder){return a(r,this.options)}else{if(Array.isArray(r)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1){r={[this.options.arrayNodeName]:r}}return this.j2x(r,0).val}};Builder.prototype.j2x=function(r,i){let s="";let a="";for(let l in r){if(!Object.prototype.hasOwnProperty.call(r,l))continue;if(typeof r[l]==="undefined"){if(this.isAttribute(l)){a+=""}}else if(r[l]===null){if(this.isAttribute(l)){a+=""}else if(l[0]==="?"){a+=this.indentate(i)+"<"+l+"?"+this.tagEndChar}else{a+=this.indentate(i)+"<"+l+"/"+this.tagEndChar}}else if(r[l]instanceof Date){a+=this.buildTextValNode(r[l],l,"",i)}else if(typeof r[l]!=="object"){const c=this.isAttribute(l);if(c){s+=this.buildAttrPairStr(c,""+r[l])}else{if(l===this.options.textNodeName){let i=this.options.tagValueProcessor(l,""+r[l]);a+=this.replaceEntitiesValue(i)}else{a+=this.buildTextValNode(r[l],l,"",i)}}}else if(Array.isArray(r[l])){const s=r[l].length;let c="";let d="";for(let p=0;p"+r+l}else if(this.options.commentPropName!==false&&i===this.options.commentPropName&&c.length===0){return this.indentate(a)+`\x3c!--${r}--\x3e`+this.newLine}else{return this.indentate(a)+"<"+i+s+c+this.tagEndChar+r+this.indentate(a)+l}}};Builder.prototype.closeTag=function(r){let i="";if(this.options.unpairedTags.indexOf(r)!==-1){if(!this.options.suppressUnpairedNode)i="/"}else if(this.options.suppressEmptyNode){i="/"}else{i=`>`+this.newLine}else if(this.options.commentPropName!==false&&i===this.options.commentPropName){return this.indentate(a)+`\x3c!--${r}--\x3e`+this.newLine}else if(i[0]==="?"){return this.indentate(a)+"<"+i+s+"?"+this.tagEndChar}else{let l=this.options.tagValueProcessor(i,r);l=this.replaceEntitiesValue(l);if(l===""){return this.indentate(a)+"<"+i+s+this.closeTag(i)+this.tagEndChar}else{return this.indentate(a)+"<"+i+s+">"+l+"0&&this.options.processEntities){for(let i=0;i{const i="\n";function toXml(r,s){let a="";if(s.format&&s.indentBy.length>0){a=i}return arrToStr(r,s,"",a)}function arrToStr(r,i,s,a){let l="";let c=false;for(let d=0;d`;c=false;continue}else if(A===i.commentPropName){l+=a+`\x3c!--${p[A][0][i.textNodeName]}--\x3e`;c=true;continue}else if(A[0]==="?"){const r=attr_to_str(p[":@"],i);const s=A==="?xml"?"":a;let d=p[A][0][i.textNodeName];d=d.length!==0?" "+d:"";l+=s+`<${A}${d}${r}?>`;c=true;continue}let h=a;if(h!==""){h+=i.indentBy}const g=attr_to_str(p[":@"],i);const y=a+`<${A}${g}`;const b=arrToStr(p[A],i,u,h);if(i.unpairedTags.indexOf(A)!==-1){if(i.suppressUnpairedNode)l+=y+">";else l+=y+"/>"}else if((!b||b.length===0)&&i.suppressEmptyNode){l+=y+"/>"}else if(b&&b.endsWith(">")){l+=y+`>${b}${a}`}else{l+=y+">";if(b&&a!==""&&(b.includes("/>")||b.includes("`}c=true}return l}function propName(r){const i=Object.keys(r);for(let s=0;s0&&i.processEntities){for(let s=0;s{const a=s(86002);function readDocType(r,i){const s={};if(r[i+3]==="O"&&r[i+4]==="C"&&r[i+5]==="T"&&r[i+6]==="Y"&&r[i+7]==="P"&&r[i+8]==="E"){i=i+9;let a=1;let l=false,c=false;let d="";for(;i"){if(c){if(r[i-1]==="-"&&r[i-2]==="-"){c=false;a--}}else{a--}if(a===0){break}}else if(r[i]==="["){l=true}else{d+=r[i]}}if(a!==0){throw new Error(`Unclosed DOCTYPE`)}}else{throw new Error(`Invalid Tag instead of DOCTYPE`)}return{entities:s,i:i}}function readEntityExp(r,i){let s="";for(;i{const s={preserveOrder:false,attributeNamePrefix:"@_",attributesGroupName:false,textNodeName:"#text",ignoreAttributes:true,removeNSPrefix:false,allowBooleanAttributes:false,parseTagValue:true,parseAttributeValue:false,trimValues:true,cdataPropName:false,numberParseOptions:{hex:true,leadingZeros:true,eNotation:true},tagValueProcessor:function(r,i){return i},attributeValueProcessor:function(r,i){return i},stopNodes:[],alwaysCreateTextNode:false,isArray:()=>false,commentPropName:false,unpairedTags:[],processEntities:true,htmlEntities:false,ignoreDeclaration:false,ignorePiTags:false,transformTagName:false,transformAttributeName:false,updateTag:function(r,i,s){return r}};const buildOptions=function(r){return Object.assign({},s,r)};i.buildOptions=buildOptions;i.defaultOptions=s},96178:(r,i,s)=>{"use strict";const a=s(86002);const l=s(45518);const c=s(93991);const d=s(89817);class OrderedObjParser{constructor(r){this.options=r;this.currentNode=null;this.tagsNodeStack=[];this.docTypeEntities={};this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}};this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"};this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(r,i)=>String.fromCharCode(Number.parseInt(i,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(r,i)=>String.fromCharCode(Number.parseInt(i,16))}};this.addExternalEntities=addExternalEntities;this.parseXml=parseXml;this.parseTextData=parseTextData;this.resolveNameSpace=resolveNameSpace;this.buildAttributesMap=buildAttributesMap;this.isItStopNode=isItStopNode;this.replaceEntitiesValue=replaceEntitiesValue;this.readStopNodeData=readStopNodeData;this.saveTextToParentTag=saveTextToParentTag;this.addChild=addChild}}function addExternalEntities(r){const i=Object.keys(r);for(let s=0;s0){if(!d)r=this.replaceEntitiesValue(r);const a=this.options.tagValueProcessor(i,r,s,l,c);if(a===null||a===undefined){return r}else if(typeof a!==typeof r||a!==r){return a}else if(this.options.trimValues){return parseValue(r,this.options.parseTagValue,this.options.numberParseOptions)}else{const i=r.trim();if(i===r){return parseValue(r,this.options.parseTagValue,this.options.numberParseOptions)}else{return r}}}}}function resolveNameSpace(r){if(this.options.removeNSPrefix){const i=r.split(":");const s=r.charAt(0)==="/"?"/":"";if(i[0]==="xmlns"){return""}if(i.length===2){r=s+i[1]}}return r}const p=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function buildAttributesMap(r,i,s){if(!this.options.ignoreAttributes&&typeof r==="string"){const s=a.getAllMatches(r,p);const l=s.length;const c={};for(let r=0;r",p,"Closing Tag is not closed.");let l=r.substring(p+2,i).trim();if(this.options.removeNSPrefix){const r=l.indexOf(":");if(r!==-1){l=l.substr(r+1)}}if(this.options.transformTagName){l=this.options.transformTagName(l)}if(s){a=this.saveTextToParentTag(a,s,d)}const c=d.substring(d.lastIndexOf(".")+1);if(l&&this.options.unpairedTags.indexOf(l)!==-1){throw new Error(`Unpaired tag can not be used as closing tag: `)}let A=0;if(c&&this.options.unpairedTags.indexOf(c)!==-1){A=d.lastIndexOf(".",d.lastIndexOf(".")-1);this.tagsNodeStack.pop()}else{A=d.lastIndexOf(".")}d=d.substring(0,A);s=this.tagsNodeStack.pop();a="";p=i}else if(r[p+1]==="?"){let i=readTagExp(r,p,false,"?>");if(!i)throw new Error("Pi Tag is not closed.");a=this.saveTextToParentTag(a,s,d);if(this.options.ignoreDeclaration&&i.tagName==="?xml"||this.options.ignorePiTags){}else{const r=new l(i.tagName);r.add(this.options.textNodeName,"");if(i.tagName!==i.tagExp&&i.attrExpPresent){r[":@"]=this.buildAttributesMap(i.tagExp,d,i.tagName)}this.addChild(s,r,d)}p=i.closeIndex+1}else if(r.substr(p+1,3)==="!--"){const i=findClosingIndex(r,"--\x3e",p+4,"Comment is not closed.");if(this.options.commentPropName){const l=r.substring(p+4,i-2);a=this.saveTextToParentTag(a,s,d);s.add(this.options.commentPropName,[{[this.options.textNodeName]:l}])}p=i}else if(r.substr(p+1,2)==="!D"){const i=c(r,p);this.docTypeEntities=i.entities;p=i.i}else if(r.substr(p+1,2)==="!["){const i=findClosingIndex(r,"]]>",p,"CDATA is not closed.")-2;const l=r.substring(p+9,i);a=this.saveTextToParentTag(a,s,d);let c=this.parseTextData(l,s.tagname,d,true,false,true,true);if(c==undefined)c="";if(this.options.cdataPropName){s.add(this.options.cdataPropName,[{[this.options.textNodeName]:l}])}else{s.add(this.options.textNodeName,c)}p=i+2}else{let c=readTagExp(r,p,this.options.removeNSPrefix);let A=c.tagName;const u=c.rawTagName;let h=c.tagExp;let g=c.attrExpPresent;let y=c.closeIndex;if(this.options.transformTagName){A=this.options.transformTagName(A)}if(s&&a){if(s.tagname!=="!xml"){a=this.saveTextToParentTag(a,s,d,false)}}const b=s;if(b&&this.options.unpairedTags.indexOf(b.tagname)!==-1){s=this.tagsNodeStack.pop();d=d.substring(0,d.lastIndexOf("."))}if(A!==i.tagname){d+=d?"."+A:A}if(this.isItStopNode(this.options.stopNodes,d,A)){let i="";if(h.length>0&&h.lastIndexOf("/")===h.length-1){if(A[A.length-1]==="/"){A=A.substr(0,A.length-1);d=d.substr(0,d.length-1);h=A}else{h=h.substr(0,h.length-1)}p=c.closeIndex}else if(this.options.unpairedTags.indexOf(A)!==-1){p=c.closeIndex}else{const s=this.readStopNodeData(r,u,y+1);if(!s)throw new Error(`Unexpected end of ${u}`);p=s.i;i=s.tagContent}const a=new l(A);if(A!==h&&g){a[":@"]=this.buildAttributesMap(h,d,A)}if(i){i=this.parseTextData(i,A,d,true,g,true,true)}d=d.substr(0,d.lastIndexOf("."));a.add(this.options.textNodeName,i);this.addChild(s,a,d)}else{if(h.length>0&&h.lastIndexOf("/")===h.length-1){if(A[A.length-1]==="/"){A=A.substr(0,A.length-1);d=d.substr(0,d.length-1);h=A}else{h=h.substr(0,h.length-1)}if(this.options.transformTagName){A=this.options.transformTagName(A)}const r=new l(A);if(A!==h&&g){r[":@"]=this.buildAttributesMap(h,d,A)}this.addChild(s,r,d);d=d.substr(0,d.lastIndexOf("."))}else{const r=new l(A);this.tagsNodeStack.push(s);if(A!==h&&g){r[":@"]=this.buildAttributesMap(h,d,A)}this.addChild(s,r,d);s=r}a="";p=y}}}else{a+=r[p]}}return i.child};function addChild(r,i,s){const a=this.options.updateTag(i.tagname,s,i[":@"]);if(a===false){}else if(typeof a==="string"){i.tagname=a;r.addChild(i)}else{r.addChild(i)}}const replaceEntitiesValue=function(r){if(this.options.processEntities){for(let i in this.docTypeEntities){const s=this.docTypeEntities[i];r=r.replace(s.regx,s.val)}for(let i in this.lastEntities){const s=this.lastEntities[i];r=r.replace(s.regex,s.val)}if(this.options.htmlEntities){for(let i in this.htmlEntities){const s=this.htmlEntities[i];r=r.replace(s.regex,s.val)}}r=r.replace(this.ampEntity.regex,this.ampEntity.val)}return r};function saveTextToParentTag(r,i,s,a){if(r){if(a===undefined)a=Object.keys(i.child).length===0;r=this.parseTextData(r,i.tagname,s,false,i[":@"]?Object.keys(i[":@"]).length!==0:false,a);if(r!==undefined&&r!=="")i.add(this.options.textNodeName,r);r=""}return r}function isItStopNode(r,i,s){const a="*."+s;for(const s in r){const l=r[s];if(a===l||i===l)return true}return false}function tagExpWithClosingIndex(r,i,s=">"){let a;let l="";for(let c=i;c",s,`${i} is not closed`);let d=r.substring(s+2,c).trim();if(d===i){l--;if(l===0){return{tagContent:r.substring(a,s),i:c}}}s=c}else if(r[s+1]==="?"){const i=findClosingIndex(r,"?>",s+1,"StopNode is not closed.");s=i}else if(r.substr(s+1,3)==="!--"){const i=findClosingIndex(r,"--\x3e",s+3,"StopNode is not closed.");s=i}else if(r.substr(s+1,2)==="!["){const i=findClosingIndex(r,"]]>",s,"StopNode is not closed.")-2;s=i}else{const a=readTagExp(r,s,">");if(a){const r=a&&a.tagName;if(r===i&&a.tagExp[a.tagExp.length-1]!=="/"){l++}s=a.closeIndex}}}}}function parseValue(r,i,s){if(i&&typeof r==="string"){const i=r.trim();if(i==="true")return true;else if(i==="false")return false;else return d(r,s)}else{if(a.isExist(r)){return r}else{return""}}}r.exports=OrderedObjParser},69889:(r,i,s)=>{const{buildOptions:a}=s(5023);const l=s(96178);const{prettify:c}=s(31e3);const d=s(39007);class XMLParser{constructor(r){this.externalEntities={};this.options=a(r)}parse(r,i){if(typeof r==="string"){}else if(r.toString){r=r.toString()}else{throw new Error("XML data is accepted in String or Bytes[] form.")}if(i){if(i===true)i={};const s=d.validate(r,i);if(s!==true){throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}}const s=new l(this.options);s.addExternalEntities(this.externalEntities);const a=s.parseXml(r);if(this.options.preserveOrder||a===undefined)return a;else return c(a,this.options)}addEntity(r,i){if(i.indexOf("&")!==-1){throw new Error("Entity value can't have '&'")}else if(r.indexOf("&")!==-1||r.indexOf(";")!==-1){throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '")}else if(i==="&"){throw new Error("An entity with value '&' is not permitted")}else{this.externalEntities[r]=i}}}r.exports=XMLParser},31e3:(r,i)=>{"use strict";function prettify(r,i){return compress(r,i)}function compress(r,i,s){let a;const l={};for(let c=0;c0)l[i.textNodeName]=a}else if(a!==undefined)l[i.textNodeName]=a;return l}function propName(r){const i=Object.keys(r);for(let r=0;r{"use strict";class XmlNode{constructor(r){this.tagname=r;this.child=[];this[":@"]={}}add(r,i){if(r==="__proto__")r="#__proto__";this.child.push({[r]:i})}addChild(r){if(r.tagname==="__proto__")r.tagname="#__proto__";if(r[":@"]&&Object.keys(r[":@"]).length>0){this.child.push({[r.tagname]:r.child,[":@"]:r[":@"]})}else{this.child.push({[r.tagname]:r.child})}}}r.exports=XmlNode},67197:r=>{"use strict";r.exports=clone;var i=Object.getPrototypeOf||function(r){return r.__proto__};function clone(r){if(r===null||typeof r!=="object")return r;if(r instanceof Object)var s={__proto__:i(r)};else var s=Object.create(null);Object.getOwnPropertyNames(r).forEach((function(i){Object.defineProperty(s,i,Object.getOwnPropertyDescriptor(r,i))}));return s}},84523:(r,i,s)=>{var a=s(57147);var l=s(26746);var c=s(23731);var d=s(67197);var p=s(73837);var A;var u;if(typeof Symbol==="function"&&typeof Symbol.for==="function"){A=Symbol.for("graceful-fs.queue");u=Symbol.for("graceful-fs.previous")}else{A="___graceful-fs.queue";u="___graceful-fs.previous"}function noop(){}function publishQueue(r,i){Object.defineProperty(r,A,{get:function(){return i}})}var h=noop;if(p.debuglog)h=p.debuglog("gfs4");else if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||""))h=function(){var r=p.format.apply(p,arguments);r="GFS4: "+r.split(/\n/).join("\nGFS4: ");console.error(r)};if(!a[A]){var g=global[A]||[];publishQueue(a,g);a.close=function(r){function close(i,s){return r.call(a,i,(function(r){if(!r){resetQueue()}if(typeof s==="function")s.apply(this,arguments)}))}Object.defineProperty(close,u,{value:r});return close}(a.close);a.closeSync=function(r){function closeSync(i){r.apply(a,arguments);resetQueue()}Object.defineProperty(closeSync,u,{value:r});return closeSync}(a.closeSync);if(/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")){process.on("exit",(function(){h(a[A]);s(39491).equal(a[A].length,0)}))}}if(!global[A]){publishQueue(global,a[A])}r.exports=patch(d(a));if(process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!a.__patched){r.exports=patch(a);a.__patched=true}function patch(r){l(r);r.gracefulify=patch;r.createReadStream=createReadStream;r.createWriteStream=createWriteStream;var i=r.readFile;r.readFile=readFile;function readFile(r,s,a){if(typeof s==="function")a=s,s=null;return go$readFile(r,s,a);function go$readFile(r,s,a,l){return i(r,s,(function(i){if(i&&(i.code==="EMFILE"||i.code==="ENFILE"))enqueue([go$readFile,[r,s,a],i,l||Date.now(),Date.now()]);else{if(typeof a==="function")a.apply(this,arguments)}}))}}var s=r.writeFile;r.writeFile=writeFile;function writeFile(r,i,a,l){if(typeof a==="function")l=a,a=null;return go$writeFile(r,i,a,l);function go$writeFile(r,i,a,l,c){return s(r,i,a,(function(s){if(s&&(s.code==="EMFILE"||s.code==="ENFILE"))enqueue([go$writeFile,[r,i,a,l],s,c||Date.now(),Date.now()]);else{if(typeof l==="function")l.apply(this,arguments)}}))}}var a=r.appendFile;if(a)r.appendFile=appendFile;function appendFile(r,i,s,l){if(typeof s==="function")l=s,s=null;return go$appendFile(r,i,s,l);function go$appendFile(r,i,s,l,c){return a(r,i,s,(function(a){if(a&&(a.code==="EMFILE"||a.code==="ENFILE"))enqueue([go$appendFile,[r,i,s,l],a,c||Date.now(),Date.now()]);else{if(typeof l==="function")l.apply(this,arguments)}}))}}var d=r.copyFile;if(d)r.copyFile=copyFile;function copyFile(r,i,s,a){if(typeof s==="function"){a=s;s=0}return go$copyFile(r,i,s,a);function go$copyFile(r,i,s,a,l){return d(r,i,s,(function(c){if(c&&(c.code==="EMFILE"||c.code==="ENFILE"))enqueue([go$copyFile,[r,i,s,a],c,l||Date.now(),Date.now()]);else{if(typeof a==="function")a.apply(this,arguments)}}))}}var p=r.readdir;r.readdir=readdir;var A=/^v[0-5]\./;function readdir(r,i,s){if(typeof i==="function")s=i,i=null;var a=A.test(process.version)?function go$readdir(r,i,s,a){return p(r,fs$readdirCallback(r,i,s,a))}:function go$readdir(r,i,s,a){return p(r,i,fs$readdirCallback(r,i,s,a))};return a(r,i,s);function fs$readdirCallback(r,i,s,l){return function(c,d){if(c&&(c.code==="EMFILE"||c.code==="ENFILE"))enqueue([a,[r,i,s],c,l||Date.now(),Date.now()]);else{if(d&&d.sort)d.sort();if(typeof s==="function")s.call(this,c,d)}}}}if(process.version.substr(0,4)==="v0.8"){var u=c(r);ReadStream=u.ReadStream;WriteStream=u.WriteStream}var h=r.ReadStream;if(h){ReadStream.prototype=Object.create(h.prototype);ReadStream.prototype.open=ReadStream$open}var g=r.WriteStream;if(g){WriteStream.prototype=Object.create(g.prototype);WriteStream.prototype.open=WriteStream$open}Object.defineProperty(r,"ReadStream",{get:function(){return ReadStream},set:function(r){ReadStream=r},enumerable:true,configurable:true});Object.defineProperty(r,"WriteStream",{get:function(){return WriteStream},set:function(r){WriteStream=r},enumerable:true,configurable:true});var y=ReadStream;Object.defineProperty(r,"FileReadStream",{get:function(){return y},set:function(r){y=r},enumerable:true,configurable:true});var b=WriteStream;Object.defineProperty(r,"FileWriteStream",{get:function(){return b},set:function(r){b=r},enumerable:true,configurable:true});function ReadStream(r,i){if(this instanceof ReadStream)return h.apply(this,arguments),this;else return ReadStream.apply(Object.create(ReadStream.prototype),arguments)}function ReadStream$open(){var r=this;open(r.path,r.flags,r.mode,(function(i,s){if(i){if(r.autoClose)r.destroy();r.emit("error",i)}else{r.fd=s;r.emit("open",s);r.read()}}))}function WriteStream(r,i){if(this instanceof WriteStream)return g.apply(this,arguments),this;else return WriteStream.apply(Object.create(WriteStream.prototype),arguments)}function WriteStream$open(){var r=this;open(r.path,r.flags,r.mode,(function(i,s){if(i){r.destroy();r.emit("error",i)}else{r.fd=s;r.emit("open",s)}}))}function createReadStream(i,s){return new r.ReadStream(i,s)}function createWriteStream(i,s){return new r.WriteStream(i,s)}var C=r.open;r.open=open;function open(r,i,s,a){if(typeof s==="function")a=s,s=null;return go$open(r,i,s,a);function go$open(r,i,s,a,l){return C(r,i,s,(function(c,d){if(c&&(c.code==="EMFILE"||c.code==="ENFILE"))enqueue([go$open,[r,i,s,a],c,l||Date.now(),Date.now()]);else{if(typeof a==="function")a.apply(this,arguments)}}))}}return r}function enqueue(r){h("ENQUEUE",r[0].name,r[1]);a[A].push(r);retry()}var y;function resetQueue(){var r=Date.now();for(var i=0;i2){a[A][i][3]=r;a[A][i][4]=r}}retry()}function retry(){clearTimeout(y);y=undefined;if(a[A].length===0)return;var r=a[A].shift();var i=r[0];var s=r[1];var l=r[2];var c=r[3];var d=r[4];if(c===undefined){h("RETRY",i.name,s);i.apply(null,s)}else if(Date.now()-c>=6e4){h("TIMEOUT",i.name,s);var p=s.pop();if(typeof p==="function")p.call(null,l)}else{var u=Date.now()-d;var g=Math.max(d-c,1);var b=Math.min(g*1.2,100);if(u>=b){h("RETRY",i.name,s);i.apply(null,s.concat([c]))}else{a[A].push(r)}}if(y===undefined){y=setTimeout(retry,0)}}},23731:(r,i,s)=>{var a=s(12781).Stream;r.exports=legacy;function legacy(r){return{ReadStream:ReadStream,WriteStream:WriteStream};function ReadStream(i,s){if(!(this instanceof ReadStream))return new ReadStream(i,s);a.call(this);var l=this;this.path=i;this.fd=null;this.readable=true;this.paused=false;this.flags="r";this.mode=438;this.bufferSize=64*1024;s=s||{};var c=Object.keys(s);for(var d=0,p=c.length;dthis.end){throw new Error("start must be <= end")}this.pos=this.start}if(this.fd!==null){process.nextTick((function(){l._read()}));return}r.open(this.path,this.flags,this.mode,(function(r,i){if(r){l.emit("error",r);l.readable=false;return}l.fd=i;l.emit("open",i);l._read()}))}function WriteStream(i,s){if(!(this instanceof WriteStream))return new WriteStream(i,s);a.call(this);this.path=i;this.fd=null;this.writable=true;this.flags="w";this.encoding="binary";this.mode=438;this.bytesWritten=0;s=s||{};var l=Object.keys(s);for(var c=0,d=l.length;c= zero")}this.pos=this.start}this.busy=false;this._queue=[];if(this.fd===null){this._open=r.open;this._queue.push([this._open,this.path,this.flags,this.mode,undefined]);this.flush()}}}},26746:(r,i,s)=>{var a=s(22057);var l=process.cwd;var c=null;var d=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){if(!c)c=l.call(process);return c};try{process.cwd()}catch(r){}if(typeof process.chdir==="function"){var p=process.chdir;process.chdir=function(r){c=null;p.call(process,r)};if(Object.setPrototypeOf)Object.setPrototypeOf(process.chdir,p)}r.exports=patch;function patch(r){if(a.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)){patchLchmod(r)}if(!r.lutimes){patchLutimes(r)}r.chown=chownFix(r.chown);r.fchown=chownFix(r.fchown);r.lchown=chownFix(r.lchown);r.chmod=chmodFix(r.chmod);r.fchmod=chmodFix(r.fchmod);r.lchmod=chmodFix(r.lchmod);r.chownSync=chownFixSync(r.chownSync);r.fchownSync=chownFixSync(r.fchownSync);r.lchownSync=chownFixSync(r.lchownSync);r.chmodSync=chmodFixSync(r.chmodSync);r.fchmodSync=chmodFixSync(r.fchmodSync);r.lchmodSync=chmodFixSync(r.lchmodSync);r.stat=statFix(r.stat);r.fstat=statFix(r.fstat);r.lstat=statFix(r.lstat);r.statSync=statFixSync(r.statSync);r.fstatSync=statFixSync(r.fstatSync);r.lstatSync=statFixSync(r.lstatSync);if(r.chmod&&!r.lchmod){r.lchmod=function(r,i,s){if(s)process.nextTick(s)};r.lchmodSync=function(){}}if(r.chown&&!r.lchown){r.lchown=function(r,i,s,a){if(a)process.nextTick(a)};r.lchownSync=function(){}}if(d==="win32"){r.rename=typeof r.rename!=="function"?r.rename:function(i){function rename(s,a,l){var c=Date.now();var d=0;i(s,a,(function CB(p){if(p&&(p.code==="EACCES"||p.code==="EPERM"||p.code==="EBUSY")&&Date.now()-c<6e4){setTimeout((function(){r.stat(a,(function(r,c){if(r&&r.code==="ENOENT")i(s,a,CB);else l(p)}))}),d);if(d<100)d+=10;return}if(l)l(p)}))}if(Object.setPrototypeOf)Object.setPrototypeOf(rename,i);return rename}(r.rename)}r.read=typeof r.read!=="function"?r.read:function(i){function read(s,a,l,c,d,p){var A;if(p&&typeof p==="function"){var u=0;A=function(h,g,y){if(h&&h.code==="EAGAIN"&&u<10){u++;return i.call(r,s,a,l,c,d,A)}p.apply(this,arguments)}}return i.call(r,s,a,l,c,d,A)}if(Object.setPrototypeOf)Object.setPrototypeOf(read,i);return read}(r.read);r.readSync=typeof r.readSync!=="function"?r.readSync:function(i){return function(s,a,l,c,d){var p=0;while(true){try{return i.call(r,s,a,l,c,d)}catch(r){if(r.code==="EAGAIN"&&p<10){p++;continue}throw r}}}}(r.readSync);function patchLchmod(r){r.lchmod=function(i,s,l){r.open(i,a.O_WRONLY|a.O_SYMLINK,s,(function(i,a){if(i){if(l)l(i);return}r.fchmod(a,s,(function(i){r.close(a,(function(r){if(l)l(i||r)}))}))}))};r.lchmodSync=function(i,s){var l=r.openSync(i,a.O_WRONLY|a.O_SYMLINK,s);var c=true;var d;try{d=r.fchmodSync(l,s);c=false}finally{if(c){try{r.closeSync(l)}catch(r){}}else{r.closeSync(l)}}return d}}function patchLutimes(r){if(a.hasOwnProperty("O_SYMLINK")&&r.futimes){r.lutimes=function(i,s,l,c){r.open(i,a.O_SYMLINK,(function(i,a){if(i){if(c)c(i);return}r.futimes(a,s,l,(function(i){r.close(a,(function(r){if(c)c(i||r)}))}))}))};r.lutimesSync=function(i,s,l){var c=r.openSync(i,a.O_SYMLINK);var d;var p=true;try{d=r.futimesSync(c,s,l);p=false}finally{if(p){try{r.closeSync(c)}catch(r){}}else{r.closeSync(c)}}return d}}else if(r.futimes){r.lutimes=function(r,i,s,a){if(a)process.nextTick(a)};r.lutimesSync=function(){}}}function chmodFix(i){if(!i)return i;return function(s,a,l){return i.call(r,s,a,(function(r){if(chownErOk(r))r=null;if(l)l.apply(this,arguments)}))}}function chmodFixSync(i){if(!i)return i;return function(s,a){try{return i.call(r,s,a)}catch(r){if(!chownErOk(r))throw r}}}function chownFix(i){if(!i)return i;return function(s,a,l,c){return i.call(r,s,a,l,(function(r){if(chownErOk(r))r=null;if(c)c.apply(this,arguments)}))}}function chownFixSync(i){if(!i)return i;return function(s,a,l){try{return i.call(r,s,a,l)}catch(r){if(!chownErOk(r))throw r}}}function statFix(i){if(!i)return i;return function(s,a,l){if(typeof a==="function"){l=a;a=null}function callback(r,i){if(i){if(i.uid<0)i.uid+=4294967296;if(i.gid<0)i.gid+=4294967296}if(l)l.apply(this,arguments)}return a?i.call(r,s,a,callback):i.call(r,s,callback)}}function statFixSync(i){if(!i)return i;return function(s,a){var l=a?i.call(r,s,a):i.call(r,s);if(l){if(l.uid<0)l.uid+=4294967296;if(l.gid<0)l.gid+=4294967296}return l}}function chownErOk(r){if(!r)return true;if(r.code==="ENOSYS")return true;var i=!process.getuid||process.getuid()!==0;if(i){if(r.code==="EINVAL"||r.code==="EPERM")return true}return false}}},7332:r=>{"use strict";r.exports=(r,i=process.argv)=>{const s=r.startsWith("-")?"":r.length===1?"-":"--";const a=i.indexOf(s+r);const l=i.indexOf("--");return a!==-1&&(l===-1||a0){b("Patching connection write() output buffer with updated header");s=r.outputData[0].data;a=s.indexOf("\r\n\r\n")+4;r.outputData[0].data=r._header+s.substring(a);b("Output buffer: %o",r.outputData[0].data)}let l;if(this.proxy.protocol==="https:"){b("Creating `tls.Socket`: %o",this.connectOpts);l=A.connect(this.connectOpts)}else{b("Creating `net.Socket`: %o",this.connectOpts);l=p.connect(this.connectOpts)}await(0,h.once)(l,"connect");return l}}HttpProxyAgent.protocols=["http","https"];i.HttpProxyAgent=HttpProxyAgent;function omit(r,...i){const s={};let a;for(a in r){if(!i.includes(a)){s[a]=r[a]}}return s}},69535:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.HttpsProxyAgent=void 0;const p=c(s(41808));const A=c(s(24404));const u=d(s(39491));const h=d(s(81889));const g=s(350);const y=s(57310);const b=s(747);const C=(0,h.default)("https-proxy-agent");class HttpsProxyAgent extends g.Agent{constructor(r,i){super(i);this.options={path:undefined};this.proxy=typeof r==="string"?new y.URL(r):r;this.proxyHeaders=i?.headers??{};C("Creating new HttpsProxyAgent instance: %o",this.proxy.href);const s=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,"");const a=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...i?omit(i,"headers"):null,host:s,port:a}}async connect(r,i){const{proxy:s}=this;if(!i.host){throw new TypeError('No "host" provided')}let a;if(s.protocol==="https:"){C("Creating `tls.Socket`: %o",this.connectOpts);const r=this.connectOpts.servername||this.connectOpts.host;a=A.connect({...this.connectOpts,servername:r})}else{C("Creating `net.Socket`: %o",this.connectOpts);a=p.connect(this.connectOpts)}const l=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders};const c=p.isIPv6(i.host)?`[${i.host}]`:i.host;let d=`CONNECT ${c}:${i.port} HTTP/1.1\r\n`;if(s.username||s.password){const r=`${decodeURIComponent(s.username)}:${decodeURIComponent(s.password)}`;l["Proxy-Authorization"]=`Basic ${Buffer.from(r).toString("base64")}`}l.Host=`${c}:${i.port}`;if(!l["Proxy-Connection"]){l["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close"}for(const r of Object.keys(l)){d+=`${r}: ${l[r]}\r\n`}const h=(0,b.parseProxyResponse)(a);a.write(`${d}\r\n`);const{connect:g,buffered:y}=await h;r.emit("proxyConnect",g);this.emit("proxyConnect",g,r);if(g.statusCode===200){r.once("socket",resume);if(i.secureEndpoint){C("Upgrading socket connection to TLS");const r=i.servername||i.host;return A.connect({...omit(i,"host","path","port"),socket:a,servername:r})}return a}a.destroy();const B=new p.Socket({writable:false});B.readable=true;r.once("socket",(r=>{C("Replaying proxy buffer for failed request");(0,u.default)(r.listenerCount("data")>0);r.push(y);r.push(null)}));return B}}HttpsProxyAgent.protocols=["http","https"];i.HttpsProxyAgent=HttpsProxyAgent;function resume(r){r.resume()}function omit(r,...i){const s={};let a;for(a in r){if(!i.includes(a)){s[a]=r[a]}}return s}},747:function(r,i,s){"use strict";var a=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.parseProxyResponse=void 0;const l=a(s(81889));const c=(0,l.default)("https-proxy-agent:parse-proxy-response");function parseProxyResponse(r){return new Promise(((i,s)=>{let a=0;const l=[];function read(){const i=r.read();if(i)ondata(i);else r.once("readable",read)}function cleanup(){r.removeListener("end",onend);r.removeListener("error",onerror);r.removeListener("readable",read)}function onend(){cleanup();c("onend");s(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(r){cleanup();c("onerror %o",r);s(r)}function ondata(d){l.push(d);a+=d.length;const p=Buffer.concat(l,a);const A=p.indexOf("\r\n\r\n");if(A===-1){c("have not received end of HTTP headers yet...");read();return}const u=p.slice(0,A).toString("ascii").split("\r\n");const h=u.shift();if(!h){r.destroy();return s(new Error("No header received from proxy CONNECT response"))}const g=h.split(" ");const y=+g[1];const b=g.slice(2).join(" ");const C={};for(const i of u){if(!i)continue;const a=i.indexOf(":");if(a===-1){r.destroy();return s(new Error(`Invalid header from proxy CONNECT response: "${i}"`))}const l=i.slice(0,a).toLowerCase();const c=i.slice(a+1).trimStart();const d=C[l];if(typeof d==="string"){C[l]=[d,c]}else if(Array.isArray(d)){d.push(c)}else{C[l]=c}}c("got proxy server response: %o %o",h,C);cleanup();i({connect:{statusCode:y,statusText:b,headers:C},buffered:p})}r.on("error",onerror);r.on("end",onend);read()}))}i.parseProxyResponse=parseProxyResponse},16735:(r,i,s)=>{try{var a=s(73837);if(typeof a.inherits!=="function")throw"";r.exports=a.inherits}catch(i){r.exports=s(67379)}},67379:r=>{if(typeof Object.create==="function"){r.exports=function inherits(r,i){if(i){r.super_=i;r.prototype=Object.create(i.prototype,{constructor:{value:r,enumerable:false,writable:true,configurable:true}})}}}else{r.exports=function inherits(r,i){if(i){r.super_=i;var TempCtor=function(){};TempCtor.prototype=i.prototype;r.prototype=new TempCtor;r.prototype.constructor=r}}}},45628:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true}); -/*! - * is-plain-object - * - * Copyright (c) 2014-2017, Jon Schlinkert. - * Released under the MIT License. - */function isObject(r){return Object.prototype.toString.call(r)==="[object Object]"}function isPlainObject(r){var i,s;if(isObject(r)===false)return false;i=r.constructor;if(i===undefined)return true;s=i.prototype;if(isObject(s)===false)return false;if(s.hasOwnProperty("isPrototypeOf")===false){return false}return true}i.isPlainObject=isPlainObject},47296:r=>{"use strict";const isStream=r=>r!==null&&typeof r==="object"&&typeof r.pipe==="function";isStream.writable=r=>isStream(r)&&r.writable!==false&&typeof r._write==="function"&&typeof r._writableState==="object";isStream.readable=r=>isStream(r)&&r.readable!==false&&typeof r._read==="function"&&typeof r._readableState==="object";isStream.duplex=r=>isStream.writable(r)&&isStream.readable(r);isStream.transform=r=>isStream.duplex(r)&&typeof r._transform==="function";r.exports=isStream},862:r=>{var i={}.toString;r.exports=Array.isArray||function(r){return i.call(r)=="[object Array]"}},32364:r=>{"use strict";function e(r){this.message=r}e.prototype=new Error,e.prototype.name="InvalidCharacterError";var i="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var i=String(r).replace(/=+$/,"");if(i.length%4==1)throw new e("'atob' failed: The string to be decoded is not correctly encoded.");for(var s,a,l=0,c=0,d="";a=i.charAt(c++);~a&&(s=l%4?64*s+a:a,l++%4)?d+=String.fromCharCode(255&s>>(-2*l&6)):0)a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a);return d};function t(r){var s=r.replace(/-/g,"+").replace(/_/g,"/");switch(s.length%4){case 0:break;case 2:s+="==";break;case 3:s+="=";break;default:throw"Illegal base64url string!"}try{return function(r){return decodeURIComponent(i(r).replace(/(.)/g,(function(r,i){var s=i.charCodeAt(0).toString(16).toUpperCase();return s.length<2&&(s="0"+s),"%"+s})))}(s)}catch(r){return i(s)}}function n(r){this.message=r}function o(r,i){if("string"!=typeof r)throw new n("Invalid token specified");var s=!0===(i=i||{}).header?0:1;try{return JSON.parse(t(r.split(".")[s]))}catch(r){throw new n("Invalid token specified: "+r.message)}}n.prototype=new Error,n.prototype.name="InvalidTokenError";const s=o;s.default=o,s.InvalidTokenError=n,r.exports=s},26149:(r,i,s)=>{var a=s(73837);var l=s(49416);r.exports={Readable:Readable,Writable:Writable};a.inherits(Readable,l);a.inherits(Writable,l);function beforeFirstCall(r,i,s){r[i]=function(){delete r[i];s.apply(this,arguments);return this[i].apply(this,arguments)}}function Readable(r,i){if(!(this instanceof Readable))return new Readable(r,i);l.call(this,i);beforeFirstCall(this,"_read",(function(){var s=r.call(this,i);var a=this.emit.bind(this,"error");s.on("error",a);s.pipe(this)}));this.emit("readable")}function Writable(r,i){if(!(this instanceof Writable))return new Writable(r,i);l.call(this,i);beforeFirstCall(this,"_write",(function(){var s=r.call(this,i);var a=this.emit.bind(this,"error");s.on("error",a);this.pipe(s)}));this.emit("writable")}},86897:(r,i,s)=>{var a=s(23423),l=s(85859),c=s(30465),d=s(19030),p=s(60783);function Hash(r){var i=-1,s=r==null?0:r.length;this.clear();while(++i{var a=s(12708),l=s(9817),c=s(88253),d=s(15967),p=s(6362);function ListCache(r){var i=-1,s=r==null?0:r.length;this.clear();while(++i{var a=s(44523),l=s(78828);var c=a(l,"Map");r.exports=c},82747:(r,i,s)=>{var a=s(30669),l=s(93345),c=s(84497),d=s(67840),p=s(14866);function MapCache(r){var i=-1,s=r==null?0:r.length;this.clear();while(++i{var a=s(44523),l=s(78828);var c=a(l,"Set");r.exports=c},69897:(r,i,s)=>{var a=s(82747),l=s(64028),c=s(73099);function SetCache(r){var i=-1,s=r==null?0:r.length;this.__data__=new a;while(++i{var a=s(78828);var l=a.Symbol;r.exports=l},36689:r=>{function apply(r,i,s){switch(s.length){case 0:return r.call(i);case 1:return r.call(i,s[0]);case 2:return r.call(i,s[0],s[1]);case 3:return r.call(i,s[0],s[1],s[2])}return r.apply(i,s)}r.exports=apply},14786:(r,i,s)=>{var a=s(84372);function arrayIncludes(r,i){var s=r==null?0:r.length;return!!s&&a(r,i,0)>-1}r.exports=arrayIncludes},18119:r=>{function arrayIncludesWith(r,i,s){var a=-1,l=r==null?0:r.length;while(++a{var a=s(87896),l=s(95038),c=s(9765),d=s(64619),p=s(15524),A=s(16521);var u=Object.prototype;var h=u.hasOwnProperty;function arrayLikeKeys(r,i){var s=c(r),u=!s&&l(r),g=!s&&!u&&d(r),y=!s&&!u&&!g&&A(r),b=s||u||g||y,C=b?a(r.length,String):[],B=C.length;for(var I in r){if((i||h.call(r,I))&&!(b&&(I=="length"||g&&(I=="offset"||I=="parent")||y&&(I=="buffer"||I=="byteLength"||I=="byteOffset")||p(I,B)))){C.push(I)}}return C}r.exports=arrayLikeKeys},42377:r=>{function arrayMap(r,i){var s=-1,a=r==null?0:r.length,l=Array(a);while(++s{function arrayPush(r,i){var s=-1,a=i.length,l=r.length;while(++s{var a=s(75471);function assocIndexOf(r,i){var s=r.length;while(s--){if(a(r[s][0],i)){return s}}return-1}r.exports=assocIndexOf},79414:(r,i,s)=>{var a=s(69897),l=s(14786),c=s(18119),d=s(42377),p=s(75465),A=s(5074);var u=200;function baseDifference(r,i,s,h){var g=-1,y=l,b=true,C=r.length,B=[],I=i.length;if(!C){return B}if(s){i=d(i,p(s))}if(h){y=c;b=false}else if(i.length>=u){y=A;b=false;i=new a(i)}e:while(++g{function baseFindIndex(r,i,s,a){var l=r.length,c=s+(a?1:-1);while(a?c--:++c{var a=s(20603),l=s(88615);function baseFlatten(r,i,s,c,d){var p=-1,A=r.length;s||(s=l);d||(d=[]);while(++p0&&s(u)){if(i>1){baseFlatten(u,i-1,s,c,d)}else{a(d,u)}}else if(!c){d[d.length]=u}}return d}r.exports=baseFlatten},24273:(r,i,s)=>{var a=s(4947),l=s(74625),c=s(43600);var d="[object Null]",p="[object Undefined]";var A=a?a.toStringTag:undefined;function baseGetTag(r){if(r==null){return r===undefined?p:d}return A&&A in Object(r)?l(r):c(r)}r.exports=baseGetTag},84372:(r,i,s)=>{var a=s(54211),l=s(29120),c=s(16089);function baseIndexOf(r,i,s){return i===i?c(r,i,s):a(r,l,s)}r.exports=baseIndexOf},14845:(r,i,s)=>{var a=s(24273),l=s(17681);var c="[object Arguments]";function baseIsArguments(r){return l(r)&&a(r)==c}r.exports=baseIsArguments},29120:r=>{function baseIsNaN(r){return r!==r}r.exports=baseIsNaN},90887:(r,i,s)=>{var a=s(73320),l=s(11835),c=s(56534),d=s(58181);var p=/[\\^$.*+?()[\]{}|]/g;var A=/^\[object .+?Constructor\]$/;var u=Function.prototype,h=Object.prototype;var g=u.toString;var y=h.hasOwnProperty;var b=RegExp("^"+g.call(y).replace(p,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function baseIsNative(r){if(!c(r)||l(r)){return false}var i=a(r)?b:A;return i.test(d(r))}r.exports=baseIsNative},52252:(r,i,s)=>{var a=s(24273),l=s(64586),c=s(17681);var d="[object Arguments]",p="[object Array]",A="[object Boolean]",u="[object Date]",h="[object Error]",g="[object Function]",y="[object Map]",b="[object Number]",C="[object Object]",B="[object RegExp]",I="[object Set]",w="[object String]",v="[object WeakMap]";var S="[object ArrayBuffer]",Q="[object DataView]",N="[object Float32Array]",R="[object Float64Array]",k="[object Int8Array]",T="[object Int16Array]",_="[object Int32Array]",x="[object Uint8Array]",D="[object Uint8ClampedArray]",P="[object Uint16Array]",O="[object Uint32Array]";var L={};L[N]=L[R]=L[k]=L[T]=L[_]=L[x]=L[D]=L[P]=L[O]=true;L[d]=L[p]=L[S]=L[A]=L[Q]=L[u]=L[h]=L[g]=L[y]=L[b]=L[C]=L[B]=L[I]=L[w]=L[v]=false;function baseIsTypedArray(r){return c(r)&&l(r.length)&&!!L[a(r)]}r.exports=baseIsTypedArray},2822:(r,i,s)=>{var a=s(56534),l=s(84832),c=s(5127);var d=Object.prototype;var p=d.hasOwnProperty;function baseKeysIn(r){if(!a(r)){return c(r)}var i=l(r),s=[];for(var d in r){if(!(d=="constructor"&&(i||!p.call(r,d)))){s.push(d)}}return s}r.exports=baseKeysIn},6271:(r,i,s)=>{var a=s(46426),l=s(43797),c=s(45210);function baseRest(r,i){return c(l(r,i,a),r+"")}r.exports=baseRest},2454:(r,i,s)=>{var a=s(36580),l=s(82897),c=s(46426);var d=!l?c:function(r,i){return l(r,"toString",{configurable:true,enumerable:false,value:a(i),writable:true})};r.exports=d},87896:r=>{function baseTimes(r,i){var s=-1,a=Array(r);while(++s{function baseUnary(r){return function(i){return r(i)}}r.exports=baseUnary},4280:(r,i,s)=>{var a=s(69897),l=s(14786),c=s(18119),d=s(5074),p=s(4488),A=s(42136);var u=200;function baseUniq(r,i,s){var h=-1,g=l,y=r.length,b=true,C=[],B=C;if(s){b=false;g=c}else if(y>=u){var I=i?null:p(r);if(I){return A(I)}b=false;g=d;B=new a}else{B=i?[]:C}e:while(++h{function cacheHas(r,i){return r.has(i)}r.exports=cacheHas},65836:(r,i,s)=>{var a=s(78828);var l=a["__core-js_shared__"];r.exports=l},4488:(r,i,s)=>{var a=s(38581),l=s(60645),c=s(42136);var d=1/0;var p=!(a&&1/c(new a([,-0]))[1]==d)?l:function(r){return new a(r)};r.exports=p},82897:(r,i,s)=>{var a=s(44523);var l=function(){try{var r=a(Object,"defineProperty");r({},"",{});return r}catch(r){}}();r.exports=l},55602:r=>{var i=typeof global=="object"&&global&&global.Object===Object&&global;r.exports=i},94736:(r,i,s)=>{var a=s(73928);function getMapData(r,i){var s=r.__data__;return a(i)?s[typeof i=="string"?"string":"hash"]:s.map}r.exports=getMapData},44523:(r,i,s)=>{var a=s(90887),l=s(79272);function getNative(r,i){var s=l(r,i);return a(s)?s:undefined}r.exports=getNative},61906:(r,i,s)=>{var a=s(69151);var l=a(Object.getPrototypeOf,Object);r.exports=l},74625:(r,i,s)=>{var a=s(4947);var l=Object.prototype;var c=l.hasOwnProperty;var d=l.toString;var p=a?a.toStringTag:undefined;function getRawTag(r){var i=c.call(r,p),s=r[p];try{r[p]=undefined;var a=true}catch(r){}var l=d.call(r);if(a){if(i){r[p]=s}else{delete r[p]}}return l}r.exports=getRawTag},79272:r=>{function getValue(r,i){return r==null?undefined:r[i]}r.exports=getValue},23423:(r,i,s)=>{var a=s(3645);function hashClear(){this.__data__=a?a(null):{};this.size=0}r.exports=hashClear},85859:r=>{function hashDelete(r){var i=this.has(r)&&delete this.__data__[r];this.size-=i?1:0;return i}r.exports=hashDelete},30465:(r,i,s)=>{var a=s(3645);var l="__lodash_hash_undefined__";var c=Object.prototype;var d=c.hasOwnProperty;function hashGet(r){var i=this.__data__;if(a){var s=i[r];return s===l?undefined:s}return d.call(i,r)?i[r]:undefined}r.exports=hashGet},19030:(r,i,s)=>{var a=s(3645);var l=Object.prototype;var c=l.hasOwnProperty;function hashHas(r){var i=this.__data__;return a?i[r]!==undefined:c.call(i,r)}r.exports=hashHas},60783:(r,i,s)=>{var a=s(3645);var l="__lodash_hash_undefined__";function hashSet(r,i){var s=this.__data__;this.size+=this.has(r)?0:1;s[r]=a&&i===undefined?l:i;return this}r.exports=hashSet},88615:(r,i,s)=>{var a=s(4947),l=s(95038),c=s(9765);var d=a?a.isConcatSpreadable:undefined;function isFlattenable(r){return c(r)||l(r)||!!(d&&r&&r[d])}r.exports=isFlattenable},15524:r=>{var i=9007199254740991;var s=/^(?:0|[1-9]\d*)$/;function isIndex(r,a){var l=typeof r;a=a==null?i:a;return!!a&&(l=="number"||l!="symbol"&&s.test(r))&&(r>-1&&r%1==0&&r{var a=s(75471),l=s(64084),c=s(15524),d=s(56534);function isIterateeCall(r,i,s){if(!d(s)){return false}var p=typeof i;if(p=="number"?l(s)&&c(i,s.length):p=="string"&&i in s){return a(s[i],r)}return false}r.exports=isIterateeCall},73928:r=>{function isKeyable(r){var i=typeof r;return i=="string"||i=="number"||i=="symbol"||i=="boolean"?r!=="__proto__":r===null}r.exports=isKeyable},11835:(r,i,s)=>{var a=s(65836);var l=function(){var r=/[^.]+$/.exec(a&&a.keys&&a.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function isMasked(r){return!!l&&l in r}r.exports=isMasked},84832:r=>{var i=Object.prototype;function isPrototype(r){var s=r&&r.constructor,a=typeof s=="function"&&s.prototype||i;return r===a}r.exports=isPrototype},12708:r=>{function listCacheClear(){this.__data__=[];this.size=0}r.exports=listCacheClear},9817:(r,i,s)=>{var a=s(42095);var l=Array.prototype;var c=l.splice;function listCacheDelete(r){var i=this.__data__,s=a(i,r);if(s<0){return false}var l=i.length-1;if(s==l){i.pop()}else{c.call(i,s,1)}--this.size;return true}r.exports=listCacheDelete},88253:(r,i,s)=>{var a=s(42095);function listCacheGet(r){var i=this.__data__,s=a(i,r);return s<0?undefined:i[s][1]}r.exports=listCacheGet},15967:(r,i,s)=>{var a=s(42095);function listCacheHas(r){return a(this.__data__,r)>-1}r.exports=listCacheHas},6362:(r,i,s)=>{var a=s(42095);function listCacheSet(r,i){var s=this.__data__,l=a(s,r);if(l<0){++this.size;s.push([r,i])}else{s[l][1]=i}return this}r.exports=listCacheSet},30669:(r,i,s)=>{var a=s(86897),l=s(4018),c=s(36568);function mapCacheClear(){this.size=0;this.__data__={hash:new a,map:new(c||l),string:new a}}r.exports=mapCacheClear},93345:(r,i,s)=>{var a=s(94736);function mapCacheDelete(r){var i=a(this,r)["delete"](r);this.size-=i?1:0;return i}r.exports=mapCacheDelete},84497:(r,i,s)=>{var a=s(94736);function mapCacheGet(r){return a(this,r).get(r)}r.exports=mapCacheGet},67840:(r,i,s)=>{var a=s(94736);function mapCacheHas(r){return a(this,r).has(r)}r.exports=mapCacheHas},14866:(r,i,s)=>{var a=s(94736);function mapCacheSet(r,i){var s=a(this,r),l=s.size;s.set(r,i);this.size+=s.size==l?0:1;return this}r.exports=mapCacheSet},3645:(r,i,s)=>{var a=s(44523);var l=a(Object,"create");r.exports=l},5127:r=>{function nativeKeysIn(r){var i=[];if(r!=null){for(var s in Object(r)){i.push(s)}}return i}r.exports=nativeKeysIn},37673:(r,i,s)=>{r=s.nmd(r);var a=s(55602);var l=true&&i&&!i.nodeType&&i;var c=l&&"object"=="object"&&r&&!r.nodeType&&r;var d=c&&c.exports===l;var p=d&&a.process;var A=function(){try{var r=c&&c.require&&c.require("util").types;if(r){return r}return p&&p.binding&&p.binding("util")}catch(r){}}();r.exports=A},43600:r=>{var i=Object.prototype;var s=i.toString;function objectToString(r){return s.call(r)}r.exports=objectToString},69151:r=>{function overArg(r,i){return function(s){return r(i(s))}}r.exports=overArg},43797:(r,i,s)=>{var a=s(36689);var l=Math.max;function overRest(r,i,s){i=l(i===undefined?r.length-1:i,0);return function(){var c=arguments,d=-1,p=l(c.length-i,0),A=Array(p);while(++d{var a=s(55602);var l=typeof self=="object"&&self&&self.Object===Object&&self;var c=a||l||Function("return this")();r.exports=c},64028:r=>{var i="__lodash_hash_undefined__";function setCacheAdd(r){this.__data__.set(r,i);return this}r.exports=setCacheAdd},73099:r=>{function setCacheHas(r){return this.__data__.has(r)}r.exports=setCacheHas},42136:r=>{function setToArray(r){var i=-1,s=Array(r.size);r.forEach((function(r){s[++i]=r}));return s}r.exports=setToArray},45210:(r,i,s)=>{var a=s(2454),l=s(7969);var c=l(a);r.exports=c},7969:r=>{var i=800,s=16;var a=Date.now;function shortOut(r){var l=0,c=0;return function(){var d=a(),p=s-(d-c);c=d;if(p>0){if(++l>=i){return arguments[0]}}else{l=0}return r.apply(undefined,arguments)}}r.exports=shortOut},16089:r=>{function strictIndexOf(r,i,s){var a=s-1,l=r.length;while(++a{var i=Function.prototype;var s=i.toString;function toSource(r){if(r!=null){try{return s.call(r)}catch(r){}try{return r+""}catch(r){}}return""}r.exports=toSource},36580:r=>{function constant(r){return function(){return r}}r.exports=constant},28802:(r,i,s)=>{var a=s(6271),l=s(75471),c=s(26057),d=s(21743);var p=Object.prototype;var A=p.hasOwnProperty;var u=a((function(r,i){r=Object(r);var s=-1;var a=i.length;var u=a>2?i[2]:undefined;if(u&&c(i[0],i[1],u)){a=1}while(++s{var a=s(79414),l=s(25894),c=s(6271),d=s(5424);var p=c((function(r,i){return d(r)?a(r,l(i,1,d,true)):[]}));r.exports=p},75471:r=>{function eq(r,i){return r===i||r!==r&&i!==i}r.exports=eq},79698:(r,i,s)=>{var a=s(25894);function flatten(r){var i=r==null?0:r.length;return i?a(r,1):[]}r.exports=flatten},46426:r=>{function identity(r){return r}r.exports=identity},95038:(r,i,s)=>{var a=s(14845),l=s(17681);var c=Object.prototype;var d=c.hasOwnProperty;var p=c.propertyIsEnumerable;var A=a(function(){return arguments}())?a:function(r){return l(r)&&d.call(r,"callee")&&!p.call(r,"callee")};r.exports=A},9765:r=>{var i=Array.isArray;r.exports=i},64084:(r,i,s)=>{var a=s(73320),l=s(64586);function isArrayLike(r){return r!=null&&l(r.length)&&!a(r)}r.exports=isArrayLike},5424:(r,i,s)=>{var a=s(64084),l=s(17681);function isArrayLikeObject(r){return l(r)&&a(r)}r.exports=isArrayLikeObject},64619:(r,i,s)=>{r=s.nmd(r);var a=s(78828),l=s(38831);var c=true&&i&&!i.nodeType&&i;var d=c&&"object"=="object"&&r&&!r.nodeType&&r;var p=d&&d.exports===c;var A=p?a.Buffer:undefined;var u=A?A.isBuffer:undefined;var h=u||l;r.exports=h},73320:(r,i,s)=>{var a=s(24273),l=s(56534);var c="[object AsyncFunction]",d="[object Function]",p="[object GeneratorFunction]",A="[object Proxy]";function isFunction(r){if(!l(r)){return false}var i=a(r);return i==d||i==p||i==c||i==A}r.exports=isFunction},64586:r=>{var i=9007199254740991;function isLength(r){return typeof r=="number"&&r>-1&&r%1==0&&r<=i}r.exports=isLength},56534:r=>{function isObject(r){var i=typeof r;return r!=null&&(i=="object"||i=="function")}r.exports=isObject},17681:r=>{function isObjectLike(r){return r!=null&&typeof r=="object"}r.exports=isObjectLike},22011:(r,i,s)=>{var a=s(24273),l=s(61906),c=s(17681);var d="[object Object]";var p=Function.prototype,A=Object.prototype;var u=p.toString;var h=A.hasOwnProperty;var g=u.call(Object);function isPlainObject(r){if(!c(r)||a(r)!=d){return false}var i=l(r);if(i===null){return true}var s=h.call(i,"constructor")&&i.constructor;return typeof s=="function"&&s instanceof s&&u.call(s)==g}r.exports=isPlainObject},16521:(r,i,s)=>{var a=s(52252),l=s(75465),c=s(37673);var d=c&&c.isTypedArray;var p=d?l(d):a;r.exports=p},21743:(r,i,s)=>{var a=s(77549),l=s(2822),c=s(64084);function keysIn(r){return c(r)?a(r,true):l(r)}r.exports=keysIn},60645:r=>{function noop(){}r.exports=noop},38831:r=>{function stubFalse(){return false}r.exports=stubFalse},272:(r,i,s)=>{var a=s(25894),l=s(6271),c=s(4280),d=s(5424);var p=l((function(r){return c(a(r,1,d,true))}));r.exports=p},8039:(r,i,s)=>{r.exports=minimatch;minimatch.Minimatch=Minimatch;var a=function(){try{return s(71017)}catch(r){}}()||{sep:"/"};minimatch.sep=a.sep;var l=minimatch.GLOBSTAR=Minimatch.GLOBSTAR={};var c=s(37282);var d={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};var p="[^/]";var A=p+"*?";var u="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";var h="(?:(?!(?:\\/|^)\\.).)*?";var g=charSet("().*{}+?[]^$\\!");function charSet(r){return r.split("").reduce((function(r,i){r[i]=true;return r}),{})}var y=/\/+/;minimatch.filter=filter;function filter(r,i){i=i||{};return function(s,a,l){return minimatch(s,r,i)}}function ext(r,i){i=i||{};var s={};Object.keys(r).forEach((function(i){s[i]=r[i]}));Object.keys(i).forEach((function(r){s[r]=i[r]}));return s}minimatch.defaults=function(r){if(!r||typeof r!=="object"||!Object.keys(r).length){return minimatch}var i=minimatch;var s=function minimatch(s,a,l){return i(s,a,ext(r,l))};s.Minimatch=function Minimatch(s,a){return new i.Minimatch(s,ext(r,a))};s.Minimatch.defaults=function defaults(s){return i.defaults(ext(r,s)).Minimatch};s.filter=function filter(s,a){return i.filter(s,ext(r,a))};s.defaults=function defaults(s){return i.defaults(ext(r,s))};s.makeRe=function makeRe(s,a){return i.makeRe(s,ext(r,a))};s.braceExpand=function braceExpand(s,a){return i.braceExpand(s,ext(r,a))};s.match=function(s,a,l){return i.match(s,a,ext(r,l))};return s};Minimatch.defaults=function(r){return minimatch.defaults(r).Minimatch};function minimatch(r,i,s){assertValidPattern(i);if(!s)s={};if(!s.nocomment&&i.charAt(0)==="#"){return false}return new Minimatch(i,s).match(r)}function Minimatch(r,i){if(!(this instanceof Minimatch)){return new Minimatch(r,i)}assertValidPattern(r);if(!i)i={};r=r.trim();if(!i.allowWindowsEscape&&a.sep!=="/"){r=r.split(a.sep).join("/")}this.options=i;this.set=[];this.pattern=r;this.regexp=null;this.negate=false;this.comment=false;this.empty=false;this.partial=!!i.partial;this.make()}Minimatch.prototype.debug=function(){};Minimatch.prototype.make=make;function make(){var r=this.pattern;var i=this.options;if(!i.nocomment&&r.charAt(0)==="#"){this.comment=true;return}if(!r){this.empty=true;return}this.parseNegate();var s=this.globSet=this.braceExpand();if(i.debug)this.debug=function debug(){console.error.apply(console,arguments)};this.debug(this.pattern,s);s=this.globParts=s.map((function(r){return r.split(y)}));this.debug(this.pattern,s);s=s.map((function(r,i,s){return r.map(this.parse,this)}),this);this.debug(this.pattern,s);s=s.filter((function(r){return r.indexOf(false)===-1}));this.debug(this.pattern,s);this.set=s}Minimatch.prototype.parseNegate=parseNegate;function parseNegate(){var r=this.pattern;var i=false;var s=this.options;var a=0;if(s.nonegate)return;for(var l=0,c=r.length;lb){throw new TypeError("pattern is too long")}};Minimatch.prototype.parse=parse;var C={};function parse(r,i){assertValidPattern(r);var s=this.options;if(r==="**"){if(!s.noglobstar)return l;else r="*"}if(r==="")return"";var a="";var c=!!s.nocase;var u=false;var h=[];var y=[];var b;var B=false;var I=-1;var w=-1;var v=r.charAt(0)==="."?"":s.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)";var S=this;function clearStateChar(){if(b){switch(b){case"*":a+=A;c=true;break;case"?":a+=p;c=true;break;default:a+="\\"+b;break}S.debug("clearStateChar %j %j",b,a);b=false}}for(var Q=0,N=r.length,R;Q-1;O--){var L=y[O];var F=a.slice(0,L.reStart);var M=a.slice(L.reStart,L.reEnd-8);var U=a.slice(L.reEnd-8,L.reEnd);var H=a.slice(L.reEnd);U+=H;var q=F.split("(").length-1;var G=H;for(Q=0;Q=0;d--){c=r[d];if(c)break}for(d=0;d>> no match, partial?",r,g,i,y);if(g===p)return true}return false}var C;if(typeof u==="string"){C=h===u;this.debug("string match",u,h,C)}else{C=h.match(u);this.debug("pattern match",u,h,C)}if(!C)return false}if(c===p&&d===A){return true}else if(c===p){return s}else if(d===A){return c===p-1&&r[c]===""}throw new Error("wtf?")};function globUnescape(r){return r.replace(/\\(.)/g,"$1")}function regExpEscape(r){return r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}},36678:r=>{const i=typeof process==="object"&&process&&process.platform==="win32";r.exports=i?{sep:"\\"}:{sep:"/"}},73954:(r,i,s)=>{const a=r.exports=(r,i,s={})=>{assertValidPattern(i);if(!s.nocomment&&i.charAt(0)==="#"){return false}return new Minimatch(i,s).match(r)};r.exports=a;const l=s(36678);a.sep=l.sep;const c=Symbol("globstar **");a.GLOBSTAR=c;const d=s(88012);const p={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}};const A="[^/]";const u=A+"*?";const h="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";const g="(?:(?!(?:\\/|^)\\.).)*?";const charSet=r=>r.split("").reduce(((r,i)=>{r[i]=true;return r}),{});const y=charSet("().*{}+?[]^$\\!");const b=charSet("[.(");const C=/\/+/;a.filter=(r,i={})=>(s,l,c)=>a(s,r,i);const ext=(r,i={})=>{const s={};Object.keys(r).forEach((i=>s[i]=r[i]));Object.keys(i).forEach((r=>s[r]=i[r]));return s};a.defaults=r=>{if(!r||typeof r!=="object"||!Object.keys(r).length){return a}const i=a;const m=(s,a,l)=>i(s,a,ext(r,l));m.Minimatch=class Minimatch extends i.Minimatch{constructor(i,s){super(i,ext(r,s))}};m.Minimatch.defaults=s=>i.defaults(ext(r,s)).Minimatch;m.filter=(s,a)=>i.filter(s,ext(r,a));m.defaults=s=>i.defaults(ext(r,s));m.makeRe=(s,a)=>i.makeRe(s,ext(r,a));m.braceExpand=(s,a)=>i.braceExpand(s,ext(r,a));m.match=(s,a,l)=>i.match(s,a,ext(r,l));return m};a.braceExpand=(r,i)=>braceExpand(r,i);const braceExpand=(r,i={})=>{assertValidPattern(r);if(i.nobrace||!/\{(?:(?!\{).)*\}/.test(r)){return[r]}return d(r)};const B=1024*64;const assertValidPattern=r=>{if(typeof r!=="string"){throw new TypeError("invalid pattern")}if(r.length>B){throw new TypeError("pattern is too long")}};const I=Symbol("subparse");a.makeRe=(r,i)=>new Minimatch(r,i||{}).makeRe();a.match=(r,i,s={})=>{const a=new Minimatch(i,s);r=r.filter((r=>a.match(r)));if(a.options.nonull&&!r.length){r.push(i)}return r};const globUnescape=r=>r.replace(/\\(.)/g,"$1");const charUnescape=r=>r.replace(/\\([^-\]])/g,"$1");const regExpEscape=r=>r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");const braExpEscape=r=>r.replace(/[[\]\\]/g,"\\$&");class Minimatch{constructor(r,i){assertValidPattern(r);if(!i)i={};this.options=i;this.set=[];this.pattern=r;this.windowsPathsNoEscape=!!i.windowsPathsNoEscape||i.allowWindowsEscape===false;if(this.windowsPathsNoEscape){this.pattern=this.pattern.replace(/\\/g,"/")}this.regexp=null;this.negate=false;this.comment=false;this.empty=false;this.partial=!!i.partial;this.make()}debug(){}make(){const r=this.pattern;const i=this.options;if(!i.nocomment&&r.charAt(0)==="#"){this.comment=true;return}if(!r){this.empty=true;return}this.parseNegate();let s=this.globSet=this.braceExpand();if(i.debug)this.debug=(...r)=>console.error(...r);this.debug(this.pattern,s);s=this.globParts=s.map((r=>r.split(C)));this.debug(this.pattern,s);s=s.map(((r,i,s)=>r.map(this.parse,this)));this.debug(this.pattern,s);s=s.filter((r=>r.indexOf(false)===-1));this.debug(this.pattern,s);this.set=s}parseNegate(){if(this.options.nonegate)return;const r=this.pattern;let i=false;let s=0;for(let a=0;a>> no match, partial?",r,g,i,y);if(g===p)return true}return false}var C;if(typeof u==="string"){C=h===u;this.debug("string match",u,h,C)}else{C=h.match(u);this.debug("pattern match",u,h,C)}if(!C)return false}if(l===p&&d===A){return true}else if(l===p){return s}else if(d===A){return l===p-1&&r[l]===""}throw new Error("wtf?")}braceExpand(){return braceExpand(this.pattern,this.options)}parse(r,i){assertValidPattern(r);const s=this.options;if(r==="**"){if(!s.noglobstar)return c;else r="*"}if(r==="")return"";let a="";let l=false;let d=false;const h=[];const g=[];let C;let B=false;let w=-1;let v=-1;let S;let Q;let N;let R=r.charAt(0)===".";let k=s.dot||R;const patternStart=()=>R?"":k?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)";const subPatternStart=r=>r.charAt(0)==="."?"":s.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)";const clearStateChar=()=>{if(C){switch(C){case"*":a+=u;l=true;break;case"?":a+=A;l=true;break;default:a+="\\"+C;break}this.debug("clearStateChar %j %j",C,a);C=false}};for(let i=0,c;i{if(!s){s="\\"}return i+i+s+"|"}));this.debug("tail=%j\n %s",r,r,Q,a);const i=Q.type==="*"?u:Q.type==="?"?A:"\\"+Q.type;l=true;a=a.slice(0,Q.reStart)+i+"\\("+r}clearStateChar();if(d){a+="\\\\"}const T=b[a.charAt(0)];for(let r=g.length-1;r>-1;r--){const s=g[r];const l=a.slice(0,s.reStart);const c=a.slice(s.reStart,s.reEnd-8);let d=a.slice(s.reEnd);const p=a.slice(s.reEnd-8,s.reEnd)+d;const A=l.split(")").length;const u=l.split("(").length-A;let h=d;for(let r=0;r{r=r.map((r=>typeof r==="string"?regExpEscape(r):r===c?c:r._src)).reduce(((r,i)=>{if(!(r[r.length-1]===c&&i===c)){r.push(i)}return r}),[]);r.forEach(((i,a)=>{if(i!==c||r[a-1]===c){return}if(a===0){if(r.length>1){r[a+1]="(?:\\/|"+s+"\\/)?"+r[a+1]}else{r[a]=s}}else if(a===r.length-1){r[a-1]+="(?:\\/|"+s+")?"}else{r[a-1]+="(?:\\/|\\/"+s+"\\/)"+r[a+1];r[a+1]=c}}));return r.filter((r=>r!==c)).join("/")})).join("|");l="^(?:"+l+")$";if(this.negate)l="^(?!"+l+").*$";try{this.regexp=new RegExp(l,a)}catch(r){this.regexp=false}return this.regexp}match(r,i=this.partial){this.debug("match",r,this.pattern);if(this.comment)return false;if(this.empty)return r==="";if(r==="/"&&i)return true;const s=this.options;if(l.sep!=="/"){r=r.split(l.sep).join("/")}r=r.split(C);this.debug(this.pattern,"split",r);const a=this.set;this.debug(this.pattern,"set",a);let c;for(let i=r.length-1;i>=0;i--){c=r[i];if(c)break}for(let l=0;l{var a=s(71017);var l=s(57147);var c=parseInt("0777",8);r.exports=mkdirP.mkdirp=mkdirP.mkdirP=mkdirP;function mkdirP(r,i,s,d){if(typeof i==="function"){s=i;i={}}else if(!i||typeof i!=="object"){i={mode:i}}var p=i.mode;var A=i.fs||l;if(p===undefined){p=c}if(!d)d=null;var u=s||function(){};r=a.resolve(r);A.mkdir(r,p,(function(s){if(!s){d=d||r;return u(null,d)}switch(s.code){case"ENOENT":if(a.dirname(r)===r)return u(s);mkdirP(a.dirname(r),i,(function(s,a){if(s)u(s,a);else mkdirP(r,i,u,a)}));break;default:A.stat(r,(function(r,i){if(r||!i.isDirectory())u(s,d);else u(null,d)}));break}}))}mkdirP.sync=function sync(r,i,s){if(!i||typeof i!=="object"){i={mode:i}}var d=i.mode;var p=i.fs||l;if(d===undefined){d=c}if(!s)s=null;r=a.resolve(r);try{p.mkdirSync(r,d);s=s||r}catch(l){switch(l.code){case"ENOENT":s=sync(a.dirname(r),i,s);sync(r,i,s);break;default:var A;try{A=p.statSync(r)}catch(r){throw l}if(!A.isDirectory())throw l;break}}return s}},91111:r=>{var i=1e3;var s=i*60;var a=s*60;var l=a*24;var c=l*7;var d=l*365.25;r.exports=function(r,i){i=i||{};var s=typeof r;if(s==="string"&&r.length>0){return parse(r)}else if(s==="number"&&isFinite(r)){return i.long?fmtLong(r):fmtShort(r)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function parse(r){r=String(r);if(r.length>100){return}var p=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(!p){return}var A=parseFloat(p[1]);var u=(p[2]||"ms").toLowerCase();switch(u){case"years":case"year":case"yrs":case"yr":case"y":return A*d;case"weeks":case"week":case"w":return A*c;case"days":case"day":case"d":return A*l;case"hours":case"hour":case"hrs":case"hr":case"h":return A*a;case"minutes":case"minute":case"mins":case"min":case"m":return A*s;case"seconds":case"second":case"secs":case"sec":case"s":return A*i;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return A;default:return undefined}}function fmtShort(r){var c=Math.abs(r);if(c>=l){return Math.round(r/l)+"d"}if(c>=a){return Math.round(r/a)+"h"}if(c>=s){return Math.round(r/s)+"m"}if(c>=i){return Math.round(r/i)+"s"}return r+"ms"}function fmtLong(r){var c=Math.abs(r);if(c>=l){return plural(r,c,l,"day")}if(c>=a){return plural(r,c,a,"hour")}if(c>=s){return plural(r,c,s,"minute")}if(c>=i){return plural(r,c,i,"second")}return r+" ms"}function plural(r,i,s,a){var l=i>=s*1.5;return Math.round(r/s)+" "+a+(l?"s":"")}},77299:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});function _interopDefault(r){return r&&typeof r==="object"&&"default"in r?r["default"]:r}var a=_interopDefault(s(12781));var l=_interopDefault(s(13685));var c=_interopDefault(s(57310));var d=_interopDefault(s(79210));var p=_interopDefault(s(95687));var A=_interopDefault(s(59796));const u=a.Readable;const h=Symbol("buffer");const g=Symbol("type");class Blob{constructor(){this[g]="";const r=arguments[0];const i=arguments[1];const s=[];let a=0;if(r){const i=r;const l=Number(i.length);for(let r=0;r1&&arguments[1]!==undefined?arguments[1]:{},l=s.size;let c=l===undefined?0:l;var d=s.timeout;let p=d===undefined?0:d;if(r==null){r=null}else if(isURLSearchParams(r)){r=Buffer.from(r.toString())}else if(isBlob(r));else if(Buffer.isBuffer(r));else if(Object.prototype.toString.call(r)==="[object ArrayBuffer]"){r=Buffer.from(r)}else if(ArrayBuffer.isView(r)){r=Buffer.from(r.buffer,r.byteOffset,r.byteLength)}else if(r instanceof a);else{r=Buffer.from(String(r))}this[b]={body:r,disturbed:false,error:null};this.size=c;this.timeout=p;if(r instanceof a){r.on("error",(function(r){const s=r.name==="AbortError"?r:new FetchError(`Invalid response body while trying to fetch ${i.url}: ${r.message}`,"system",r);i[b].error=s}))}}Body.prototype={get body(){return this[b].body},get bodyUsed(){return this[b].disturbed},arrayBuffer(){return consumeBody.call(this).then((function(r){return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}))},blob(){let r=this.headers&&this.headers.get("content-type")||"";return consumeBody.call(this).then((function(i){return Object.assign(new Blob([],{type:r.toLowerCase()}),{[h]:i})}))},json(){var r=this;return consumeBody.call(this).then((function(i){try{return JSON.parse(i.toString())}catch(i){return Body.Promise.reject(new FetchError(`invalid json response body at ${r.url} reason: ${i.message}`,"invalid-json"))}}))},text(){return consumeBody.call(this).then((function(r){return r.toString()}))},buffer(){return consumeBody.call(this)},textConverted(){var r=this;return consumeBody.call(this).then((function(i){return convertBody(i,r.headers)}))}};Object.defineProperties(Body.prototype,{body:{enumerable:true},bodyUsed:{enumerable:true},arrayBuffer:{enumerable:true},blob:{enumerable:true},json:{enumerable:true},text:{enumerable:true}});Body.mixIn=function(r){for(const i of Object.getOwnPropertyNames(Body.prototype)){if(!(i in r)){const s=Object.getOwnPropertyDescriptor(Body.prototype,i);Object.defineProperty(r,i,s)}}};function consumeBody(){var r=this;if(this[b].disturbed){return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`))}this[b].disturbed=true;if(this[b].error){return Body.Promise.reject(this[b].error)}let i=this.body;if(i===null){return Body.Promise.resolve(Buffer.alloc(0))}if(isBlob(i)){i=i.stream()}if(Buffer.isBuffer(i)){return Body.Promise.resolve(i)}if(!(i instanceof a)){return Body.Promise.resolve(Buffer.alloc(0))}let s=[];let l=0;let c=false;return new Body.Promise((function(a,d){let p;if(r.timeout){p=setTimeout((function(){c=true;d(new FetchError(`Response timeout while trying to fetch ${r.url} (over ${r.timeout}ms)`,"body-timeout"))}),r.timeout)}i.on("error",(function(i){if(i.name==="AbortError"){c=true;d(i)}else{d(new FetchError(`Invalid response body while trying to fetch ${r.url}: ${i.message}`,"system",i))}}));i.on("data",(function(i){if(c||i===null){return}if(r.size&&l+i.length>r.size){c=true;d(new FetchError(`content size at ${r.url} over limit: ${r.size}`,"max-size"));return}l+=i.length;s.push(i)}));i.on("end",(function(){if(c){return}clearTimeout(p);try{a(Buffer.concat(s,l))}catch(i){d(new FetchError(`Could not create Buffer from response body for ${r.url}: ${i.message}`,"system",i))}}))}))}function convertBody(r,i){if(typeof y!=="function"){throw new Error("The package `encoding` must be installed to use the textConverted() function")}const s=i.get("content-type");let a="utf-8";let l,c;if(s){l=/charset=([^;]*)/i.exec(s)}c=r.slice(0,1024).toString();if(!l&&c){l=/0&&arguments[0]!==undefined?arguments[0]:undefined;this[w]=Object.create(null);if(r instanceof Headers){const i=r.raw();const s=Object.keys(i);for(const r of s){for(const s of i[r]){this.append(r,s)}}return}if(r==null);else if(typeof r==="object"){const i=r[Symbol.iterator];if(i!=null){if(typeof i!=="function"){throw new TypeError("Header pairs must be iterable")}const s=[];for(const i of r){if(typeof i!=="object"||typeof i[Symbol.iterator]!=="function"){throw new TypeError("Each header pair must be iterable")}s.push(Array.from(i))}for(const r of s){if(r.length!==2){throw new TypeError("Each header pair must be a name/value tuple")}this.append(r[0],r[1])}}else{for(const i of Object.keys(r)){const s=r[i];this.append(i,s)}}}else{throw new TypeError("Provided initializer must be an object")}}get(r){r=`${r}`;validateName(r);const i=find(this[w],r);if(i===undefined){return null}return this[w][i].join(", ")}forEach(r){let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:undefined;let s=getHeaders(this);let a=0;while(a1&&arguments[1]!==undefined?arguments[1]:"key+value";const s=Object.keys(r[w]).sort();return s.map(i==="key"?function(r){return r.toLowerCase()}:i==="value"?function(i){return r[w][i].join(", ")}:function(i){return[i.toLowerCase(),r[w][i].join(", ")]})}const v=Symbol("internal");function createHeadersIterator(r,i){const s=Object.create(S);s[v]={target:r,kind:i,index:0};return s}const S=Object.setPrototypeOf({next(){if(!this||Object.getPrototypeOf(this)!==S){throw new TypeError("Value of `this` is not a HeadersIterator")}var r=this[v];const i=r.target,s=r.kind,a=r.index;const l=getHeaders(i,s);const c=l.length;if(a>=c){return{value:undefined,done:true}}this[v].index=a+1;return{value:l[a],done:false}}},Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));Object.defineProperty(S,Symbol.toStringTag,{value:"HeadersIterator",writable:false,enumerable:false,configurable:true});function exportNodeCompatibleHeaders(r){const i=Object.assign({__proto__:null},r[w]);const s=find(r[w],"Host");if(s!==undefined){i[s]=i[s][0]}return i}function createHeadersLenient(r){const i=new Headers;for(const s of Object.keys(r)){if(B.test(s)){continue}if(Array.isArray(r[s])){for(const a of r[s]){if(I.test(a)){continue}if(i[w][s]===undefined){i[w][s]=[a]}else{i[w][s].push(a)}}}else if(!I.test(r[s])){i[w][s]=[r[s]]}}return i}const Q=Symbol("Response internals");const N=l.STATUS_CODES;class Response{constructor(){let r=arguments.length>0&&arguments[0]!==undefined?arguments[0]:null;let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};Body.call(this,r,i);const s=i.status||200;const a=new Headers(i.headers);if(r!=null&&!a.has("Content-Type")){const i=extractContentType(r);if(i){a.append("Content-Type",i)}}this[Q]={url:i.url,status:s,statusText:i.statusText||N[s],headers:a,counter:i.counter}}get url(){return this[Q].url||""}get status(){return this[Q].status}get ok(){return this[Q].status>=200&&this[Q].status<300}get redirected(){return this[Q].counter>0}get statusText(){return this[Q].statusText}get headers(){return this[Q].headers}clone(){return new Response(clone(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok,redirected:this.redirected})}}Body.mixIn(Response.prototype);Object.defineProperties(Response.prototype,{url:{enumerable:true},status:{enumerable:true},ok:{enumerable:true},redirected:{enumerable:true},statusText:{enumerable:true},headers:{enumerable:true},clone:{enumerable:true}});Object.defineProperty(Response.prototype,Symbol.toStringTag,{value:"Response",writable:false,enumerable:false,configurable:true});const R=Symbol("Request internals");const k=c.URL||d.URL;const T=c.parse;const _=c.format;function parseURL(r){if(/^[a-zA-Z][a-zA-Z\d+\-.]*:/.exec(r)){r=new k(r).toString()}return T(r)}const x="destroy"in a.Readable.prototype;function isRequest(r){return typeof r==="object"&&typeof r[R]==="object"}function isAbortSignal(r){const i=r&&typeof r==="object"&&Object.getPrototypeOf(r);return!!(i&&i.constructor.name==="AbortSignal")}class Request{constructor(r){let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};let s;if(!isRequest(r)){if(r&&r.href){s=parseURL(r.href)}else{s=parseURL(`${r}`)}r={}}else{s=parseURL(r.url)}let a=i.method||r.method||"GET";a=a.toUpperCase();if((i.body!=null||isRequest(r)&&r.body!==null)&&(a==="GET"||a==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body")}let l=i.body!=null?i.body:isRequest(r)&&r.body!==null?clone(r):null;Body.call(this,l,{timeout:i.timeout||r.timeout||0,size:i.size||r.size||0});const c=new Headers(i.headers||r.headers||{});if(l!=null&&!c.has("Content-Type")){const r=extractContentType(l);if(r){c.append("Content-Type",r)}}let d=isRequest(r)?r.signal:null;if("signal"in i)d=i.signal;if(d!=null&&!isAbortSignal(d)){throw new TypeError("Expected signal to be an instanceof AbortSignal")}this[R]={method:a,redirect:i.redirect||r.redirect||"follow",headers:c,parsedURL:s,signal:d};this.follow=i.follow!==undefined?i.follow:r.follow!==undefined?r.follow:20;this.compress=i.compress!==undefined?i.compress:r.compress!==undefined?r.compress:true;this.counter=i.counter||r.counter||0;this.agent=i.agent||r.agent}get method(){return this[R].method}get url(){return _(this[R].parsedURL)}get headers(){return this[R].headers}get redirect(){return this[R].redirect}get signal(){return this[R].signal}clone(){return new Request(this)}}Body.mixIn(Request.prototype);Object.defineProperty(Request.prototype,Symbol.toStringTag,{value:"Request",writable:false,enumerable:false,configurable:true});Object.defineProperties(Request.prototype,{method:{enumerable:true},url:{enumerable:true},headers:{enumerable:true},redirect:{enumerable:true},clone:{enumerable:true},signal:{enumerable:true}});function getNodeRequestOptions(r){const i=r[R].parsedURL;const s=new Headers(r[R].headers);if(!s.has("Accept")){s.set("Accept","*/*")}if(!i.protocol||!i.hostname){throw new TypeError("Only absolute URLs are supported")}if(!/^https?:$/.test(i.protocol)){throw new TypeError("Only HTTP(S) protocols are supported")}if(r.signal&&r.body instanceof a.Readable&&!x){throw new Error("Cancellation of streamed requests with AbortSignal is not supported in node < 8")}let l=null;if(r.body==null&&/^(POST|PUT)$/i.test(r.method)){l="0"}if(r.body!=null){const i=getTotalBytes(r);if(typeof i==="number"){l=String(i)}}if(l){s.set("Content-Length",l)}if(!s.has("User-Agent")){s.set("User-Agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)")}if(r.compress&&!s.has("Accept-Encoding")){s.set("Accept-Encoding","gzip,deflate")}let c=r.agent;if(typeof c==="function"){c=c(i)}return Object.assign({},i,{method:r.method,headers:exportNodeCompatibleHeaders(s),agent:c})}function AbortError(r){Error.call(this,r);this.type="aborted";this.message=r;Error.captureStackTrace(this,this.constructor)}AbortError.prototype=Object.create(Error.prototype);AbortError.prototype.constructor=AbortError;AbortError.prototype.name="AbortError";const D=c.URL||d.URL;const P=a.PassThrough;const O=function isDomainOrSubdomain(r,i){const s=new D(i).hostname;const a=new D(r).hostname;return s===a||s[s.length-a.length-1]==="."&&s.endsWith(a)};const L=function isSameProtocol(r,i){const s=new D(i).protocol;const a=new D(r).protocol;return s===a};function fetch(r,i){if(!fetch.Promise){throw new Error("native promise missing, set fetch.Promise to your favorite alternative")}Body.Promise=fetch.Promise;return new fetch.Promise((function(s,c){const d=new Request(r,i);const u=getNodeRequestOptions(d);const h=(u.protocol==="https:"?p:l).request;const g=d.signal;let y=null;const b=function abort(){let r=new AbortError("The user aborted a request.");c(r);if(d.body&&d.body instanceof a.Readable){destroyStream(d.body,r)}if(!y||!y.body)return;y.body.emit("error",r)};if(g&&g.aborted){b();return}const C=function abortAndFinalize(){b();finalize()};const B=h(u);let I;if(g){g.addEventListener("abort",C)}function finalize(){B.abort();if(g)g.removeEventListener("abort",C);clearTimeout(I)}if(d.timeout){B.once("socket",(function(r){I=setTimeout((function(){c(new FetchError(`network timeout at: ${d.url}`,"request-timeout"));finalize()}),d.timeout)}))}B.on("error",(function(r){c(new FetchError(`request to ${d.url} failed, reason: ${r.message}`,"system",r));if(y&&y.body){destroyStream(y.body,r)}finalize()}));fixResponseChunkedTransferBadEnding(B,(function(r){if(g&&g.aborted){return}if(y&&y.body){destroyStream(y.body,r)}}));if(parseInt(process.version.substring(1))<14){B.on("socket",(function(r){r.addListener("close",(function(i){const s=r.listenerCount("data")>0;if(y&&s&&!i&&!(g&&g.aborted)){const r=new Error("Premature close");r.code="ERR_STREAM_PREMATURE_CLOSE";y.body.emit("error",r)}}))}))}B.on("response",(function(r){clearTimeout(I);const i=createHeadersLenient(r.headers);if(fetch.isRedirect(r.statusCode)){const a=i.get("Location");let l=null;try{l=a===null?null:new D(a,d.url).toString()}catch(r){if(d.redirect!=="manual"){c(new FetchError(`uri requested responds with an invalid redirect URL: ${a}`,"invalid-redirect"));finalize();return}}switch(d.redirect){case"error":c(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${d.url}`,"no-redirect"));finalize();return;case"manual":if(l!==null){try{i.set("Location",l)}catch(r){c(r)}}break;case"follow":if(l===null){break}if(d.counter>=d.follow){c(new FetchError(`maximum redirect reached at: ${d.url}`,"max-redirect"));finalize();return}const a={headers:new Headers(d.headers),follow:d.follow,counter:d.counter+1,agent:d.agent,compress:d.compress,method:d.method,body:d.body,signal:d.signal,timeout:d.timeout,size:d.size};if(!O(d.url,l)||!L(d.url,l)){for(const r of["authorization","www-authenticate","cookie","cookie2"]){a.headers.delete(r)}}if(r.statusCode!==303&&d.body&&getTotalBytes(d)===null){c(new FetchError("Cannot follow redirect with body being a readable stream","unsupported-redirect"));finalize();return}if(r.statusCode===303||(r.statusCode===301||r.statusCode===302)&&d.method==="POST"){a.method="GET";a.body=undefined;a.headers.delete("content-length")}s(fetch(new Request(l,a)));finalize();return}}r.once("end",(function(){if(g)g.removeEventListener("abort",C)}));let a=r.pipe(new P);const l={url:d.url,status:r.statusCode,statusText:r.statusMessage,headers:i,size:d.size,timeout:d.timeout,counter:d.counter};const p=i.get("Content-Encoding");if(!d.compress||d.method==="HEAD"||p===null||r.statusCode===204||r.statusCode===304){y=new Response(a,l);s(y);return}const u={flush:A.Z_SYNC_FLUSH,finishFlush:A.Z_SYNC_FLUSH};if(p=="gzip"||p=="x-gzip"){a=a.pipe(A.createGunzip(u));y=new Response(a,l);s(y);return}if(p=="deflate"||p=="x-deflate"){const i=r.pipe(new P);i.once("data",(function(r){if((r[0]&15)===8){a=a.pipe(A.createInflate())}else{a=a.pipe(A.createInflateRaw())}y=new Response(a,l);s(y)}));i.on("end",(function(){if(!y){y=new Response(a,l);s(y)}}));return}if(p=="br"&&typeof A.createBrotliDecompress==="function"){a=a.pipe(A.createBrotliDecompress());y=new Response(a,l);s(y);return}y=new Response(a,l);s(y)}));writeToStream(B,d)}))}function fixResponseChunkedTransferBadEnding(r,i){let s;r.on("socket",(function(r){s=r}));r.on("response",(function(r){const a=r.headers;if(a["transfer-encoding"]==="chunked"&&!a["content-length"]){r.once("close",(function(r){const a=s&&s.listenerCount("data")>0;if(a&&!r){const r=new Error("Premature close");r.code="ERR_STREAM_PREMATURE_CLOSE";i(r)}}))}}))}function destroyStream(r,i){if(r.destroy){r.destroy(i)}else{r.emit("error",i);r.end()}}fetch.isRedirect=function(r){return r===301||r===302||r===303||r===307||r===308};fetch.Promise=global.Promise;r.exports=i=fetch;Object.defineProperty(i,"__esModule",{value:true});i["default"]=i;i.Headers=Headers;i.Request=Request;i.Response=Response;i.FetchError=FetchError;i.AbortError=AbortError},37321:r=>{ -/*! - * normalize-path - * - * Copyright (c) 2014-2018, Jon Schlinkert. - * Released under the MIT License. - */ -r.exports=function(r,i){if(typeof r!=="string"){throw new TypeError("expected path to be a string")}if(r==="\\"||r==="/")return"/";var s=r.length;if(s<=1)return r;var a="";if(s>4&&r[3]==="\\"){var l=r[2];if((l==="?"||l===".")&&r.slice(0,2)==="\\\\"){r=r.slice(2);a="//"}}var c=r.split(/[/\\]+/);if(i!==false&&c[c.length-1]===""){c.pop()}return a+c.join("/")}},56884:(r,i,s)=>{var a=s(52358);r.exports=a(once);r.exports.strict=a(onceStrict);once.proto=once((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return once(this)},configurable:true});Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return onceStrict(this)},configurable:true})}));function once(r){var f=function(){if(f.called)return f.value;f.called=true;return f.value=r.apply(this,arguments)};f.called=false;return f}function onceStrict(r){var f=function(){if(f.called)throw new Error(f.onceError);f.called=true;return f.value=r.apply(this,arguments)};var i=r.name||"Function wrapped with `once`";f.onceError=i+" shouldn't be called more than once";f.called=false;return f}},65363:r=>{"use strict";if(typeof process==="undefined"||!process.version||process.version.indexOf("v0.")===0||process.version.indexOf("v1.")===0&&process.version.indexOf("v1.8.")!==0){r.exports={nextTick:nextTick}}else{r.exports=process}function nextTick(r,i,s,a){if(typeof r!=="function"){throw new TypeError('"callback" argument must be a function')}var l=arguments.length;var c,d;switch(l){case 0:case 1:return process.nextTick(r);case 2:return process.nextTick((function afterTickOne(){r.call(null,i)}));case 3:return process.nextTick((function afterTickTwo(){r.call(null,i,s)}));case 4:return process.nextTick((function afterTickThree(){r.call(null,i,s,a)}));default:c=new Array(l-1);d=0;while(d{r.exports=global.process},14181:(r,i,s)=>{r.exports=typeof process!=="undefined"&&typeof process.nextTick==="function"?process.nextTick.bind(process):s(3831)},3831:r=>{r.exports=typeof queueMicrotask==="function"?queueMicrotask:r=>Promise.resolve().then(r)},6565:(r,i,s)=>{"use strict";var a=s(65363);var l=Object.keys||function(r){var i=[];for(var s in r){i.push(s)}return i};r.exports=Duplex;var c=Object.create(s(16755));c.inherits=s(16735);var d=s(9625);var p=s(85912);c.inherits(Duplex,d);{var A=l(p.prototype);for(var u=0;u{"use strict";r.exports=PassThrough;var a=s(66137);var l=Object.create(s(16755));l.inherits=s(16735);l.inherits(PassThrough,a);function PassThrough(r){if(!(this instanceof PassThrough))return new PassThrough(r);a.call(this,r)}PassThrough.prototype._transform=function(r,i,s){s(null,r)}},9625:(r,i,s)=>{"use strict";var a=s(65363);r.exports=Readable;var l=s(862);var c;Readable.ReadableState=ReadableState;var d=s(82361).EventEmitter;var EElistenerCount=function(r,i){return r.listeners(i).length};var p=s(25439);var A=s(89404).Buffer;var u=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(r){return A.from(r)}function _isUint8Array(r){return A.isBuffer(r)||r instanceof u}var h=Object.create(s(16755));h.inherits=s(16735);var g=s(73837);var y=void 0;if(g&&g.debuglog){y=g.debuglog("stream")}else{y=function(){}}var b=s(11008);var C=s(65405);var B;h.inherits(Readable,p);var I=["error","close","destroy","pause","resume"];function prependListener(r,i,s){if(typeof r.prependListener==="function")return r.prependListener(i,s);if(!r._events||!r._events[i])r.on(i,s);else if(l(r._events[i]))r._events[i].unshift(s);else r._events[i]=[s,r._events[i]]}function ReadableState(r,i){c=c||s(6565);r=r||{};var a=i instanceof c;this.objectMode=!!r.objectMode;if(a)this.objectMode=this.objectMode||!!r.readableObjectMode;var l=r.highWaterMark;var d=r.readableHighWaterMark;var p=this.objectMode?16:16*1024;if(l||l===0)this.highWaterMark=l;else if(a&&(d||d===0))this.highWaterMark=d;else this.highWaterMark=p;this.highWaterMark=Math.floor(this.highWaterMark);this.buffer=new b;this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.resumeScheduled=false;this.destroyed=false;this.defaultEncoding=r.defaultEncoding||"utf8";this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(r.encoding){if(!B)B=s(24597).s;this.decoder=new B(r.encoding);this.encoding=r.encoding}}function Readable(r){c=c||s(6565);if(!(this instanceof Readable))return new Readable(r);this._readableState=new ReadableState(r,this);this.readable=true;if(r){if(typeof r.read==="function")this._read=r.read;if(typeof r.destroy==="function")this._destroy=r.destroy}p.call(this)}Object.defineProperty(Readable.prototype,"destroyed",{get:function(){if(this._readableState===undefined){return false}return this._readableState.destroyed},set:function(r){if(!this._readableState){return}this._readableState.destroyed=r}});Readable.prototype.destroy=C.destroy;Readable.prototype._undestroy=C.undestroy;Readable.prototype._destroy=function(r,i){this.push(null);i(r)};Readable.prototype.push=function(r,i){var s=this._readableState;var a;if(!s.objectMode){if(typeof r==="string"){i=i||s.defaultEncoding;if(i!==s.encoding){r=A.from(r,i);i=""}a=true}}else{a=true}return readableAddChunk(this,r,i,false,a)};Readable.prototype.unshift=function(r){return readableAddChunk(this,r,null,true,false)};function readableAddChunk(r,i,s,a,l){var c=r._readableState;if(i===null){c.reading=false;onEofChunk(r,c)}else{var d;if(!l)d=chunkInvalid(c,i);if(d){r.emit("error",d)}else if(c.objectMode||i&&i.length>0){if(typeof i!=="string"&&!c.objectMode&&Object.getPrototypeOf(i)!==A.prototype){i=_uint8ArrayToBuffer(i)}if(a){if(c.endEmitted)r.emit("error",new Error("stream.unshift() after end event"));else addChunk(r,c,i,true)}else if(c.ended){r.emit("error",new Error("stream.push() after EOF"))}else{c.reading=false;if(c.decoder&&!s){i=c.decoder.write(i);if(c.objectMode||i.length!==0)addChunk(r,c,i,false);else maybeReadMore(r,c)}else{addChunk(r,c,i,false)}}}else if(!a){c.reading=false}}return needMoreData(c)}function addChunk(r,i,s,a){if(i.flowing&&i.length===0&&!i.sync){r.emit("data",s);r.read(0)}else{i.length+=i.objectMode?1:s.length;if(a)i.buffer.unshift(s);else i.buffer.push(s);if(i.needReadable)emitReadable(r)}maybeReadMore(r,i)}function chunkInvalid(r,i){var s;if(!_isUint8Array(i)&&typeof i!=="string"&&i!==undefined&&!r.objectMode){s=new TypeError("Invalid non-string/buffer chunk")}return s}function needMoreData(r){return!r.ended&&(r.needReadable||r.length=w){r=w}else{r--;r|=r>>>1;r|=r>>>2;r|=r>>>4;r|=r>>>8;r|=r>>>16;r++}return r}function howMuchToRead(r,i){if(r<=0||i.length===0&&i.ended)return 0;if(i.objectMode)return 1;if(r!==r){if(i.flowing&&i.length)return i.buffer.head.data.length;else return i.length}if(r>i.highWaterMark)i.highWaterMark=computeNewHighWaterMark(r);if(r<=i.length)return r;if(!i.ended){i.needReadable=true;return 0}return i.length}Readable.prototype.read=function(r){y("read",r);r=parseInt(r,10);var i=this._readableState;var s=r;if(r!==0)i.emittedReadable=false;if(r===0&&i.needReadable&&(i.length>=i.highWaterMark||i.ended)){y("read: emitReadable",i.length,i.ended);if(i.length===0&&i.ended)endReadable(this);else emitReadable(this);return null}r=howMuchToRead(r,i);if(r===0&&i.ended){if(i.length===0)endReadable(this);return null}var a=i.needReadable;y("need readable",a);if(i.length===0||i.length-r0)l=fromList(r,i);else l=null;if(l===null){i.needReadable=true;r=0}else{i.length-=r}if(i.length===0){if(!i.ended)i.needReadable=true;if(s!==r&&i.ended)endReadable(this)}if(l!==null)this.emit("data",l);return l};function onEofChunk(r,i){if(i.ended)return;if(i.decoder){var s=i.decoder.end();if(s&&s.length){i.buffer.push(s);i.length+=i.objectMode?1:s.length}}i.ended=true;emitReadable(r)}function emitReadable(r){var i=r._readableState;i.needReadable=false;if(!i.emittedReadable){y("emitReadable",i.flowing);i.emittedReadable=true;if(i.sync)a.nextTick(emitReadable_,r);else emitReadable_(r)}}function emitReadable_(r){y("emit readable");r.emit("readable");flow(r)}function maybeReadMore(r,i){if(!i.readingMore){i.readingMore=true;a.nextTick(maybeReadMore_,r,i)}}function maybeReadMore_(r,i){var s=i.length;while(!i.reading&&!i.flowing&&!i.ended&&i.length1&&indexOf(l.pipes,r)!==-1)&&!A){y("false write response, pause",l.awaitDrain);l.awaitDrain++;u=true}s.pause()}}function onerror(i){y("onerror",i);unpipe();r.removeListener("error",onerror);if(EElistenerCount(r,"error")===0)r.emit("error",i)}prependListener(r,"error",onerror);function onclose(){r.removeListener("finish",onfinish);unpipe()}r.once("close",onclose);function onfinish(){y("onfinish");r.removeListener("close",onclose);unpipe()}r.once("finish",onfinish);function unpipe(){y("unpipe");s.unpipe(r)}r.emit("pipe",s);if(!l.flowing){y("pipe resume");s.resume()}return r};function pipeOnDrain(r){return function(){var i=r._readableState;y("pipeOnDrain",i.awaitDrain);if(i.awaitDrain)i.awaitDrain--;if(i.awaitDrain===0&&EElistenerCount(r,"data")){i.flowing=true;flow(r)}}}Readable.prototype.unpipe=function(r){var i=this._readableState;var s={hasUnpiped:false};if(i.pipesCount===0)return this;if(i.pipesCount===1){if(r&&r!==i.pipes)return this;if(!r)r=i.pipes;i.pipes=null;i.pipesCount=0;i.flowing=false;if(r)r.emit("unpipe",this,s);return this}if(!r){var a=i.pipes;var l=i.pipesCount;i.pipes=null;i.pipesCount=0;i.flowing=false;for(var c=0;c=i.length){if(i.decoder)s=i.buffer.join("");else if(i.buffer.length===1)s=i.buffer.head.data;else s=i.buffer.concat(i.length);i.buffer.clear()}else{s=fromListPartial(r,i.buffer,i.decoder)}return s}function fromListPartial(r,i,s){var a;if(rc.length?c.length:r;if(d===c.length)l+=c;else l+=c.slice(0,r);r-=d;if(r===0){if(d===c.length){++a;if(s.next)i.head=s.next;else i.head=i.tail=null}else{i.head=s;s.data=c.slice(d)}break}++a}i.length-=a;return l}function copyFromBuffer(r,i){var s=A.allocUnsafe(r);var a=i.head;var l=1;a.data.copy(s);r-=a.data.length;while(a=a.next){var c=a.data;var d=r>c.length?c.length:r;c.copy(s,s.length-r,0,d);r-=d;if(r===0){if(d===c.length){++l;if(a.next)i.head=a.next;else i.head=i.tail=null}else{i.head=a;a.data=c.slice(d)}break}++l}i.length-=l;return s}function endReadable(r){var i=r._readableState;if(i.length>0)throw new Error('"endReadable()" called on non-empty stream');if(!i.endEmitted){i.ended=true;a.nextTick(endReadableNT,i,r)}}function endReadableNT(r,i){if(!r.endEmitted&&r.length===0){r.endEmitted=true;i.readable=false;i.emit("end")}}function indexOf(r,i){for(var s=0,a=r.length;s{"use strict";r.exports=Transform;var a=s(6565);var l=Object.create(s(16755));l.inherits=s(16735);l.inherits(Transform,a);function afterTransform(r,i){var s=this._transformState;s.transforming=false;var a=s.writecb;if(!a){return this.emit("error",new Error("write callback called multiple times"))}s.writechunk=null;s.writecb=null;if(i!=null)this.push(i);a(r);var l=this._readableState;l.reading=false;if(l.needReadable||l.length{"use strict";var a=s(65363);r.exports=Writable;function WriteReq(r,i,s){this.chunk=r;this.encoding=i;this.callback=s;this.next=null}function CorkedRequest(r){var i=this;this.next=null;this.entry=null;this.finish=function(){onCorkedFinish(i,r)}}var l=!process.browser&&["v0.10","v0.9."].indexOf(process.version.slice(0,5))>-1?setImmediate:a.nextTick;var c;Writable.WritableState=WritableState;var d=Object.create(s(16755));d.inherits=s(16735);var p={deprecate:s(74104)};var A=s(25439);var u=s(89404).Buffer;var h=(typeof global!=="undefined"?global:typeof window!=="undefined"?window:typeof self!=="undefined"?self:{}).Uint8Array||function(){};function _uint8ArrayToBuffer(r){return u.from(r)}function _isUint8Array(r){return u.isBuffer(r)||r instanceof h}var g=s(65405);d.inherits(Writable,A);function nop(){}function WritableState(r,i){c=c||s(6565);r=r||{};var a=i instanceof c;this.objectMode=!!r.objectMode;if(a)this.objectMode=this.objectMode||!!r.writableObjectMode;var l=r.highWaterMark;var d=r.writableHighWaterMark;var p=this.objectMode?16:16*1024;if(l||l===0)this.highWaterMark=l;else if(a&&(d||d===0))this.highWaterMark=d;else this.highWaterMark=p;this.highWaterMark=Math.floor(this.highWaterMark);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;var A=r.decodeStrings===false;this.decodeStrings=!A;this.defaultEncoding=r.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(r){onwrite(i,r)};this.writecb=null;this.writelen=0;this.bufferedRequest=null;this.lastBufferedRequest=null;this.pendingcb=0;this.prefinished=false;this.errorEmitted=false;this.bufferedRequestCount=0;this.corkedRequestsFree=new CorkedRequest(this)}WritableState.prototype.getBuffer=function getBuffer(){var r=this.bufferedRequest;var i=[];while(r){i.push(r);r=r.next}return i};(function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:p.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer "+"instead.","DEP0003")})}catch(r){}})();var y;if(typeof Symbol==="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==="function"){y=Function.prototype[Symbol.hasInstance];Object.defineProperty(Writable,Symbol.hasInstance,{value:function(r){if(y.call(this,r))return true;if(this!==Writable)return false;return r&&r._writableState instanceof WritableState}})}else{y=function(r){return r instanceof this}}function Writable(r){c=c||s(6565);if(!y.call(Writable,this)&&!(this instanceof c)){return new Writable(r)}this._writableState=new WritableState(r,this);this.writable=true;if(r){if(typeof r.write==="function")this._write=r.write;if(typeof r.writev==="function")this._writev=r.writev;if(typeof r.destroy==="function")this._destroy=r.destroy;if(typeof r.final==="function")this._final=r.final}A.call(this)}Writable.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))};function writeAfterEnd(r,i){var s=new Error("write after end");r.emit("error",s);a.nextTick(i,s)}function validChunk(r,i,s,l){var c=true;var d=false;if(s===null){d=new TypeError("May not write null values to stream")}else if(typeof s!=="string"&&s!==undefined&&!i.objectMode){d=new TypeError("Invalid non-string/buffer chunk")}if(d){r.emit("error",d);a.nextTick(l,d);c=false}return c}Writable.prototype.write=function(r,i,s){var a=this._writableState;var l=false;var c=!a.objectMode&&_isUint8Array(r);if(c&&!u.isBuffer(r)){r=_uint8ArrayToBuffer(r)}if(typeof i==="function"){s=i;i=null}if(c)i="buffer";else if(!i)i=a.defaultEncoding;if(typeof s!=="function")s=nop;if(a.ended)writeAfterEnd(this,s);else if(c||validChunk(this,a,r,s)){a.pendingcb++;l=writeOrBuffer(this,a,c,r,i,s)}return l};Writable.prototype.cork=function(){var r=this._writableState;r.corked++};Writable.prototype.uncork=function(){var r=this._writableState;if(r.corked){r.corked--;if(!r.writing&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest)clearBuffer(this,r)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(r){if(typeof r==="string")r=r.toLowerCase();if(!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((r+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+r);this._writableState.defaultEncoding=r;return this};function decodeChunk(r,i,s){if(!r.objectMode&&r.decodeStrings!==false&&typeof i==="string"){i=u.from(i,s)}return i}Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:false,get:function(){return this._writableState.highWaterMark}});function writeOrBuffer(r,i,s,a,l,c){if(!s){var d=decodeChunk(i,a,l);if(a!==d){s=true;l="buffer";a=d}}var p=i.objectMode?1:a.length;i.length+=p;var A=i.length{"use strict";function _classCallCheck(r,i){if(!(r instanceof i)){throw new TypeError("Cannot call a class as a function")}}var a=s(89404).Buffer;var l=s(73837);function copyBuffer(r,i,s){r.copy(i,s)}r.exports=function(){function BufferList(){_classCallCheck(this,BufferList);this.head=null;this.tail=null;this.length=0}BufferList.prototype.push=function push(r){var i={data:r,next:null};if(this.length>0)this.tail.next=i;else this.head=i;this.tail=i;++this.length};BufferList.prototype.unshift=function unshift(r){var i={data:r,next:this.head};if(this.length===0)this.tail=i;this.head=i;++this.length};BufferList.prototype.shift=function shift(){if(this.length===0)return;var r=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return r};BufferList.prototype.clear=function clear(){this.head=this.tail=null;this.length=0};BufferList.prototype.join=function join(r){if(this.length===0)return"";var i=this.head;var s=""+i.data;while(i=i.next){s+=r+i.data}return s};BufferList.prototype.concat=function concat(r){if(this.length===0)return a.alloc(0);var i=a.allocUnsafe(r>>>0);var s=this.head;var l=0;while(s){copyBuffer(s.data,i,l);l+=s.data.length;s=s.next}return i};return BufferList}();if(l&&l.inspect&&l.inspect.custom){r.exports.prototype[l.inspect.custom]=function(){var r=l.inspect({length:this.length});return this.constructor.name+" "+r}}},65405:(r,i,s)=>{"use strict";var a=s(65363);function destroy(r,i){var s=this;var l=this._readableState&&this._readableState.destroyed;var c=this._writableState&&this._writableState.destroyed;if(l||c){if(i){i(r)}else if(r){if(!this._writableState){a.nextTick(emitErrorNT,this,r)}else if(!this._writableState.errorEmitted){this._writableState.errorEmitted=true;a.nextTick(emitErrorNT,this,r)}}return this}if(this._readableState){this._readableState.destroyed=true}if(this._writableState){this._writableState.destroyed=true}this._destroy(r||null,(function(r){if(!i&&r){if(!s._writableState){a.nextTick(emitErrorNT,s,r)}else if(!s._writableState.errorEmitted){s._writableState.errorEmitted=true;a.nextTick(emitErrorNT,s,r)}}else if(i){i(r)}}));return this}function undestroy(){if(this._readableState){this._readableState.destroyed=false;this._readableState.reading=false;this._readableState.ended=false;this._readableState.endEmitted=false}if(this._writableState){this._writableState.destroyed=false;this._writableState.ended=false;this._writableState.ending=false;this._writableState.finalCalled=false;this._writableState.prefinished=false;this._writableState.finished=false;this._writableState.errorEmitted=false}}function emitErrorNT(r,i){r.emit("error",i)}r.exports={destroy:destroy,undestroy:undestroy}},25439:(r,i,s)=>{r.exports=s(12781)},49416:(r,i,s)=>{r.exports=s(81130).PassThrough},81130:(r,i,s)=>{var a=s(12781);if(process.env.READABLE_STREAM==="disable"&&a){r.exports=a;i=r.exports=a.Readable;i.Readable=a.Readable;i.Writable=a.Writable;i.Duplex=a.Duplex;i.Transform=a.Transform;i.PassThrough=a.PassThrough;i.Stream=a}else{i=r.exports=s(9625);i.Stream=a||i;i.Readable=i;i.Writable=s(85912);i.Duplex=s(6565);i.Transform=s(66137);i.PassThrough=s(93298)}},58117:(r,i,s)=>{"use strict";const{SymbolDispose:a}=s(33103);const{AbortError:l,codes:c}=s(83525);const{isNodeStream:d,isWebStream:p,kControllerErrorFunction:A}=s(38066);const u=s(86150);const{ERR_INVALID_ARG_TYPE:h}=c;let g;const validateAbortSignal=(r,i)=>{if(typeof r!=="object"||!("aborted"in r)){throw new h(i,"AbortSignal",r)}};r.exports.addAbortSignal=function addAbortSignal(i,s){validateAbortSignal(i,"signal");if(!d(s)&&!p(s)){throw new h("stream",["ReadableStream","WritableStream","Stream"],s)}return r.exports.addAbortSignalNoValidate(i,s)};r.exports.addAbortSignalNoValidate=function(r,i){if(typeof r!=="object"||!("aborted"in r)){return i}const c=d(i)?()=>{i.destroy(new l(undefined,{cause:r.reason}))}:()=>{i[A](new l(undefined,{cause:r.reason}))};if(r.aborted){c()}else{g=g||s(51153).addAbortListener;const l=g(r,c);u(i,l[a])}return i}},97102:(r,i,s)=>{"use strict";const{StringPrototypeSlice:a,SymbolIterator:l,TypedArrayPrototypeSet:c,Uint8Array:d}=s(33103);const{Buffer:p}=s(14300);const{inspect:A}=s(51153);r.exports=class BufferList{constructor(){this.head=null;this.tail=null;this.length=0}push(r){const i={data:r,next:null};if(this.length>0)this.tail.next=i;else this.head=i;this.tail=i;++this.length}unshift(r){const i={data:r,next:this.head};if(this.length===0)this.tail=i;this.head=i;++this.length}shift(){if(this.length===0)return;const r=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;--this.length;return r}clear(){this.head=this.tail=null;this.length=0}join(r){if(this.length===0)return"";let i=this.head;let s=""+i.data;while((i=i.next)!==null)s+=r+i.data;return s}concat(r){if(this.length===0)return p.alloc(0);const i=p.allocUnsafe(r>>>0);let s=this.head;let a=0;while(s){c(i,s.data,a);a+=s.data.length;s=s.next}return i}consume(r,i){const s=this.head.data;if(rc.length){i+=c;r-=c.length}else{if(r===c.length){i+=c;++l;if(s.next)this.head=s.next;else this.head=this.tail=null}else{i+=a(c,0,r);this.head=s;s.data=a(c,r)}break}++l}while((s=s.next)!==null);this.length-=l;return i}_getBuffer(r){const i=p.allocUnsafe(r);const s=r;let a=this.head;let l=0;do{const p=a.data;if(r>p.length){c(i,p,s-r);r-=p.length}else{if(r===p.length){c(i,p,s-r);++l;if(a.next)this.head=a.next;else this.head=this.tail=null}else{c(i,new d(p.buffer,p.byteOffset,r),s-r);this.head=a;a.data=p.slice(r)}break}++l}while((a=a.next)!==null);this.length-=l;return i}[Symbol.for("nodejs.util.inspect.custom")](r,i){return A(this,{...i,depth:0,customInspect:false})}}},62525:(r,i,s)=>{"use strict";const{pipeline:a}=s(59574);const l=s(17828);const{destroyer:c}=s(93381);const{isNodeStream:d,isReadable:p,isWritable:A,isWebStream:u,isTransformStream:h,isWritableStream:g,isReadableStream:y}=s(38066);const{AbortError:b,codes:{ERR_INVALID_ARG_VALUE:C,ERR_MISSING_ARGS:B}}=s(83525);const I=s(86150);r.exports=function compose(...r){if(r.length===0){throw new B("streams")}if(r.length===1){return l.from(r[0])}const i=[...r];if(typeof r[0]==="function"){r[0]=l.from(r[0])}if(typeof r[r.length-1]==="function"){const i=r.length-1;r[i]=l.from(r[i])}for(let s=0;s0&&!(A(r[s])||g(r[s])||h(r[s]))){throw new C(`streams[${s}]`,i[s],"must be writable")}}let s;let w;let v;let S;let Q;function onfinished(r){const i=S;S=null;if(i){i(r)}else if(r){Q.destroy(r)}else if(!T&&!k){Q.destroy()}}const N=r[0];const R=a(r,onfinished);const k=!!(A(N)||g(N)||h(N));const T=!!(p(R)||y(R)||h(R));Q=new l({writableObjectMode:!!(N!==null&&N!==undefined&&N.writableObjectMode),readableObjectMode:!!(R!==null&&R!==undefined&&R.readableObjectMode),writable:k,readable:T});if(k){if(d(N)){Q._write=function(r,i,a){if(N.write(r,i)){a()}else{s=a}};Q._final=function(r){N.end();w=r};N.on("drain",(function(){if(s){const r=s;s=null;r()}}))}else if(u(N)){const r=h(N)?N.writable:N;const i=r.getWriter();Q._write=async function(r,s,a){try{await i.ready;i.write(r).catch((()=>{}));a()}catch(r){a(r)}};Q._final=async function(r){try{await i.ready;i.close().catch((()=>{}));w=r}catch(i){r(i)}}}const r=h(R)?R.readable:R;I(r,(()=>{if(w){const r=w;w=null;r()}}))}if(T){if(d(R)){R.on("readable",(function(){if(v){const r=v;v=null;r()}}));R.on("end",(function(){Q.push(null)}));Q._read=function(){while(true){const r=R.read();if(r===null){v=Q._read;return}if(!Q.push(r)){return}}}}else if(u(R)){const r=h(R)?R.readable:R;const i=r.getReader();Q._read=async function(){while(true){try{const{value:r,done:s}=await i.read();if(!Q.push(r)){return}if(s){Q.push(null);return}}catch{return}}}}}Q._destroy=function(r,i){if(!r&&S!==null){r=new b}v=null;s=null;w=null;if(S===null){i(r)}else{S=i;if(d(R)){c(R,r)}}};return Q}},93381:(r,i,s)=>{"use strict";const a=s(24144);const{aggregateTwoErrors:l,codes:{ERR_MULTIPLE_CALLBACK:c},AbortError:d}=s(83525);const{Symbol:p}=s(33103);const{kIsDestroyed:A,isDestroyed:u,isFinished:h,isServerRequest:g}=s(38066);const y=p("kDestroy");const b=p("kConstruct");function checkError(r,i,s){if(r){r.stack;if(i&&!i.errored){i.errored=r}if(s&&!s.errored){s.errored=r}}}function destroy(r,i){const s=this._readableState;const a=this._writableState;const c=a||s;if(a!==null&&a!==undefined&&a.destroyed||s!==null&&s!==undefined&&s.destroyed){if(typeof i==="function"){i()}return this}checkError(r,a,s);if(a){a.destroyed=true}if(s){s.destroyed=true}if(!c.constructed){this.once(y,(function(s){_destroy(this,l(s,r),i)}))}else{_destroy(this,r,i)}return this}function _destroy(r,i,s){let l=false;function onDestroy(i){if(l){return}l=true;const c=r._readableState;const d=r._writableState;checkError(i,d,c);if(d){d.closed=true}if(c){c.closed=true}if(typeof s==="function"){s(i)}if(i){a.nextTick(emitErrorCloseNT,r,i)}else{a.nextTick(emitCloseNT,r)}}try{r._destroy(i||null,onDestroy)}catch(i){onDestroy(i)}}function emitErrorCloseNT(r,i){emitErrorNT(r,i);emitCloseNT(r)}function emitCloseNT(r){const i=r._readableState;const s=r._writableState;if(s){s.closeEmitted=true}if(i){i.closeEmitted=true}if(s!==null&&s!==undefined&&s.emitClose||i!==null&&i!==undefined&&i.emitClose){r.emit("close")}}function emitErrorNT(r,i){const s=r._readableState;const a=r._writableState;if(a!==null&&a!==undefined&&a.errorEmitted||s!==null&&s!==undefined&&s.errorEmitted){return}if(a){a.errorEmitted=true}if(s){s.errorEmitted=true}r.emit("error",i)}function undestroy(){const r=this._readableState;const i=this._writableState;if(r){r.constructed=true;r.closed=false;r.closeEmitted=false;r.destroyed=false;r.errored=null;r.errorEmitted=false;r.reading=false;r.ended=r.readable===false;r.endEmitted=r.readable===false}if(i){i.constructed=true;i.destroyed=false;i.closed=false;i.closeEmitted=false;i.errored=null;i.errorEmitted=false;i.finalCalled=false;i.prefinished=false;i.ended=i.writable===false;i.ending=i.writable===false;i.finished=i.writable===false}}function errorOrDestroy(r,i,s){const l=r._readableState;const c=r._writableState;if(c!==null&&c!==undefined&&c.destroyed||l!==null&&l!==undefined&&l.destroyed){return this}if(l!==null&&l!==undefined&&l.autoDestroy||c!==null&&c!==undefined&&c.autoDestroy)r.destroy(i);else if(i){i.stack;if(c&&!c.errored){c.errored=i}if(l&&!l.errored){l.errored=i}if(s){a.nextTick(emitErrorNT,r,i)}else{emitErrorNT(r,i)}}}function construct(r,i){if(typeof r._construct!=="function"){return}const s=r._readableState;const l=r._writableState;if(s){s.constructed=false}if(l){l.constructed=false}r.once(b,i);if(r.listenerCount(b)>1){return}a.nextTick(constructNT,r)}function constructNT(r){let i=false;function onConstruct(s){if(i){errorOrDestroy(r,s!==null&&s!==undefined?s:new c);return}i=true;const l=r._readableState;const d=r._writableState;const p=d||l;if(l){l.constructed=true}if(d){d.constructed=true}if(p.destroyed){r.emit(y,s)}else if(s){errorOrDestroy(r,s,true)}else{a.nextTick(emitConstructNT,r)}}try{r._construct((r=>{a.nextTick(onConstruct,r)}))}catch(r){a.nextTick(onConstruct,r)}}function emitConstructNT(r){r.emit(b)}function isRequest(r){return(r===null||r===undefined?undefined:r.setHeader)&&typeof r.abort==="function"}function emitCloseLegacy(r){r.emit("close")}function emitErrorCloseLegacy(r,i){r.emit("error",i);a.nextTick(emitCloseLegacy,r)}function destroyer(r,i){if(!r||u(r)){return}if(!i&&!h(r)){i=new d}if(g(r)){r.socket=null;r.destroy(i)}else if(isRequest(r)){r.abort()}else if(isRequest(r.req)){r.req.abort()}else if(typeof r.destroy==="function"){r.destroy(i)}else if(typeof r.close==="function"){r.close()}else if(i){a.nextTick(emitErrorCloseLegacy,r,i)}else{a.nextTick(emitCloseLegacy,r)}if(!r.destroyed){r[A]=true}}r.exports={construct:construct,destroyer:destroyer,destroy:destroy,undestroy:undestroy,errorOrDestroy:errorOrDestroy}},17828:(r,i,s)=>{"use strict";const{ObjectDefineProperties:a,ObjectGetOwnPropertyDescriptor:l,ObjectKeys:c,ObjectSetPrototypeOf:d}=s(33103);r.exports=Duplex;const p=s(82483);const A=s(59049);d(Duplex.prototype,p.prototype);d(Duplex,p);{const r=c(A.prototype);for(let i=0;i{const a=s(24144);"use strict";const l=s(14300);const{isReadable:c,isWritable:d,isIterable:p,isNodeStream:A,isReadableNodeStream:u,isWritableNodeStream:h,isDuplexNodeStream:g,isReadableStream:y,isWritableStream:b}=s(38066);const C=s(86150);const{AbortError:B,codes:{ERR_INVALID_ARG_TYPE:I,ERR_INVALID_RETURN_VALUE:w}}=s(83525);const{destroyer:v}=s(93381);const S=s(17828);const Q=s(82483);const N=s(59049);const{createDeferredPromise:R}=s(51153);const k=s(35558);const T=globalThis.Blob||l.Blob;const _=typeof T!=="undefined"?function isBlob(r){return r instanceof T}:function isBlob(r){return false};const x=globalThis.AbortController||s(7328).AbortController;const{FunctionPrototypeCall:D}=s(33103);class Duplexify extends S{constructor(r){super(r);if((r===null||r===undefined?undefined:r.readable)===false){this._readableState.readable=false;this._readableState.ended=true;this._readableState.endEmitted=true}if((r===null||r===undefined?undefined:r.writable)===false){this._writableState.writable=false;this._writableState.ending=true;this._writableState.ended=true;this._writableState.finished=true}}}r.exports=function duplexify(r,i){if(g(r)){return r}if(u(r)){return _duplexify({readable:r})}if(h(r)){return _duplexify({writable:r})}if(A(r)){return _duplexify({writable:false,readable:false})}if(y(r)){return _duplexify({readable:Q.fromWeb(r)})}if(b(r)){return _duplexify({writable:N.fromWeb(r)})}if(typeof r==="function"){const{value:s,write:l,final:c,destroy:d}=fromAsyncGen(r);if(p(s)){return k(Duplexify,s,{objectMode:true,write:l,final:c,destroy:d})}const A=s===null||s===undefined?undefined:s.then;if(typeof A==="function"){let r;const i=D(A,s,(r=>{if(r!=null){throw new w("nully","body",r)}}),(i=>{v(r,i)}));return r=new Duplexify({objectMode:true,readable:false,write:l,final(r){c((async()=>{try{await i;a.nextTick(r,null)}catch(i){a.nextTick(r,i)}}))},destroy:d})}throw new w("Iterable, AsyncIterable or AsyncFunction",i,s)}if(_(r)){return duplexify(r.arrayBuffer())}if(p(r)){return k(Duplexify,r,{objectMode:true,writable:false})}if(y(r===null||r===undefined?undefined:r.readable)&&b(r===null||r===undefined?undefined:r.writable)){return Duplexify.fromWeb(r)}if(typeof(r===null||r===undefined?undefined:r.writable)==="object"||typeof(r===null||r===undefined?undefined:r.readable)==="object"){const i=r!==null&&r!==undefined&&r.readable?u(r===null||r===undefined?undefined:r.readable)?r===null||r===undefined?undefined:r.readable:duplexify(r.readable):undefined;const s=r!==null&&r!==undefined&&r.writable?h(r===null||r===undefined?undefined:r.writable)?r===null||r===undefined?undefined:r.writable:duplexify(r.writable):undefined;return _duplexify({readable:i,writable:s})}const s=r===null||r===undefined?undefined:r.then;if(typeof s==="function"){let i;D(s,r,(r=>{if(r!=null){i.push(r)}i.push(null)}),(r=>{v(i,r)}));return i=new Duplexify({objectMode:true,writable:false,read(){}})}throw new I(i,["Blob","ReadableStream","WritableStream","Stream","Iterable","AsyncIterable","Function","{ readable, writable } pair","Promise"],r)};function fromAsyncGen(r){let{promise:i,resolve:s}=R();const l=new x;const c=l.signal;const d=r(async function*(){while(true){const r=i;i=null;const{chunk:l,done:d,cb:p}=await r;a.nextTick(p);if(d)return;if(c.aborted)throw new B(undefined,{cause:c.reason});({promise:i,resolve:s}=R());yield l}}(),{signal:c});return{value:d,write(r,i,a){const l=s;s=null;l({chunk:r,done:false,cb:a})},final(r){const i=s;s=null;i({done:true,cb:r})},destroy(r,i){l.abort();i(r)}}}function _duplexify(r){const i=r.readable&&typeof r.readable.read!=="function"?Q.wrap(r.readable):r.readable;const s=r.writable;let a=!!c(i);let l=!!d(s);let p;let A;let u;let h;let g;function onfinished(r){const i=h;h=null;if(i){i(r)}else if(r){g.destroy(r)}}g=new Duplexify({readableObjectMode:!!(i!==null&&i!==undefined&&i.readableObjectMode),writableObjectMode:!!(s!==null&&s!==undefined&&s.writableObjectMode),readable:a,writable:l});if(l){C(s,(r=>{l=false;if(r){v(i,r)}onfinished(r)}));g._write=function(r,i,a){if(s.write(r,i)){a()}else{p=a}};g._final=function(r){s.end();A=r};s.on("drain",(function(){if(p){const r=p;p=null;r()}}));s.on("finish",(function(){if(A){const r=A;A=null;r()}}))}if(a){C(i,(r=>{a=false;if(r){v(i,r)}onfinished(r)}));i.on("readable",(function(){if(u){const r=u;u=null;r()}}));i.on("end",(function(){g.push(null)}));g._read=function(){while(true){const r=i.read();if(r===null){u=g._read;return}if(!g.push(r)){return}}}}g._destroy=function(r,a){if(!r&&h!==null){r=new B}u=null;p=null;A=null;if(h===null){a(r)}else{h=a;v(s,r);v(i,r)}};return g}},86150:(r,i,s)=>{const a=s(24144);"use strict";const{AbortError:l,codes:c}=s(83525);const{ERR_INVALID_ARG_TYPE:d,ERR_STREAM_PREMATURE_CLOSE:p}=c;const{kEmptyObject:A,once:u}=s(51153);const{validateAbortSignal:h,validateFunction:g,validateObject:y,validateBoolean:b}=s(86134);const{Promise:C,PromisePrototypeThen:B,SymbolDispose:I}=s(33103);const{isClosed:w,isReadable:v,isReadableNodeStream:S,isReadableStream:Q,isReadableFinished:N,isReadableErrored:R,isWritable:k,isWritableNodeStream:T,isWritableStream:_,isWritableFinished:x,isWritableErrored:D,isNodeStream:P,willEmitClose:O,kIsClosedPromise:L}=s(38066);let F;function isRequest(r){return r.setHeader&&typeof r.abort==="function"}const nop=()=>{};function eos(r,i,c){var b,C;if(arguments.length===2){c=i;i=A}else if(i==null){i=A}else{y(i,"options")}g(c,"callback");h(i.signal,"options.signal");c=u(c);if(Q(r)||_(r)){return eosWeb(r,i,c)}if(!P(r)){throw new d("stream",["ReadableStream","WritableStream","Stream"],r)}const B=(b=i.readable)!==null&&b!==undefined?b:S(r);const L=(C=i.writable)!==null&&C!==undefined?C:T(r);const M=r._writableState;const U=r._readableState;const onlegacyfinish=()=>{if(!r.writable){onfinish()}};let H=O(r)&&S(r)===B&&T(r)===L;let q=x(r,false);const onfinish=()=>{q=true;if(r.destroyed){H=false}if(H&&(!r.readable||B)){return}if(!B||G){c.call(r)}};let G=N(r,false);const onend=()=>{G=true;if(r.destroyed){H=false}if(H&&(!r.writable||L)){return}if(!L||q){c.call(r)}};const onerror=i=>{c.call(r,i)};let j=w(r);const onclose=()=>{j=true;const i=D(r)||R(r);if(i&&typeof i!=="boolean"){return c.call(r,i)}if(B&&!G&&S(r,true)){if(!N(r,false))return c.call(r,new p)}if(L&&!q){if(!x(r,false))return c.call(r,new p)}c.call(r)};const onclosed=()=>{j=true;const i=D(r)||R(r);if(i&&typeof i!=="boolean"){return c.call(r,i)}c.call(r)};const onrequest=()=>{r.req.on("finish",onfinish)};if(isRequest(r)){r.on("complete",onfinish);if(!H){r.on("abort",onclose)}if(r.req){onrequest()}else{r.on("request",onrequest)}}else if(L&&!M){r.on("end",onlegacyfinish);r.on("close",onlegacyfinish)}if(!H&&typeof r.aborted==="boolean"){r.on("aborted",onclose)}r.on("end",onend);r.on("finish",onfinish);if(i.error!==false){r.on("error",onerror)}r.on("close",onclose);if(j){a.nextTick(onclose)}else if(M!==null&&M!==undefined&&M.errorEmitted||U!==null&&U!==undefined&&U.errorEmitted){if(!H){a.nextTick(onclosed)}}else if(!B&&(!H||v(r))&&(q||k(r)===false)){a.nextTick(onclosed)}else if(!L&&(!H||k(r))&&(G||v(r)===false)){a.nextTick(onclosed)}else if(U&&r.req&&r.aborted){a.nextTick(onclosed)}const cleanup=()=>{c=nop;r.removeListener("aborted",onclose);r.removeListener("complete",onfinish);r.removeListener("abort",onclose);r.removeListener("request",onrequest);if(r.req)r.req.removeListener("finish",onfinish);r.removeListener("end",onlegacyfinish);r.removeListener("close",onlegacyfinish);r.removeListener("finish",onfinish);r.removeListener("end",onend);r.removeListener("error",onerror);r.removeListener("close",onclose)};if(i.signal&&!j){const abort=()=>{const s=c;cleanup();s.call(r,new l(undefined,{cause:i.signal.reason}))};if(i.signal.aborted){a.nextTick(abort)}else{F=F||s(51153).addAbortListener;const a=F(i.signal,abort);const l=c;c=u(((...i)=>{a[I]();l.apply(r,i)}))}}return cleanup}function eosWeb(r,i,c){let d=false;let p=nop;if(i.signal){p=()=>{d=true;c.call(r,new l(undefined,{cause:i.signal.reason}))};if(i.signal.aborted){a.nextTick(p)}else{F=F||s(51153).addAbortListener;const a=F(i.signal,p);const l=c;c=u(((...i)=>{a[I]();l.apply(r,i)}))}}const resolverFn=(...i)=>{if(!d){a.nextTick((()=>c.apply(r,i)))}};B(r[L].promise,resolverFn,resolverFn);return nop}function finished(r,i){var s;let a=false;if(i===null){i=A}if((s=i)!==null&&s!==undefined&&s.cleanup){b(i.cleanup,"cleanup");a=i.cleanup}return new C(((s,l)=>{const c=eos(r,i,(r=>{if(a){c()}if(r){l(r)}else{s()}}))}))}r.exports=eos;r.exports.finished=finished},35558:(r,i,s)=>{"use strict";const a=s(24144);const{PromisePrototypeThen:l,SymbolAsyncIterator:c,SymbolIterator:d}=s(33103);const{Buffer:p}=s(14300);const{ERR_INVALID_ARG_TYPE:A,ERR_STREAM_NULL_VALUES:u}=s(83525).codes;function from(r,i,s){let h;if(typeof i==="string"||i instanceof p){return new r({objectMode:true,...s,read(){this.push(i);this.push(null)}})}let g;if(i&&i[c]){g=true;h=i[c]()}else if(i&&i[d]){g=false;h=i[d]()}else{throw new A("iterable",["Iterable"],i)}const y=new r({objectMode:true,highWaterMark:1,...s});let b=false;y._read=function(){if(!b){b=true;next()}};y._destroy=function(r,i){l(close(r),(()=>a.nextTick(i,r)),(s=>a.nextTick(i,s||r)))};async function close(r){const i=r!==undefined&&r!==null;const s=typeof h.throw==="function";if(i&&s){const{value:i,done:s}=await h.throw(r);await i;if(s){return}}if(typeof h.return==="function"){const{value:r}=await h.return();await r}}async function next(){for(;;){try{const{value:r,done:i}=g?await h.next():h.next();if(i){y.push(null)}else{const i=r&&typeof r.then==="function"?await r:r;if(i===null){b=false;throw new u}else if(y.push(i)){continue}else{b=false}}}catch(r){y.destroy(r)}break}}return y}r.exports=from},79675:(r,i,s)=>{"use strict";const{ArrayIsArray:a,ObjectSetPrototypeOf:l}=s(33103);const{EventEmitter:c}=s(82361);function Stream(r){c.call(this,r)}l(Stream.prototype,c.prototype);l(Stream,c);Stream.prototype.pipe=function(r,i){const s=this;function ondata(i){if(r.writable&&r.write(i)===false&&s.pause){s.pause()}}s.on("data",ondata);function ondrain(){if(s.readable&&s.resume){s.resume()}}r.on("drain",ondrain);if(!r._isStdio&&(!i||i.end!==false)){s.on("end",onend);s.on("close",onclose)}let a=false;function onend(){if(a)return;a=true;r.end()}function onclose(){if(a)return;a=true;if(typeof r.destroy==="function")r.destroy()}function onerror(r){cleanup();if(c.listenerCount(this,"error")===0){this.emit("error",r)}}prependListener(s,"error",onerror);prependListener(r,"error",onerror);function cleanup(){s.removeListener("data",ondata);r.removeListener("drain",ondrain);s.removeListener("end",onend);s.removeListener("close",onclose);s.removeListener("error",onerror);r.removeListener("error",onerror);s.removeListener("end",cleanup);s.removeListener("close",cleanup);r.removeListener("close",cleanup)}s.on("end",cleanup);s.on("close",cleanup);r.on("close",cleanup);r.emit("pipe",s);return r};function prependListener(r,i,s){if(typeof r.prependListener==="function")return r.prependListener(i,s);if(!r._events||!r._events[i])r.on(i,s);else if(a(r._events[i]))r._events[i].unshift(s);else r._events[i]=[s,r._events[i]]}r.exports={Stream:Stream,prependListener:prependListener}},40594:(r,i,s)=>{"use strict";const a=globalThis.AbortController||s(7328).AbortController;const{codes:{ERR_INVALID_ARG_VALUE:l,ERR_INVALID_ARG_TYPE:c,ERR_MISSING_ARGS:d,ERR_OUT_OF_RANGE:p},AbortError:A}=s(83525);const{validateAbortSignal:u,validateInteger:h,validateObject:g}=s(86134);const y=s(33103).Symbol("kWeak");const b=s(33103).Symbol("kResistStopPropagation");const{finished:C}=s(86150);const B=s(62525);const{addAbortSignalNoValidate:I}=s(58117);const{isWritable:w,isNodeStream:v}=s(38066);const{deprecate:S}=s(51153);const{ArrayPrototypePush:Q,Boolean:N,MathFloor:R,Number:k,NumberIsNaN:T,Promise:_,PromiseReject:x,PromiseResolve:D,PromisePrototypeThen:P,Symbol:O}=s(33103);const L=O("kEmpty");const F=O("kEof");function compose(r,i){if(i!=null){g(i,"options")}if((i===null||i===undefined?undefined:i.signal)!=null){u(i.signal,"options.signal")}if(v(r)&&!w(r)){throw new l("stream",r,"must be writable")}const s=B(this,r);if(i!==null&&i!==undefined&&i.signal){I(i.signal,s)}return s}function map(r,i){if(typeof r!=="function"){throw new c("fn",["Function","AsyncFunction"],r)}if(i!=null){g(i,"options")}if((i===null||i===undefined?undefined:i.signal)!=null){u(i.signal,"options.signal")}let a=1;if((i===null||i===undefined?undefined:i.concurrency)!=null){a=R(i.concurrency)}let l=a-1;if((i===null||i===undefined?undefined:i.highWaterMark)!=null){l=R(i.highWaterMark)}h(a,"options.concurrency",1);h(l,"options.highWaterMark",0);l+=a;return async function*map(){const c=s(51153).AbortSignalAny([i===null||i===undefined?undefined:i.signal].filter(N));const d=this;const p=[];const u={signal:c};let h;let g;let y=false;let b=0;function onCatch(){y=true;afterItemProcessed()}function afterItemProcessed(){b-=1;maybeResume()}function maybeResume(){if(g&&!y&&b=l||b>=a)){await new _((r=>{g=r}))}}p.push(F)}catch(r){const i=x(r);P(i,afterItemProcessed,onCatch);p.push(i)}finally{y=true;if(h){h();h=null}}}pump();try{while(true){while(p.length>0){const r=await p[0];if(r===F){return}if(c.aborted){throw new A}if(r!==L){yield r}p.shift();maybeResume()}await new _((r=>{h=r}))}}finally{y=true;if(g){g();g=null}}}.call(this)}function asIndexedPairs(r=undefined){if(r!=null){g(r,"options")}if((r===null||r===undefined?undefined:r.signal)!=null){u(r.signal,"options.signal")}return async function*asIndexedPairs(){let i=0;for await(const a of this){var s;if(r!==null&&r!==undefined&&(s=r.signal)!==null&&s!==undefined&&s.aborted){throw new A({cause:r.signal.reason})}yield[i++,a]}}.call(this)}async function some(r,i=undefined){for await(const s of filter.call(this,r,i)){return true}return false}async function every(r,i=undefined){if(typeof r!=="function"){throw new c("fn",["Function","AsyncFunction"],r)}return!await some.call(this,(async(...i)=>!await r(...i)),i)}async function find(r,i){for await(const s of filter.call(this,r,i)){return s}return undefined}async function forEach(r,i){if(typeof r!=="function"){throw new c("fn",["Function","AsyncFunction"],r)}async function forEachFn(i,s){await r(i,s);return L}for await(const r of map.call(this,forEachFn,i));}function filter(r,i){if(typeof r!=="function"){throw new c("fn",["Function","AsyncFunction"],r)}async function filterFn(i,s){if(await r(i,s)){return i}return L}return map.call(this,filterFn,i)}class ReduceAwareErrMissingArgs extends d{constructor(){super("reduce");this.message="Reduce of an empty stream requires an initial value"}}async function reduce(r,i,s){var l;if(typeof r!=="function"){throw new c("reducer",["Function","AsyncFunction"],r)}if(s!=null){g(s,"options")}if((s===null||s===undefined?undefined:s.signal)!=null){u(s.signal,"options.signal")}let d=arguments.length>1;if(s!==null&&s!==undefined&&(l=s.signal)!==null&&l!==undefined&&l.aborted){const r=new A(undefined,{cause:s.signal.reason});this.once("error",(()=>{}));await C(this.destroy(r));throw r}const p=new a;const h=p.signal;if(s!==null&&s!==undefined&&s.signal){const r={once:true,[y]:this,[b]:true};s.signal.addEventListener("abort",(()=>p.abort()),r)}let B=false;try{for await(const a of this){var I;B=true;if(s!==null&&s!==undefined&&(I=s.signal)!==null&&I!==undefined&&I.aborted){throw new A}if(!d){i=a;d=true}else{i=await r(i,a,{signal:h})}}if(!B&&!d){throw new ReduceAwareErrMissingArgs}}finally{p.abort()}return i}async function toArray(r){if(r!=null){g(r,"options")}if((r===null||r===undefined?undefined:r.signal)!=null){u(r.signal,"options.signal")}const i=[];for await(const a of this){var s;if(r!==null&&r!==undefined&&(s=r.signal)!==null&&s!==undefined&&s.aborted){throw new A(undefined,{cause:r.signal.reason})}Q(i,a)}return i}function flatMap(r,i){const s=map.call(this,r,i);return async function*flatMap(){for await(const r of s){yield*r}}.call(this)}function toIntegerOrInfinity(r){r=k(r);if(T(r)){return 0}if(r<0){throw new p("number",">= 0",r)}return r}function drop(r,i=undefined){if(i!=null){g(i,"options")}if((i===null||i===undefined?undefined:i.signal)!=null){u(i.signal,"options.signal")}r=toIntegerOrInfinity(r);return async function*drop(){var s;if(i!==null&&i!==undefined&&(s=i.signal)!==null&&s!==undefined&&s.aborted){throw new A}for await(const s of this){var a;if(i!==null&&i!==undefined&&(a=i.signal)!==null&&a!==undefined&&a.aborted){throw new A}if(r--<=0){yield s}}}.call(this)}function take(r,i=undefined){if(i!=null){g(i,"options")}if((i===null||i===undefined?undefined:i.signal)!=null){u(i.signal,"options.signal")}r=toIntegerOrInfinity(r);return async function*take(){var s;if(i!==null&&i!==undefined&&(s=i.signal)!==null&&s!==undefined&&s.aborted){throw new A}for await(const s of this){var a;if(i!==null&&i!==undefined&&(a=i.signal)!==null&&a!==undefined&&a.aborted){throw new A}if(r-- >0){yield s}if(r<=0){return}}}.call(this)}r.exports.streamReturningOperators={asIndexedPairs:S(asIndexedPairs,"readable.asIndexedPairs will be removed in a future version."),drop:drop,filter:filter,flatMap:flatMap,map:map,take:take,compose:compose};r.exports.promiseReturningOperators={every:every,forEach:forEach,reduce:reduce,toArray:toArray,some:some,find:find}},14528:(r,i,s)=>{"use strict";const{ObjectSetPrototypeOf:a}=s(33103);r.exports=PassThrough;const l=s(96277);a(PassThrough.prototype,l.prototype);a(PassThrough,l);function PassThrough(r){if(!(this instanceof PassThrough))return new PassThrough(r);l.call(this,r)}PassThrough.prototype._transform=function(r,i,s){s(null,r)}},59574:(r,i,s)=>{const a=s(24144);"use strict";const{ArrayIsArray:l,Promise:c,SymbolAsyncIterator:d,SymbolDispose:p}=s(33103);const A=s(86150);const{once:u}=s(51153);const h=s(93381);const g=s(17828);const{aggregateTwoErrors:y,codes:{ERR_INVALID_ARG_TYPE:b,ERR_INVALID_RETURN_VALUE:C,ERR_MISSING_ARGS:B,ERR_STREAM_DESTROYED:I,ERR_STREAM_PREMATURE_CLOSE:w},AbortError:v}=s(83525);const{validateFunction:S,validateAbortSignal:Q}=s(86134);const{isIterable:N,isReadable:R,isReadableNodeStream:k,isNodeStream:T,isTransformStream:_,isWebStream:x,isReadableStream:D,isReadableFinished:P}=s(38066);const O=globalThis.AbortController||s(7328).AbortController;let L;let F;let M;function destroyer(r,i,s){let a=false;r.on("close",(()=>{a=true}));const l=A(r,{readable:i,writable:s},(r=>{a=!r}));return{destroy:i=>{if(a)return;a=true;h.destroyer(r,i||new I("pipe"))},cleanup:l}}function popCallback(r){S(r[r.length-1],"streams[stream.length - 1]");return r.pop()}function makeAsyncIterable(r){if(N(r)){return r}else if(k(r)){return fromReadable(r)}throw new b("val",["Readable","Iterable","AsyncIterable"],r)}async function*fromReadable(r){if(!F){F=s(82483)}yield*F.prototype[d].call(r)}async function pumpToNode(r,i,s,{end:a}){let l;let d=null;const resume=r=>{if(r){l=r}if(d){const r=d;d=null;r()}};const wait=()=>new c(((r,i)=>{if(l){i(l)}else{d=()=>{if(l){i(l)}else{r()}}}}));i.on("drain",resume);const p=A(i,{readable:false},resume);try{if(i.writableNeedDrain){await wait()}for await(const s of r){if(!i.write(s)){await wait()}}if(a){i.end();await wait()}s()}catch(r){s(l!==r?y(l,r):r)}finally{p();i.off("drain",resume)}}async function pumpToWeb(r,i,s,{end:a}){if(_(i)){i=i.writable}const l=i.getWriter();try{for await(const i of r){await l.ready;l.write(i).catch((()=>{}))}await l.ready;if(a){await l.close()}s()}catch(r){try{await l.abort(r);s(r)}catch(r){s(r)}}}function pipeline(...r){return pipelineImpl(r,u(popCallback(r)))}function pipelineImpl(r,i,c){if(r.length===1&&l(r[0])){r=r[0]}if(r.length<2){throw new B("streams")}const d=new O;const A=d.signal;const u=c===null||c===undefined?undefined:c.signal;const h=[];Q(u,"options.signal");function abort(){finishImpl(new v)}M=M||s(51153).addAbortListener;let y;if(u){y=M(u,abort)}let I;let w;const S=[];let P=0;function finish(r){finishImpl(r,--P===0)}function finishImpl(r,s){var l;if(r&&(!I||I.code==="ERR_STREAM_PREMATURE_CLOSE")){I=r}if(!I&&!s){return}while(S.length){S.shift()(I)}(l=y)===null||l===undefined?undefined:l[p]();d.abort();if(s){if(!I){h.forEach((r=>r()))}a.nextTick(i,I,w)}}let F;for(let q=0;q0;const V=j||(c===null||c===undefined?undefined:c.end)!==false;const W=q===r.length-1;if(T(G)){if(V){const{destroy:Y,cleanup:J}=destroyer(G,j,z);S.push(Y);if(R(G)&&W){h.push(J)}}function onError(r){if(r&&r.name!=="AbortError"&&r.code!=="ERR_STREAM_PREMATURE_CLOSE"){finish(r)}}G.on("error",onError);if(R(G)&&W){h.push((()=>{G.removeListener("error",onError)}))}}if(q===0){if(typeof G==="function"){F=G({signal:A});if(!N(F)){throw new C("Iterable, AsyncIterable or Stream","source",F)}}else if(N(G)||k(G)||_(G)){F=G}else{F=g.from(G)}}else if(typeof G==="function"){if(_(F)){var U;F=makeAsyncIterable((U=F)===null||U===undefined?undefined:U.readable)}else{F=makeAsyncIterable(F)}F=G(F,{signal:A});if(j){if(!N(F,true)){throw new C("AsyncIterable",`transform[${q-1}]`,F)}}else{var H;if(!L){L=s(14528)}const $=new L({objectMode:true});const K=(H=F)===null||H===undefined?undefined:H.then;if(typeof K==="function"){P++;K.call(F,(r=>{w=r;if(r!=null){$.write(r)}if(V){$.end()}a.nextTick(finish)}),(r=>{$.destroy(r);a.nextTick(finish,r)}))}else if(N(F,true)){P++;pumpToNode(F,$,finish,{end:V})}else if(D(F)||_(F)){const ee=F.readable||F;P++;pumpToNode(ee,$,finish,{end:V})}else{throw new C("AsyncIterable or Promise","destination",F)}F=$;const{destroy:X,cleanup:Z}=destroyer(F,false,true);S.push(X);if(W){h.push(Z)}}}else if(T(G)){if(k(F)){P+=2;const te=pipe(F,G,finish,{end:V});if(R(G)&&W){h.push(te)}}else if(_(F)||D(F)){const re=F.readable||F;P++;pumpToNode(re,G,finish,{end:V})}else if(N(F)){P++;pumpToNode(F,G,finish,{end:V})}else{throw new b("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],F)}F=G}else if(x(G)){if(k(F)){P++;pumpToWeb(makeAsyncIterable(F),G,finish,{end:V})}else if(D(F)||N(F)){P++;pumpToWeb(F,G,finish,{end:V})}else if(_(F)){P++;pumpToWeb(F.readable,G,finish,{end:V})}else{throw new b("val",["Readable","Iterable","AsyncIterable","ReadableStream","TransformStream"],F)}F=G}else{F=g.from(G)}}if(A!==null&&A!==undefined&&A.aborted||u!==null&&u!==undefined&&u.aborted){a.nextTick(abort)}return F}function pipe(r,i,s,{end:l}){let c=false;i.on("close",(()=>{if(!c){s(new w)}}));r.pipe(i,{end:false});if(l){function endFn(){c=true;i.end()}if(P(r)){a.nextTick(endFn)}else{r.once("end",endFn)}}else{s()}A(r,{readable:true,writable:false},(i=>{const a=r._readableState;if(i&&i.code==="ERR_STREAM_PREMATURE_CLOSE"&&a&&a.ended&&!a.errored&&!a.errorEmitted){r.once("end",s).once("error",s)}else{s(i)}}));return A(i,{readable:false,writable:true},s)}r.exports={pipelineImpl:pipelineImpl,pipeline:pipeline}},82483:(r,i,s)=>{const a=s(24144);"use strict";const{ArrayPrototypeIndexOf:l,NumberIsInteger:c,NumberIsNaN:d,NumberParseInt:p,ObjectDefineProperties:A,ObjectKeys:u,ObjectSetPrototypeOf:h,Promise:g,SafeSet:y,SymbolAsyncDispose:b,SymbolAsyncIterator:C,Symbol:B}=s(33103);r.exports=Readable;Readable.ReadableState=ReadableState;const{EventEmitter:I}=s(82361);const{Stream:w,prependListener:v}=s(79675);const{Buffer:S}=s(14300);const{addAbortSignal:Q}=s(58117);const N=s(86150);let R=s(51153).debuglog("stream",(r=>{R=r}));const k=s(97102);const T=s(93381);const{getHighWaterMark:_,getDefaultHighWaterMark:x}=s(33941);const{aggregateTwoErrors:D,codes:{ERR_INVALID_ARG_TYPE:P,ERR_METHOD_NOT_IMPLEMENTED:O,ERR_OUT_OF_RANGE:L,ERR_STREAM_PUSH_AFTER_EOF:F,ERR_STREAM_UNSHIFT_AFTER_END_EVENT:M},AbortError:U}=s(83525);const{validateObject:H}=s(86134);const q=B("kPaused");const{StringDecoder:G}=s(71576);const j=s(35558);h(Readable.prototype,w.prototype);h(Readable,w);const nop=()=>{};const{errorOrDestroy:z}=T;const V=1<<0;const W=1<<1;const Y=1<<2;const J=1<<3;const $=1<<4;const K=1<<5;const X=1<<6;const Z=1<<7;const ee=1<<8;const te=1<<9;const re=1<<10;const ie=1<<11;const ne=1<<12;const se=1<<13;const ae=1<<14;const oe=1<<15;const le=1<<16;const ce=1<<17;const de=1<<18;function makeBitMapDescriptor(r){return{enumerable:false,get(){return(this.state&r)!==0},set(i){if(i)this.state|=r;else this.state&=~r}}}A(ReadableState.prototype,{objectMode:makeBitMapDescriptor(V),ended:makeBitMapDescriptor(W),endEmitted:makeBitMapDescriptor(Y),reading:makeBitMapDescriptor(J),constructed:makeBitMapDescriptor($),sync:makeBitMapDescriptor(K),needReadable:makeBitMapDescriptor(X),emittedReadable:makeBitMapDescriptor(Z),readableListening:makeBitMapDescriptor(ee),resumeScheduled:makeBitMapDescriptor(te),errorEmitted:makeBitMapDescriptor(re),emitClose:makeBitMapDescriptor(ie),autoDestroy:makeBitMapDescriptor(ne),destroyed:makeBitMapDescriptor(se),closed:makeBitMapDescriptor(ae),closeEmitted:makeBitMapDescriptor(oe),multiAwaitDrain:makeBitMapDescriptor(le),readingMore:makeBitMapDescriptor(ce),dataEmitted:makeBitMapDescriptor(de)});function ReadableState(r,i,a){if(typeof a!=="boolean")a=i instanceof s(17828);this.state=ie|ne|$|K;if(r&&r.objectMode)this.state|=V;if(a&&r&&r.readableObjectMode)this.state|=V;this.highWaterMark=r?_(this,r,"readableHighWaterMark",a):x(false);this.buffer=new k;this.length=0;this.pipes=[];this.flowing=null;this[q]=null;if(r&&r.emitClose===false)this.state&=~ie;if(r&&r.autoDestroy===false)this.state&=~ne;this.errored=null;this.defaultEncoding=r&&r.defaultEncoding||"utf8";this.awaitDrainWriters=null;this.decoder=null;this.encoding=null;if(r&&r.encoding){this.decoder=new G(r.encoding);this.encoding=r.encoding}}function Readable(r){if(!(this instanceof Readable))return new Readable(r);const i=this instanceof s(17828);this._readableState=new ReadableState(r,this,i);if(r){if(typeof r.read==="function")this._read=r.read;if(typeof r.destroy==="function")this._destroy=r.destroy;if(typeof r.construct==="function")this._construct=r.construct;if(r.signal&&!i)Q(r.signal,this)}w.call(this,r);T.construct(this,(()=>{if(this._readableState.needReadable){maybeReadMore(this,this._readableState)}}))}Readable.prototype.destroy=T.destroy;Readable.prototype._undestroy=T.undestroy;Readable.prototype._destroy=function(r,i){i(r)};Readable.prototype[I.captureRejectionSymbol]=function(r){this.destroy(r)};Readable.prototype[b]=function(){let r;if(!this.destroyed){r=this.readableEnded?null:new U;this.destroy(r)}return new g(((i,s)=>N(this,(a=>a&&a!==r?s(a):i(null)))))};Readable.prototype.push=function(r,i){return readableAddChunk(this,r,i,false)};Readable.prototype.unshift=function(r,i){return readableAddChunk(this,r,i,true)};function readableAddChunk(r,i,s,a){R("readableAddChunk",i);const l=r._readableState;let c;if((l.state&V)===0){if(typeof i==="string"){s=s||l.defaultEncoding;if(l.encoding!==s){if(a&&l.encoding){i=S.from(i,s).toString(l.encoding)}else{i=S.from(i,s);s=""}}}else if(i instanceof S){s=""}else if(w._isUint8Array(i)){i=w._uint8ArrayToBuffer(i);s=""}else if(i!=null){c=new P("chunk",["string","Buffer","Uint8Array"],i)}}if(c){z(r,c)}else if(i===null){l.state&=~J;onEofChunk(r,l)}else if((l.state&V)!==0||i&&i.length>0){if(a){if((l.state&Y)!==0)z(r,new M);else if(l.destroyed||l.errored)return false;else addChunk(r,l,i,true)}else if(l.ended){z(r,new F)}else if(l.destroyed||l.errored){return false}else{l.state&=~J;if(l.decoder&&!s){i=l.decoder.write(i);if(l.objectMode||i.length!==0)addChunk(r,l,i,false);else maybeReadMore(r,l)}else{addChunk(r,l,i,false)}}}else if(!a){l.state&=~J;maybeReadMore(r,l)}return!l.ended&&(l.length0){if((i.state&le)!==0){i.awaitDrainWriters.clear()}else{i.awaitDrainWriters=null}i.dataEmitted=true;r.emit("data",s)}else{i.length+=i.objectMode?1:s.length;if(a)i.buffer.unshift(s);else i.buffer.push(s);if((i.state&X)!==0)emitReadable(r)}maybeReadMore(r,i)}Readable.prototype.isPaused=function(){const r=this._readableState;return r[q]===true||r.flowing===false};Readable.prototype.setEncoding=function(r){const i=new G(r);this._readableState.decoder=i;this._readableState.encoding=this._readableState.decoder.encoding;const s=this._readableState.buffer;let a="";for(const r of s){a+=i.write(r)}s.clear();if(a!=="")s.push(a);this._readableState.length=a.length;return this};const pe=1073741824;function computeNewHighWaterMark(r){if(r>pe){throw new L("size","<= 1GiB",r)}else{r--;r|=r>>>1;r|=r>>>2;r|=r>>>4;r|=r>>>8;r|=r>>>16;r++}return r}function howMuchToRead(r,i){if(r<=0||i.length===0&&i.ended)return 0;if((i.state&V)!==0)return 1;if(d(r)){if(i.flowing&&i.length)return i.buffer.first().length;return i.length}if(r<=i.length)return r;return i.ended?i.length:0}Readable.prototype.read=function(r){R("read",r);if(r===undefined){r=NaN}else if(!c(r)){r=p(r,10)}const i=this._readableState;const s=r;if(r>i.highWaterMark)i.highWaterMark=computeNewHighWaterMark(r);if(r!==0)i.state&=~Z;if(r===0&&i.needReadable&&((i.highWaterMark!==0?i.length>=i.highWaterMark:i.length>0)||i.ended)){R("read: emitReadable",i.length,i.ended);if(i.length===0&&i.ended)endReadable(this);else emitReadable(this);return null}r=howMuchToRead(r,i);if(r===0&&i.ended){if(i.length===0)endReadable(this);return null}let a=(i.state&X)!==0;R("need readable",a);if(i.length===0||i.length-r0)l=fromList(r,i);else l=null;if(l===null){i.needReadable=i.length<=i.highWaterMark;r=0}else{i.length-=r;if(i.multiAwaitDrain){i.awaitDrainWriters.clear()}else{i.awaitDrainWriters=null}}if(i.length===0){if(!i.ended)i.needReadable=true;if(s!==r&&i.ended)endReadable(this)}if(l!==null&&!i.errorEmitted&&!i.closeEmitted){i.dataEmitted=true;this.emit("data",l)}return l};function onEofChunk(r,i){R("onEofChunk");if(i.ended)return;if(i.decoder){const r=i.decoder.end();if(r&&r.length){i.buffer.push(r);i.length+=i.objectMode?1:r.length}}i.ended=true;if(i.sync){emitReadable(r)}else{i.needReadable=false;i.emittedReadable=true;emitReadable_(r)}}function emitReadable(r){const i=r._readableState;R("emitReadable",i.needReadable,i.emittedReadable);i.needReadable=false;if(!i.emittedReadable){R("emitReadable",i.flowing);i.emittedReadable=true;a.nextTick(emitReadable_,r)}}function emitReadable_(r){const i=r._readableState;R("emitReadable_",i.destroyed,i.length,i.ended);if(!i.destroyed&&!i.errored&&(i.length||i.ended)){r.emit("readable");i.emittedReadable=false}i.needReadable=!i.flowing&&!i.ended&&i.length<=i.highWaterMark;flow(r)}function maybeReadMore(r,i){if(!i.readingMore&&i.constructed){i.readingMore=true;a.nextTick(maybeReadMore_,r,i)}}function maybeReadMore_(r,i){while(!i.reading&&!i.ended&&(i.length1&&l.pipes.includes(r)){R("false write response, pause",l.awaitDrainWriters.size);l.awaitDrainWriters.add(r)}s.pause()}if(!p){p=pipeOnDrain(s,r);r.on("drain",p)}}s.on("data",ondata);function ondata(i){R("ondata");const s=r.write(i);R("dest.write",s);if(s===false){pause()}}function onerror(i){R("onerror",i);unpipe();r.removeListener("error",onerror);if(r.listenerCount("error")===0){const s=r._writableState||r._readableState;if(s&&!s.errorEmitted){z(r,i)}else{r.emit("error",i)}}}v(r,"error",onerror);function onclose(){r.removeListener("finish",onfinish);unpipe()}r.once("close",onclose);function onfinish(){R("onfinish");r.removeListener("close",onclose);unpipe()}r.once("finish",onfinish);function unpipe(){R("unpipe");s.unpipe(r)}r.emit("pipe",s);if(r.writableNeedDrain===true){pause()}else if(!l.flowing){R("pipe resume");s.resume()}return r};function pipeOnDrain(r,i){return function pipeOnDrainFunctionResult(){const s=r._readableState;if(s.awaitDrainWriters===i){R("pipeOnDrain",1);s.awaitDrainWriters=null}else if(s.multiAwaitDrain){R("pipeOnDrain",s.awaitDrainWriters.size);s.awaitDrainWriters.delete(i)}if((!s.awaitDrainWriters||s.awaitDrainWriters.size===0)&&r.listenerCount("data")){r.resume()}}}Readable.prototype.unpipe=function(r){const i=this._readableState;const s={hasUnpiped:false};if(i.pipes.length===0)return this;if(!r){const r=i.pipes;i.pipes=[];this.pause();for(let i=0;i0;if(l.flowing!==false)this.resume()}else if(r==="readable"){if(!l.endEmitted&&!l.readableListening){l.readableListening=l.needReadable=true;l.flowing=false;l.emittedReadable=false;R("on readable",l.length,l.reading);if(l.length){emitReadable(this)}else if(!l.reading){a.nextTick(nReadingNextTick,this)}}}return s};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(r,i){const s=w.prototype.removeListener.call(this,r,i);if(r==="readable"){a.nextTick(updateReadableListening,this)}return s};Readable.prototype.off=Readable.prototype.removeListener;Readable.prototype.removeAllListeners=function(r){const i=w.prototype.removeAllListeners.apply(this,arguments);if(r==="readable"||r===undefined){a.nextTick(updateReadableListening,this)}return i};function updateReadableListening(r){const i=r._readableState;i.readableListening=r.listenerCount("readable")>0;if(i.resumeScheduled&&i[q]===false){i.flowing=true}else if(r.listenerCount("data")>0){r.resume()}else if(!i.readableListening){i.flowing=null}}function nReadingNextTick(r){R("readable nexttick read 0");r.read(0)}Readable.prototype.resume=function(){const r=this._readableState;if(!r.flowing){R("resume");r.flowing=!r.readableListening;resume(this,r)}r[q]=false;return this};function resume(r,i){if(!i.resumeScheduled){i.resumeScheduled=true;a.nextTick(resume_,r,i)}}function resume_(r,i){R("resume",i.reading);if(!i.reading){r.read(0)}i.resumeScheduled=false;r.emit("resume");flow(r);if(i.flowing&&!i.reading)r.read(0)}Readable.prototype.pause=function(){R("call pause flowing=%j",this._readableState.flowing);if(this._readableState.flowing!==false){R("pause");this._readableState.flowing=false;this.emit("pause")}this._readableState[q]=true;return this};function flow(r){const i=r._readableState;R("flow",i.flowing);while(i.flowing&&r.read()!==null);}Readable.prototype.wrap=function(r){let i=false;r.on("data",(s=>{if(!this.push(s)&&r.pause){i=true;r.pause()}}));r.on("end",(()=>{this.push(null)}));r.on("error",(r=>{z(this,r)}));r.on("close",(()=>{this.destroy()}));r.on("destroy",(()=>{this.destroy()}));this._read=()=>{if(i&&r.resume){i=false;r.resume()}};const s=u(r);for(let i=1;i{a=r?D(a,r):null;s();s=nop}));try{while(true){const i=r.destroyed?null:r.read();if(i!==null){yield i}else if(a){throw a}else if(a===null){return}else{await new g(next)}}}catch(r){a=D(a,r);throw a}finally{if((a||(i===null||i===undefined?undefined:i.destroyOnReturn)!==false)&&(a===undefined||r._readableState.autoDestroy)){T.destroyer(r,null)}else{r.off("readable",next);l()}}}A(Readable.prototype,{readable:{__proto__:null,get(){const r=this._readableState;return!!r&&r.readable!==false&&!r.destroyed&&!r.errorEmitted&&!r.endEmitted},set(r){if(this._readableState){this._readableState.readable=!!r}}},readableDidRead:{__proto__:null,enumerable:false,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:false,get:function(){return!!(this._readableState.readable!==false&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:false,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:false,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:false,get:function(){return this._readableState.flowing},set:function(r){if(this._readableState){this._readableState.flowing=r}}},readableLength:{__proto__:null,enumerable:false,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:false,get(){return this._readableState?this._readableState.objectMode:false}},readableEncoding:{__proto__:null,enumerable:false,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:false,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:false}},destroyed:{__proto__:null,enumerable:false,get(){return this._readableState?this._readableState.destroyed:false},set(r){if(!this._readableState){return}this._readableState.destroyed=r}},readableEnded:{__proto__:null,enumerable:false,get(){return this._readableState?this._readableState.endEmitted:false}}});A(ReadableState.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[q]!==false},set(r){this[q]=!!r}}});Readable._fromList=fromList;function fromList(r,i){if(i.length===0)return null;let s;if(i.objectMode)s=i.buffer.shift();else if(!r||r>=i.length){if(i.decoder)s=i.buffer.join("");else if(i.buffer.length===1)s=i.buffer.first();else s=i.buffer.concat(i.length);i.buffer.clear()}else{s=i.buffer.consume(r,i.decoder)}return s}function endReadable(r){const i=r._readableState;R("endReadable",i.endEmitted);if(!i.endEmitted){i.ended=true;a.nextTick(endReadableNT,i,r)}}function endReadableNT(r,i){R("endReadableNT",r.endEmitted,r.length);if(!r.errored&&!r.closeEmitted&&!r.endEmitted&&r.length===0){r.endEmitted=true;i.emit("end");if(i.writable&&i.allowHalfOpen===false){a.nextTick(endWritableNT,i)}else if(r.autoDestroy){const r=i._writableState;const s=!r||r.autoDestroy&&(r.finished||r.writable===false);if(s){i.destroy()}}}}function endWritableNT(r){const i=r.writable&&!r.writableEnded&&!r.destroyed;if(i){r.end()}}Readable.from=function(r,i){return j(Readable,r,i)};let Ae;function lazyWebStreams(){if(Ae===undefined)Ae={};return Ae}Readable.fromWeb=function(r,i){return lazyWebStreams().newStreamReadableFromReadableStream(r,i)};Readable.toWeb=function(r,i){return lazyWebStreams().newReadableStreamFromStreamReadable(r,i)};Readable.wrap=function(r,i){var s,a;return new Readable({objectMode:(s=(a=r.readableObjectMode)!==null&&a!==undefined?a:r.objectMode)!==null&&s!==undefined?s:true,...i,destroy(i,s){T.destroyer(r,i);s(i)}}).wrap(r)}},33941:(r,i,s)=>{"use strict";const{MathFloor:a,NumberIsInteger:l}=s(33103);const{validateInteger:c}=s(86134);const{ERR_INVALID_ARG_VALUE:d}=s(83525).codes;let p=16*1024;let A=16;function highWaterMarkFrom(r,i,s){return r.highWaterMark!=null?r.highWaterMark:i?r[s]:null}function getDefaultHighWaterMark(r){return r?A:p}function setDefaultHighWaterMark(r,i){c(i,"value",0);if(r){A=i}else{p=i}}function getHighWaterMark(r,i,s,c){const p=highWaterMarkFrom(i,c,s);if(p!=null){if(!l(p)||p<0){const r=c?`options.${s}`:"options.highWaterMark";throw new d(r,p)}return a(p)}return getDefaultHighWaterMark(r.objectMode)}r.exports={getHighWaterMark:getHighWaterMark,getDefaultHighWaterMark:getDefaultHighWaterMark,setDefaultHighWaterMark:setDefaultHighWaterMark}},96277:(r,i,s)=>{"use strict";const{ObjectSetPrototypeOf:a,Symbol:l}=s(33103);r.exports=Transform;const{ERR_METHOD_NOT_IMPLEMENTED:c}=s(83525).codes;const d=s(17828);const{getHighWaterMark:p}=s(33941);a(Transform.prototype,d.prototype);a(Transform,d);const A=l("kCallback");function Transform(r){if(!(this instanceof Transform))return new Transform(r);const i=r?p(this,r,"readableHighWaterMark",true):null;if(i===0){r={...r,highWaterMark:null,readableHighWaterMark:i,writableHighWaterMark:r.writableHighWaterMark||0}}d.call(this,r);this._readableState.sync=false;this[A]=null;if(r){if(typeof r.transform==="function")this._transform=r.transform;if(typeof r.flush==="function")this._flush=r.flush}this.on("prefinish",prefinish)}function final(r){if(typeof this._flush==="function"&&!this.destroyed){this._flush(((i,s)=>{if(i){if(r){r(i)}else{this.destroy(i)}return}if(s!=null){this.push(s)}this.push(null);if(r){r()}}))}else{this.push(null);if(r){r()}}}function prefinish(){if(this._final!==final){final.call(this)}}Transform.prototype._final=final;Transform.prototype._transform=function(r,i,s){throw new c("_transform()")};Transform.prototype._write=function(r,i,s){const a=this._readableState;const l=this._writableState;const c=a.length;this._transform(r,i,((r,i)=>{if(r){s(r);return}if(i!=null){this.push(i)}if(l.ended||c===a.length||a.length{"use strict";const{SymbolAsyncIterator:a,SymbolIterator:l,SymbolFor:c}=s(33103);const d=c("nodejs.stream.destroyed");const p=c("nodejs.stream.errored");const A=c("nodejs.stream.readable");const u=c("nodejs.stream.writable");const h=c("nodejs.stream.disturbed");const g=c("nodejs.webstream.isClosedPromise");const y=c("nodejs.webstream.controllerErrorFunction");function isReadableNodeStream(r,i=false){var s;return!!(r&&typeof r.pipe==="function"&&typeof r.on==="function"&&(!i||typeof r.pause==="function"&&typeof r.resume==="function")&&(!r._writableState||((s=r._readableState)===null||s===undefined?undefined:s.readable)!==false)&&(!r._writableState||r._readableState))}function isWritableNodeStream(r){var i;return!!(r&&typeof r.write==="function"&&typeof r.on==="function"&&(!r._readableState||((i=r._writableState)===null||i===undefined?undefined:i.writable)!==false))}function isDuplexNodeStream(r){return!!(r&&typeof r.pipe==="function"&&r._readableState&&typeof r.on==="function"&&typeof r.write==="function")}function isNodeStream(r){return r&&(r._readableState||r._writableState||typeof r.write==="function"&&typeof r.on==="function"||typeof r.pipe==="function"&&typeof r.on==="function")}function isReadableStream(r){return!!(r&&!isNodeStream(r)&&typeof r.pipeThrough==="function"&&typeof r.getReader==="function"&&typeof r.cancel==="function")}function isWritableStream(r){return!!(r&&!isNodeStream(r)&&typeof r.getWriter==="function"&&typeof r.abort==="function")}function isTransformStream(r){return!!(r&&!isNodeStream(r)&&typeof r.readable==="object"&&typeof r.writable==="object")}function isWebStream(r){return isReadableStream(r)||isWritableStream(r)||isTransformStream(r)}function isIterable(r,i){if(r==null)return false;if(i===true)return typeof r[a]==="function";if(i===false)return typeof r[l]==="function";return typeof r[a]==="function"||typeof r[l]==="function"}function isDestroyed(r){if(!isNodeStream(r))return null;const i=r._writableState;const s=r._readableState;const a=i||s;return!!(r.destroyed||r[d]||a!==null&&a!==undefined&&a.destroyed)}function isWritableEnded(r){if(!isWritableNodeStream(r))return null;if(r.writableEnded===true)return true;const i=r._writableState;if(i!==null&&i!==undefined&&i.errored)return false;if(typeof(i===null||i===undefined?undefined:i.ended)!=="boolean")return null;return i.ended}function isWritableFinished(r,i){if(!isWritableNodeStream(r))return null;if(r.writableFinished===true)return true;const s=r._writableState;if(s!==null&&s!==undefined&&s.errored)return false;if(typeof(s===null||s===undefined?undefined:s.finished)!=="boolean")return null;return!!(s.finished||i===false&&s.ended===true&&s.length===0)}function isReadableEnded(r){if(!isReadableNodeStream(r))return null;if(r.readableEnded===true)return true;const i=r._readableState;if(!i||i.errored)return false;if(typeof(i===null||i===undefined?undefined:i.ended)!=="boolean")return null;return i.ended}function isReadableFinished(r,i){if(!isReadableNodeStream(r))return null;const s=r._readableState;if(s!==null&&s!==undefined&&s.errored)return false;if(typeof(s===null||s===undefined?undefined:s.endEmitted)!=="boolean")return null;return!!(s.endEmitted||i===false&&s.ended===true&&s.length===0)}function isReadable(r){if(r&&r[A]!=null)return r[A];if(typeof(r===null||r===undefined?undefined:r.readable)!=="boolean")return null;if(isDestroyed(r))return false;return isReadableNodeStream(r)&&r.readable&&!isReadableFinished(r)}function isWritable(r){if(r&&r[u]!=null)return r[u];if(typeof(r===null||r===undefined?undefined:r.writable)!=="boolean")return null;if(isDestroyed(r))return false;return isWritableNodeStream(r)&&r.writable&&!isWritableEnded(r)}function isFinished(r,i){if(!isNodeStream(r)){return null}if(isDestroyed(r)){return true}if((i===null||i===undefined?undefined:i.readable)!==false&&isReadable(r)){return false}if((i===null||i===undefined?undefined:i.writable)!==false&&isWritable(r)){return false}return true}function isWritableErrored(r){var i,s;if(!isNodeStream(r)){return null}if(r.writableErrored){return r.writableErrored}return(i=(s=r._writableState)===null||s===undefined?undefined:s.errored)!==null&&i!==undefined?i:null}function isReadableErrored(r){var i,s;if(!isNodeStream(r)){return null}if(r.readableErrored){return r.readableErrored}return(i=(s=r._readableState)===null||s===undefined?undefined:s.errored)!==null&&i!==undefined?i:null}function isClosed(r){if(!isNodeStream(r)){return null}if(typeof r.closed==="boolean"){return r.closed}const i=r._writableState;const s=r._readableState;if(typeof(i===null||i===undefined?undefined:i.closed)==="boolean"||typeof(s===null||s===undefined?undefined:s.closed)==="boolean"){return(i===null||i===undefined?undefined:i.closed)||(s===null||s===undefined?undefined:s.closed)}if(typeof r._closed==="boolean"&&isOutgoingMessage(r)){return r._closed}return null}function isOutgoingMessage(r){return typeof r._closed==="boolean"&&typeof r._defaultKeepAlive==="boolean"&&typeof r._removedConnection==="boolean"&&typeof r._removedContLen==="boolean"}function isServerResponse(r){return typeof r._sent100==="boolean"&&isOutgoingMessage(r)}function isServerRequest(r){var i;return typeof r._consuming==="boolean"&&typeof r._dumped==="boolean"&&((i=r.req)===null||i===undefined?undefined:i.upgradeOrConnect)===undefined}function willEmitClose(r){if(!isNodeStream(r))return null;const i=r._writableState;const s=r._readableState;const a=i||s;return!a&&isServerResponse(r)||!!(a&&a.autoDestroy&&a.emitClose&&a.closed===false)}function isDisturbed(r){var i;return!!(r&&((i=r[h])!==null&&i!==undefined?i:r.readableDidRead||r.readableAborted))}function isErrored(r){var i,s,a,l,c,d,A,u,h,g;return!!(r&&((i=(s=(a=(l=(c=(d=r[p])!==null&&d!==undefined?d:r.readableErrored)!==null&&c!==undefined?c:r.writableErrored)!==null&&l!==undefined?l:(A=r._readableState)===null||A===undefined?undefined:A.errorEmitted)!==null&&a!==undefined?a:(u=r._writableState)===null||u===undefined?undefined:u.errorEmitted)!==null&&s!==undefined?s:(h=r._readableState)===null||h===undefined?undefined:h.errored)!==null&&i!==undefined?i:(g=r._writableState)===null||g===undefined?undefined:g.errored))}r.exports={isDestroyed:isDestroyed,kIsDestroyed:d,isDisturbed:isDisturbed,kIsDisturbed:h,isErrored:isErrored,kIsErrored:p,isReadable:isReadable,kIsReadable:A,kIsClosedPromise:g,kControllerErrorFunction:y,kIsWritable:u,isClosed:isClosed,isDuplexNodeStream:isDuplexNodeStream,isFinished:isFinished,isIterable:isIterable,isReadableNodeStream:isReadableNodeStream,isReadableStream:isReadableStream,isReadableEnded:isReadableEnded,isReadableFinished:isReadableFinished,isReadableErrored:isReadableErrored,isNodeStream:isNodeStream,isWebStream:isWebStream,isWritable:isWritable,isWritableNodeStream:isWritableNodeStream,isWritableStream:isWritableStream,isWritableEnded:isWritableEnded,isWritableFinished:isWritableFinished,isWritableErrored:isWritableErrored,isServerRequest:isServerRequest,isServerResponse:isServerResponse,willEmitClose:willEmitClose,isTransformStream:isTransformStream}},59049:(r,i,s)=>{const a=s(24144);"use strict";const{ArrayPrototypeSlice:l,Error:c,FunctionPrototypeSymbolHasInstance:d,ObjectDefineProperty:p,ObjectDefineProperties:A,ObjectSetPrototypeOf:u,StringPrototypeToLowerCase:h,Symbol:g,SymbolHasInstance:y}=s(33103);r.exports=Writable;Writable.WritableState=WritableState;const{EventEmitter:b}=s(82361);const C=s(79675).Stream;const{Buffer:B}=s(14300);const I=s(93381);const{addAbortSignal:w}=s(58117);const{getHighWaterMark:v,getDefaultHighWaterMark:S}=s(33941);const{ERR_INVALID_ARG_TYPE:Q,ERR_METHOD_NOT_IMPLEMENTED:N,ERR_MULTIPLE_CALLBACK:R,ERR_STREAM_CANNOT_PIPE:k,ERR_STREAM_DESTROYED:T,ERR_STREAM_ALREADY_FINISHED:_,ERR_STREAM_NULL_VALUES:x,ERR_STREAM_WRITE_AFTER_END:D,ERR_UNKNOWN_ENCODING:P}=s(83525).codes;const{errorOrDestroy:O}=I;u(Writable.prototype,C.prototype);u(Writable,C);function nop(){}const L=g("kOnFinished");function WritableState(r,i,a){if(typeof a!=="boolean")a=i instanceof s(17828);this.objectMode=!!(r&&r.objectMode);if(a)this.objectMode=this.objectMode||!!(r&&r.writableObjectMode);this.highWaterMark=r?v(this,r,"writableHighWaterMark",a):S(false);this.finalCalled=false;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;this.destroyed=false;const l=!!(r&&r.decodeStrings===false);this.decodeStrings=!l;this.defaultEncoding=r&&r.defaultEncoding||"utf8";this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=onwrite.bind(undefined,i);this.writecb=null;this.writelen=0;this.afterWriteTickInfo=null;resetBuffer(this);this.pendingcb=0;this.constructed=true;this.prefinished=false;this.errorEmitted=false;this.emitClose=!r||r.emitClose!==false;this.autoDestroy=!r||r.autoDestroy!==false;this.errored=null;this.closed=false;this.closeEmitted=false;this[L]=[]}function resetBuffer(r){r.buffered=[];r.bufferedIndex=0;r.allBuffers=true;r.allNoop=true}WritableState.prototype.getBuffer=function getBuffer(){return l(this.buffered,this.bufferedIndex)};p(WritableState.prototype,"bufferedRequestCount",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function Writable(r){const i=this instanceof s(17828);if(!i&&!d(Writable,this))return new Writable(r);this._writableState=new WritableState(r,this,i);if(r){if(typeof r.write==="function")this._write=r.write;if(typeof r.writev==="function")this._writev=r.writev;if(typeof r.destroy==="function")this._destroy=r.destroy;if(typeof r.final==="function")this._final=r.final;if(typeof r.construct==="function")this._construct=r.construct;if(r.signal)w(r.signal,this)}C.call(this,r);I.construct(this,(()=>{const r=this._writableState;if(!r.writing){clearBuffer(this,r)}finishMaybe(this,r)}))}p(Writable,y,{__proto__:null,value:function(r){if(d(this,r))return true;if(this!==Writable)return false;return r&&r._writableState instanceof WritableState}});Writable.prototype.pipe=function(){O(this,new k)};function _write(r,i,s,l){const c=r._writableState;if(typeof s==="function"){l=s;s=c.defaultEncoding}else{if(!s)s=c.defaultEncoding;else if(s!=="buffer"&&!B.isEncoding(s))throw new P(s);if(typeof l!=="function")l=nop}if(i===null){throw new x}else if(!c.objectMode){if(typeof i==="string"){if(c.decodeStrings!==false){i=B.from(i,s);s="buffer"}}else if(i instanceof B){s="buffer"}else if(C._isUint8Array(i)){i=C._uint8ArrayToBuffer(i);s="buffer"}else{throw new Q("chunk",["string","Buffer","Uint8Array"],i)}}let d;if(c.ending){d=new D}else if(c.destroyed){d=new T("write")}if(d){a.nextTick(l,d);O(r,d,true);return d}c.pendingcb++;return writeOrBuffer(r,c,i,s,l)}Writable.prototype.write=function(r,i,s){return _write(this,r,i,s)===true};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){const r=this._writableState;if(r.corked){r.corked--;if(!r.writing)clearBuffer(this,r)}};Writable.prototype.setDefaultEncoding=function setDefaultEncoding(r){if(typeof r==="string")r=h(r);if(!B.isEncoding(r))throw new P(r);this._writableState.defaultEncoding=r;return this};function writeOrBuffer(r,i,s,a,l){const c=i.objectMode?1:s.length;i.length+=c;const d=i.lengths.bufferedIndex){clearBuffer(r,s)}if(l){if(s.afterWriteTickInfo!==null&&s.afterWriteTickInfo.cb===c){s.afterWriteTickInfo.count++}else{s.afterWriteTickInfo={count:1,cb:c,stream:r,state:s};a.nextTick(afterWriteTick,s.afterWriteTickInfo)}}else{afterWrite(r,s,1,c)}}}function afterWriteTick({stream:r,state:i,count:s,cb:a}){i.afterWriteTickInfo=null;return afterWrite(r,i,s,a)}function afterWrite(r,i,s,a){const l=!i.ending&&!r.destroyed&&i.length===0&&i.needDrain;if(l){i.needDrain=false;r.emit("drain")}while(s-- >0){i.pendingcb--;a()}if(i.destroyed){errorBuffer(i)}finishMaybe(r,i)}function errorBuffer(r){if(r.writing){return}for(let s=r.bufferedIndex;s1&&r._writev){i.pendingcb-=d-1;const a=i.allNoop?nop:r=>{for(let i=p;i256){s.splice(0,p);i.bufferedIndex=0}else{i.bufferedIndex=p}}i.bufferProcessing=false}Writable.prototype._write=function(r,i,s){if(this._writev){this._writev([{chunk:r,encoding:i}],s)}else{throw new N("_write()")}};Writable.prototype._writev=null;Writable.prototype.end=function(r,i,s){const l=this._writableState;if(typeof r==="function"){s=r;r=null;i=null}else if(typeof i==="function"){s=i;i=null}let d;if(r!==null&&r!==undefined){const s=_write(this,r,i);if(s instanceof c){d=s}}if(l.corked){l.corked=1;this.uncork()}if(d){}else if(!l.errored&&!l.ending){l.ending=true;finishMaybe(this,l,true);l.ended=true}else if(l.finished){d=new _("end")}else if(l.destroyed){d=new T("end")}if(typeof s==="function"){if(d||l.finished){a.nextTick(s,d)}else{l[L].push(s)}}return this};function needFinish(r){return r.ending&&!r.destroyed&&r.constructed&&r.length===0&&!r.errored&&r.buffered.length===0&&!r.finished&&!r.writing&&!r.errorEmitted&&!r.closeEmitted}function callFinal(r,i){let s=false;function onFinish(l){if(s){O(r,l!==null&&l!==undefined?l:R());return}s=true;i.pendingcb--;if(l){const s=i[L].splice(0);for(let r=0;r{if(needFinish(i)){finish(r,i)}else{i.pendingcb--}}),r,i)}else if(needFinish(i)){i.pendingcb++;finish(r,i)}}}}function finish(r,i){i.pendingcb--;i.finished=true;const s=i[L].splice(0);for(let r=0;r{"use strict";const{ArrayIsArray:a,ArrayPrototypeIncludes:l,ArrayPrototypeJoin:c,ArrayPrototypeMap:d,NumberIsInteger:p,NumberIsNaN:A,NumberMAX_SAFE_INTEGER:u,NumberMIN_SAFE_INTEGER:h,NumberParseInt:g,ObjectPrototypeHasOwnProperty:y,RegExpPrototypeExec:b,String:C,StringPrototypeToUpperCase:B,StringPrototypeTrim:I}=s(33103);const{hideStackFrames:w,codes:{ERR_SOCKET_BAD_PORT:v,ERR_INVALID_ARG_TYPE:S,ERR_INVALID_ARG_VALUE:Q,ERR_OUT_OF_RANGE:N,ERR_UNKNOWN_SIGNAL:R}}=s(83525);const{normalizeEncoding:k}=s(51153);const{isAsyncFunction:T,isArrayBufferView:_}=s(51153).types;const x={};function isInt32(r){return r===(r|0)}function isUint32(r){return r===r>>>0}const D=/^[0-7]+$/;const P="must be a 32-bit unsigned integer or an octal string";function parseFileMode(r,i,s){if(typeof r==="undefined"){r=s}if(typeof r==="string"){if(b(D,r)===null){throw new Q(i,r,P)}r=g(r,8)}F(r,i);return r}const O=w(((r,i,s=h,a=u)=>{if(typeof r!=="number")throw new S(i,"number",r);if(!p(r))throw new N(i,"an integer",r);if(ra)throw new N(i,`>= ${s} && <= ${a}`,r)}));const L=w(((r,i,s=-2147483648,a=2147483647)=>{if(typeof r!=="number"){throw new S(i,"number",r)}if(!p(r)){throw new N(i,"an integer",r)}if(ra){throw new N(i,`>= ${s} && <= ${a}`,r)}}));const F=w(((r,i,s=false)=>{if(typeof r!=="number"){throw new S(i,"number",r)}if(!p(r)){throw new N(i,"an integer",r)}const a=s?1:0;const l=4294967295;if(rl){throw new N(i,`>= ${a} && <= ${l}`,r)}}));function validateString(r,i){if(typeof r!=="string")throw new S(i,"string",r)}function validateNumber(r,i,s=undefined,a){if(typeof r!=="number")throw new S(i,"number",r);if(s!=null&&ra||(s!=null||a!=null)&&A(r)){throw new N(i,`${s!=null?`>= ${s}`:""}${s!=null&&a!=null?" && ":""}${a!=null?`<= ${a}`:""}`,r)}}const M=w(((r,i,s)=>{if(!l(s,r)){const a=c(d(s,(r=>typeof r==="string"?`'${r}'`:C(r))),", ");const l="must be one of: "+a;throw new Q(i,r,l)}}));function validateBoolean(r,i){if(typeof r!=="boolean")throw new S(i,"boolean",r)}function getOwnPropertyValueOrDefault(r,i,s){return r==null||!y(r,i)?s:r[i]}const U=w(((r,i,s=null)=>{const l=getOwnPropertyValueOrDefault(s,"allowArray",false);const c=getOwnPropertyValueOrDefault(s,"allowFunction",false);const d=getOwnPropertyValueOrDefault(s,"nullable",false);if(!d&&r===null||!l&&a(r)||typeof r!=="object"&&(!c||typeof r!=="function")){throw new S(i,"Object",r)}}));const H=w(((r,i)=>{if(r!=null&&typeof r!=="object"&&typeof r!=="function"){throw new S(i,"a dictionary",r)}}));const q=w(((r,i,s=0)=>{if(!a(r)){throw new S(i,"Array",r)}if(r.length{if(!_(r)){throw new S(i,["Buffer","TypedArray","DataView"],r)}}));function validateEncoding(r,i){const s=k(i);const a=r.length;if(s==="hex"&&a%2!==0){throw new Q("encoding",i,`is invalid for data of length ${a}`)}}function validatePort(r,i="Port",s=true){if(typeof r!=="number"&&typeof r!=="string"||typeof r==="string"&&I(r).length===0||+r!==+r>>>0||r>65535||r===0&&!s){throw new v(i,r,s)}return r|0}const j=w(((r,i)=>{if(r!==undefined&&(r===null||typeof r!=="object"||!("aborted"in r))){throw new S(i,"AbortSignal",r)}}));const z=w(((r,i)=>{if(typeof r!=="function")throw new S(i,"Function",r)}));const V=w(((r,i)=>{if(typeof r!=="function"||T(r))throw new S(i,"Function",r)}));const W=w(((r,i)=>{if(r!==undefined)throw new S(i,"undefined",r)}));function validateUnion(r,i,s){if(!l(s,r)){throw new S(i,`('${c(s,"|")}')`,r)}}const Y=/^(?:<[^>]*>)(?:\s*;\s*[^;"\s]+(?:=(")?[^;"\s]*\1)?)*$/;function validateLinkHeaderFormat(r,i){if(typeof r==="undefined"||!b(Y,r)){throw new Q(i,r,'must be an array or string of format "; rel=preload; as=style"')}}function validateLinkHeaderValue(r){if(typeof r==="string"){validateLinkHeaderFormat(r,"hints");return r}else if(a(r)){const i=r.length;let s="";if(i===0){return s}for(let a=0;a; rel=preload; as=style"')}r.exports={isInt32:isInt32,isUint32:isUint32,parseFileMode:parseFileMode,validateArray:q,validateStringArray:validateStringArray,validateBooleanArray:validateBooleanArray,validateAbortSignalArray:validateAbortSignalArray,validateBoolean:validateBoolean,validateBuffer:G,validateDictionary:H,validateEncoding:validateEncoding,validateFunction:z,validateInt32:L,validateInteger:O,validateNumber:validateNumber,validateObject:U,validateOneOf:M,validatePlainFunction:V,validatePort:validatePort,validateSignalName:validateSignalName,validateString:validateString,validateUint32:F,validateUndefined:W,validateUnion:validateUnion,validateAbortSignal:j,validateLinkHeaderValue:validateLinkHeaderValue}},83525:(r,i,s)=>{"use strict";const{format:a,inspect:l,AggregateError:c}=s(51153);const d=globalThis.AggregateError||c;const p=Symbol("kIsNodeError");const A=["string","function","number","object","Function","Object","boolean","bigint","symbol"];const u=/^([A-Z][a-z0-9]*)+$/;const h="__node_internal_";const g={};function assert(r,i){if(!r){throw new g.ERR_INTERNAL_ASSERTION(i)}}function addNumericalSeparator(r){let i="";let s=r.length;const a=r[0]==="-"?1:0;for(;s>=a+4;s-=3){i=`_${r.slice(s-3,s)}${i}`}return`${r.slice(0,s)}${i}`}function getMessage(r,i,s){if(typeof i==="function"){assert(i.length<=s.length,`Code: ${r}; The provided arguments length (${s.length}) does not match the required ones (${i.length}).`);return i(...s)}const l=(i.match(/%[dfijoOs]/g)||[]).length;assert(l===s.length,`Code: ${r}; The provided arguments length (${s.length}) does not match the required ones (${l}).`);if(s.length===0){return i}return a(i,...s)}function E(r,i,s){if(!s){s=Error}class NodeError extends s{constructor(...s){super(getMessage(r,i,s))}toString(){return`${this.name} [${r}]: ${this.message}`}}Object.defineProperties(NodeError.prototype,{name:{value:s.name,writable:true,enumerable:false,configurable:true},toString:{value(){return`${this.name} [${r}]: ${this.message}`},writable:true,enumerable:false,configurable:true}});NodeError.prototype.code=r;NodeError.prototype[p]=true;g[r]=NodeError}function hideStackFrames(r){const i=h+r.name;Object.defineProperty(r,"name",{value:i});return r}function aggregateTwoErrors(r,i){if(r&&i&&r!==i){if(Array.isArray(i.errors)){i.errors.push(r);return i}const s=new d([i,r],i.message);s.code=i.code;return s}return r||i}class AbortError extends Error{constructor(r="The operation was aborted",i=undefined){if(i!==undefined&&typeof i!=="object"){throw new g.ERR_INVALID_ARG_TYPE("options","Object",i)}super(r,i);this.code="ABORT_ERR";this.name="AbortError"}}E("ERR_ASSERTION","%s",Error);E("ERR_INVALID_ARG_TYPE",((r,i,s)=>{assert(typeof r==="string","'name' must be a string");if(!Array.isArray(i)){i=[i]}let a="The ";if(r.endsWith(" argument")){a+=`${r} `}else{a+=`"${r}" ${r.includes(".")?"property":"argument"} `}a+="must be ";const c=[];const d=[];const p=[];for(const r of i){assert(typeof r==="string","All expected entries have to be of type string");if(A.includes(r)){c.push(r.toLowerCase())}else if(u.test(r)){d.push(r)}else{assert(r!=="object",'The value "object" should be written as "Object"');p.push(r)}}if(d.length>0){const r=c.indexOf("object");if(r!==-1){c.splice(c,r,1);d.push("Object")}}if(c.length>0){switch(c.length){case 1:a+=`of type ${c[0]}`;break;case 2:a+=`one of type ${c[0]} or ${c[1]}`;break;default:{const r=c.pop();a+=`one of type ${c.join(", ")}, or ${r}`}}if(d.length>0||p.length>0){a+=" or "}}if(d.length>0){switch(d.length){case 1:a+=`an instance of ${d[0]}`;break;case 2:a+=`an instance of ${d[0]} or ${d[1]}`;break;default:{const r=d.pop();a+=`an instance of ${d.join(", ")}, or ${r}`}}if(p.length>0){a+=" or "}}switch(p.length){case 0:break;case 1:if(p[0].toLowerCase()!==p[0]){a+="an "}a+=`${p[0]}`;break;case 2:a+=`one of ${p[0]} or ${p[1]}`;break;default:{const r=p.pop();a+=`one of ${p.join(", ")}, or ${r}`}}if(s==null){a+=`. Received ${s}`}else if(typeof s==="function"&&s.name){a+=`. Received function ${s.name}`}else if(typeof s==="object"){var h;if((h=s.constructor)!==null&&h!==undefined&&h.name){a+=`. Received an instance of ${s.constructor.name}`}else{const r=l(s,{depth:-1});a+=`. Received ${r}`}}else{let r=l(s,{colors:false});if(r.length>25){r=`${r.slice(0,25)}...`}a+=`. Received type ${typeof s} (${r})`}return a}),TypeError);E("ERR_INVALID_ARG_VALUE",((r,i,s="is invalid")=>{let a=l(i);if(a.length>128){a=a.slice(0,128)+"..."}const c=r.includes(".")?"property":"argument";return`The ${c} '${r}' ${s}. Received ${a}`}),TypeError);E("ERR_INVALID_RETURN_VALUE",((r,i,s)=>{var a;const l=s!==null&&s!==undefined&&(a=s.constructor)!==null&&a!==undefined&&a.name?`instance of ${s.constructor.name}`:`type ${typeof s}`;return`Expected ${r} to be returned from the "${i}"`+` function but got ${l}.`}),TypeError);E("ERR_MISSING_ARGS",((...r)=>{assert(r.length>0,"At least one arg needs to be specified");let i;const s=r.length;r=(Array.isArray(r)?r:[r]).map((r=>`"${r}"`)).join(" or ");switch(s){case 1:i+=`The ${r[0]} argument`;break;case 2:i+=`The ${r[0]} and ${r[1]} arguments`;break;default:{const s=r.pop();i+=`The ${r.join(", ")}, and ${s} arguments`}break}return`${i} must be specified`}),TypeError);E("ERR_OUT_OF_RANGE",((r,i,s)=>{assert(i,'Missing "range" argument');let a;if(Number.isInteger(s)&&Math.abs(s)>2**32){a=addNumericalSeparator(String(s))}else if(typeof s==="bigint"){a=String(s);if(s>2n**32n||s<-(2n**32n)){a=addNumericalSeparator(a)}a+="n"}else{a=l(s)}return`The value of "${r}" is out of range. It must be ${i}. Received ${a}`}),RangeError);E("ERR_MULTIPLE_CALLBACK","Callback called multiple times",Error);E("ERR_METHOD_NOT_IMPLEMENTED","The %s method is not implemented",Error);E("ERR_STREAM_ALREADY_FINISHED","Cannot call %s after a stream was finished",Error);E("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable",Error);E("ERR_STREAM_DESTROYED","Cannot call %s after a stream was destroyed",Error);E("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);E("ERR_STREAM_PREMATURE_CLOSE","Premature close",Error);E("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF",Error);E("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event",Error);E("ERR_STREAM_WRITE_AFTER_END","write after end",Error);E("ERR_UNKNOWN_ENCODING","Unknown encoding: %s",TypeError);r.exports={AbortError:AbortError,aggregateTwoErrors:hideStackFrames(aggregateTwoErrors),hideStackFrames:hideStackFrames,codes:g}},40247:(r,i,s)=>{"use strict";const a=s(12781);if(a&&process.env.READABLE_STREAM==="disable"){const i=a.promises;r.exports._uint8ArrayToBuffer=a._uint8ArrayToBuffer;r.exports._isUint8Array=a._isUint8Array;r.exports.isDisturbed=a.isDisturbed;r.exports.isErrored=a.isErrored;r.exports.isReadable=a.isReadable;r.exports.Readable=a.Readable;r.exports.Writable=a.Writable;r.exports.Duplex=a.Duplex;r.exports.Transform=a.Transform;r.exports.PassThrough=a.PassThrough;r.exports.addAbortSignal=a.addAbortSignal;r.exports.finished=a.finished;r.exports.destroy=a.destroy;r.exports.pipeline=a.pipeline;r.exports.compose=a.compose;Object.defineProperty(a,"promises",{configurable:true,enumerable:true,get(){return i}});r.exports.Stream=a.Stream}else{const i=s(93826);const a=s(25884);const l=i.Readable.destroy;r.exports=i.Readable;r.exports._uint8ArrayToBuffer=i._uint8ArrayToBuffer;r.exports._isUint8Array=i._isUint8Array;r.exports.isDisturbed=i.isDisturbed;r.exports.isErrored=i.isErrored;r.exports.isReadable=i.isReadable;r.exports.Readable=i.Readable;r.exports.Writable=i.Writable;r.exports.Duplex=i.Duplex;r.exports.Transform=i.Transform;r.exports.PassThrough=i.PassThrough;r.exports.addAbortSignal=i.addAbortSignal;r.exports.finished=i.finished;r.exports.destroy=i.destroy;r.exports.destroy=l;r.exports.pipeline=i.pipeline;r.exports.compose=i.compose;Object.defineProperty(i,"promises",{configurable:true,enumerable:true,get(){return a}});r.exports.Stream=i.Stream}r.exports["default"]=r.exports},33103:r=>{"use strict";r.exports={ArrayIsArray(r){return Array.isArray(r)},ArrayPrototypeIncludes(r,i){return r.includes(i)},ArrayPrototypeIndexOf(r,i){return r.indexOf(i)},ArrayPrototypeJoin(r,i){return r.join(i)},ArrayPrototypeMap(r,i){return r.map(i)},ArrayPrototypePop(r,i){return r.pop(i)},ArrayPrototypePush(r,i){return r.push(i)},ArrayPrototypeSlice(r,i,s){return r.slice(i,s)},Error:Error,FunctionPrototypeCall(r,i,...s){return r.call(i,...s)},FunctionPrototypeSymbolHasInstance(r,i){return Function.prototype[Symbol.hasInstance].call(r,i)},MathFloor:Math.floor,Number:Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(r,i){return Object.defineProperties(r,i)},ObjectDefineProperty(r,i,s){return Object.defineProperty(r,i,s)},ObjectGetOwnPropertyDescriptor(r,i){return Object.getOwnPropertyDescriptor(r,i)},ObjectKeys(r){return Object.keys(r)},ObjectSetPrototypeOf(r,i){return Object.setPrototypeOf(r,i)},Promise:Promise,PromisePrototypeCatch(r,i){return r.catch(i)},PromisePrototypeThen(r,i,s){return r.then(i,s)},PromiseReject(r){return Promise.reject(r)},PromiseResolve(r){return Promise.resolve(r)},ReflectApply:Reflect.apply,RegExpPrototypeTest(r,i){return r.test(i)},SafeSet:Set,String:String,StringPrototypeSlice(r,i,s){return r.slice(i,s)},StringPrototypeToLowerCase(r){return r.toLowerCase()},StringPrototypeToUpperCase(r){return r.toUpperCase()},StringPrototypeTrim(r){return r.trim()},Symbol:Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol("Symbol.dispose"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol("Symbol.asyncDispose"),TypedArrayPrototypeSet(r,i,s){return r.set(i,s)},Boolean:Boolean,Uint8Array:Uint8Array}},51153:(r,i,s)=>{"use strict";const a=s(14300);const{kResistStopPropagation:l,SymbolDispose:c}=s(33103);const d=globalThis.AbortSignal||s(7328).AbortSignal;const p=globalThis.AbortController||s(7328).AbortController;const A=Object.getPrototypeOf((async function(){})).constructor;const u=globalThis.Blob||a.Blob;const h=typeof u!=="undefined"?function isBlob(r){return r instanceof u}:function isBlob(r){return false};const validateAbortSignal=(r,i)=>{if(r!==undefined&&(r===null||typeof r!=="object"||!("aborted"in r))){throw new ERR_INVALID_ARG_TYPE(i,"AbortSignal",r)}};const validateFunction=(r,i)=>{if(typeof r!=="function")throw new ERR_INVALID_ARG_TYPE(i,"Function",r)};class AggregateError extends Error{constructor(r){if(!Array.isArray(r)){throw new TypeError(`Expected input to be an Array, got ${typeof r}`)}let i="";for(let s=0;s{r=s;i=a}));return{promise:s,resolve:r,reject:i}},promisify(r){return new Promise(((i,s)=>{r(((r,...a)=>{if(r){return s(r)}return i(...a)}))}))},debuglog(){return function(){}},format(r,...i){return r.replace(/%([sdifj])/g,(function(...[r,s]){const a=i.shift();if(s==="f"){return a.toFixed(6)}else if(s==="j"){return JSON.stringify(a)}else if(s==="s"&&typeof a==="object"){const r=a.constructor!==Object?a.constructor.name:"";return`${r} {}`.trim()}else{return a.toString()}}))},inspect(r){switch(typeof r){case"string":if(r.includes("'")){if(!r.includes('"')){return`"${r}"`}else if(!r.includes("`")&&!r.includes("${")){return`\`${r}\``}}return`'${r}'`;case"number":if(isNaN(r)){return"NaN"}else if(Object.is(r,-0)){return String(r)}return r;case"bigint":return`${String(r)}n`;case"boolean":case"undefined":return String(r);case"object":return"{}"}},types:{isAsyncFunction(r){return r instanceof A},isArrayBufferView(r){return ArrayBuffer.isView(r)}},isBlob:h,deprecate(r,i){return r},addAbortListener:s(82361).addAbortListener||function addAbortListener(r,i){if(r===undefined){throw new ERR_INVALID_ARG_TYPE("signal","AbortSignal",r)}validateAbortSignal(r,"signal");validateFunction(i,"listener");let s;if(r.aborted){queueMicrotask((()=>i()))}else{r.addEventListener("abort",i,{__proto__:null,once:true,[l]:true});s=()=>{r.removeEventListener("abort",i)}}return{__proto__:null,[c](){var r;(r=s)===null||r===undefined?undefined:r()}}},AbortSignalAny:d.any||function AbortSignalAny(r){if(r.length===1){return r[0]}const i=new p;const abort=()=>i.abort();r.forEach((r=>{validateAbortSignal(r,"signals");r.addEventListener("abort",abort,{once:true})}));i.signal.addEventListener("abort",(()=>{r.forEach((r=>r.removeEventListener("abort",abort)))}),{once:true});return i.signal}};r.exports.promisify.custom=Symbol.for("nodejs.util.promisify.custom")},93826:(r,i,s)=>{const{Buffer:a}=s(14300);"use strict";const{ObjectDefineProperty:l,ObjectKeys:c,ReflectApply:d}=s(33103);const{promisify:{custom:p}}=s(51153);const{streamReturningOperators:A,promiseReturningOperators:u}=s(40594);const{codes:{ERR_ILLEGAL_CONSTRUCTOR:h}}=s(83525);const g=s(62525);const{setDefaultHighWaterMark:y,getDefaultHighWaterMark:b}=s(33941);const{pipeline:C}=s(59574);const{destroyer:B}=s(93381);const I=s(86150);const w={};const v=s(25884);const S=s(38066);const Q=r.exports=s(79675).Stream;Q.isDestroyed=S.isDestroyed;Q.isDisturbed=S.isDisturbed;Q.isErrored=S.isErrored;Q.isReadable=S.isReadable;Q.isWritable=S.isWritable;Q.Readable=s(82483);for(const R of c(A)){const k=A[R];function fn(...r){if(new.target){throw h()}return Q.Readable.from(d(k,this,r))}l(fn,"name",{__proto__:null,value:k.name});l(fn,"length",{__proto__:null,value:k.length});l(Q.Readable.prototype,R,{__proto__:null,value:fn,enumerable:false,configurable:true,writable:true})}for(const T of c(u)){const _=u[T];function fn(...r){if(new.target){throw h()}return d(_,this,r)}l(fn,"name",{__proto__:null,value:_.name});l(fn,"length",{__proto__:null,value:_.length});l(Q.Readable.prototype,T,{__proto__:null,value:fn,enumerable:false,configurable:true,writable:true})}Q.Writable=s(59049);Q.Duplex=s(17828);Q.Transform=s(96277);Q.PassThrough=s(14528);Q.pipeline=C;const{addAbortSignal:N}=s(58117);Q.addAbortSignal=N;Q.finished=I;Q.destroy=B;Q.compose=g;Q.setDefaultHighWaterMark=y;Q.getDefaultHighWaterMark=b;l(Q,"promises",{__proto__:null,configurable:true,enumerable:true,get(){return v}});l(C,p,{__proto__:null,enumerable:true,get(){return v.pipeline}});l(I,p,{__proto__:null,enumerable:true,get(){return v.finished}});Q.Stream=Q;Q._isUint8Array=function isUint8Array(r){return r instanceof Uint8Array};Q._uint8ArrayToBuffer=function _uint8ArrayToBuffer(r){return a.from(r.buffer,r.byteOffset,r.byteLength)}},25884:(r,i,s)=>{"use strict";const{ArrayPrototypePop:a,Promise:l}=s(33103);const{isIterable:c,isNodeStream:d,isWebStream:p}=s(38066);const{pipelineImpl:A}=s(59574);const{finished:u}=s(86150);s(93826);function pipeline(...r){return new l(((i,s)=>{let l;let u;const h=r[r.length-1];if(h&&typeof h==="object"&&!d(h)&&!c(h)&&!p(h)){const i=a(r);l=i.signal;u=i.end}A(r,((r,a)=>{if(r){s(r)}else{i(a)}}),{signal:l,end:u})}))}r.exports={finished:u,pipeline:pipeline}},7817:(r,i,s)=>{r.exports=readdirGlob;const a=s(57147);const{EventEmitter:l}=s(82361);const{Minimatch:c}=s(73954);const{resolve:d}=s(71017);function readdir(r,i){return new Promise(((s,l)=>{a.readdir(r,{withFileTypes:true},((r,a)=>{if(r){switch(r.code){case"ENOTDIR":if(i){l(r)}else{s([])}break;case"ENOTSUP":case"ENOENT":case"ENAMETOOLONG":case"UNKNOWN":s([]);break;case"ELOOP":default:l(r);break}}else{s(a)}}))}))}function stat(r,i){return new Promise(((s,l)=>{const c=i?a.stat:a.lstat;c(r,((a,l)=>{if(a){switch(a.code){case"ENOENT":if(i){s(stat(r,false))}else{s(null)}break;default:s(null);break}}else{s(l)}}))}))}async function*exploreWalkAsync(r,i,s,a,l,c){let d=await readdir(i+r,c);for(const c of d){let d=c.name;if(d===undefined){d=c;a=true}const p=r+"/"+d;const A=p.slice(1);const u=i+"/"+A;let h=null;if(a||s){h=await stat(u,s)}if(!h&&c.name!==undefined){h=c}if(h===null){h={isDirectory:()=>false}}if(h.isDirectory()){if(!l(A)){yield{relative:A,absolute:u,stats:h};yield*exploreWalkAsync(p,i,s,a,l,false)}}else{yield{relative:A,absolute:u,stats:h}}}}async function*explore(r,i,s,a){yield*exploreWalkAsync("",r,i,s,a,true)}function readOptions(r){return{pattern:r.pattern,dot:!!r.dot,noglobstar:!!r.noglobstar,matchBase:!!r.matchBase,nocase:!!r.nocase,ignore:r.ignore,skip:r.skip,follow:!!r.follow,stat:!!r.stat,nodir:!!r.nodir,mark:!!r.mark,silent:!!r.silent,absolute:!!r.absolute}}class ReaddirGlob extends l{constructor(r,i,s){super();if(typeof i==="function"){s=i;i=null}this.options=readOptions(i||{});this.matchers=[];if(this.options.pattern){const r=Array.isArray(this.options.pattern)?this.options.pattern:[this.options.pattern];this.matchers=r.map((r=>new c(r,{dot:this.options.dot,noglobstar:this.options.noglobstar,matchBase:this.options.matchBase,nocase:this.options.nocase})))}this.ignoreMatchers=[];if(this.options.ignore){const r=Array.isArray(this.options.ignore)?this.options.ignore:[this.options.ignore];this.ignoreMatchers=r.map((r=>new c(r,{dot:true})))}this.skipMatchers=[];if(this.options.skip){const r=Array.isArray(this.options.skip)?this.options.skip:[this.options.skip];this.skipMatchers=r.map((r=>new c(r,{dot:true})))}this.iterator=explore(d(r||"."),this.options.follow,this.options.stat,this._shouldSkipDirectory.bind(this));this.paused=false;this.inactive=false;this.aborted=false;if(s){this._matches=[];this.on("match",(r=>this._matches.push(this.options.absolute?r.absolute:r.relative)));this.on("error",(r=>s(r)));this.on("end",(()=>s(null,this._matches)))}setTimeout((()=>this._next()),0)}_shouldSkipDirectory(r){return this.skipMatchers.some((i=>i.match(r)))}_fileMatches(r,i){const s=r+(i?"/":"");return(this.matchers.length===0||this.matchers.some((r=>r.match(s))))&&!this.ignoreMatchers.some((r=>r.match(s)))&&(!this.options.nodir||!i)}_next(){if(!this.paused&&!this.aborted){this.iterator.next().then((r=>{if(!r.done){const i=r.value.stats.isDirectory();if(this._fileMatches(r.value.relative,i)){let s=r.value.relative;let a=r.value.absolute;if(this.options.mark&&i){s+="/";a+="/"}if(this.options.stat){this.emit("match",{relative:s,absolute:a,stat:r.value.stats})}else{this.emit("match",{relative:s,absolute:a})}}this._next(this.iterator)}else{this.emit("end")}})).catch((r=>{this.abort();this.emit("error",r);if(!r.code&&!this.options.silent){console.error(r)}}))}else{this.inactive=true}}abort(){this.aborted=true}pause(){this.paused=true}resume(){this.paused=false;if(this.inactive){this.inactive=false;this._next()}}}function readdirGlob(r,i,s){return new ReaddirGlob(r,i,s)}readdirGlob.ReaddirGlob=ReaddirGlob},89404:(r,i,s)=>{var a=s(14300);var l=a.Buffer;function copyProps(r,i){for(var s in r){i[s]=r[s]}}if(l.from&&l.alloc&&l.allocUnsafe&&l.allocUnsafeSlow){r.exports=a}else{copyProps(a,i);i.Buffer=SafeBuffer}function SafeBuffer(r,i,s){return l(r,i,s)}copyProps(l,SafeBuffer);SafeBuffer.from=function(r,i,s){if(typeof r==="number"){throw new TypeError("Argument must not be a number")}return l(r,i,s)};SafeBuffer.alloc=function(r,i,s){if(typeof r!=="number"){throw new TypeError("Argument must be a number")}var a=l(r);if(i!==undefined){if(typeof s==="string"){a.fill(i,s)}else{a.fill(i)}}else{a.fill(0)}return a};SafeBuffer.allocUnsafe=function(r){if(typeof r!=="number"){throw new TypeError("Argument must be a number")}return l(r)};SafeBuffer.allocUnsafeSlow=function(r){if(typeof r!=="number"){throw new TypeError("Argument must be a number")}return a.SlowBuffer(r)}},41516:(r,i,s)=>{const{EventEmitter:a}=s(82361);const l=new Error("Stream was destroyed");const c=new Error("Premature close");const d=s(14181);const p=s(20164);const A=s(41898);const u=(1<<29)-1;const h=1;const g=2;const y=4;const b=8;const C=u^h;const B=u^g;const I=1<<4;const w=2<<4;const v=4<<4;const S=8<<4;const Q=16<<4;const N=32<<4;const R=64<<4;const k=128<<4;const T=256<<4;const _=512<<4;const x=1024<<4;const D=2048<<4;const P=4096<<4;const O=8192<<4;const L=Q|N;const F=I|P;const M=v|I;const U=T|S;const H=Q|O;const q=u^I;const G=u^v;const j=u^(v|P);const z=u^P;const V=u^Q;const W=u^(S|_);const Y=u^R;const J=u^L;const $=u^D;const K=u^w;const X=u^O;const Z=u^H;const ee=1<<18;const te=2<<18;const re=4<<18;const ie=8<<18;const ne=16<<18;const se=32<<18;const ae=64<<18;const oe=128<<18;const le=256<<18;const ce=512<<18;const de=1024<<18;const pe=u^(ee|le);const Ae=u^re;const ue=u^ce;const fe=u^ne;const he=u^ie;const me=u^oe;const ge=u^te;const ye=u^de;const Ee=I|ee;const be=u^Ee;const Ce=x|se;const Be=y|b|g;const Ie=Be|h;const we=Be|Ce;const ve=Ae&G;const Se=oe|D;const Qe=Se&be;const Ne=Ie|Qe;const Re=Ie|R|x;const ke=Ie|x|S;const Te=Ie|R|S;const _e=Ie|T|S|_;const xe=Ie|I|R|x|P|O;const De=Be|R|x;const Pe=w|Ie|D|v;const Oe=Ie|ce|se;const Le=ie|ne;const Fe=ie|ee;const Me=ie|ne|Ie|ee;const Ue=Ie|ee|ie|de;const He=re|ee;const qe=ee|le;const Ge=Ie|ce|Fe|se;const je=ne|Be|ce|se;const ze=te|Ie|oe|re;const Ve=Symbol.asyncIterator||Symbol("asyncIterator");class WritableState{constructor(r,{highWaterMark:i=16384,map:s=null,mapWritable:a,byteLength:l,byteLengthWritable:c}={}){this.stream=r;this.queue=new p;this.highWaterMark=i;this.buffered=0;this.error=null;this.pipeline=null;this.drains=null;this.byteLength=c||l||defaultByteLength;this.map=a||s;this.afterWrite=afterWrite.bind(this);this.afterUpdateNextTick=updateWriteNT.bind(this)}get ended(){return(this.stream._duplexState&se)!==0}push(r){if(this.map!==null)r=this.map(r);this.buffered+=this.byteLength(r);this.queue.push(r);if(this.buffered0;this.error=null;this.pipeline=null;this.byteLength=c||l||defaultByteLength;this.map=a||s;this.pipeTo=null;this.afterRead=afterRead.bind(this);this.afterUpdateNextTick=updateReadNT.bind(this)}get ended(){return(this.stream._duplexState&x)!==0}pipe(r,i){if(this.pipeTo!==null)throw new Error("Can only pipe to one destination");if(typeof i!=="function")i=null;this.stream._duplexState|=N;this.pipeTo=r;this.pipeline=new Pipeline(this.stream,r,i);if(i)this.stream.on("error",noop);if(isStreamx(r)){r._writableState.pipeline=this.pipeline;if(i)r.on("error",noop);r.on("finish",this.pipeline.finished.bind(this.pipeline))}else{const i=this.pipeline.done.bind(this.pipeline,r);const s=this.pipeline.done.bind(this.pipeline,r,null);r.on("error",i);r.on("close",s);r.on("finish",this.pipeline.finished.bind(this.pipeline))}r.on("drain",afterDrain.bind(this));this.stream.emit("piping",r);r.emit("pipe",this.stream)}push(r){const i=this.stream;if(r===null){this.highWaterMark=0;i._duplexState=(i._duplexState|R)&j;return false}if(this.map!==null){r=this.map(r);if(r===null)return this.buffered0)i.push(this.shift());for(let r=0;r0)a.drains.shift().resolve(false);if(a.pipeline!==null)a.pipeline.done(i,r)}}function afterWrite(r){const i=this.stream;if(r)i.destroy(r);i._duplexState&=pe;if(this.drains!==null)tickDrains(this.drains);if((i._duplexState&Me)===ne){i._duplexState&=fe;if((i._duplexState&ae)===ae){i.emit("drain")}}this.updateCallback()}function afterRead(r){if(r)this.stream.destroy(r);this.stream._duplexState&=q;if(this.readAhead===false&&(this.stream._duplexState&Q)===0)this.stream._duplexState&=X;this.updateCallback()}function updateReadNT(){if((this.stream._duplexState&w)===0){this.stream._duplexState&=$;this.update()}}function updateWriteNT(){if((this.stream._duplexState&te)===0){this.stream._duplexState&=me;this.update()}}function tickDrains(r){for(let i=0;i=r._readableState.highWaterMark}static isPaused(r){return(r._duplexState&Q)===0}[Ve](){const r=this;let i=null;let s=null;let a=null;this.on("error",(r=>{i=r}));this.on("readable",onreadable);this.on("close",onclose);return{[Ve](){return this},next(){return new Promise((function(i,l){s=i;a=l;const c=r.read();if(c!==null)ondata(c);else if((r._duplexState&b)!==0)ondata(null)}))},return(){return destroy(null)},throw(r){return destroy(r)}};function onreadable(){if(s!==null)ondata(r.read())}function onclose(){if(s!==null)ondata(null)}function ondata(c){if(a===null)return;if(i)a(i);else if(c===null&&(r._duplexState&x)===0)a(l);else s({value:c,done:c===null});a=s=null}function destroy(i){r.destroy(i);return new Promise(((s,a)=>{if(r._duplexState&b)return s({value:undefined,done:true});r.once("close",(function(){if(i)a(i);else s({value:undefined,done:true})}))}))}}}class Writable extends Stream{constructor(r){super(r);this._duplexState|=h|x;this._writableState=new WritableState(this,r);if(r){if(r.writev)this._writev=r.writev;if(r.write)this._write=r.write;if(r.final)this._final=r.final;if(r.eagerOpen)this._writableState.updateNextTick()}}cork(){this._duplexState|=de}uncork(){this._duplexState&=ye;this._writableState.updateNextTick()}_writev(r,i){i(null)}_write(r,i){this._writableState.autoBatch(r,i)}_final(r){r(null)}static isBackpressured(r){return(r._duplexState&je)!==0}static drained(r){if(r.destroyed)return Promise.resolve(false);const i=r._writableState;const s=isWritev(r)?Math.min(1,i.queue.length):i.queue.length;const a=s+(r._duplexState&le?1:0);if(a===0)return Promise.resolve(true);if(i.drains===null)i.drains=[];return new Promise((r=>{i.drains.push({writes:a,resolve:r})}))}write(r){this._writableState.updateNextTick();return this._writableState.push(r)}end(r){this._writableState.updateNextTick();this._writableState.end(r);return this}}class Duplex extends Readable{constructor(r){super(r);this._duplexState=h|this._duplexState&O;this._writableState=new WritableState(this,r);if(r){if(r.writev)this._writev=r.writev;if(r.write)this._write=r.write;if(r.final)this._final=r.final}}cork(){this._duplexState|=de}uncork(){this._duplexState&=ye;this._writableState.updateNextTick()}_writev(r,i){i(null)}_write(r,i){this._writableState.autoBatch(r,i)}_final(r){r(null)}write(r){this._writableState.updateNextTick();return this._writableState.push(r)}end(r){this._writableState.updateNextTick();this._writableState.end(r);return this}}class Transform extends Duplex{constructor(r){super(r);this._transformState=new TransformState(this);if(r){if(r.transform)this._transform=r.transform;if(r.flush)this._flush=r.flush}}_write(r,i){if(this._readableState.buffered>=this._readableState.highWaterMark){this._transformState.data=r}else{this._transform(r,this._transformState.afterTransform)}}_read(r){if(this._transformState.data!==null){const i=this._transformState.data;this._transformState.data=null;r(null);this._transform(i,this._transformState.afterTransform)}else{r(null)}}destroy(r){super.destroy(r);if(this._transformState.data!==null){this._transformState.data=null;this._transformState.afterTransform()}}_transform(r,i){i(null,r)}_flush(r){r(null)}_final(r){this._transformState.afterFinal=r;this._flush(transformAfterFlush.bind(this))}}class PassThrough extends Transform{}function transformAfterFlush(r,i){const s=this._transformState.afterFinal;if(r)return s(r);if(i!==null&&i!==undefined)this.push(i);this.push(null);s(null)}function pipelinePromise(...r){return new Promise(((i,s)=>pipeline(...r,(r=>{if(r)return s(r);i()}))))}function pipeline(r,...i){const s=Array.isArray(r)?[...r,...i]:[r,...i];const a=s.length&&typeof s[s.length-1]==="function"?s.pop():null;if(s.length<2)throw new Error("Pipeline requires at least 2 streams");let l=s[0];let d=null;let p=null;for(let r=1;r1,onerror);l.pipe(d)}l=d}if(a){let r=false;const i=isStreamx(d)||!!(d._writableState&&d._writableState.autoDestroy);d.on("error",(r=>{if(p===null)p=r}));d.on("finish",(()=>{r=true;if(!i)a(p)}));if(i){d.on("close",(()=>a(p||(r?null:c))))}}return d;function errorHandle(r,i,s,a){r.on("error",a);r.on("close",onclose);function onclose(){if(i&&r._readableState&&!r._readableState.ended)return a(c);if(s&&r._writableState&&!r._writableState.ended)return a(c)}}function onerror(r){if(!r||p)return;p=r;for(const i of s){i.destroy(r)}}}function echo(r){return r}function isStream(r){return!!r._readableState||!!r._writableState}function isStreamx(r){return typeof r._duplexState==="number"&&isStream(r)}function getStreamError(r,i={}){const s=r._readableState&&r._readableState.error||r._writableState&&r._writableState.error;return!i.all&&s===l?null:s}function isReadStreamx(r){return isStreamx(r)&&r.readable}function isTypedArray(r){return typeof r==="object"&&r!==null&&typeof r.byteLength==="number"}function defaultByteLength(r){return isTypedArray(r)?r.byteLength:1024}function noop(){}function abort(){this.destroy(new Error("Stream aborted."))}function isWritev(r){return r._writev!==Writable.prototype._writev&&r._writev!==Duplex.prototype._writev}r.exports={pipeline:pipeline,pipelinePromise:pipelinePromise,isStream:isStream,isStreamx:isStreamx,getStreamError:getStreamError,Stream:Stream,Writable:Writable,Readable:Readable,Duplex:Duplex,Transform:Transform,PassThrough:PassThrough}},24597:(r,i,s)=>{"use strict";var a=s(89404).Buffer;var l=a.isEncoding||function(r){r=""+r;switch(r&&r.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return true;default:return false}};function _normalizeEncoding(r){if(!r)return"utf8";var i;while(true){switch(r){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return r;default:if(i)return;r=(""+r).toLowerCase();i=true}}}function normalizeEncoding(r){var i=_normalizeEncoding(r);if(typeof i!=="string"&&(a.isEncoding===l||!l(r)))throw new Error("Unknown encoding: "+r);return i||r}i.s=StringDecoder;function StringDecoder(r){this.encoding=normalizeEncoding(r);var i;switch(this.encoding){case"utf16le":this.text=utf16Text;this.end=utf16End;i=4;break;case"utf8":this.fillLast=utf8FillLast;i=4;break;case"base64":this.text=base64Text;this.end=base64End;i=3;break;default:this.write=simpleWrite;this.end=simpleEnd;return}this.lastNeed=0;this.lastTotal=0;this.lastChar=a.allocUnsafe(i)}StringDecoder.prototype.write=function(r){if(r.length===0)return"";var i;var s;if(this.lastNeed){i=this.fillLast(r);if(i===undefined)return"";s=this.lastNeed;this.lastNeed=0}else{s=0}if(s>5===6)return 2;else if(r>>4===14)return 3;else if(r>>3===30)return 4;return r>>6===2?-1:-2}function utf8CheckIncomplete(r,i,s){var a=i.length-1;if(a=0){if(l>0)r.lastNeed=l-1;return l}if(--a=0){if(l>0)r.lastNeed=l-2;return l}if(--a=0){if(l>0){if(l===2)l=0;else r.lastNeed=l-3}return l}return 0}function utf8CheckExtraBytes(r,i,s){if((i[0]&192)!==128){r.lastNeed=0;return"�"}if(r.lastNeed>1&&i.length>1){if((i[1]&192)!==128){r.lastNeed=1;return"�"}if(r.lastNeed>2&&i.length>2){if((i[2]&192)!==128){r.lastNeed=2;return"�"}}}}function utf8FillLast(r){var i=this.lastTotal-this.lastNeed;var s=utf8CheckExtraBytes(this,r,i);if(s!==undefined)return s;if(this.lastNeed<=r.length){r.copy(this.lastChar,i,0,this.lastNeed);return this.lastChar.toString(this.encoding,0,this.lastTotal)}r.copy(this.lastChar,i,0,r.length);this.lastNeed-=r.length}function utf8Text(r,i){var s=utf8CheckIncomplete(this,r,i);if(!this.lastNeed)return r.toString("utf8",i);this.lastTotal=s;var a=r.length-(s-this.lastNeed);r.copy(this.lastChar,0,a);return r.toString("utf8",i,a)}function utf8End(r){var i=r&&r.length?this.write(r):"";if(this.lastNeed)return i+"�";return i}function utf16Text(r,i){if((r.length-i)%2===0){var s=r.toString("utf16le",i);if(s){var a=s.charCodeAt(s.length-1);if(a>=55296&&a<=56319){this.lastNeed=2;this.lastTotal=4;this.lastChar[0]=r[r.length-2];this.lastChar[1]=r[r.length-1];return s.slice(0,-1)}}return s}this.lastNeed=1;this.lastTotal=2;this.lastChar[0]=r[r.length-1];return r.toString("utf16le",i,r.length-1)}function utf16End(r){var i=r&&r.length?this.write(r):"";if(this.lastNeed){var s=this.lastTotal-this.lastNeed;return i+this.lastChar.toString("utf16le",0,s)}return i}function base64Text(r,i){var s=(r.length-i)%3;if(s===0)return r.toString("base64",i);this.lastNeed=3-s;this.lastTotal=3;if(s===1){this.lastChar[0]=r[r.length-1]}else{this.lastChar[0]=r[r.length-2];this.lastChar[1]=r[r.length-1]}return r.toString("base64",i,r.length-s)}function base64End(r){var i=r&&r.length?this.write(r):"";if(this.lastNeed)return i+this.lastChar.toString("base64",0,3-this.lastNeed);return i}function simpleWrite(r){return r.toString(this.encoding)}function simpleEnd(r){return r&&r.length?this.write(r):""}},89817:r=>{const i=/^[-+]?0x[a-fA-F0-9]+$/;const s=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;if(!Number.parseInt&&window.parseInt){Number.parseInt=window.parseInt}if(!Number.parseFloat&&window.parseFloat){Number.parseFloat=window.parseFloat}const a={hex:true,leadingZeros:true,decimalPoint:".",eNotation:true};function toNumber(r,l={}){l=Object.assign({},a,l);if(!r||typeof r!=="string")return r;let c=r.trim();if(l.skipLike!==undefined&&l.skipLike.test(c))return r;else if(l.hex&&i.test(c)){return Number.parseInt(c,16)}else{const i=s.exec(c);if(i){const s=i[1];const a=i[2];let d=trimZeros(i[3]);const p=i[4]||i[6];if(!l.leadingZeros&&a.length>0&&s&&c[2]!==".")return r;else if(!l.leadingZeros&&a.length>0&&!s&&c[1]!==".")return r;else{const i=Number(c);const A=""+i;if(A.search(/[eE]/)!==-1){if(l.eNotation)return i;else return r}else if(p){if(l.eNotation)return i;else return r}else if(c.indexOf(".")!==-1){if(A==="0"&&d==="")return i;else if(A===d)return i;else if(s&&A==="-"+d)return i;else return r}if(a){if(d===A)return i;else if(s+d===A)return i;else return r}if(c===A)return i;else if(c===s+A)return i;return r}}else{return r}}}function trimZeros(r){if(r&&r.indexOf(".")!==-1){r=r.replace(/0+$/,"");if(r===".")r="0";else if(r[0]===".")r="0"+r;else if(r[r.length-1]===".")r=r.substr(0,r.length-1);return r}return r}r.exports=toNumber},72128:(r,i,s)=>{"use strict";const a=s(22037);const l=s(76224);const c=s(7332);const{env:d}=process;let p;if(c("no-color")||c("no-colors")||c("color=false")||c("color=never")){p=0}else if(c("color")||c("colors")||c("color=true")||c("color=always")){p=1}if("FORCE_COLOR"in d){if(d.FORCE_COLOR==="true"){p=1}else if(d.FORCE_COLOR==="false"){p=0}else{p=d.FORCE_COLOR.length===0?1:Math.min(parseInt(d.FORCE_COLOR,10),3)}}function translateLevel(r){if(r===0){return false}return{level:r,hasBasic:true,has256:r>=2,has16m:r>=3}}function supportsColor(r,i){if(p===0){return 0}if(c("color=16m")||c("color=full")||c("color=truecolor")){return 3}if(c("color=256")){return 2}if(r&&!i&&p===undefined){return 0}const s=p||0;if(d.TERM==="dumb"){return s}if(process.platform==="win32"){const r=a.release().split(".");if(Number(r[0])>=10&&Number(r[2])>=10586){return Number(r[2])>=14931?3:2}return 1}if("CI"in d){if(["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some((r=>r in d))||d.CI_NAME==="codeship"){return 1}return s}if("TEAMCITY_VERSION"in d){return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(d.TEAMCITY_VERSION)?1:0}if(d.COLORTERM==="truecolor"){return 3}if("TERM_PROGRAM"in d){const r=parseInt((d.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(d.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}if(/-256(color)?$/i.test(d.TERM)){return 2}if(/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(d.TERM)){return 1}if("COLORTERM"in d){return 1}return s}function getSupportLevel(r){const i=supportsColor(r,r&&r.isTTY);return translateLevel(i)}r.exports={supportsColor:getSupportLevel,stdout:translateLevel(supportsColor(true,l.isatty(1))),stderr:translateLevel(supportsColor(true,l.isatty(2)))}},39088:(r,i,s)=>{const a={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{r.exports=s(57147).constants||a}catch{r.exports=a}},26033:(r,i,s)=>{const{Writable:a,Readable:l,getStreamError:c}=s(41516);const d=s(20164);const p=s(98103);const A=s(7646);const u=p.alloc(0);class BufferList{constructor(){this.buffered=0;this.shifted=0;this.queue=new d;this._offset=0}push(r){this.buffered+=r.byteLength;this.queue.push(r)}shiftFirst(r){return this._buffered===0?null:this._next(r)}shift(r){if(r>this.buffered)return null;if(r===0)return u;let i=this._next(r);if(r===i.byteLength)return i;const s=[i];while((r-=i.byteLength)>0){i=this._next(r);s.push(i)}return p.concat(s)}_next(r){const i=this.queue.peek();const s=i.byteLength-this._offset;if(r>=s){const r=this._offset?i.subarray(this._offset,i.byteLength):i;this.queue.shift();this._offset=0;this.buffered-=s;this.shifted+=s;return r}this.buffered-=r;this.shifted+=r;return i.subarray(this._offset,this._offset+=r)}}class Source extends l{constructor(r,i,s){super();this.header=i;this.offset=s;this._parent=r}_read(r){if(this.header.size===0){this.push(null)}if(this._parent._stream===this){this._parent._update()}r(null)}_predestroy(){this._parent.destroy(c(this))}_detach(){if(this._parent._stream===this){this._parent._stream=null;this._parent._missing=overflow(this.header.size);this._parent._update()}}_destroy(r){this._detach();r(null)}}class Extract extends a{constructor(r){super(r);if(!r)r={};this._buffer=new BufferList;this._offset=0;this._header=null;this._stream=null;this._missing=0;this._longHeader=false;this._callback=noop;this._locked=false;this._finished=false;this._pax=null;this._paxGlobal=null;this._gnuLongPath=null;this._gnuLongLinkPath=null;this._filenameEncoding=r.filenameEncoding||"utf-8";this._allowUnknownFormat=!!r.allowUnknownFormat;this._unlockBound=this._unlock.bind(this)}_unlock(r){this._locked=false;if(r){this.destroy(r);this._continueWrite(r);return}this._update()}_consumeHeader(){if(this._locked)return false;this._offset=this._buffer.shifted;try{this._header=A.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(r){this._continueWrite(r);return false}if(!this._header)return true;switch(this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":this._longHeader=true;this._missing=this._header.size;return true}this._locked=true;this._applyLongHeaders();if(this._header.size===0||this._header.type==="directory"){this.emit("entry",this._header,this._createStream(),this._unlockBound);return true}this._stream=this._createStream();this._missing=this._header.size;this.emit("entry",this._header,this._stream,this._unlockBound);return true}_applyLongHeaders(){if(this._gnuLongPath){this._header.name=this._gnuLongPath;this._gnuLongPath=null}if(this._gnuLongLinkPath){this._header.linkname=this._gnuLongLinkPath;this._gnuLongLinkPath=null}if(this._pax){if(this._pax.path)this._header.name=this._pax.path;if(this._pax.linkpath)this._header.linkname=this._pax.linkpath;if(this._pax.size)this._header.size=parseInt(this._pax.size,10);this._header.pax=this._pax;this._pax=null}}_decodeLongHeader(r){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=A.decodeLongPath(r,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=A.decodeLongPath(r,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=A.decodePax(r);break;case"pax-header":this._pax=this._paxGlobal===null?A.decodePax(r):Object.assign({},this._paxGlobal,A.decodePax(r));break}}_consumeLongHeader(){this._longHeader=false;this._missing=overflow(this._header.size);const r=this._buffer.shift(this._header.size);try{this._decodeLongHeader(r)}catch(r){this._continueWrite(r);return false}return true}_consumeStream(){const r=this._buffer.shiftFirst(this._missing);if(r===null)return false;this._missing-=r.byteLength;const i=this._stream.push(r);if(this._missing===0){this._stream.push(null);if(i)this._stream._detach();return i&&this._locked===false}return i}_createStream(){return new Source(this,this._header,this._offset)}_update(){while(this._buffer.buffered>0&&!this.destroying){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===false)return;continue}if(this._longHeader===true){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===false)return false;continue}const r=this._buffer.shiftFirst(this._missing);if(r!==null)this._missing-=r.byteLength;continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===false)return}this._continueWrite(null)}_continueWrite(r){const i=this._callback;this._callback=noop;i(r)}_write(r,i){this._callback=i;this._buffer.push(r);this._update()}_final(r){this._finished=this._missing===0&&this._buffer.buffered===0;r(this._finished?null:new Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(r){if(this._stream)this._stream.destroy(c(this));r(null)}[Symbol.asyncIterator](){let r=null;let i=null;let s=null;let a=null;let l=null;const c=this;this.on("entry",onentry);this.on("error",(i=>{r=i}));this.on("close",onclose);return{[Symbol.asyncIterator](){return this},next(){return new Promise(onnext)},return(){return destroy(null)},throw(r){return destroy(r)}};function consumeCallback(r){if(!l)return;const i=l;l=null;i(r)}function onnext(l,d){if(r){return d(r)}if(a){l({value:a,done:false});a=null;return}i=l;s=d;consumeCallback(null);if(c._finished&&i){i({value:undefined,done:true});i=s=null}}function onentry(r,c,d){l=d;c.on("error",noop);if(i){i({value:c,done:false});i=s=null}else{a=c}}function onclose(){consumeCallback(r);if(!i)return;if(r)s(r);else i({value:undefined,done:true});i=s=null}function destroy(r){c.destroy(r);consumeCallback(r);return new Promise(((i,s)=>{if(c.destroyed)return i({value:undefined,done:true});c.once("close",(function(){if(r)s(r);else i({value:undefined,done:true})}))}))}}}r.exports=function extract(r){return new Extract(r)};function noop(){}function overflow(r){r&=511;return r&&512-r}},7646:(r,i,s)=>{const a=s(98103);const l="0000000000000000000";const c="7777777777777777777";const d="0".charCodeAt(0);const p=a.from([117,115,116,97,114,0]);const A=a.from([d,d]);const u=a.from([117,115,116,97,114,32]);const h=a.from([32,0]);const g=4095;const y=257;const b=263;i.decodeLongPath=function decodeLongPath(r,i){return decodeStr(r,0,r.length,i)};i.encodePax=function encodePax(r){let i="";if(r.name)i+=addLength(" path="+r.name+"\n");if(r.linkname)i+=addLength(" linkpath="+r.linkname+"\n");const s=r.pax;if(s){for(const r in s){i+=addLength(" "+r+"="+s[r]+"\n")}}return a.from(i)};i.decodePax=function decodePax(r){const i={};while(r.length){let s=0;while(s100){const r=s.indexOf("/");if(r===-1)return null;l+=l?"/"+s.slice(0,r):s.slice(0,r);s=s.slice(r+1)}if(a.byteLength(s)>100||a.byteLength(l)>155)return null;if(r.linkname&&a.byteLength(r.linkname)>100)return null;a.write(i,s);a.write(i,encodeOct(r.mode&g,6),100);a.write(i,encodeOct(r.uid,6),108);a.write(i,encodeOct(r.gid,6),116);encodeSize(r.size,i,124);a.write(i,encodeOct(r.mtime.getTime()/1e3|0,11),136);i[156]=d+toTypeflag(r.type);if(r.linkname)a.write(i,r.linkname,157);a.copy(p,i,y);a.copy(A,i,b);if(r.uname)a.write(i,r.uname,265);if(r.gname)a.write(i,r.gname,297);a.write(i,encodeOct(r.devmajor||0,6),329);a.write(i,encodeOct(r.devminor||0,6),337);if(l)a.write(i,l,345);a.write(i,encodeOct(cksum(i),6),148);return i};i.decode=function decode(r,i,s){let a=r[156]===0?0:r[156]-d;let l=decodeStr(r,0,100,i);const c=decodeOct(r,100,8);const p=decodeOct(r,108,8);const A=decodeOct(r,116,8);const u=decodeOct(r,124,12);const h=decodeOct(r,136,12);const g=toType(a);const y=r[157]===0?null:decodeStr(r,157,100,i);const b=decodeStr(r,265,32);const C=decodeStr(r,297,32);const B=decodeOct(r,329,8);const I=decodeOct(r,337,8);const w=cksum(r);if(w===8*32)return null;if(w!==decodeOct(r,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(isUSTAR(r)){if(r[345])l=decodeStr(r,345,155,i)+"/"+l}else if(isGNU(r)){}else{if(!s){throw new Error("Invalid tar header: unknown format.")}}if(a===0&&l&&l[l.length-1]==="/")a=5;return{name:l,mode:c,uid:p,gid:A,size:u,mtime:new Date(1e3*h),type:g,linkname:y,uname:b,gname:C,devmajor:B,devminor:I,pax:null}};function isUSTAR(r){return a.equals(p,r.subarray(y,y+6))}function isGNU(r){return a.equals(u,r.subarray(y,y+6))&&a.equals(h,r.subarray(b,b+2))}function clamp(r,i,s){if(typeof r!=="number")return s;r=~~r;if(r>=i)return i;if(r>=0)return r;r+=i;if(r>=0)return r;return 0}function toType(r){switch(r){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function toTypeflag(r){switch(r){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function indexOf(r,i,s,a){for(;si)return c.slice(0,i)+" ";return l.slice(0,i-r.length)+r+" "}function encodeSizeBin(r,i,s){i[s]=128;for(let a=11;a>0;a--){i[s+a]=r&255;r=Math.floor(r/256)}}function encodeSize(r,i,s){if(r.toString(8).length>11){encodeSizeBin(r,i,s)}else{a.write(i,encodeOct(r,11),s)}}function parse256(r){let i;if(r[0]===128)i=true;else if(r[0]===255)i=false;else return null;const s=[];let a;for(a=r.length-1;a>0;a--){const l=r[a];if(i)s.push(l);else s.push(255-l)}let l=0;const c=s.length;for(a=0;a=Math.pow(10,s))s++;return i+s+r}},63318:(r,i,s)=>{i.extract=s(26033);i.pack=s(85614)},85614:(r,i,s)=>{const{Readable:a,Writable:l,getStreamError:c}=s(41516);const d=s(98103);const p=s(39088);const A=s(7646);const u=493;const h=420;const g=d.alloc(1024);class Sink extends l{constructor(r,i,s){super({mapWritable:mapWritable,eagerOpen:true});this.written=0;this.header=i;this._callback=s;this._linkname=null;this._isLinkname=i.type==="symlink"&&!i.linkname;this._isVoid=i.type!=="file"&&i.type!=="contiguous-file";this._finished=false;this._pack=r;this._openCallback=null;if(this._pack._stream===null)this._pack._stream=this;else this._pack._pending.push(this)}_open(r){this._openCallback=r;if(this._pack._stream===this)this._continueOpen()}_continuePack(r){if(this._callback===null)return;const i=this._callback;this._callback=null;i(r)}_continueOpen(){if(this._pack._stream===null)this._pack._stream=this;const r=this._openCallback;this._openCallback=null;if(r===null)return;if(this._pack.destroying)return r(new Error("pack stream destroyed"));if(this._pack._finalized)return r(new Error("pack stream is already finalized"));this._pack._stream=this;if(!this._isLinkname){this._pack._encode(this.header)}if(this._isVoid){this._finish();this._continuePack(null)}r(null)}_write(r,i){if(this._isLinkname){this._linkname=this._linkname?d.concat([this._linkname,r]):r;return i(null)}if(this._isVoid){if(r.byteLength>0){return i(new Error("No body allowed for this entry"))}return i()}this.written+=r.byteLength;if(this._pack.push(r))return i();this._pack._drain=i}_finish(){if(this._finished)return;this._finished=true;if(this._isLinkname){this.header.linkname=this._linkname?d.toString(this._linkname,"utf-8"):"";this._pack._encode(this.header)}overflow(this._pack,this.header.size);this._pack._done(this)}_final(r){if(this.written!==this.header.size){return r(new Error("Size mismatch"))}this._finish();r(null)}_getError(){return c(this)||new Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(r){this._pack._done(this);this._continuePack(this._finished?null:this._getError());r()}}class Pack extends a{constructor(r){super(r);this._drain=noop;this._finalized=false;this._finalizing=false;this._pending=[];this._stream=null}entry(r,i,s){if(this._finalized||this.destroying)throw new Error("already finalized or destroyed");if(typeof i==="function"){s=i;i=null}if(!s)s=noop;if(!r.size||r.type==="symlink")r.size=0;if(!r.type)r.type=modeToType(r.mode);if(!r.mode)r.mode=r.type==="directory"?u:h;if(!r.uid)r.uid=0;if(!r.gid)r.gid=0;if(!r.mtime)r.mtime=new Date;if(typeof i==="string")i=d.from(i);const a=new Sink(this,r,s);if(d.isBuffer(i)){r.size=i.byteLength;a.write(i);a.end();return a}if(a._isVoid){return a}return a}finalize(){if(this._stream||this._pending.length>0){this._finalizing=true;return}if(this._finalized)return;this._finalized=true;this.push(g);this.push(null)}_done(r){if(r!==this._stream)return;this._stream=null;if(this._finalizing)this.finalize();if(this._pending.length)this._pending.shift()._continueOpen()}_encode(r){if(!r.pax){const i=A.encode(r);if(i){this.push(i);return}}this._encodePax(r)}_encodePax(r){const i=A.encodePax({name:r.name,linkname:r.linkname,pax:r.pax});const s={name:"PaxHeader",mode:r.mode,uid:r.uid,gid:r.gid,size:i.byteLength,mtime:r.mtime,type:"pax-header",linkname:r.linkname&&"PaxHeader",uname:r.uname,gname:r.gname,devmajor:r.devmajor,devminor:r.devminor};this.push(A.encode(s));this.push(i);overflow(this,i.byteLength);s.size=r.size;s.type=r.type;this.push(A.encode(s))}_doDrain(){const r=this._drain;this._drain=noop;r()}_predestroy(){const r=c(this);if(this._stream)this._stream.destroy(r);while(this._pending.length){const i=this._pending.shift();i.destroy(r);i._continueOpen()}this._doDrain()}_read(r){this._doDrain();r()}}r.exports=function pack(r){return new Pack(r)};function modeToType(r){switch(r&p.S_IFMT){case p.S_IFBLK:return"block-device";case p.S_IFCHR:return"character-device";case p.S_IFDIR:return"directory";case p.S_IFIFO:return"fifo";case p.S_IFLNK:return"symlink"}return"file"}function noop(){}function overflow(r,i){i&=511;if(i)r.push(g.subarray(0,512-i))}function mapWritable(r){return d.isBuffer(r)?r:d.from(r)}},41898:(r,i,s)=>{const a=s(64310);const l=s(21657);r.exports=class TextDecoder{constructor(r="utf8"){this.encoding=normalizeEncoding(r);switch(this.encoding){case"utf8":this.decoder=new l;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new a(this.encoding)}}push(r){if(typeof r==="string")return r;return this.decoder.decode(r)}write(r){return this.push(r)}end(r){let i="";if(r)i=this.push(r);i+=this.decoder.flush();return i}};function normalizeEncoding(r){r=r.toLowerCase();switch(r){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return r;default:throw new Error("Unknown encoding: "+r)}}},64310:(r,i,s)=>{const a=s(98103);r.exports=class PassThroughDecoder{constructor(r){this.encoding=r}decode(r){return a.toString(r,this.encoding)}flush(){return""}}},21657:(r,i,s)=>{const a=s(98103);r.exports=class UTF8Decoder{constructor(){this.codePoint=0;this.bytesSeen=0;this.bytesNeeded=0;this.lowerBoundary=128;this.upperBoundary=191}decode(r){if(this.bytesNeeded===0){let i=true;for(let s=Math.max(0,r.byteLength-4),a=r.byteLength;s=194&&a<=223){this.bytesNeeded=1;this.codePoint=a&31}else if(a>=224&&a<=239){if(a===224)this.lowerBoundary=160;else if(a===237)this.upperBoundary=159;this.bytesNeeded=2;this.codePoint=a&15}else if(a>=240&&a<=244){if(a===240)this.lowerBoundary=144;if(a===244)this.upperBoundary=143;this.bytesNeeded=3;this.codePoint=a&7}else{i+="�"}continue}if(athis.upperBoundary){this.codePoint=0;this.bytesNeeded=0;this.bytesSeen=0;this.lowerBoundary=128;this.upperBoundary=191;i+="�";continue}this.lowerBoundary=128;this.upperBoundary=191;this.codePoint=this.codePoint<<6|a&63;this.bytesSeen++;if(this.bytesSeen!==this.bytesNeeded)continue;i+=String.fromCodePoint(this.codePoint);this.codePoint=0;this.bytesNeeded=0;this.bytesSeen=0}return i}flush(){const r=this.bytesNeeded>0?"�":"";this.codePoint=0;this.bytesNeeded=0;this.bytesSeen=0;this.lowerBoundary=128;this.upperBoundary=191;return r}}},18339:(r,i,s)=>{"use strict";var a=s(85477);var l=s(64524);var c={TRANSITIONAL:0,NONTRANSITIONAL:1};function normalize(r){return r.split("\0").map((function(r){return r.normalize("NFC")})).join("\0")}function findStatus(r){var i=0;var s=l.length-1;while(i<=s){var a=Math.floor((i+s)/2);var c=l[a];if(c[0][0]<=r&&c[0][1]>=r){return c}else if(c[0][0]>r){s=a-1}else{i=a+1}}return null}var d=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;function countSymbols(r){return r.replace(d,"_").length}function mapChars(r,i,s){var a=false;var l="";var d=countSymbols(r);for(var p=0;p253||p.length===0){c.error=true}for(var A=0;A63||d.length===0){c.error=true;break}}}if(c.error)return null;return d.join(".")};r.exports.toUnicode=function(r,i){var s=processing(r,i,c.NONTRANSITIONAL);return{domain:s.string,error:s.error}};r.exports.PROCESSING_OPTIONS=c},33796:r=>{r.exports=Traverse;function Traverse(r){if(!(this instanceof Traverse))return new Traverse(r);this.value=r}Traverse.prototype.get=function(r){var i=this.value;for(var s=0;s{var i;var s;var a;var l;var c;var d;var p;var A;var u;var h;var g;var y;var b;var C;var B;var I;var w;var v;var S;var Q;var N;var R;var k;var T;var _;var x;var D;var P;var O;var L;var F;(function(i){var s=typeof global==="object"?global:typeof self==="object"?self:typeof this==="object"?this:{};if(typeof define==="function"&&define.amd){define("tslib",["exports"],(function(r){i(createExporter(s,createExporter(r)))}))}else if(true&&typeof r.exports==="object"){i(createExporter(s,createExporter(r.exports)))}else{i(createExporter(s))}function createExporter(r,i){if(r!==s){if(typeof Object.create==="function"){Object.defineProperty(r,"__esModule",{value:true})}else{r.__esModule=true}}return function(s,a){return r[s]=i?i(s,a):a}}})((function(r){var M=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var s in i)if(Object.prototype.hasOwnProperty.call(i,s))r[s]=i[s]};i=function(r,i){if(typeof i!=="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");M(r,i);function __(){this.constructor=r}r.prototype=i===null?Object.create(i):(__.prototype=i.prototype,new __)};s=Object.assign||function(r){for(var i,s=1,a=arguments.length;s=0;p--)if(d=r[p])c=(l<3?d(c):l>3?d(i,s,c):d(i,s))||c;return l>3&&c&&Object.defineProperty(i,s,c),c};c=function(r,i){return function(s,a){i(s,a,r)}};d=function(r,i,s,a,l,c){function accept(r){if(r!==void 0&&typeof r!=="function")throw new TypeError("Function expected");return r}var d=a.kind,p=d==="getter"?"get":d==="setter"?"set":"value";var A=!i&&r?a["static"]?r:r.prototype:null;var u=i||(A?Object.getOwnPropertyDescriptor(A,a.name):{});var h,g=false;for(var y=s.length-1;y>=0;y--){var b={};for(var C in a)b[C]=C==="access"?{}:a[C];for(var C in a.access)b.access[C]=a.access[C];b.addInitializer=function(r){if(g)throw new TypeError("Cannot add initializers after decoration has completed");c.push(accept(r||null))};var B=(0,s[y])(d==="accessor"?{get:u.get,set:u.set}:u[p],b);if(d==="accessor"){if(B===void 0)continue;if(B===null||typeof B!=="object")throw new TypeError("Object expected");if(h=accept(B.get))u.get=h;if(h=accept(B.set))u.set=h;if(h=accept(B.init))l.unshift(h)}else if(h=accept(B)){if(d==="field")l.unshift(h);else u[p]=h}}if(A)Object.defineProperty(A,a.name,u);g=true};p=function(r,i,s){var a=arguments.length>2;for(var l=0;l0&&c[c.length-1])&&(p[0]===6||p[0]===2)){s=0;continue}if(p[0]===3&&(!c||p[1]>c[0]&&p[1]=r.length)r=void 0;return{value:r&&r[a++],done:!r}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")};B=function(r,i){var s=typeof Symbol==="function"&&r[Symbol.iterator];if(!s)return r;var a=s.call(r),l,c=[],d;try{while((i===void 0||i-- >0)&&!(l=a.next()).done)c.push(l.value)}catch(r){d={error:r}}finally{try{if(l&&!l.done&&(s=a["return"]))s.call(a)}finally{if(d)throw d.error}}return c};I=function(){for(var r=[],i=0;i1||resume(r,i)}))};if(i)l[r]=i(l[r])}}function resume(r,i){try{step(a[r](i))}catch(r){settle(c[0][3],r)}}function step(r){r.value instanceof S?Promise.resolve(r.value.v).then(fulfill,reject):settle(c[0][2],r)}function fulfill(r){resume("next",r)}function reject(r){resume("throw",r)}function settle(r,i){if(r(i),c.shift(),c.length)resume(c[0][0],c[0][1])}};N=function(r){var i,s;return i={},verb("next"),verb("throw",(function(r){throw r})),verb("return"),i[Symbol.iterator]=function(){return this},i;function verb(a,l){i[a]=r[a]?function(i){return(s=!s)?{value:S(r[a](i)),done:false}:l?l(i):i}:l}};R=function(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r[Symbol.asyncIterator],s;return i?i.call(r):(r=typeof C==="function"?C(r):r[Symbol.iterator](),s={},verb("next"),verb("throw"),verb("return"),s[Symbol.asyncIterator]=function(){return this},s);function verb(i){s[i]=r[i]&&function(s){return new Promise((function(a,l){s=r[i](s),settle(a,l,s.done,s.value)}))}}function settle(r,i,s,a){Promise.resolve(a).then((function(i){r({value:i,done:s})}),i)}};k=function(r,i){if(Object.defineProperty){Object.defineProperty(r,"raw",{value:i})}else{r.raw=i}return r};var U=Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i};T=function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))O(i,r,s);U(i,r);return i};_=function(r){return r&&r.__esModule?r:{default:r}};x=function(r,i,s,a){if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof i==="function"?r!==i||!a:!i.has(r))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?a:s==="a"?a.call(r):a?a.value:i.get(r)};D=function(r,i,s,a,l){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!l)throw new TypeError("Private accessor was defined without a setter");if(typeof i==="function"?r!==i||!l:!i.has(r))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?l.call(r,s):l?l.value=s:i.set(r,s),s};P=function(r,i){if(i===null||typeof i!=="object"&&typeof i!=="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof r==="function"?i===r:r.has(i)};L=function(r,i,s){if(i!==null&&i!==void 0){if(typeof i!=="object"&&typeof i!=="function")throw new TypeError("Object expected.");var a,l;if(s){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");a=i[Symbol.asyncDispose]}if(a===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");a=i[Symbol.dispose];if(s)l=a}if(typeof a!=="function")throw new TypeError("Object not disposable.");if(l)a=function(){try{l.call(this)}catch(r){return Promise.reject(r)}};r.stack.push({value:i,dispose:a,async:s})}else if(s){r.stack.push({async:true})}return i};var H=typeof SuppressedError==="function"?SuppressedError:function(r,i,s){var a=new Error(s);return a.name="SuppressedError",a.error=r,a.suppressed=i,a};F=function(r){function fail(i){r.error=r.hasError?new H(i,r.error,"An error was suppressed during disposal."):i;r.hasError=true}var i,s=0;function next(){while(i=r.stack.pop()){try{if(!i.async&&s===1)return s=0,r.stack.push(i),Promise.resolve().then(next);if(i.dispose){var a=i.dispose.call(i.value);if(i.async)return s|=2,Promise.resolve(a).then(next,(function(r){fail(r);return next()}))}else s|=1}catch(r){fail(r)}}if(s===1)return r.hasError?Promise.reject(r.error):Promise.resolve();if(r.hasError)throw r.error}return next()};r("__extends",i);r("__assign",s);r("__rest",a);r("__decorate",l);r("__param",c);r("__esDecorate",d);r("__runInitializers",p);r("__propKey",A);r("__setFunctionName",u);r("__metadata",h);r("__awaiter",g);r("__generator",y);r("__exportStar",b);r("__createBinding",O);r("__values",C);r("__read",B);r("__spread",I);r("__spreadArrays",w);r("__spreadArray",v);r("__await",S);r("__asyncGenerator",Q);r("__asyncDelegator",N);r("__asyncValues",R);r("__makeTemplateObject",k);r("__importStar",T);r("__importDefault",_);r("__classPrivateFieldGet",x);r("__classPrivateFieldSet",D);r("__classPrivateFieldIn",P);r("__addDisposableResource",L);r("__disposeResources",F)}))},18672:(r,i,s)=>{r.exports=s(14983)},14983:(r,i,s)=>{"use strict";var a=s(41808);var l=s(24404);var c=s(13685);var d=s(95687);var p=s(82361);var A=s(39491);var u=s(73837);i.httpOverHttp=httpOverHttp;i.httpsOverHttp=httpsOverHttp;i.httpOverHttps=httpOverHttps;i.httpsOverHttps=httpsOverHttps;function httpOverHttp(r){var i=new TunnelingAgent(r);i.request=c.request;return i}function httpsOverHttp(r){var i=new TunnelingAgent(r);i.request=c.request;i.createSocket=createSecureSocket;i.defaultPort=443;return i}function httpOverHttps(r){var i=new TunnelingAgent(r);i.request=d.request;return i}function httpsOverHttps(r){var i=new TunnelingAgent(r);i.request=d.request;i.createSocket=createSecureSocket;i.defaultPort=443;return i}function TunnelingAgent(r){var i=this;i.options=r||{};i.proxyOptions=i.options.proxy||{};i.maxSockets=i.options.maxSockets||c.Agent.defaultMaxSockets;i.requests=[];i.sockets=[];i.on("free",(function onFree(r,s,a,l){var c=toOptions(s,a,l);for(var d=0,p=i.requests.length;d=this.maxSockets){l.requests.push(c);return}l.createSocket(c,(function(i){i.on("free",onFree);i.on("close",onCloseOrRemove);i.on("agentRemove",onCloseOrRemove);r.onSocket(i);function onFree(){l.emit("free",i,c)}function onCloseOrRemove(r){l.removeSocket(i);i.removeListener("free",onFree);i.removeListener("close",onCloseOrRemove);i.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(r,i){var s=this;var a={};s.sockets.push(a);var l=mergeOptions({},s.proxyOptions,{method:"CONNECT",path:r.host+":"+r.port,agent:false,headers:{host:r.host+":"+r.port}});if(r.localAddress){l.localAddress=r.localAddress}if(l.proxyAuth){l.headers=l.headers||{};l.headers["Proxy-Authorization"]="Basic "+new Buffer(l.proxyAuth).toString("base64")}h("making CONNECT request");var c=s.request(l);c.useChunkedEncodingByDefault=false;c.once("response",onResponse);c.once("upgrade",onUpgrade);c.once("connect",onConnect);c.once("error",onError);c.end();function onResponse(r){r.upgrade=true}function onUpgrade(r,i,s){process.nextTick((function(){onConnect(r,i,s)}))}function onConnect(l,d,p){c.removeAllListeners();d.removeAllListeners();if(l.statusCode!==200){h("tunneling socket could not be established, statusCode=%d",l.statusCode);d.destroy();var A=new Error("tunneling socket could not be established, "+"statusCode="+l.statusCode);A.code="ECONNRESET";r.request.emit("error",A);s.removeSocket(a);return}if(p.length>0){h("got illegal response body from proxy");d.destroy();var A=new Error("got illegal response body from proxy");A.code="ECONNRESET";r.request.emit("error",A);s.removeSocket(a);return}h("tunneling connection has established");s.sockets[s.sockets.indexOf(a)]=d;return i(d)}function onError(i){c.removeAllListeners();h("tunneling socket could not be established, cause=%s\n",i.message,i.stack);var l=new Error("tunneling socket could not be established, "+"cause="+i.message);l.code="ECONNRESET";r.request.emit("error",l);s.removeSocket(a)}};TunnelingAgent.prototype.removeSocket=function removeSocket(r){var i=this.sockets.indexOf(r);if(i===-1){return}this.sockets.splice(i,1);var s=this.requests.shift();if(s){this.createSocket(s,(function(r){s.request.onSocket(r)}))}};function createSecureSocket(r,i){var s=this;TunnelingAgent.prototype.createSocket.call(s,r,(function(a){var c=r.request.getHeader("host");var d=mergeOptions({},s.options,{socket:a,servername:c?c.replace(/:.*$/,""):r.host});var p=l.connect(0,d);s.sockets[s.sockets.indexOf(a)]=p;i(p)}))}function toOptions(r,i,s){if(typeof r==="string"){return{host:r,port:i,localAddress:s}}return r}function mergeOptions(r){for(var i=1,s=arguments.length;i{"use strict";Object.defineProperty(i,"__esModule",{value:true})},12918:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isValidErrorCode=i.httpStatusFromErrorCode=i.TwirpErrorCode=i.BadRouteError=i.InternalServerErrorWith=i.InternalServerError=i.RequiredArgumentError=i.InvalidArgumentError=i.NotFoundError=i.TwirpError=void 0;class TwirpError extends Error{constructor(r,i){super(i);this.code=s.Internal;this.meta={};this.code=r;this.msg=i;Object.setPrototypeOf(this,TwirpError.prototype)}withMeta(r,i){this.meta[r]=i;return this}getMeta(r){return this.meta[r]||""}withCause(r,i=false){this._originalCause=r;if(i){this.withMeta("cause",r.message)}return this}cause(){return this._originalCause}toJSON(){try{return JSON.stringify({code:this.code,msg:this.msg,meta:this.meta})}catch(r){return`{"code": "internal", "msg": "There was an error but it could not be serialized into JSON"}`}}static fromObject(r){const i=r["code"]||s.Unknown;const a=r["msg"]||"unknown";const l=new TwirpError(i,a);if(r["meta"]){Object.keys(r["meta"]).forEach((i=>{l.withMeta(i,r["meta"][i])}))}return l}}i.TwirpError=TwirpError;class NotFoundError extends TwirpError{constructor(r){super(s.NotFound,r)}}i.NotFoundError=NotFoundError;class InvalidArgumentError extends TwirpError{constructor(r,i){super(s.InvalidArgument,r+" "+i);this.withMeta("argument",r)}}i.InvalidArgumentError=InvalidArgumentError;class RequiredArgumentError extends InvalidArgumentError{constructor(r){super(r,"is required")}}i.RequiredArgumentError=RequiredArgumentError;class InternalServerError extends TwirpError{constructor(r){super(s.Internal,r)}}i.InternalServerError=InternalServerError;class InternalServerErrorWith extends InternalServerError{constructor(r){super(r.message);this.withMeta("cause",r.name);this.withCause(r)}}i.InternalServerErrorWith=InternalServerErrorWith;class BadRouteError extends TwirpError{constructor(r,i,a){super(s.BadRoute,r);this.withMeta("twirp_invalid_route",i+" "+a)}}i.BadRouteError=BadRouteError;var s;(function(r){r["Canceled"]="canceled";r["Unknown"]="unknown";r["InvalidArgument"]="invalid_argument";r["Malformed"]="malformed";r["DeadlineExceeded"]="deadline_exceeded";r["NotFound"]="not_found";r["BadRoute"]="bad_route";r["AlreadyExists"]="already_exists";r["PermissionDenied"]="permission_denied";r["Unauthenticated"]="unauthenticated";r["ResourceExhausted"]="resource_exhausted";r["FailedPrecondition"]="failed_precondition";r["Aborted"]="aborted";r["OutOfRange"]="out_of_range";r["Unimplemented"]="unimplemented";r["Internal"]="internal";r["Unavailable"]="unavailable";r["DataLoss"]="data_loss"})(s=i.TwirpErrorCode||(i.TwirpErrorCode={}));function httpStatusFromErrorCode(r){switch(r){case s.Canceled:return 408;case s.Unknown:return 500;case s.InvalidArgument:return 400;case s.Malformed:return 400;case s.DeadlineExceeded:return 408;case s.NotFound:return 404;case s.BadRoute:return 404;case s.AlreadyExists:return 409;case s.PermissionDenied:return 403;case s.Unauthenticated:return 401;case s.ResourceExhausted:return 429;case s.FailedPrecondition:return 412;case s.Aborted:return 409;case s.OutOfRange:return 400;case s.Unimplemented:return 501;case s.Internal:return 500;case s.Unavailable:return 503;case s.DataLoss:return 500;default:return 0}}i.httpStatusFromErrorCode=httpStatusFromErrorCode;function isValidErrorCode(r){return httpStatusFromErrorCode(r)!=0}i.isValidErrorCode=isValidErrorCode},45761:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};var p=this&&this.__rest||function(r,i){var s={};for(var a in r)if(Object.prototype.hasOwnProperty.call(r,a)&&i.indexOf(a)<0)s[a]=r[a];if(r!=null&&typeof Object.getOwnPropertySymbols==="function")for(var l=0,a=Object.getOwnPropertySymbols(r);l{this.rewrite(i,s,r).then((()=>a())).catch((r=>{if(r instanceof g.TwirpError){if(r.code!==g.TwirpErrorCode.NotFound){b.writeError(s,r)}else{a()}}}))}}rewrite(r,i,s="/twirp"){return d(this,void 0,void 0,(function*(){const[a,l]=this.matchRoute(r);const c=yield this.prepareTwirpBody(r,a,l);const d=`${s}/${l.packageName}.${l.serviceName}/${l.methodName}`;r.url=d;r.originalUrl=d;r.method="POST";r.headers["content-type"]="application/json";r.rawBody=Buffer.from(JSON.stringify(c));if(l.responseBodyKey){const r=i.end.bind(i);i.end=function(s){if(i.statusCode===200){r(`{ "${l.responseBodyKey}": ${s} }`)}else{r(s)}}}}))}reverseProxy(r){const i=y.NodeHttpRPC(r);return(r,s)=>d(this,void 0,void 0,(function*(){try{const[a,l]=this.matchRoute(r);const c=yield this.prepareTwirpBody(r,a,l);const d=yield i.request(`${l.packageName}.${l.serviceName}`,l.methodName,"application/json",c);s.statusCode=200;s.setHeader("content-type","application/json");let p;if(l.responseBodyKey){p=JSON.stringify({[l.responseBodyKey]:d})}else{p=JSON.stringify(d)}s.end(p)}catch(r){b.writeError(s,r)}}))}prepareTwirpBody(r,i,s){return d(this,void 0,void 0,(function*(){const a=i.params,{query_string:l}=a,c=p(a,["query_string"]);let d=Object.assign({},c);if(l&&s.bodyKey!=="*"){const r=this.parseQueryString(l);d=Object.assign(Object.assign({},r),d)}let A={};if(s.bodyKey){const i=yield h.getRequestData(r);try{const r=JSON.parse(i.toString()||"{}");if(s.bodyKey==="*"){A=r}else{A[s.bodyKey]=r}}catch(r){const i="the json request could not be decoded";throw new g.TwirpError(g.TwirpErrorCode.Malformed,i).withCause(r,true)}}return Object.assign(Object.assign({},A),d)}))}matchRoute(r){var i;const s=(i=r.method)===null||i===void 0?void 0:i.toLowerCase();if(!s){throw new g.BadRouteError(`method not allowed`,r.method||"",r.url||"")}const a=this.routes[s];for(const i of a){const s=i.matcher(r.url||"/");if(s){return[s,i]}}throw new g.NotFoundError(`url ${r.url} not found`)}parseQueryString(r){const i=A.parse(r.replace("?",""));return u.object(i)}}i.Gateway=Gateway},60439:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.isHook=i.chainHooks=void 0;function chainHooks(...r){if(r.length===0){return null}if(r.length===1){return r[0]}const i={requestReceived(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.requestReceived){continue}yield s.requestReceived(i)}}))},requestPrepared(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.requestPrepared){continue}console.warn("hook requestPrepared is deprecated and will be removed in the next release. "+"Please use responsePrepared instead.");yield s.requestPrepared(i)}}))},responsePrepared(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.responsePrepared){continue}yield s.responsePrepared(i)}}))},requestSent(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.requestSent){continue}console.warn("hook requestSent is deprecated and will be removed in the next release. "+"Please use responseSent instead.");yield s.requestSent(i)}}))},responseSent(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.responseSent){continue}yield s.responseSent(i)}}))},requestRouted(i){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.requestRouted){continue}yield s.requestRouted(i)}}))},error(i,a){return s(this,void 0,void 0,(function*(){for(const s of r){if(!s.error){continue}yield s.error(i,a)}}))}};return i}i.chainHooks=chainHooks;function isHook(r){return"requestReceived"in r||"requestPrepared"in r||"requestSent"in r||"requestRouted"in r||"responsePrepared"in r||"responseSent"in r||"error"in r}i.isHook=isHook},9801:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};var d=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.FetchRPC=i.wrapErrorResponseToTwirpError=i.NodeHttpRPC=void 0;const p=c(s(13685));const A=c(s(95687));const u=s(57310);const h=s(12918);const NodeHttpRPC=r=>({request(i,s,a,l){let c;return new Promise(((d,h)=>{const g=[];const y=a==="application/protobuf"?Buffer.from(l):JSON.stringify(l);const b=new u.URL(r.baseUrl);const C=b.protocol==="https:";if(C){c=A}else{c=p}const B=b.pathname!=="/"?b.pathname:"";const I=c.request(Object.assign(Object.assign({},r?r:{}),{method:"POST",protocol:b.protocol,host:b.hostname,port:b.port?b.port:C?443:80,path:`${B}/${i}/${s}`,headers:Object.assign(Object.assign({},r.headers?r.headers:{}),{"Content-Type":a,"Content-Length":a==="application/protobuf"?Buffer.byteLength(y):Buffer.from(y).byteLength})}),(r=>{r.on("data",(r=>g.push(r)));r.on("end",(()=>{const i=Buffer.concat(g);if(r.statusCode!=200){h(wrapErrorResponseToTwirpError(i.toString()))}else{if(a==="application/json"){d(JSON.parse(i.toString()))}else{d(i)}}}));r.on("error",(r=>{h(r)}))})).on("error",(r=>{h(r)}));I.end(y)}))}});i.NodeHttpRPC=NodeHttpRPC;function wrapErrorResponseToTwirpError(r){return h.TwirpError.fromObject(JSON.parse(r))}i.wrapErrorResponseToTwirpError=wrapErrorResponseToTwirpError;const FetchRPC=r=>({request(i,s,a,l){return d(this,void 0,void 0,(function*(){const c=new Headers(r.headers);c.set("content-type",a);const d=yield fetch(`${r.baseUrl}/${i}/${s}`,Object.assign(Object.assign({},r),{method:"POST",headers:c,body:l instanceof Uint8Array?l:JSON.stringify(l)}));if(d.status===200){if(a==="application/json"){return yield d.json()}return new Uint8Array(yield d.arrayBuffer())}throw h.TwirpError.fromObject(yield d.json())}))}});i.FetchRPC=FetchRPC},59670:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;Object.defineProperty(r,a,{enumerable:true,get:function(){return i[s]}})}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__exportStar||function(r,i){for(var s in r)if(s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s))a(i,r,s)};Object.defineProperty(i,"__esModule",{value:true});i.TwirpContentType=void 0;l(s(2290),i);l(s(50178),i);l(s(784),i);l(s(60439),i);l(s(12918),i);l(s(45761),i);l(s(9801),i);var c=s(64386);Object.defineProperty(i,"TwirpContentType",{enumerable:true,get:function(){return c.TwirpContentType}})},784:function(r,i){"use strict";var s=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.chainInterceptors=void 0;function chainInterceptors(...r){if(r.length===0){return}if(r.length===1){return r[0]}const i=r[0];return(a,l,c)=>s(this,void 0,void 0,(function*(){let s=c;for(let i=r.length-1;i>0;i--){s=(s=>(a,l)=>r[i](a,l,s))(s)}return i(a,l,s)}))}i.chainInterceptors=chainInterceptors},64386:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.parseTwirpPath=i.getRequestData=i.validateRequest=i.getContentType=i.TwirpContentType=void 0;const l=s(12918);var c;(function(r){r[r["Protobuf"]=0]="Protobuf";r[r["JSON"]=1]="JSON";r[r["Unknown"]=2]="Unknown"})(c=i.TwirpContentType||(i.TwirpContentType={}));function getContentType(r){switch(r){case"application/protobuf":return c.Protobuf;case"application/json":return c.JSON;default:return c.Unknown}}i.getContentType=getContentType;function validateRequest(r,i,s){if(i.method!=="POST"){const r=`unsupported method ${i.method} (only POST is allowed)`;throw new l.BadRouteError(r,i.method||"",i.url||"")}const a=parseTwirpPath(i.url||"");if(a.pkgService!==(r.packageName?r.packageName+".":"")+r.serviceName){const r=`no handler for path ${i.url}`;throw new l.BadRouteError(r,i.method||"",i.url||"")}if(a.prefix!==s){const r=`invalid path prefix ${a.prefix}, expected ${s}, on path ${i.url}`;throw new l.BadRouteError(r,i.method||"",i.url||"")}const d=i.headers["content-type"]||"";if(r.contentType===c.Unknown){const r=`unexpected Content-Type: ${i.headers["content-type"]}`;throw new l.BadRouteError(r,i.method||"",i.url||"")}return Object.assign(Object.assign({},a),{mimeContentType:d,contentType:r.contentType})}i.validateRequest=validateRequest;function getRequestData(r){return new Promise(((i,s)=>{const c=r;if(c.rawBody instanceof Buffer){i(c.rawBody);return}const d=[];r.on("data",(r=>d.push(r)));r.on("end",(()=>a(this,void 0,void 0,(function*(){const r=Buffer.concat(d);i(r)}))));r.on("error",(i=>{if(r.aborted){s(new l.TwirpError(l.TwirpErrorCode.DeadlineExceeded,"failed to read request: deadline exceeded"))}else{s(new l.TwirpError(l.TwirpErrorCode.Malformed,i.message).withCause(i))}}));r.on("close",(()=>{s(new l.TwirpError(l.TwirpErrorCode.Canceled,"failed to read request: context canceled"))}))}))}i.getRequestData=getRequestData;function parseTwirpPath(r){const i=r.split("/");if(i.length<2){return{pkgService:"",method:"",prefix:""}}return{method:i[i.length-1],pkgService:i[i.length-2],prefix:i.slice(0,i.length-2).join("/")}}i.parseTwirpPath=parseTwirpPath},50178:function(r,i,s){"use strict";var a=this&&this.__awaiter||function(r,i,s,a){function adopt(r){return r instanceof s?r:new s((function(i){i(r)}))}return new(s||(s=Promise))((function(s,l){function fulfilled(r){try{step(a.next(r))}catch(r){l(r)}}function rejected(r){try{step(a["throw"](r))}catch(r){l(r)}}function step(r){r.done?s(r.value):adopt(r.value).then(fulfilled,rejected)}step((a=a.apply(r,i||[])).next())}))};Object.defineProperty(i,"__esModule",{value:true});i.writeError=i.TwirpServer=void 0;const l=s(60439);const c=s(64386);const d=s(12918);class TwirpServer{constructor(r){this.pathPrefix="/twirp";this.hooks=[];this.interceptors=[];this.packageName=r.packageName;this.serviceName=r.serviceName;this.methodList=r.methodList;this.matchRoute=r.matchRoute;this.service=r.service}get prefix(){return this.pathPrefix}httpHandler(r){return(i,s)=>{if((r===null||r===void 0?void 0:r.prefix)!==undefined){this.withPrefix(r.prefix)}return this._httpHandler(i,s)}}use(...r){r.forEach((r=>{if(l.isHook(r)){this.hooks.push(r);return this}this.interceptors.push(r)}));return this}withPrefix(r){if(r===false){this.pathPrefix=""}else{this.pathPrefix=r}return this}matchingPath(){const r=this.baseURI().replace(/\./g,"\\.");return new RegExp(`${r}/(${this.methodList.join("|")})`)}baseURI(){return`${this.pathPrefix}/${this.packageName?this.packageName+".":""}${this.serviceName}`}createContext(r,i){return{packageName:this.packageName,serviceName:this.serviceName,methodName:"",contentType:c.getContentType(r.headers["content-type"]),req:r,res:i}}_httpHandler(r,i){return a(this,void 0,void 0,(function*(){const s=this.createContext(r,i);try{yield this.invokeHook("requestReceived",s);const{method:a,mimeContentType:l}=c.validateRequest(s,r,this.pathPrefix||"");const p=this.matchRoute(a,{onMatch:r=>this.invokeHook("requestRouted",r),onNotFound:()=>{const i=`no handler for path ${r.url}`;throw new d.BadRouteError(i,r.method||"",r.url||"")}});const A=yield c.getRequestData(r);const u=yield p(s,this.service,A,this.interceptors);yield Promise.all([this.invokeHook("responsePrepared",s),this.invokeHook("requestPrepared",s)]);i.statusCode=200;i.setHeader("Content-Type",l);i.end(u)}catch(r){yield this.invokeHook("error",s,mustBeTwirpError(r));if(!i.headersSent){writeError(i,r)}}finally{yield Promise.all([this.invokeHook("responseSent",s),this.invokeHook("requestSent",s)])}}))}invokeHook(r,i,s){return a(this,void 0,void 0,(function*(){if(this.hooks.length===0){return}const a=l.chainHooks(...this.hooks);const c=a===null||a===void 0?void 0:a[r];if(c){yield c(i,s||new d.InternalServerError("internal server error"))}}))}}i.TwirpServer=TwirpServer;function writeError(r,i){const s=mustBeTwirpError(i);r.setHeader("Content-Type","application/json");r.statusCode=d.httpStatusFromErrorCode(s.code);r.end(s.toJSON())}i.writeError=writeError;function mustBeTwirpError(r){if(r instanceof d.TwirpError){return r}return new d.InternalServerErrorWith(r)}},26307:(r,i,s)=>{"use strict";const a=s(37451);const l=s(17013);const c=s(95594);const d=s(95223);const p=s(26991);const A=s(80706);const u=s(85310);const{InvalidArgumentError:h}=c;const g=s(55628);const y=s(43224);const b=s(53554);const C=s(59017);const B=s(61548);const I=s(88609);const w=s(69698);const v=s(29621);const{getGlobalDispatcher:S,setGlobalDispatcher:Q}=s(40598);const N=s(4901);const R=s(10943);const k=s(17682);let T;try{s(6113);T=true}catch{T=false}Object.assign(l.prototype,g);r.exports.Dispatcher=l;r.exports.Client=a;r.exports.Pool=d;r.exports.BalancedPool=p;r.exports.Agent=A;r.exports.ProxyAgent=w;r.exports.RetryHandler=v;r.exports.DecoratorHandler=N;r.exports.RedirectHandler=R;r.exports.createRedirectInterceptor=k;r.exports.buildConnector=y;r.exports.errors=c;function makeDispatcher(r){return(i,s,a)=>{if(typeof s==="function"){a=s;s=null}if(!i||typeof i!=="string"&&typeof i!=="object"&&!(i instanceof URL)){throw new h("invalid url")}if(s!=null&&typeof s!=="object"){throw new h("invalid opts")}if(s&&s.path!=null){if(typeof s.path!=="string"){throw new h("invalid opts.path")}let r=s.path;if(!s.path.startsWith("/")){r=`/${r}`}i=new URL(u.parseOrigin(i).origin+r)}else{if(!s){s=typeof i==="object"?i:{}}i=u.parseURL(i)}const{agent:l,dispatcher:c=S()}=s;if(l){throw new h("unsupported opts.agent. Did you mean opts.client?")}return r.call(c,{...s,origin:i.origin,path:i.search?`${i.pathname}${i.search}`:i.pathname,method:s.method||(s.body?"PUT":"GET")},a)}}r.exports.setGlobalDispatcher=Q;r.exports.getGlobalDispatcher=S;if(u.nodeMajor>16||u.nodeMajor===16&&u.nodeMinor>=8){let i=null;r.exports.fetch=async function fetch(r){if(!i){i=s(82564).fetch}try{return await i(...arguments)}catch(r){if(typeof r==="object"){Error.captureStackTrace(r,this)}throw r}};r.exports.Headers=s(77613).Headers;r.exports.Response=s(89530).Response;r.exports.Request=s(87911).Request;r.exports.FormData=s(24081).FormData;r.exports.File=s(7831).File;r.exports.FileReader=s(7517).FileReader;const{setGlobalOrigin:a,getGlobalOrigin:l}=s(51227);r.exports.setGlobalOrigin=a;r.exports.getGlobalOrigin=l;const{CacheStorage:c}=s(60034);const{kConstruct:d}=s(13094);r.exports.caches=new c(d)}if(u.nodeMajor>=16){const{deleteCookie:i,getCookies:a,getSetCookies:l,setCookie:c}=s(75908);r.exports.deleteCookie=i;r.exports.getCookies=a;r.exports.getSetCookies=l;r.exports.setCookie=c;const{parseMIMEType:d,serializeAMimeType:p}=s(3464);r.exports.parseMIMEType=d;r.exports.serializeAMimeType=p}if(u.nodeMajor>=18&&T){const{WebSocket:i}=s(83257);r.exports.WebSocket=i}r.exports.request=makeDispatcher(g.request);r.exports.stream=makeDispatcher(g.stream);r.exports.pipeline=makeDispatcher(g.pipeline);r.exports.connect=makeDispatcher(g.connect);r.exports.upgrade=makeDispatcher(g.upgrade);r.exports.MockClient=b;r.exports.MockPool=B;r.exports.MockAgent=C;r.exports.mockErrors=I},80706:(r,i,s)=>{"use strict";const{InvalidArgumentError:a}=s(95594);const{kClients:l,kRunning:c,kClose:d,kDestroy:p,kDispatch:A,kInterceptors:u}=s(22405);const h=s(3522);const g=s(95223);const y=s(37451);const b=s(85310);const C=s(17682);const{WeakRef:B,FinalizationRegistry:I}=s(15575)();const w=Symbol("onConnect");const v=Symbol("onDisconnect");const S=Symbol("onConnectionError");const Q=Symbol("maxRedirections");const N=Symbol("onDrain");const R=Symbol("factory");const k=Symbol("finalizer");const T=Symbol("options");function defaultFactory(r,i){return i&&i.connections===1?new y(r,i):new g(r,i)}class Agent extends h{constructor({factory:r=defaultFactory,maxRedirections:i=0,connect:s,...c}={}){super();if(typeof r!=="function"){throw new a("factory must be a function.")}if(s!=null&&typeof s!=="function"&&typeof s!=="object"){throw new a("connect must be a function or an object")}if(!Number.isInteger(i)||i<0){throw new a("maxRedirections must be a positive number")}if(s&&typeof s!=="function"){s={...s}}this[u]=c.interceptors&&c.interceptors.Agent&&Array.isArray(c.interceptors.Agent)?c.interceptors.Agent:[C({maxRedirections:i})];this[T]={...b.deepClone(c),connect:s};this[T].interceptors=c.interceptors?{...c.interceptors}:undefined;this[Q]=i;this[R]=r;this[l]=new Map;this[k]=new I((r=>{const i=this[l].get(r);if(i!==undefined&&i.deref()===undefined){this[l].delete(r)}}));const d=this;this[N]=(r,i)=>{d.emit("drain",r,[d,...i])};this[w]=(r,i)=>{d.emit("connect",r,[d,...i])};this[v]=(r,i,s)=>{d.emit("disconnect",r,[d,...i],s)};this[S]=(r,i,s)=>{d.emit("connectionError",r,[d,...i],s)}}get[c](){let r=0;for(const i of this[l].values()){const s=i.deref();if(s){r+=s[c]}}return r}[A](r,i){let s;if(r.origin&&(typeof r.origin==="string"||r.origin instanceof URL)){s=String(r.origin)}else{throw new a("opts.origin must be a non-empty string or URL.")}const c=this[l].get(s);let d=c?c.deref():null;if(!d){d=this[R](r.origin,this[T]).on("drain",this[N]).on("connect",this[w]).on("disconnect",this[v]).on("connectionError",this[S]);this[l].set(s,new B(d));this[k].register(d,s)}return d.dispatch(r,i)}async[d](){const r=[];for(const i of this[l].values()){const s=i.deref();if(s){r.push(s.close())}}await Promise.all(r)}async[p](r){const i=[];for(const s of this[l].values()){const a=s.deref();if(a){i.push(a.destroy(r))}}await Promise.all(i)}}r.exports=Agent},55810:(r,i,s)=>{const{addAbortListener:a}=s(85310);const{RequestAbortedError:l}=s(95594);const c=Symbol("kListener");const d=Symbol("kSignal");function abort(r){if(r.abort){r.abort()}else{r.onError(new l)}}function addSignal(r,i){r[d]=null;r[c]=null;if(!i){return}if(i.aborted){abort(r);return}r[d]=i;r[c]=()=>{abort(r)};a(r[d],r[c])}function removeSignal(r){if(!r[d]){return}if("removeEventListener"in r[d]){r[d].removeEventListener("abort",r[c])}else{r[d].removeListener("abort",r[c])}r[d]=null;r[c]=null}r.exports={addSignal:addSignal,removeSignal:removeSignal}},55828:(r,i,s)=>{"use strict";const{AsyncResource:a}=s(50852);const{InvalidArgumentError:l,RequestAbortedError:c,SocketError:d}=s(95594);const p=s(85310);const{addSignal:A,removeSignal:u}=s(55810);class ConnectHandler extends a{constructor(r,i){if(!r||typeof r!=="object"){throw new l("invalid opts")}if(typeof i!=="function"){throw new l("invalid callback")}const{signal:s,opaque:a,responseHeaders:c}=r;if(s&&typeof s.on!=="function"&&typeof s.addEventListener!=="function"){throw new l("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=a||null;this.responseHeaders=c||null;this.callback=i;this.abort=null;A(this,s)}onConnect(r,i){if(!this.callback){throw new c}this.abort=r;this.context=i}onHeaders(){throw new d("bad connect",null)}onUpgrade(r,i,s){const{callback:a,opaque:l,context:c}=this;u(this);this.callback=null;let d=i;if(d!=null){d=this.responseHeaders==="raw"?p.parseRawHeaders(i):p.parseHeaders(i)}this.runInAsyncScope(a,null,null,{statusCode:r,headers:d,socket:s,opaque:l,context:c})}onError(r){const{callback:i,opaque:s}=this;u(this);if(i){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(i,null,r,{opaque:s})}))}}}function connect(r,i){if(i===undefined){return new Promise(((i,s)=>{connect.call(this,r,((r,a)=>r?s(r):i(a)))}))}try{const s=new ConnectHandler(r,i);this.dispatch({...r,method:"CONNECT"},s)}catch(s){if(typeof i!=="function"){throw s}const a=r&&r.opaque;queueMicrotask((()=>i(s,{opaque:a})))}}r.exports=connect},33121:(r,i,s)=>{"use strict";const{Readable:a,Duplex:l,PassThrough:c}=s(12781);const{InvalidArgumentError:d,InvalidReturnValueError:p,RequestAbortedError:A}=s(95594);const u=s(85310);const{AsyncResource:h}=s(50852);const{addSignal:g,removeSignal:y}=s(55810);const b=s(39491);const C=Symbol("resume");class PipelineRequest extends a{constructor(){super({autoDestroy:true});this[C]=null}_read(){const{[C]:r}=this;if(r){this[C]=null;r()}}_destroy(r,i){this._read();i(r)}}class PipelineResponse extends a{constructor(r){super({autoDestroy:true});this[C]=r}_read(){this[C]()}_destroy(r,i){if(!r&&!this._readableState.endEmitted){r=new A}i(r)}}class PipelineHandler extends h{constructor(r,i){if(!r||typeof r!=="object"){throw new d("invalid opts")}if(typeof i!=="function"){throw new d("invalid handler")}const{signal:s,method:a,opaque:c,onInfo:p,responseHeaders:h}=r;if(s&&typeof s.on!=="function"&&typeof s.addEventListener!=="function"){throw new d("signal must be an EventEmitter or EventTarget")}if(a==="CONNECT"){throw new d("invalid method")}if(p&&typeof p!=="function"){throw new d("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=c||null;this.responseHeaders=h||null;this.handler=i;this.abort=null;this.context=null;this.onInfo=p||null;this.req=(new PipelineRequest).on("error",u.nop);this.ret=new l({readableObjectMode:r.objectMode,autoDestroy:true,read:()=>{const{body:r}=this;if(r&&r.resume){r.resume()}},write:(r,i,s)=>{const{req:a}=this;if(a.push(r,i)||a._readableState.destroyed){s()}else{a[C]=s}},destroy:(r,i)=>{const{body:s,req:a,res:l,ret:c,abort:d}=this;if(!r&&!c._readableState.endEmitted){r=new A}if(d&&r){d()}u.destroy(s,r);u.destroy(a,r);u.destroy(l,r);y(this);i(r)}}).on("prefinish",(()=>{const{req:r}=this;r.push(null)}));this.res=null;g(this,s)}onConnect(r,i){const{ret:s,res:a}=this;b(!a,"pipeline cannot be retried");if(s.destroyed){throw new A}this.abort=r;this.context=i}onHeaders(r,i,s){const{opaque:a,handler:l,context:c}=this;if(r<200){if(this.onInfo){const s=this.responseHeaders==="raw"?u.parseRawHeaders(i):u.parseHeaders(i);this.onInfo({statusCode:r,headers:s})}return}this.res=new PipelineResponse(s);let d;try{this.handler=null;const s=this.responseHeaders==="raw"?u.parseRawHeaders(i):u.parseHeaders(i);d=this.runInAsyncScope(l,null,{statusCode:r,headers:s,opaque:a,body:this.res,context:c})}catch(r){this.res.on("error",u.nop);throw r}if(!d||typeof d.on!=="function"){throw new p("expected Readable")}d.on("data",(r=>{const{ret:i,body:s}=this;if(!i.push(r)&&s.pause){s.pause()}})).on("error",(r=>{const{ret:i}=this;u.destroy(i,r)})).on("end",(()=>{const{ret:r}=this;r.push(null)})).on("close",(()=>{const{ret:r}=this;if(!r._readableState.ended){u.destroy(r,new A)}}));this.body=d}onData(r){const{res:i}=this;return i.push(r)}onComplete(r){const{res:i}=this;i.push(null)}onError(r){const{ret:i}=this;this.handler=null;u.destroy(i,r)}}function pipeline(r,i){try{const s=new PipelineHandler(r,i);this.dispatch({...r,body:s.req},s);return s.ret}catch(r){return(new c).destroy(r)}}r.exports=pipeline},53256:(r,i,s)=>{"use strict";const a=s(67278);const{InvalidArgumentError:l,RequestAbortedError:c}=s(95594);const d=s(85310);const{getResolveErrorBodyCallback:p}=s(94933);const{AsyncResource:A}=s(50852);const{addSignal:u,removeSignal:h}=s(55810);class RequestHandler extends A{constructor(r,i){if(!r||typeof r!=="object"){throw new l("invalid opts")}const{signal:s,method:a,opaque:c,body:p,onInfo:A,responseHeaders:h,throwOnError:g,highWaterMark:y}=r;try{if(typeof i!=="function"){throw new l("invalid callback")}if(y&&(typeof y!=="number"||y<0)){throw new l("invalid highWaterMark")}if(s&&typeof s.on!=="function"&&typeof s.addEventListener!=="function"){throw new l("signal must be an EventEmitter or EventTarget")}if(a==="CONNECT"){throw new l("invalid method")}if(A&&typeof A!=="function"){throw new l("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(r){if(d.isStream(p)){d.destroy(p.on("error",d.nop),r)}throw r}this.responseHeaders=h||null;this.opaque=c||null;this.callback=i;this.res=null;this.abort=null;this.body=p;this.trailers={};this.context=null;this.onInfo=A||null;this.throwOnError=g;this.highWaterMark=y;if(d.isStream(p)){p.on("error",(r=>{this.onError(r)}))}u(this,s)}onConnect(r,i){if(!this.callback){throw new c}this.abort=r;this.context=i}onHeaders(r,i,s,l){const{callback:c,opaque:A,abort:u,context:h,responseHeaders:g,highWaterMark:y}=this;const b=g==="raw"?d.parseRawHeaders(i):d.parseHeaders(i);if(r<200){if(this.onInfo){this.onInfo({statusCode:r,headers:b})}return}const C=g==="raw"?d.parseHeaders(i):b;const B=C["content-type"];const I=new a({resume:s,abort:u,contentType:B,highWaterMark:y});this.callback=null;this.res=I;if(c!==null){if(this.throwOnError&&r>=400){this.runInAsyncScope(p,null,{callback:c,body:I,contentType:B,statusCode:r,statusMessage:l,headers:b})}else{this.runInAsyncScope(c,null,null,{statusCode:r,headers:b,trailers:this.trailers,opaque:A,body:I,context:h})}}}onData(r){const{res:i}=this;return i.push(r)}onComplete(r){const{res:i}=this;h(this);d.parseHeaders(r,this.trailers);i.push(null)}onError(r){const{res:i,callback:s,body:a,opaque:l}=this;h(this);if(s){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(s,null,r,{opaque:l})}))}if(i){this.res=null;queueMicrotask((()=>{d.destroy(i,r)}))}if(a){this.body=null;d.destroy(a,r)}}}function request(r,i){if(i===undefined){return new Promise(((i,s)=>{request.call(this,r,((r,a)=>r?s(r):i(a)))}))}try{this.dispatch(r,new RequestHandler(r,i))}catch(s){if(typeof i!=="function"){throw s}const a=r&&r.opaque;queueMicrotask((()=>i(s,{opaque:a})))}}r.exports=request;r.exports.RequestHandler=RequestHandler},92087:(r,i,s)=>{"use strict";const{finished:a,PassThrough:l}=s(12781);const{InvalidArgumentError:c,InvalidReturnValueError:d,RequestAbortedError:p}=s(95594);const A=s(85310);const{getResolveErrorBodyCallback:u}=s(94933);const{AsyncResource:h}=s(50852);const{addSignal:g,removeSignal:y}=s(55810);class StreamHandler extends h{constructor(r,i,s){if(!r||typeof r!=="object"){throw new c("invalid opts")}const{signal:a,method:l,opaque:d,body:p,onInfo:u,responseHeaders:h,throwOnError:y}=r;try{if(typeof s!=="function"){throw new c("invalid callback")}if(typeof i!=="function"){throw new c("invalid factory")}if(a&&typeof a.on!=="function"&&typeof a.addEventListener!=="function"){throw new c("signal must be an EventEmitter or EventTarget")}if(l==="CONNECT"){throw new c("invalid method")}if(u&&typeof u!=="function"){throw new c("invalid onInfo callback")}super("UNDICI_STREAM")}catch(r){if(A.isStream(p)){A.destroy(p.on("error",A.nop),r)}throw r}this.responseHeaders=h||null;this.opaque=d||null;this.factory=i;this.callback=s;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=p;this.onInfo=u||null;this.throwOnError=y||false;if(A.isStream(p)){p.on("error",(r=>{this.onError(r)}))}g(this,a)}onConnect(r,i){if(!this.callback){throw new p}this.abort=r;this.context=i}onHeaders(r,i,s,c){const{factory:p,opaque:h,context:g,callback:y,responseHeaders:b}=this;const C=b==="raw"?A.parseRawHeaders(i):A.parseHeaders(i);if(r<200){if(this.onInfo){this.onInfo({statusCode:r,headers:C})}return}this.factory=null;let B;if(this.throwOnError&&r>=400){const s=b==="raw"?A.parseHeaders(i):C;const a=s["content-type"];B=new l;this.callback=null;this.runInAsyncScope(u,null,{callback:y,body:B,contentType:a,statusCode:r,statusMessage:c,headers:C})}else{if(p===null){return}B=this.runInAsyncScope(p,null,{statusCode:r,headers:C,opaque:h,context:g});if(!B||typeof B.write!=="function"||typeof B.end!=="function"||typeof B.on!=="function"){throw new d("expected Writable")}a(B,{readable:false},(r=>{const{callback:i,res:s,opaque:a,trailers:l,abort:c}=this;this.res=null;if(r||!s.readable){A.destroy(s,r)}this.callback=null;this.runInAsyncScope(i,null,r||null,{opaque:a,trailers:l});if(r){c()}}))}B.on("drain",s);this.res=B;const I=B.writableNeedDrain!==undefined?B.writableNeedDrain:B._writableState&&B._writableState.needDrain;return I!==true}onData(r){const{res:i}=this;return i?i.write(r):true}onComplete(r){const{res:i}=this;y(this);if(!i){return}this.trailers=A.parseHeaders(r);i.end()}onError(r){const{res:i,callback:s,opaque:a,body:l}=this;y(this);this.factory=null;if(i){this.res=null;A.destroy(i,r)}else if(s){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(s,null,r,{opaque:a})}))}if(l){this.body=null;A.destroy(l,r)}}}function stream(r,i,s){if(s===undefined){return new Promise(((s,a)=>{stream.call(this,r,i,((r,i)=>r?a(r):s(i)))}))}try{this.dispatch(r,new StreamHandler(r,i,s))}catch(i){if(typeof s!=="function"){throw i}const a=r&&r.opaque;queueMicrotask((()=>s(i,{opaque:a})))}}r.exports=stream},2065:(r,i,s)=>{"use strict";const{InvalidArgumentError:a,RequestAbortedError:l,SocketError:c}=s(95594);const{AsyncResource:d}=s(50852);const p=s(85310);const{addSignal:A,removeSignal:u}=s(55810);const h=s(39491);class UpgradeHandler extends d{constructor(r,i){if(!r||typeof r!=="object"){throw new a("invalid opts")}if(typeof i!=="function"){throw new a("invalid callback")}const{signal:s,opaque:l,responseHeaders:c}=r;if(s&&typeof s.on!=="function"&&typeof s.addEventListener!=="function"){throw new a("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=c||null;this.opaque=l||null;this.callback=i;this.abort=null;this.context=null;A(this,s)}onConnect(r,i){if(!this.callback){throw new l}this.abort=r;this.context=null}onHeaders(){throw new c("bad upgrade",null)}onUpgrade(r,i,s){const{callback:a,opaque:l,context:c}=this;h.strictEqual(r,101);u(this);this.callback=null;const d=this.responseHeaders==="raw"?p.parseRawHeaders(i):p.parseHeaders(i);this.runInAsyncScope(a,null,null,{headers:d,socket:s,opaque:l,context:c})}onError(r){const{callback:i,opaque:s}=this;u(this);if(i){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(i,null,r,{opaque:s})}))}}}function upgrade(r,i){if(i===undefined){return new Promise(((i,s)=>{upgrade.call(this,r,((r,a)=>r?s(r):i(a)))}))}try{const s=new UpgradeHandler(r,i);this.dispatch({...r,method:r.method||"GET",upgrade:r.protocol||"Websocket"},s)}catch(s){if(typeof i!=="function"){throw s}const a=r&&r.opaque;queueMicrotask((()=>i(s,{opaque:a})))}}r.exports=upgrade},55628:(r,i,s)=>{"use strict";r.exports.request=s(53256);r.exports.stream=s(92087);r.exports.pipeline=s(33121);r.exports.upgrade=s(2065);r.exports.connect=s(55828)},67278:(r,i,s)=>{"use strict";const a=s(39491);const{Readable:l}=s(12781);const{RequestAbortedError:c,NotSupportedError:d,InvalidArgumentError:p}=s(95594);const A=s(85310);const{ReadableStreamFrom:u,toUSVString:h}=s(85310);let g;const y=Symbol("kConsume");const b=Symbol("kReading");const C=Symbol("kBody");const B=Symbol("abort");const I=Symbol("kContentType");const noop=()=>{};r.exports=class BodyReadable extends l{constructor({resume:r,abort:i,contentType:s="",highWaterMark:a=64*1024}){super({autoDestroy:true,read:r,highWaterMark:a});this._readableState.dataEmitted=false;this[B]=i;this[y]=null;this[C]=null;this[I]=s;this[b]=false}destroy(r){if(this.destroyed){return this}if(!r&&!this._readableState.endEmitted){r=new c}if(r){this[B]()}return super.destroy(r)}emit(r,...i){if(r==="data"){this._readableState.dataEmitted=true}else if(r==="error"){this._readableState.errorEmitted=true}return super.emit(r,...i)}on(r,...i){if(r==="data"||r==="readable"){this[b]=true}return super.on(r,...i)}addListener(r,...i){return this.on(r,...i)}off(r,...i){const s=super.off(r,...i);if(r==="data"||r==="readable"){this[b]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return s}removeListener(r,...i){return this.off(r,...i)}push(r){if(this[y]&&r!==null&&this.readableLength===0){consumePush(this[y],r);return this[b]?super.push(r):true}return super.push(r)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new d}get bodyUsed(){return A.isDisturbed(this)}get body(){if(!this[C]){this[C]=u(this);if(this[y]){this[C].getReader();a(this[C].locked)}}return this[C]}dump(r){let i=r&&Number.isFinite(r.limit)?r.limit:262144;const s=r&&r.signal;if(s){try{if(typeof s!=="object"||!("aborted"in s)){throw new p("signal must be an AbortSignal")}A.throwIfAborted(s)}catch(r){return Promise.reject(r)}}if(this.closed){return Promise.resolve(null)}return new Promise(((r,a)=>{const l=s?A.addAbortListener(s,(()=>{this.destroy()})):noop;this.on("close",(function(){l();if(s&&s.aborted){a(s.reason||Object.assign(new Error("The operation was aborted"),{name:"AbortError"}))}else{r(null)}})).on("error",noop).on("data",(function(r){i-=r.length;if(i<=0){this.destroy()}})).resume()}))}};function isLocked(r){return r[C]&&r[C].locked===true||r[y]}function isUnusable(r){return A.isDisturbed(r)||isLocked(r)}async function consume(r,i){if(isUnusable(r)){throw new TypeError("unusable")}a(!r[y]);return new Promise(((s,a)=>{r[y]={type:i,stream:r,resolve:s,reject:a,length:0,body:[]};r.on("error",(function(r){consumeFinish(this[y],r)})).on("close",(function(){if(this[y].body!==null){consumeFinish(this[y],new c)}}));process.nextTick(consumeStart,r[y])}))}function consumeStart(r){if(r.body===null){return}const{_readableState:i}=r.stream;for(const s of i.buffer){consumePush(r,s)}if(i.endEmitted){consumeEnd(this[y])}else{r.stream.on("end",(function(){consumeEnd(this[y])}))}r.stream.resume();while(r.stream.read()!=null){}}function consumeEnd(r){const{type:i,body:a,resolve:l,stream:c,length:d}=r;try{if(i==="text"){l(h(Buffer.concat(a)))}else if(i==="json"){l(JSON.parse(Buffer.concat(a)))}else if(i==="arrayBuffer"){const r=new Uint8Array(d);let i=0;for(const s of a){r.set(s,i);i+=s.byteLength}l(r.buffer)}else if(i==="blob"){if(!g){g=s(14300).Blob}l(new g(a,{type:c[I]}))}consumeFinish(r)}catch(r){c.destroy(r)}}function consumePush(r,i){r.length+=i.length;r.body.push(i)}function consumeFinish(r,i){if(r.body===null){return}if(i){r.reject(i)}else{r.resolve()}r.type=null;r.stream=null;r.resolve=null;r.reject=null;r.length=0;r.body=null}},94933:(r,i,s)=>{const a=s(39491);const{ResponseStatusCodeError:l}=s(95594);const{toUSVString:c}=s(85310);async function getResolveErrorBodyCallback({callback:r,body:i,contentType:s,statusCode:d,statusMessage:p,headers:A}){a(i);let u=[];let h=0;for await(const r of i){u.push(r);h+=r.length;if(h>128*1024){u=null;break}}if(d===204||!s||!u){process.nextTick(r,new l(`Response status code ${d}${p?`: ${p}`:""}`,d,A));return}try{if(s.startsWith("application/json")){const i=JSON.parse(c(Buffer.concat(u)));process.nextTick(r,new l(`Response status code ${d}${p?`: ${p}`:""}`,d,A,i));return}if(s.startsWith("text/")){const i=c(Buffer.concat(u));process.nextTick(r,new l(`Response status code ${d}${p?`: ${p}`:""}`,d,A,i));return}}catch(r){}process.nextTick(r,new l(`Response status code ${d}${p?`: ${p}`:""}`,d,A))}r.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback}},26991:(r,i,s)=>{"use strict";const{BalancedPoolMissingUpstreamError:a,InvalidArgumentError:l}=s(95594);const{PoolBase:c,kClients:d,kNeedDrain:p,kAddClient:A,kRemoveClient:u,kGetDispatcher:h}=s(76772);const g=s(95223);const{kUrl:y,kInterceptors:b}=s(22405);const{parseOrigin:C}=s(85310);const B=Symbol("factory");const I=Symbol("options");const w=Symbol("kGreatestCommonDivisor");const v=Symbol("kCurrentWeight");const S=Symbol("kIndex");const Q=Symbol("kWeight");const N=Symbol("kMaxWeightPerServer");const R=Symbol("kErrorPenalty");function getGreatestCommonDivisor(r,i){if(i===0)return r;return getGreatestCommonDivisor(i,r%i)}function defaultFactory(r,i){return new g(r,i)}class BalancedPool extends c{constructor(r=[],{factory:i=defaultFactory,...s}={}){super();this[I]=s;this[S]=-1;this[v]=0;this[N]=this[I].maxWeightPerServer||100;this[R]=this[I].errorPenalty||15;if(!Array.isArray(r)){r=[r]}if(typeof i!=="function"){throw new l("factory must be a function.")}this[b]=s.interceptors&&s.interceptors.BalancedPool&&Array.isArray(s.interceptors.BalancedPool)?s.interceptors.BalancedPool:[];this[B]=i;for(const i of r){this.addUpstream(i)}this._updateBalancedPoolStats()}addUpstream(r){const i=C(r).origin;if(this[d].find((r=>r[y].origin===i&&r.closed!==true&&r.destroyed!==true))){return this}const s=this[B](i,Object.assign({},this[I]));this[A](s);s.on("connect",(()=>{s[Q]=Math.min(this[N],s[Q]+this[R])}));s.on("connectionError",(()=>{s[Q]=Math.max(1,s[Q]-this[R]);this._updateBalancedPoolStats()}));s.on("disconnect",((...r)=>{const i=r[2];if(i&&i.code==="UND_ERR_SOCKET"){s[Q]=Math.max(1,s[Q]-this[R]);this._updateBalancedPoolStats()}}));for(const r of this[d]){r[Q]=this[N]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){this[w]=this[d].map((r=>r[Q])).reduce(getGreatestCommonDivisor,0)}removeUpstream(r){const i=C(r).origin;const s=this[d].find((r=>r[y].origin===i&&r.closed!==true&&r.destroyed!==true));if(s){this[u](s)}return this}get upstreams(){return this[d].filter((r=>r.closed!==true&&r.destroyed!==true)).map((r=>r[y].origin))}[h](){if(this[d].length===0){throw new a}const r=this[d].find((r=>!r[p]&&r.closed!==true&&r.destroyed!==true));if(!r){return}const i=this[d].map((r=>r[p])).reduce(((r,i)=>r&&i),true);if(i){return}let s=0;let l=this[d].findIndex((r=>!r[p]));while(s++this[d][l][Q]&&!r[p]){l=this[S]}if(this[S]===0){this[v]=this[v]-this[w];if(this[v]<=0){this[v]=this[N]}}if(r[Q]>=this[v]&&!r[p]){return r}}this[v]=this[d][l][Q];this[S]=l;return this[d][l]}}r.exports=BalancedPool},70174:(r,i,s)=>{"use strict";const{kConstruct:a}=s(13094);const{urlEquals:l,fieldValues:c}=s(12340);const{kEnumerableProperty:d,isDisturbed:p}=s(85310);const{kHeadersList:A}=s(22405);const{webidl:u}=s(54150);const{Response:h,cloneResponse:g}=s(89530);const{Request:y}=s(87911);const{kState:b,kHeaders:C,kGuard:B,kRealm:I}=s(42378);const{fetching:w}=s(82564);const{urlIsHttpHttpsScheme:v,createDeferredPromise:S,readAllBytes:Q}=s(52663);const N=s(39491);const{getGlobalDispatcher:R}=s(40598);class Cache{#e;constructor(){if(arguments[0]!==a){u.illegalConstructor()}this.#e=arguments[1]}async match(r,i={}){u.brandCheck(this,Cache);u.argumentLengthCheck(arguments,1,{header:"Cache.match"});r=u.converters.RequestInfo(r);i=u.converters.CacheQueryOptions(i);const s=await this.matchAll(r,i);if(s.length===0){return}return s[0]}async matchAll(r=undefined,i={}){u.brandCheck(this,Cache);if(r!==undefined)r=u.converters.RequestInfo(r);i=u.converters.CacheQueryOptions(i);let s=null;if(r!==undefined){if(r instanceof y){s=r[b];if(s.method!=="GET"&&!i.ignoreMethod){return[]}}else if(typeof r==="string"){s=new y(r)[b]}}const a=[];if(r===undefined){for(const r of this.#e){a.push(r[1])}}else{const r=this.#t(s,i);for(const i of r){a.push(i[1])}}const l=[];for(const r of a){const i=new h(r.body?.source??null);const s=i[b].body;i[b]=r;i[b].body=s;i[C][A]=r.headersList;i[C][B]="immutable";l.push(i)}return Object.freeze(l)}async add(r){u.brandCheck(this,Cache);u.argumentLengthCheck(arguments,1,{header:"Cache.add"});r=u.converters.RequestInfo(r);const i=[r];const s=this.addAll(i);return await s}async addAll(r){u.brandCheck(this,Cache);u.argumentLengthCheck(arguments,1,{header:"Cache.addAll"});r=u.converters["sequence"](r);const i=[];const s=[];for(const i of r){if(typeof i==="string"){continue}const r=i[b];if(!v(r.url)||r.method!=="GET"){throw u.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme when method is not GET."})}}const a=[];for(const l of r){const r=new y(l)[b];if(!v(r.url)){throw u.errors.exception({header:"Cache.addAll",message:"Expected http/s scheme."})}r.initiator="fetch";r.destination="subresource";s.push(r);const d=S();a.push(w({request:r,dispatcher:R(),processResponse(r){if(r.type==="error"||r.status===206||r.status<200||r.status>299){d.reject(u.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(r.headersList.contains("vary")){const i=c(r.headersList.get("vary"));for(const r of i){if(r==="*"){d.reject(u.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const r of a){r.abort()}return}}}},processResponseEndOfBody(r){if(r.aborted){d.reject(new DOMException("aborted","AbortError"));return}d.resolve(r)}}));i.push(d.promise)}const l=Promise.all(i);const d=await l;const p=[];let A=0;for(const r of d){const i={type:"put",request:s[A],response:r};p.push(i);A++}const h=S();let g=null;try{this.#r(p)}catch(r){g=r}queueMicrotask((()=>{if(g===null){h.resolve(undefined)}else{h.reject(g)}}));return h.promise}async put(r,i){u.brandCheck(this,Cache);u.argumentLengthCheck(arguments,2,{header:"Cache.put"});r=u.converters.RequestInfo(r);i=u.converters.Response(i);let s=null;if(r instanceof y){s=r[b]}else{s=new y(r)[b]}if(!v(s.url)||s.method!=="GET"){throw u.errors.exception({header:"Cache.put",message:"Expected an http/s scheme when method is not GET"})}const a=i[b];if(a.status===206){throw u.errors.exception({header:"Cache.put",message:"Got 206 status"})}if(a.headersList.contains("vary")){const r=c(a.headersList.get("vary"));for(const i of r){if(i==="*"){throw u.errors.exception({header:"Cache.put",message:"Got * vary field value"})}}}if(a.body&&(p(a.body.stream)||a.body.stream.locked)){throw u.errors.exception({header:"Cache.put",message:"Response body is locked or disturbed"})}const l=g(a);const d=S();if(a.body!=null){const r=a.body.stream;const i=r.getReader();Q(i).then(d.resolve,d.reject)}else{d.resolve(undefined)}const A=[];const h={type:"put",request:s,response:l};A.push(h);const C=await d.promise;if(l.body!=null){l.body.source=C}const B=S();let I=null;try{this.#r(A)}catch(r){I=r}queueMicrotask((()=>{if(I===null){B.resolve()}else{B.reject(I)}}));return B.promise}async delete(r,i={}){u.brandCheck(this,Cache);u.argumentLengthCheck(arguments,1,{header:"Cache.delete"});r=u.converters.RequestInfo(r);i=u.converters.CacheQueryOptions(i);let s=null;if(r instanceof y){s=r[b];if(s.method!=="GET"&&!i.ignoreMethod){return false}}else{N(typeof r==="string");s=new y(r)[b]}const a=[];const l={type:"delete",request:s,options:i};a.push(l);const c=S();let d=null;let p;try{p=this.#r(a)}catch(r){d=r}queueMicrotask((()=>{if(d===null){c.resolve(!!p?.length)}else{c.reject(d)}}));return c.promise}async keys(r=undefined,i={}){u.brandCheck(this,Cache);if(r!==undefined)r=u.converters.RequestInfo(r);i=u.converters.CacheQueryOptions(i);let s=null;if(r!==undefined){if(r instanceof y){s=r[b];if(s.method!=="GET"&&!i.ignoreMethod){return[]}}else if(typeof r==="string"){s=new y(r)[b]}}const a=S();const l=[];if(r===undefined){for(const r of this.#e){l.push(r[0])}}else{const r=this.#t(s,i);for(const i of r){l.push(i[0])}}queueMicrotask((()=>{const r=[];for(const i of l){const s=new y("https://a");s[b]=i;s[C][A]=i.headersList;s[C][B]="immutable";s[I]=i.client;r.push(s)}a.resolve(Object.freeze(r))}));return a.promise}#r(r){const i=this.#e;const s=[...i];const a=[];const l=[];try{for(const s of r){if(s.type!=="delete"&&s.type!=="put"){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(s.type==="delete"&&s.response!=null){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#t(s.request,s.options,a).length){throw new DOMException("???","InvalidStateError")}let r;if(s.type==="delete"){r=this.#t(s.request,s.options);if(r.length===0){return[]}for(const s of r){const r=i.indexOf(s);N(r!==-1);i.splice(r,1)}}else if(s.type==="put"){if(s.response==null){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const l=s.request;if(!v(l.url)){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(l.method!=="GET"){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(s.options!=null){throw u.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}r=this.#t(s.request);for(const s of r){const r=i.indexOf(s);N(r!==-1);i.splice(r,1)}i.push([s.request,s.response]);a.push([s.request,s.response])}l.push([s.request,s.response])}return l}catch(r){this.#e.length=0;this.#e=s;throw r}}#t(r,i,s){const a=[];const l=s??this.#e;for(const s of l){const[l,c]=s;if(this.#i(r,l,c,i)){a.push(s)}}return a}#i(r,i,s=null,a){const d=new URL(r.url);const p=new URL(i.url);if(a?.ignoreSearch){p.search="";d.search=""}if(!l(d,p,true)){return false}if(s==null||a?.ignoreVary||!s.headersList.contains("vary")){return true}const A=c(s.headersList.get("vary"));for(const s of A){if(s==="*"){return false}const a=i.headersList.get(s);const l=r.headersList.get(s);if(a!==l){return false}}return true}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:d,matchAll:d,add:d,addAll:d,put:d,delete:d,keys:d});const k=[{key:"ignoreSearch",converter:u.converters.boolean,defaultValue:false},{key:"ignoreMethod",converter:u.converters.boolean,defaultValue:false},{key:"ignoreVary",converter:u.converters.boolean,defaultValue:false}];u.converters.CacheQueryOptions=u.dictionaryConverter(k);u.converters.MultiCacheQueryOptions=u.dictionaryConverter([...k,{key:"cacheName",converter:u.converters.DOMString}]);u.converters.Response=u.interfaceConverter(h);u.converters["sequence"]=u.sequenceConverter(u.converters.RequestInfo);r.exports={Cache:Cache}},60034:(r,i,s)=>{"use strict";const{kConstruct:a}=s(13094);const{Cache:l}=s(70174);const{webidl:c}=s(54150);const{kEnumerableProperty:d}=s(85310);class CacheStorage{#n=new Map;constructor(){if(arguments[0]!==a){c.illegalConstructor()}}async match(r,i={}){c.brandCheck(this,CacheStorage);c.argumentLengthCheck(arguments,1,{header:"CacheStorage.match"});r=c.converters.RequestInfo(r);i=c.converters.MultiCacheQueryOptions(i);if(i.cacheName!=null){if(this.#n.has(i.cacheName)){const s=this.#n.get(i.cacheName);const c=new l(a,s);return await c.match(r,i)}}else{for(const s of this.#n.values()){const c=new l(a,s);const d=await c.match(r,i);if(d!==undefined){return d}}}}async has(r){c.brandCheck(this,CacheStorage);c.argumentLengthCheck(arguments,1,{header:"CacheStorage.has"});r=c.converters.DOMString(r);return this.#n.has(r)}async open(r){c.brandCheck(this,CacheStorage);c.argumentLengthCheck(arguments,1,{header:"CacheStorage.open"});r=c.converters.DOMString(r);if(this.#n.has(r)){const i=this.#n.get(r);return new l(a,i)}const i=[];this.#n.set(r,i);return new l(a,i)}async delete(r){c.brandCheck(this,CacheStorage);c.argumentLengthCheck(arguments,1,{header:"CacheStorage.delete"});r=c.converters.DOMString(r);return this.#n.delete(r)}async keys(){c.brandCheck(this,CacheStorage);const r=this.#n.keys();return[...r]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:d,has:d,open:d,delete:d,keys:d});r.exports={CacheStorage:CacheStorage}},13094:(r,i,s)=>{"use strict";r.exports={kConstruct:s(22405).kConstruct}},12340:(r,i,s)=>{"use strict";const a=s(39491);const{URLSerializer:l}=s(3464);const{isValidHeaderName:c}=s(52663);function urlEquals(r,i,s=false){const a=l(r,s);const c=l(i,s);return a===c}function fieldValues(r){a(r!==null);const i=[];for(let s of r.split(",")){s=s.trim();if(!s.length){continue}else if(!c(s)){continue}i.push(s)}return i}r.exports={urlEquals:urlEquals,fieldValues:fieldValues}},37451:(r,i,s)=>{"use strict";const a=s(39491);const l=s(41808);const c=s(13685);const{pipeline:d}=s(12781);const p=s(85310);const A=s(95914);const u=s(67008);const h=s(3522);const{RequestContentLengthMismatchError:g,ResponseContentLengthMismatchError:y,InvalidArgumentError:b,RequestAbortedError:C,HeadersTimeoutError:B,HeadersOverflowError:I,SocketError:w,InformationalError:v,BodyTimeoutError:S,HTTPParserError:Q,ResponseExceededMaxSizeError:N,ClientDestroyedError:R}=s(95594);const k=s(43224);const{kUrl:T,kReset:_,kServerName:x,kClient:D,kBusy:P,kParser:O,kConnect:L,kBlocking:F,kResuming:M,kRunning:U,kPending:H,kSize:q,kWriting:G,kQueue:j,kConnected:z,kConnecting:V,kNeedDrain:W,kNoRef:Y,kKeepAliveDefaultTimeout:J,kHostHeader:$,kPendingIdx:K,kRunningIdx:X,kError:Z,kPipelining:ee,kSocket:te,kKeepAliveTimeoutValue:re,kMaxHeadersSize:ie,kKeepAliveMaxTimeout:ne,kKeepAliveTimeoutThreshold:se,kHeadersTimeout:ae,kBodyTimeout:oe,kStrictContentLength:le,kConnector:ce,kMaxRedirections:de,kMaxRequests:pe,kCounter:Ae,kClose:ue,kDestroy:fe,kDispatch:he,kInterceptors:me,kLocalAddress:ge,kMaxResponseSize:ye,kHTTPConnVersion:Ee,kHost:be,kHTTP2Session:Ce,kHTTP2SessionState:Be,kHTTP2BuildRequest:Ie,kHTTP2CopyHeaders:we,kHTTP1BuildRequest:ve}=s(22405);let Se;try{Se=s(85158)}catch{Se={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:Qe,HTTP2_HEADER_METHOD:Ne,HTTP2_HEADER_PATH:Re,HTTP2_HEADER_SCHEME:ke,HTTP2_HEADER_CONTENT_LENGTH:Te,HTTP2_HEADER_EXPECT:_e,HTTP2_HEADER_STATUS:xe}}=Se;let De=false;const Pe=Buffer[Symbol.species];const Oe=Symbol("kClosedResolve");const Le={};try{const r=s(67643);Le.sendHeaders=r.channel("undici:client:sendHeaders");Le.beforeConnect=r.channel("undici:client:beforeConnect");Le.connectError=r.channel("undici:client:connectError");Le.connected=r.channel("undici:client:connected")}catch{Le.sendHeaders={hasSubscribers:false};Le.beforeConnect={hasSubscribers:false};Le.connectError={hasSubscribers:false};Le.connected={hasSubscribers:false}}class Client extends h{constructor(r,{interceptors:i,maxHeaderSize:s,headersTimeout:a,socketTimeout:d,requestTimeout:A,connectTimeout:u,bodyTimeout:h,idleTimeout:g,keepAlive:y,keepAliveTimeout:C,maxKeepAliveTimeout:B,keepAliveMaxTimeout:I,keepAliveTimeoutThreshold:w,socketPath:v,pipelining:S,tls:Q,strictContentLength:N,maxCachedSessions:R,maxRedirections:_,connect:D,maxRequestsPerClient:P,localAddress:O,maxResponseSize:L,autoSelectFamily:F,autoSelectFamilyAttemptTimeout:U,allowH2:H,maxConcurrentStreams:q}={}){super();if(y!==undefined){throw new b("unsupported keepAlive, use pipelining=0 instead")}if(d!==undefined){throw new b("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(A!==undefined){throw new b("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(g!==undefined){throw new b("unsupported idleTimeout, use keepAliveTimeout instead")}if(B!==undefined){throw new b("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(s!=null&&!Number.isFinite(s)){throw new b("invalid maxHeaderSize")}if(v!=null&&typeof v!=="string"){throw new b("invalid socketPath")}if(u!=null&&(!Number.isFinite(u)||u<0)){throw new b("invalid connectTimeout")}if(C!=null&&(!Number.isFinite(C)||C<=0)){throw new b("invalid keepAliveTimeout")}if(I!=null&&(!Number.isFinite(I)||I<=0)){throw new b("invalid keepAliveMaxTimeout")}if(w!=null&&!Number.isFinite(w)){throw new b("invalid keepAliveTimeoutThreshold")}if(a!=null&&(!Number.isInteger(a)||a<0)){throw new b("headersTimeout must be a positive integer or zero")}if(h!=null&&(!Number.isInteger(h)||h<0)){throw new b("bodyTimeout must be a positive integer or zero")}if(D!=null&&typeof D!=="function"&&typeof D!=="object"){throw new b("connect must be a function or an object")}if(_!=null&&(!Number.isInteger(_)||_<0)){throw new b("maxRedirections must be a positive number")}if(P!=null&&(!Number.isInteger(P)||P<0)){throw new b("maxRequestsPerClient must be a positive number")}if(O!=null&&(typeof O!=="string"||l.isIP(O)===0)){throw new b("localAddress must be valid string IP address")}if(L!=null&&(!Number.isInteger(L)||L<-1)){throw new b("maxResponseSize must be a positive number")}if(U!=null&&(!Number.isInteger(U)||U<-1)){throw new b("autoSelectFamilyAttemptTimeout must be a positive number")}if(H!=null&&typeof H!=="boolean"){throw new b("allowH2 must be a valid boolean value")}if(q!=null&&(typeof q!=="number"||q<1)){throw new b("maxConcurrentStreams must be a possitive integer, greater than 0")}if(typeof D!=="function"){D=k({...Q,maxCachedSessions:R,allowH2:H,socketPath:v,timeout:u,...p.nodeHasAutoSelectFamily&&F?{autoSelectFamily:F,autoSelectFamilyAttemptTimeout:U}:undefined,...D})}this[me]=i&&i.Client&&Array.isArray(i.Client)?i.Client:[Me({maxRedirections:_})];this[T]=p.parseOrigin(r);this[ce]=D;this[te]=null;this[ee]=S!=null?S:1;this[ie]=s||c.maxHeaderSize;this[J]=C==null?4e3:C;this[ne]=I==null?6e5:I;this[se]=w==null?1e3:w;this[re]=this[J];this[x]=null;this[ge]=O!=null?O:null;this[M]=0;this[W]=0;this[$]=`host: ${this[T].hostname}${this[T].port?`:${this[T].port}`:""}\r\n`;this[oe]=h!=null?h:3e5;this[ae]=a!=null?a:3e5;this[le]=N==null?true:N;this[de]=_;this[pe]=P;this[Oe]=null;this[ye]=L>-1?L:-1;this[Ee]="h1";this[Ce]=null;this[Be]=!H?null:{openStreams:0,maxConcurrentStreams:q!=null?q:100};this[be]=`${this[T].hostname}${this[T].port?`:${this[T].port}`:""}`;this[j]=[];this[X]=0;this[K]=0}get pipelining(){return this[ee]}set pipelining(r){this[ee]=r;resume(this,true)}get[H](){return this[j].length-this[K]}get[U](){return this[K]-this[X]}get[q](){return this[j].length-this[X]}get[z](){return!!this[te]&&!this[V]&&!this[te].destroyed}get[P](){const r=this[te];return r&&(r[_]||r[G]||r[F])||this[q]>=(this[ee]||1)||this[H]>0}[L](r){connect(this);this.once("connect",r)}[he](r,i){const s=r.origin||this[T].origin;const a=this[Ee]==="h2"?u[Ie](s,r,i):u[ve](s,r,i);this[j].push(a);if(this[M]){}else if(p.bodyLength(a.body)==null&&p.isIterable(a.body)){this[M]=1;process.nextTick(resume,this)}else{resume(this,true)}if(this[M]&&this[W]!==2&&this[P]){this[W]=2}return this[W]<2}async[ue](){return new Promise((r=>{if(!this[q]){r(null)}else{this[Oe]=r}}))}async[fe](r){return new Promise((i=>{const s=this[j].splice(this[K]);for(let i=0;i{if(this[Oe]){this[Oe]();this[Oe]=null}i()};if(this[Ce]!=null){p.destroy(this[Ce],r);this[Ce]=null;this[Be]=null}if(!this[te]){queueMicrotask(callback)}else{p.destroy(this[te].on("close",callback),r)}resume(this)}))}}function onHttp2SessionError(r){a(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[te][Z]=r;onError(this[D],r)}function onHttp2FrameError(r,i,s){const a=new v(`HTTP/2: "frameError" received - type ${r}, code ${i}`);if(s===0){this[te][Z]=a;onError(this[D],a)}}function onHttp2SessionEnd(){p.destroy(this,new w("other side closed"));p.destroy(this[te],new w("other side closed"))}function onHTTP2GoAway(r){const i=this[D];const s=new v(`HTTP/2: "GOAWAY" frame received with code ${r}`);i[te]=null;i[Ce]=null;if(i.destroyed){a(this[H]===0);const r=i[j].splice(i[X]);for(let i=0;i0){const r=i[j][i[X]];i[j][i[X]++]=null;errorRequest(i,r,s)}i[K]=i[X];a(i[U]===0);i.emit("disconnect",i[T],[i],s);resume(i)}const Fe=s(32925);const Me=s(17682);const Ue=Buffer.alloc(0);async function lazyllhttp(){const r=process.env.JEST_WORKER_ID?s(49323):undefined;let i;try{i=await WebAssembly.compile(Buffer.from(s(86445),"base64"))}catch(a){i=await WebAssembly.compile(Buffer.from(r||s(49323),"base64"))}return await WebAssembly.instantiate(i,{env:{wasm_on_url:(r,i,s)=>0,wasm_on_status:(r,i,s)=>{a.strictEqual(Ge.ptr,r);const l=i-Ve+je.byteOffset;return Ge.onStatus(new Pe(je.buffer,l,s))||0},wasm_on_message_begin:r=>{a.strictEqual(Ge.ptr,r);return Ge.onMessageBegin()||0},wasm_on_header_field:(r,i,s)=>{a.strictEqual(Ge.ptr,r);const l=i-Ve+je.byteOffset;return Ge.onHeaderField(new Pe(je.buffer,l,s))||0},wasm_on_header_value:(r,i,s)=>{a.strictEqual(Ge.ptr,r);const l=i-Ve+je.byteOffset;return Ge.onHeaderValue(new Pe(je.buffer,l,s))||0},wasm_on_headers_complete:(r,i,s,l)=>{a.strictEqual(Ge.ptr,r);return Ge.onHeadersComplete(i,Boolean(s),Boolean(l))||0},wasm_on_body:(r,i,s)=>{a.strictEqual(Ge.ptr,r);const l=i-Ve+je.byteOffset;return Ge.onBody(new Pe(je.buffer,l,s))||0},wasm_on_message_complete:r=>{a.strictEqual(Ge.ptr,r);return Ge.onMessageComplete()||0}}})}let He=null;let qe=lazyllhttp();qe.catch();let Ge=null;let je=null;let ze=0;let Ve=null;const We=1;const Ye=2;const Je=3;class Parser{constructor(r,i,{exports:s}){a(Number.isFinite(r[ie])&&r[ie]>0);this.llhttp=s;this.ptr=this.llhttp.llhttp_alloc(Fe.TYPE.RESPONSE);this.client=r;this.socket=i;this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.statusCode=null;this.statusText="";this.upgrade=false;this.headers=[];this.headersSize=0;this.headersMaxSize=r[ie];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=r[ye]}setTimeout(r,i){this.timeoutType=i;if(r!==this.timeoutValue){A.clearTimeout(this.timeout);if(r){this.timeout=A.setTimeout(onParserTimeout,r,this);if(this.timeout.unref){this.timeout.unref()}}else{this.timeout=null}this.timeoutValue=r}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}}resume(){if(this.socket.destroyed||!this.paused){return}a(this.ptr!=null);a(Ge==null);this.llhttp.llhttp_resume(this.ptr);a(this.timeoutType===Ye);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||Ue);this.readMore()}readMore(){while(!this.paused&&this.ptr){const r=this.socket.read();if(r===null){break}this.execute(r)}}execute(r){a(this.ptr!=null);a(Ge==null);a(!this.paused);const{socket:i,llhttp:s}=this;if(r.length>ze){if(Ve){s.free(Ve)}ze=Math.ceil(r.length/4096)*4096;Ve=s.malloc(ze)}new Uint8Array(s.memory.buffer,Ve,ze).set(r);try{let a;try{je=r;Ge=this;a=s.llhttp_execute(this.ptr,Ve,r.length)}catch(r){throw r}finally{Ge=null;je=null}const l=s.llhttp_get_error_pos(this.ptr)-Ve;if(a===Fe.ERROR.PAUSED_UPGRADE){this.onUpgrade(r.slice(l))}else if(a===Fe.ERROR.PAUSED){this.paused=true;i.unshift(r.slice(l))}else if(a!==Fe.ERROR.OK){const i=s.llhttp_get_error_reason(this.ptr);let c="";if(i){const r=new Uint8Array(s.memory.buffer,i).indexOf(0);c="Response does not match the HTTP/1.1 protocol ("+Buffer.from(s.memory.buffer,i,r).toString()+")"}throw new Q(c,Fe.ERROR[a],r.slice(l))}}catch(r){p.destroy(i,r)}}destroy(){a(this.ptr!=null);a(Ge==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;A.clearTimeout(this.timeout);this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.paused=false}onStatus(r){this.statusText=r.toString()}onMessageBegin(){const{socket:r,client:i}=this;if(r.destroyed){return-1}const s=i[j][i[X]];if(!s){return-1}}onHeaderField(r){const i=this.headers.length;if((i&1)===0){this.headers.push(r)}else{this.headers[i-1]=Buffer.concat([this.headers[i-1],r])}this.trackHeader(r.length)}onHeaderValue(r){let i=this.headers.length;if((i&1)===1){this.headers.push(r);i+=1}else{this.headers[i-1]=Buffer.concat([this.headers[i-1],r])}const s=this.headers[i-2];if(s.length===10&&s.toString().toLowerCase()==="keep-alive"){this.keepAlive+=r.toString()}else if(s.length===10&&s.toString().toLowerCase()==="connection"){this.connection+=r.toString()}else if(s.length===14&&s.toString().toLowerCase()==="content-length"){this.contentLength+=r.toString()}this.trackHeader(r.length)}trackHeader(r){this.headersSize+=r;if(this.headersSize>=this.headersMaxSize){p.destroy(this.socket,new I)}}onUpgrade(r){const{upgrade:i,client:s,socket:l,headers:c,statusCode:d}=this;a(i);const A=s[j][s[X]];a(A);a(!l.destroyed);a(l===s[te]);a(!this.paused);a(A.upgrade||A.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;a(this.headers.length%2===0);this.headers=[];this.headersSize=0;l.unshift(r);l[O].destroy();l[O]=null;l[D]=null;l[Z]=null;l.removeListener("error",onSocketError).removeListener("readable",onSocketReadable).removeListener("end",onSocketEnd).removeListener("close",onSocketClose);s[te]=null;s[j][s[X]++]=null;s.emit("disconnect",s[T],[s],new v("upgrade"));try{A.onUpgrade(d,c,l)}catch(r){p.destroy(l,r)}resume(s)}onHeadersComplete(r,i,s){const{client:l,socket:c,headers:d,statusText:A}=this;if(c.destroyed){return-1}const u=l[j][l[X]];if(!u){return-1}a(!this.upgrade);a(this.statusCode<200);if(r===100){p.destroy(c,new w("bad response",p.getSocketInfo(c)));return-1}if(i&&!u.upgrade){p.destroy(c,new w("bad upgrade",p.getSocketInfo(c)));return-1}a.strictEqual(this.timeoutType,We);this.statusCode=r;this.shouldKeepAlive=s||u.method==="HEAD"&&!c[_]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const r=u.bodyTimeout!=null?u.bodyTimeout:l[oe];this.setTimeout(r,Ye)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(u.method==="CONNECT"){a(l[U]===1);this.upgrade=true;return 2}if(i){a(l[U]===1);this.upgrade=true;return 2}a(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&l[ee]){const r=this.keepAlive?p.parseKeepAliveTimeout(this.keepAlive):null;if(r!=null){const i=Math.min(r-l[se],l[ne]);if(i<=0){c[_]=true}else{l[re]=i}}else{l[re]=l[J]}}else{c[_]=true}const h=u.onHeaders(r,d,this.resume,A)===false;if(u.aborted){return-1}if(u.method==="HEAD"){return 1}if(r<200){return 1}if(c[F]){c[F]=false;resume(l)}return h?Fe.ERROR.PAUSED:0}onBody(r){const{client:i,socket:s,statusCode:l,maxResponseSize:c}=this;if(s.destroyed){return-1}const d=i[j][i[X]];a(d);a.strictEqual(this.timeoutType,Ye);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}a(l>=200);if(c>-1&&this.bytesRead+r.length>c){p.destroy(s,new N);return-1}this.bytesRead+=r.length;if(d.onData(r)===false){return Fe.ERROR.PAUSED}}onMessageComplete(){const{client:r,socket:i,statusCode:s,upgrade:l,headers:c,contentLength:d,bytesRead:A,shouldKeepAlive:u}=this;if(i.destroyed&&(!s||u)){return-1}if(l){return}const h=r[j][r[X]];a(h);a(s>=100);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";a(this.headers.length%2===0);this.headers=[];this.headersSize=0;if(s<200){return}if(h.method!=="HEAD"&&d&&A!==parseInt(d,10)){p.destroy(i,new y);return-1}h.onComplete(c);r[j][r[X]++]=null;if(i[G]){a.strictEqual(r[U],0);p.destroy(i,new v("reset"));return Fe.ERROR.PAUSED}else if(!u){p.destroy(i,new v("reset"));return Fe.ERROR.PAUSED}else if(i[_]&&r[U]===0){p.destroy(i,new v("reset"));return Fe.ERROR.PAUSED}else if(r[ee]===1){setImmediate(resume,r)}else{resume(r)}}}function onParserTimeout(r){const{socket:i,timeoutType:s,client:l}=r;if(s===We){if(!i[G]||i.writableNeedDrain||l[U]>1){a(!r.paused,"cannot be paused while waiting for headers");p.destroy(i,new B)}}else if(s===Ye){if(!r.paused){p.destroy(i,new S)}}else if(s===Je){a(l[U]===0&&l[re]);p.destroy(i,new v("socket idle timeout"))}}function onSocketReadable(){const{[O]:r}=this;if(r){r.readMore()}}function onSocketError(r){const{[D]:i,[O]:s}=this;a(r.code!=="ERR_TLS_CERT_ALTNAME_INVALID");if(i[Ee]!=="h2"){if(r.code==="ECONNRESET"&&s.statusCode&&!s.shouldKeepAlive){s.onMessageComplete();return}}this[Z]=r;onError(this[D],r)}function onError(r,i){if(r[U]===0&&i.code!=="UND_ERR_INFO"&&i.code!=="UND_ERR_SOCKET"){a(r[K]===r[X]);const s=r[j].splice(r[X]);for(let a=0;a0&&s.code!=="UND_ERR_INFO"){const i=r[j][r[X]];r[j][r[X]++]=null;errorRequest(r,i,s)}r[K]=r[X];a(r[U]===0);r.emit("disconnect",r[T],[r],s);resume(r)}async function connect(r){a(!r[V]);a(!r[te]);let{host:i,hostname:s,protocol:c,port:d}=r[T];if(s[0]==="["){const r=s.indexOf("]");a(r!==-1);const i=s.substring(1,r);a(l.isIP(i));s=i}r[V]=true;if(Le.beforeConnect.hasSubscribers){Le.beforeConnect.publish({connectParams:{host:i,hostname:s,protocol:c,port:d,servername:r[x],localAddress:r[ge]},connector:r[ce]})}try{const l=await new Promise(((a,l)=>{r[ce]({host:i,hostname:s,protocol:c,port:d,servername:r[x],localAddress:r[ge]},((r,i)=>{if(r){l(r)}else{a(i)}}))}));if(r.destroyed){p.destroy(l.on("error",(()=>{})),new R);return}r[V]=false;a(l);const A=l.alpnProtocol==="h2";if(A){if(!De){De=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const i=Se.connect(r[T],{createConnection:()=>l,peerMaxConcurrentStreams:r[Be].maxConcurrentStreams});r[Ee]="h2";i[D]=r;i[te]=l;i.on("error",onHttp2SessionError);i.on("frameError",onHttp2FrameError);i.on("end",onHttp2SessionEnd);i.on("goaway",onHTTP2GoAway);i.on("close",onSocketClose);i.unref();r[Ce]=i;l[Ce]=i}else{if(!He){He=await qe;qe=null}l[Y]=false;l[G]=false;l[_]=false;l[F]=false;l[O]=new Parser(r,l,He)}l[Ae]=0;l[pe]=r[pe];l[D]=r;l[Z]=null;l.on("error",onSocketError).on("readable",onSocketReadable).on("end",onSocketEnd).on("close",onSocketClose);r[te]=l;if(Le.connected.hasSubscribers){Le.connected.publish({connectParams:{host:i,hostname:s,protocol:c,port:d,servername:r[x],localAddress:r[ge]},connector:r[ce],socket:l})}r.emit("connect",r[T],[r])}catch(l){if(r.destroyed){return}r[V]=false;if(Le.connectError.hasSubscribers){Le.connectError.publish({connectParams:{host:i,hostname:s,protocol:c,port:d,servername:r[x],localAddress:r[ge]},connector:r[ce],error:l})}if(l.code==="ERR_TLS_CERT_ALTNAME_INVALID"){a(r[U]===0);while(r[H]>0&&r[j][r[K]].servername===r[x]){const i=r[j][r[K]++];errorRequest(r,i,l)}}else{onError(r,l)}r.emit("connectionError",r[T],[r],l)}resume(r)}function emitDrain(r){r[W]=0;r.emit("drain",r[T],[r])}function resume(r,i){if(r[M]===2){return}r[M]=2;_resume(r,i);r[M]=0;if(r[X]>256){r[j].splice(0,r[X]);r[K]-=r[X];r[X]=0}}function _resume(r,i){while(true){if(r.destroyed){a(r[H]===0);return}if(r[Oe]&&!r[q]){r[Oe]();r[Oe]=null;return}const s=r[te];if(s&&!s.destroyed&&s.alpnProtocol!=="h2"){if(r[q]===0){if(!s[Y]&&s.unref){s.unref();s[Y]=true}}else if(s[Y]&&s.ref){s.ref();s[Y]=false}if(r[q]===0){if(s[O].timeoutType!==Je){s[O].setTimeout(r[re],Je)}}else if(r[U]>0&&s[O].statusCode<200){if(s[O].timeoutType!==We){const i=r[j][r[X]];const a=i.headersTimeout!=null?i.headersTimeout:r[ae];s[O].setTimeout(a,We)}}}if(r[P]){r[W]=2}else if(r[W]===2){if(i){r[W]=1;process.nextTick(emitDrain,r)}else{emitDrain(r)}continue}if(r[H]===0){return}if(r[U]>=(r[ee]||1)){return}const l=r[j][r[K]];if(r[T].protocol==="https:"&&r[x]!==l.servername){if(r[U]>0){return}r[x]=l.servername;if(s&&s.servername!==l.servername){p.destroy(s,new v("servername changed"));return}}if(r[V]){return}if(!s&&!r[Ce]){connect(r);return}if(s.destroyed||s[G]||s[_]||s[F]){return}if(r[U]>0&&!l.idempotent){return}if(r[U]>0&&(l.upgrade||l.method==="CONNECT")){return}if(r[U]>0&&p.bodyLength(l.body)!==0&&(p.isStream(l.body)||p.isAsyncIterable(l.body))){return}if(!l.aborted&&write(r,l)){r[K]++}else{r[j].splice(r[K],1)}}}function shouldSendContentLength(r){return r!=="GET"&&r!=="HEAD"&&r!=="OPTIONS"&&r!=="TRACE"&&r!=="CONNECT"}function write(r,i){if(r[Ee]==="h2"){writeH2(r,r[Ce],i);return}const{body:s,method:l,path:c,host:d,upgrade:A,headers:u,blocking:h,reset:y}=i;const b=l==="PUT"||l==="POST"||l==="PATCH";if(s&&typeof s.read==="function"){s.read(0)}const B=p.bodyLength(s);let I=B;if(I===null){I=i.contentLength}if(I===0&&!b){I=null}if(shouldSendContentLength(l)&&I>0&&i.contentLength!==null&&i.contentLength!==I){if(r[le]){errorRequest(r,i,new g);return false}process.emitWarning(new g)}const w=r[te];try{i.onConnect((s=>{if(i.aborted||i.completed){return}errorRequest(r,i,s||new C);p.destroy(w,new v("aborted"))}))}catch(s){errorRequest(r,i,s)}if(i.aborted){return false}if(l==="HEAD"){w[_]=true}if(A||l==="CONNECT"){w[_]=true}if(y!=null){w[_]=y}if(r[pe]&&w[Ae]++>=r[pe]){w[_]=true}if(h){w[F]=true}let S=`${l} ${c} HTTP/1.1\r\n`;if(typeof d==="string"){S+=`host: ${d}\r\n`}else{S+=r[$]}if(A){S+=`connection: upgrade\r\nupgrade: ${A}\r\n`}else if(r[ee]&&!w[_]){S+="connection: keep-alive\r\n"}else{S+="connection: close\r\n"}if(u){S+=u}if(Le.sendHeaders.hasSubscribers){Le.sendHeaders.publish({request:i,headers:S,socket:w})}if(!s||B===0){if(I===0){w.write(`${S}content-length: 0\r\n\r\n`,"latin1")}else{a(I===null,"no body must not have content length");w.write(`${S}\r\n`,"latin1")}i.onRequestSent()}else if(p.isBuffer(s)){a(I===s.byteLength,"buffer body must have content length");w.cork();w.write(`${S}content-length: ${I}\r\n\r\n`,"latin1");w.write(s);w.uncork();i.onBodySent(s);i.onRequestSent();if(!b){w[_]=true}}else if(p.isBlobLike(s)){if(typeof s.stream==="function"){writeIterable({body:s.stream(),client:r,request:i,socket:w,contentLength:I,header:S,expectsPayload:b})}else{writeBlob({body:s,client:r,request:i,socket:w,contentLength:I,header:S,expectsPayload:b})}}else if(p.isStream(s)){writeStream({body:s,client:r,request:i,socket:w,contentLength:I,header:S,expectsPayload:b})}else if(p.isIterable(s)){writeIterable({body:s,client:r,request:i,socket:w,contentLength:I,header:S,expectsPayload:b})}else{a(false)}return true}function writeH2(r,i,s){const{body:l,method:c,path:d,host:A,upgrade:h,expectContinue:y,signal:b,headers:B}=s;let I;if(typeof B==="string")I=u[we](B.trim());else I=B;if(h){errorRequest(r,s,new Error("Upgrade not supported for H2"));return false}try{s.onConnect((i=>{if(s.aborted||s.completed){return}errorRequest(r,s,i||new C)}))}catch(i){errorRequest(r,s,i)}if(s.aborted){return false}let w;const S=r[Be];I[Qe]=A||r[be];I[Ne]=c;if(c==="CONNECT"){i.ref();w=i.request(I,{endStream:false,signal:b});if(w.id&&!w.pending){s.onUpgrade(null,null,w);++S.openStreams}else{w.once("ready",(()=>{s.onUpgrade(null,null,w);++S.openStreams}))}w.once("close",(()=>{S.openStreams-=1;if(S.openStreams===0)i.unref()}));return true}I[Re]=d;I[ke]="https";const Q=c==="PUT"||c==="POST"||c==="PATCH";if(l&&typeof l.read==="function"){l.read(0)}let N=p.bodyLength(l);if(N==null){N=s.contentLength}if(N===0||!Q){N=null}if(shouldSendContentLength(c)&&N>0&&s.contentLength!=null&&s.contentLength!==N){if(r[le]){errorRequest(r,s,new g);return false}process.emitWarning(new g)}if(N!=null){a(l,"no body must not have content length");I[Te]=`${N}`}i.ref();const R=c==="GET"||c==="HEAD";if(y){I[_e]="100-continue";w=i.request(I,{endStream:R,signal:b});w.once("continue",writeBodyH2)}else{w=i.request(I,{endStream:R,signal:b});writeBodyH2()}++S.openStreams;w.once("response",(r=>{const{[xe]:i,...a}=r;if(s.onHeaders(Number(i),a,w.resume.bind(w),"")===false){w.pause()}}));w.once("end",(()=>{s.onComplete([])}));w.on("data",(r=>{if(s.onData(r)===false){w.pause()}}));w.once("close",(()=>{S.openStreams-=1;if(S.openStreams===0){i.unref()}}));w.once("error",(function(i){if(r[Ce]&&!r[Ce].destroyed&&!this.closed&&!this.destroyed){S.streams-=1;p.destroy(w,i)}}));w.once("frameError",((i,a)=>{const l=new v(`HTTP/2: "frameError" received - type ${i}, code ${a}`);errorRequest(r,s,l);if(r[Ce]&&!r[Ce].destroyed&&!this.closed&&!this.destroyed){S.streams-=1;p.destroy(w,l)}}));return true;function writeBodyH2(){if(!l){s.onRequestSent()}else if(p.isBuffer(l)){a(N===l.byteLength,"buffer body must have content length");w.cork();w.write(l);w.uncork();w.end();s.onBodySent(l);s.onRequestSent()}else if(p.isBlobLike(l)){if(typeof l.stream==="function"){writeIterable({client:r,request:s,contentLength:N,h2stream:w,expectsPayload:Q,body:l.stream(),socket:r[te],header:""})}else{writeBlob({body:l,client:r,request:s,contentLength:N,expectsPayload:Q,h2stream:w,header:"",socket:r[te]})}}else if(p.isStream(l)){writeStream({body:l,client:r,request:s,contentLength:N,expectsPayload:Q,socket:r[te],h2stream:w,header:""})}else if(p.isIterable(l)){writeIterable({body:l,client:r,request:s,contentLength:N,expectsPayload:Q,header:"",h2stream:w,socket:r[te]})}else{a(false)}}}function writeStream({h2stream:r,body:i,client:s,request:l,socket:c,contentLength:A,header:u,expectsPayload:h}){a(A!==0||s[U]===0,"stream body cannot be pipelined");if(s[Ee]==="h2"){const b=d(i,r,(s=>{if(s){p.destroy(i,s);p.destroy(r,s)}else{l.onRequestSent()}}));b.on("data",onPipeData);b.once("end",(()=>{b.removeListener("data",onPipeData);p.destroy(b)}));function onPipeData(r){l.onBodySent(r)}return}let g=false;const y=new AsyncWriter({socket:c,request:l,contentLength:A,client:s,expectsPayload:h,header:u});const onData=function(r){if(g){return}try{if(!y.write(r)&&this.pause){this.pause()}}catch(r){p.destroy(this,r)}};const onDrain=function(){if(g){return}if(i.resume){i.resume()}};const onAbort=function(){if(g){return}const r=new C;queueMicrotask((()=>onFinished(r)))};const onFinished=function(r){if(g){return}g=true;a(c.destroyed||c[G]&&s[U]<=1);c.off("drain",onDrain).off("error",onFinished);i.removeListener("data",onData).removeListener("end",onFinished).removeListener("error",onFinished).removeListener("close",onAbort);if(!r){try{y.end()}catch(i){r=i}}y.destroy(r);if(r&&(r.code!=="UND_ERR_INFO"||r.message!=="reset")){p.destroy(i,r)}else{p.destroy(i)}};i.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onAbort);if(i.resume){i.resume()}c.on("drain",onDrain).on("error",onFinished)}async function writeBlob({h2stream:r,body:i,client:s,request:l,socket:c,contentLength:d,header:A,expectsPayload:u}){a(d===i.size,"blob body must have content length");const h=s[Ee]==="h2";try{if(d!=null&&d!==i.size){throw new g}const a=Buffer.from(await i.arrayBuffer());if(h){r.cork();r.write(a);r.uncork()}else{c.cork();c.write(`${A}content-length: ${d}\r\n\r\n`,"latin1");c.write(a);c.uncork()}l.onBodySent(a);l.onRequestSent();if(!u){c[_]=true}resume(s)}catch(i){p.destroy(h?r:c,i)}}async function writeIterable({h2stream:r,body:i,client:s,request:l,socket:c,contentLength:d,header:p,expectsPayload:A}){a(d!==0||s[U]===0,"iterator body cannot be pipelined");let u=null;function onDrain(){if(u){const r=u;u=null;r()}}const waitForDrain=()=>new Promise(((r,i)=>{a(u===null);if(c[Z]){i(c[Z])}else{u=r}}));if(s[Ee]==="h2"){r.on("close",onDrain).on("drain",onDrain);try{for await(const s of i){if(c[Z]){throw c[Z]}const i=r.write(s);l.onBodySent(s);if(!i){await waitForDrain()}}}catch(i){r.destroy(i)}finally{l.onRequestSent();r.end();r.off("close",onDrain).off("drain",onDrain)}return}c.on("close",onDrain).on("drain",onDrain);const h=new AsyncWriter({socket:c,request:l,contentLength:d,client:s,expectsPayload:A,header:p});try{for await(const r of i){if(c[Z]){throw c[Z]}if(!h.write(r)){await waitForDrain()}}h.end()}catch(r){h.destroy(r)}finally{c.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({socket:r,request:i,contentLength:s,client:a,expectsPayload:l,header:c}){this.socket=r;this.request=i;this.contentLength=s;this.client=a;this.bytesWritten=0;this.expectsPayload=l;this.header=c;r[G]=true}write(r){const{socket:i,request:s,contentLength:a,client:l,bytesWritten:c,expectsPayload:d,header:p}=this;if(i[Z]){throw i[Z]}if(i.destroyed){return false}const A=Buffer.byteLength(r);if(!A){return true}if(a!==null&&c+A>a){if(l[le]){throw new g}process.emitWarning(new g)}i.cork();if(c===0){if(!d){i[_]=true}if(a===null){i.write(`${p}transfer-encoding: chunked\r\n`,"latin1")}else{i.write(`${p}content-length: ${a}\r\n\r\n`,"latin1")}}if(a===null){i.write(`\r\n${A.toString(16)}\r\n`,"latin1")}this.bytesWritten+=A;const u=i.write(r);i.uncork();s.onBodySent(r);if(!u){if(i[O].timeout&&i[O].timeoutType===We){if(i[O].timeout.refresh){i[O].timeout.refresh()}}}return u}end(){const{socket:r,contentLength:i,client:s,bytesWritten:a,expectsPayload:l,header:c,request:d}=this;d.onRequestSent();r[G]=false;if(r[Z]){throw r[Z]}if(r.destroyed){return}if(a===0){if(l){r.write(`${c}content-length: 0\r\n\r\n`,"latin1")}else{r.write(`${c}\r\n`,"latin1")}}else if(i===null){r.write("\r\n0\r\n\r\n","latin1")}if(i!==null&&a!==i){if(s[le]){throw new g}else{process.emitWarning(new g)}}if(r[O].timeout&&r[O].timeoutType===We){if(r[O].timeout.refresh){r[O].timeout.refresh()}}resume(s)}destroy(r){const{socket:i,client:s}=this;i[G]=false;if(r){a(s[U]<=1,"pipeline should only contain this request");p.destroy(i,r)}}}function errorRequest(r,i,s){try{i.onError(s);a(i.aborted)}catch(s){r.emit("error",s)}}r.exports=Client},15575:(r,i,s)=>{"use strict";const{kConnected:a,kSize:l}=s(22405);class CompatWeakRef{constructor(r){this.value=r}deref(){return this.value[a]===0&&this.value[l]===0?undefined:this.value}}class CompatFinalizer{constructor(r){this.finalizer=r}register(r,i){if(r.on){r.on("disconnect",(()=>{if(r[a]===0&&r[l]===0){this.finalizer(i)}}))}}}r.exports=function(){if(process.env.NODE_V8_COVERAGE){return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:global.WeakRef||CompatWeakRef,FinalizationRegistry:global.FinalizationRegistry||CompatFinalizer}}},95971:r=>{"use strict";const i=1024;const s=4096;r.exports={maxAttributeValueSize:i,maxNameValuePairSize:s}},75908:(r,i,s)=>{"use strict";const{parseSetCookie:a}=s(28442);const{stringify:l,getHeadersList:c}=s(92410);const{webidl:d}=s(54150);const{Headers:p}=s(77613);function getCookies(r){d.argumentLengthCheck(arguments,1,{header:"getCookies"});d.brandCheck(r,p,{strict:false});const i=r.get("cookie");const s={};if(!i){return s}for(const r of i.split(";")){const[i,...a]=r.split("=");s[i.trim()]=a.join("=")}return s}function deleteCookie(r,i,s){d.argumentLengthCheck(arguments,2,{header:"deleteCookie"});d.brandCheck(r,p,{strict:false});i=d.converters.DOMString(i);s=d.converters.DeleteCookieAttributes(s);setCookie(r,{name:i,value:"",expires:new Date(0),...s})}function getSetCookies(r){d.argumentLengthCheck(arguments,1,{header:"getSetCookies"});d.brandCheck(r,p,{strict:false});const i=c(r).cookies;if(!i){return[]}return i.map((r=>a(Array.isArray(r)?r[1]:r)))}function setCookie(r,i){d.argumentLengthCheck(arguments,2,{header:"setCookie"});d.brandCheck(r,p,{strict:false});i=d.converters.Cookie(i);const s=l(i);if(s){r.append("Set-Cookie",l(i))}}d.converters.DeleteCookieAttributes=d.dictionaryConverter([{converter:d.nullableConverter(d.converters.DOMString),key:"path",defaultValue:null},{converter:d.nullableConverter(d.converters.DOMString),key:"domain",defaultValue:null}]);d.converters.Cookie=d.dictionaryConverter([{converter:d.converters.DOMString,key:"name"},{converter:d.converters.DOMString,key:"value"},{converter:d.nullableConverter((r=>{if(typeof r==="number"){return d.converters["unsigned long long"](r)}return new Date(r)})),key:"expires",defaultValue:null},{converter:d.nullableConverter(d.converters["long long"]),key:"maxAge",defaultValue:null},{converter:d.nullableConverter(d.converters.DOMString),key:"domain",defaultValue:null},{converter:d.nullableConverter(d.converters.DOMString),key:"path",defaultValue:null},{converter:d.nullableConverter(d.converters.boolean),key:"secure",defaultValue:null},{converter:d.nullableConverter(d.converters.boolean),key:"httpOnly",defaultValue:null},{converter:d.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:d.sequenceConverter(d.converters.DOMString),key:"unparsed",defaultValue:[]}]);r.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},28442:(r,i,s)=>{"use strict";const{maxNameValuePairSize:a,maxAttributeValueSize:l}=s(95971);const{isCTLExcludingHtab:c}=s(92410);const{collectASequenceOfCodePointsFast:d}=s(3464);const p=s(39491);function parseSetCookie(r){if(c(r)){return null}let i="";let s="";let l="";let p="";if(r.includes(";")){const a={position:0};i=d(";",r,a);s=r.slice(a.position)}else{i=r}if(!i.includes("=")){p=i}else{const r={position:0};l=d("=",i,r);p=i.slice(r.position+1)}l=l.trim();p=p.trim();if(l.length+p.length>a){return null}return{name:l,value:p,...parseUnparsedAttributes(s)}}function parseUnparsedAttributes(r,i={}){if(r.length===0){return i}p(r[0]===";");r=r.slice(1);let s="";if(r.includes(";")){s=d(";",r,{position:0});r=r.slice(s.length)}else{s=r;r=""}let a="";let c="";if(s.includes("=")){const r={position:0};a=d("=",s,r);c=s.slice(r.position+1)}else{a=s}a=a.trim();c=c.trim();if(c.length>l){return parseUnparsedAttributes(r,i)}const A=a.toLowerCase();if(A==="expires"){const r=new Date(c);i.expires=r}else if(A==="max-age"){const s=c.charCodeAt(0);if((s<48||s>57)&&c[0]!=="-"){return parseUnparsedAttributes(r,i)}if(!/^\d+$/.test(c)){return parseUnparsedAttributes(r,i)}const a=Number(c);i.maxAge=a}else if(A==="domain"){let r=c;if(r[0]==="."){r=r.slice(1)}r=r.toLowerCase();i.domain=r}else if(A==="path"){let r="";if(c.length===0||c[0]!=="/"){r="/"}else{r=c}i.path=r}else if(A==="secure"){i.secure=true}else if(A==="httponly"){i.httpOnly=true}else if(A==="samesite"){let r="Default";const s=c.toLowerCase();if(s.includes("none")){r="None"}if(s.includes("strict")){r="Strict"}if(s.includes("lax")){r="Lax"}i.sameSite=r}else{i.unparsed??=[];i.unparsed.push(`${a}=${c}`)}return parseUnparsedAttributes(r,i)}r.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},92410:(r,i,s)=>{"use strict";const a=s(39491);const{kHeadersList:l}=s(22405);function isCTLExcludingHtab(r){if(r.length===0){return false}for(const i of r){const r=i.charCodeAt(0);if(r>=0||r<=8||(r>=10||r<=31)||r===127){return false}}}function validateCookieName(r){for(const i of r){const r=i.charCodeAt(0);if(r<=32||r>127||i==="("||i===")"||i===">"||i==="<"||i==="@"||i===","||i===";"||i===":"||i==="\\"||i==='"'||i==="/"||i==="["||i==="]"||i==="?"||i==="="||i==="{"||i==="}"){throw new Error("Invalid cookie name")}}}function validateCookieValue(r){for(const i of r){const r=i.charCodeAt(0);if(r<33||r===34||r===44||r===59||r===92||r>126){throw new Error("Invalid header value")}}}function validateCookiePath(r){for(const i of r){const r=i.charCodeAt(0);if(r<33||i===";"){throw new Error("Invalid cookie path")}}}function validateCookieDomain(r){if(r.startsWith("-")||r.endsWith(".")||r.endsWith("-")){throw new Error("Invalid cookie domain")}}function toIMFDate(r){if(typeof r==="number"){r=new Date(r)}const i=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const a=i[r.getUTCDay()];const l=r.getUTCDate().toString().padStart(2,"0");const c=s[r.getUTCMonth()];const d=r.getUTCFullYear();const p=r.getUTCHours().toString().padStart(2,"0");const A=r.getUTCMinutes().toString().padStart(2,"0");const u=r.getUTCSeconds().toString().padStart(2,"0");return`${a}, ${l} ${c} ${d} ${p}:${A}:${u} GMT`}function validateCookieMaxAge(r){if(r<0){throw new Error("Invalid cookie max-age")}}function stringify(r){if(r.name.length===0){return null}validateCookieName(r.name);validateCookieValue(r.value);const i=[`${r.name}=${r.value}`];if(r.name.startsWith("__Secure-")){r.secure=true}if(r.name.startsWith("__Host-")){r.secure=true;r.domain=null;r.path="/"}if(r.secure){i.push("Secure")}if(r.httpOnly){i.push("HttpOnly")}if(typeof r.maxAge==="number"){validateCookieMaxAge(r.maxAge);i.push(`Max-Age=${r.maxAge}`)}if(r.domain){validateCookieDomain(r.domain);i.push(`Domain=${r.domain}`)}if(r.path){validateCookiePath(r.path);i.push(`Path=${r.path}`)}if(r.expires&&r.expires.toString()!=="Invalid Date"){i.push(`Expires=${toIMFDate(r.expires)}`)}if(r.sameSite){i.push(`SameSite=${r.sameSite}`)}for(const s of r.unparsed){if(!s.includes("=")){throw new Error("Invalid unparsed")}const[r,...a]=s.split("=");i.push(`${r.trim()}=${a.join("=")}`)}return i.join("; ")}let c;function getHeadersList(r){if(r[l]){return r[l]}if(!c){c=Object.getOwnPropertySymbols(r).find((r=>r.description==="headers list"));a(c,"Headers cannot be parsed")}const i=r[c];a(i);return i}r.exports={isCTLExcludingHtab:isCTLExcludingHtab,stringify:stringify,getHeadersList:getHeadersList}},43224:(r,i,s)=>{"use strict";const a=s(41808);const l=s(39491);const c=s(85310);const{InvalidArgumentError:d,ConnectTimeoutError:p}=s(95594);let A;let u;if(global.FinalizationRegistry&&!process.env.NODE_V8_COVERAGE){u=class WeakSessionCache{constructor(r){this._maxCachedSessions=r;this._sessionCache=new Map;this._sessionRegistry=new global.FinalizationRegistry((r=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:r}=this._sessionCache.keys().next();this._sessionCache.delete(r)}this._sessionCache.set(r,i)}}}function buildConnector({allowH2:r,maxCachedSessions:i,socketPath:p,timeout:h,...g}){if(i!=null&&(!Number.isInteger(i)||i<0)){throw new d("maxCachedSessions must be a positive integer or zero")}const y={path:p,...g};const b=new u(i==null?100:i);h=h==null?1e4:h;r=r!=null?r:false;return function connect({hostname:i,host:d,protocol:p,port:u,servername:g,localAddress:C,httpSocket:B},I){let w;if(p==="https:"){if(!A){A=s(24404)}g=g||y.servername||c.getServerName(d)||null;const a=g||i;const p=b.get(a)||null;l(a);w=A.connect({highWaterMark:16384,...y,servername:g,session:p,localAddress:C,ALPNProtocols:r?["http/1.1","h2"]:["http/1.1"],socket:B,port:u||443,host:i});w.on("session",(function(r){b.set(a,r)}))}else{l(!B,"httpSocket can only be sent on TLS update");w=a.connect({highWaterMark:64*1024,...y,localAddress:C,port:u||80,host:i})}if(y.keepAlive==null||y.keepAlive){const r=y.keepAliveInitialDelay===undefined?6e4:y.keepAliveInitialDelay;w.setKeepAlive(true,r)}const v=setupTimeout((()=>onConnectTimeout(w)),h);w.setNoDelay(true).once(p==="https:"?"secureConnect":"connect",(function(){v();if(I){const r=I;I=null;r(null,this)}})).on("error",(function(r){v();if(I){const i=I;I=null;i(r)}}));return w}}function setupTimeout(r,i){if(!i){return()=>{}}let s=null;let a=null;const l=setTimeout((()=>{s=setImmediate((()=>{if(process.platform==="win32"){a=setImmediate((()=>r()))}else{r()}}))}),i);return()=>{clearTimeout(l);clearImmediate(s);clearImmediate(a)}}function onConnectTimeout(r){c.destroy(r,new p)}r.exports=buildConnector},31566:r=>{"use strict";const i={};const s=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let r=0;r{"use strict";class UndiciError extends Error{constructor(r){super(r);this.name="UndiciError";this.code="UND_ERR"}}class ConnectTimeoutError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,ConnectTimeoutError);this.name="ConnectTimeoutError";this.message=r||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}}class HeadersTimeoutError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,HeadersTimeoutError);this.name="HeadersTimeoutError";this.message=r||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}}class HeadersOverflowError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,HeadersOverflowError);this.name="HeadersOverflowError";this.message=r||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}}class BodyTimeoutError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,BodyTimeoutError);this.name="BodyTimeoutError";this.message=r||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}}class ResponseStatusCodeError extends UndiciError{constructor(r,i,s,a){super(r);Error.captureStackTrace(this,ResponseStatusCodeError);this.name="ResponseStatusCodeError";this.message=r||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=a;this.status=i;this.statusCode=i;this.headers=s}}class InvalidArgumentError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,InvalidArgumentError);this.name="InvalidArgumentError";this.message=r||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}}class InvalidReturnValueError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,InvalidReturnValueError);this.name="InvalidReturnValueError";this.message=r||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}}class RequestAbortedError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,RequestAbortedError);this.name="AbortError";this.message=r||"Request aborted";this.code="UND_ERR_ABORTED"}}class InformationalError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,InformationalError);this.name="InformationalError";this.message=r||"Request information";this.code="UND_ERR_INFO"}}class RequestContentLengthMismatchError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,RequestContentLengthMismatchError);this.name="RequestContentLengthMismatchError";this.message=r||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}}class ResponseContentLengthMismatchError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,ResponseContentLengthMismatchError);this.name="ResponseContentLengthMismatchError";this.message=r||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}}class ClientDestroyedError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,ClientDestroyedError);this.name="ClientDestroyedError";this.message=r||"The client is destroyed";this.code="UND_ERR_DESTROYED"}}class ClientClosedError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,ClientClosedError);this.name="ClientClosedError";this.message=r||"The client is closed";this.code="UND_ERR_CLOSED"}}class SocketError extends UndiciError{constructor(r,i){super(r);Error.captureStackTrace(this,SocketError);this.name="SocketError";this.message=r||"Socket error";this.code="UND_ERR_SOCKET";this.socket=i}}class NotSupportedError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,NotSupportedError);this.name="NotSupportedError";this.message=r||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}}class BalancedPoolMissingUpstreamError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,NotSupportedError);this.name="MissingUpstreamError";this.message=r||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}}class HTTPParserError extends Error{constructor(r,i,s){super(r);Error.captureStackTrace(this,HTTPParserError);this.name="HTTPParserError";this.code=i?`HPE_${i}`:undefined;this.data=s?s.toString():undefined}}class ResponseExceededMaxSizeError extends UndiciError{constructor(r){super(r);Error.captureStackTrace(this,ResponseExceededMaxSizeError);this.name="ResponseExceededMaxSizeError";this.message=r||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}}class RequestRetryError extends UndiciError{constructor(r,i,{headers:s,data:a}){super(r);Error.captureStackTrace(this,RequestRetryError);this.name="RequestRetryError";this.message=r||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=i;this.data=a;this.headers=s}}r.exports={HTTPParserError:HTTPParserError,UndiciError:UndiciError,HeadersTimeoutError:HeadersTimeoutError,HeadersOverflowError:HeadersOverflowError,BodyTimeoutError:BodyTimeoutError,RequestContentLengthMismatchError:RequestContentLengthMismatchError,ConnectTimeoutError:ConnectTimeoutError,ResponseStatusCodeError:ResponseStatusCodeError,InvalidArgumentError:InvalidArgumentError,InvalidReturnValueError:InvalidReturnValueError,RequestAbortedError:RequestAbortedError,ClientDestroyedError:ClientDestroyedError,ClientClosedError:ClientClosedError,InformationalError:InformationalError,SocketError:SocketError,NotSupportedError:NotSupportedError,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError:BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError,RequestRetryError:RequestRetryError}},67008:(r,i,s)=>{"use strict";const{InvalidArgumentError:a,NotSupportedError:l}=s(95594);const c=s(39491);const{kHTTP2BuildRequest:d,kHTTP2CopyHeaders:p,kHTTP1BuildRequest:A}=s(22405);const u=s(85310);const h=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/;const g=/[^\t\x20-\x7e\x80-\xff]/;const y=/[^\u0021-\u00ff]/;const b=Symbol("handler");const C={};let B;try{const r=s(67643);C.create=r.channel("undici:request:create");C.bodySent=r.channel("undici:request:bodySent");C.headers=r.channel("undici:request:headers");C.trailers=r.channel("undici:request:trailers");C.error=r.channel("undici:request:error")}catch{C.create={hasSubscribers:false};C.bodySent={hasSubscribers:false};C.headers={hasSubscribers:false};C.trailers={hasSubscribers:false};C.error={hasSubscribers:false}}class Request{constructor(r,{path:i,method:l,body:c,headers:d,query:p,idempotent:A,blocking:g,upgrade:I,headersTimeout:w,bodyTimeout:v,reset:S,throwOnError:Q,expectContinue:N},R){if(typeof i!=="string"){throw new a("path must be a string")}else if(i[0]!=="/"&&!(i.startsWith("http://")||i.startsWith("https://"))&&l!=="CONNECT"){throw new a("path must be an absolute URL or start with a slash")}else if(y.exec(i)!==null){throw new a("invalid request path")}if(typeof l!=="string"){throw new a("method must be a string")}else if(h.exec(l)===null){throw new a("invalid request method")}if(I&&typeof I!=="string"){throw new a("upgrade must be a string")}if(w!=null&&(!Number.isFinite(w)||w<0)){throw new a("invalid headersTimeout")}if(v!=null&&(!Number.isFinite(v)||v<0)){throw new a("invalid bodyTimeout")}if(S!=null&&typeof S!=="boolean"){throw new a("invalid reset")}if(N!=null&&typeof N!=="boolean"){throw new a("invalid expectContinue")}this.headersTimeout=w;this.bodyTimeout=v;this.throwOnError=Q===true;this.method=l;this.abort=null;if(c==null){this.body=null}else if(u.isStream(c)){this.body=c;const r=this.body._readableState;if(!r||!r.autoDestroy){this.endHandler=function autoDestroy(){u.destroy(this)};this.body.on("end",this.endHandler)}this.errorHandler=r=>{if(this.abort){this.abort(r)}else{this.error=r}};this.body.on("error",this.errorHandler)}else if(u.isBuffer(c)){this.body=c.byteLength?c:null}else if(ArrayBuffer.isView(c)){this.body=c.buffer.byteLength?Buffer.from(c.buffer,c.byteOffset,c.byteLength):null}else if(c instanceof ArrayBuffer){this.body=c.byteLength?Buffer.from(c):null}else if(typeof c==="string"){this.body=c.length?Buffer.from(c):null}else if(u.isFormDataLike(c)||u.isIterable(c)||u.isBlobLike(c)){this.body=c}else{throw new a("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=I||null;this.path=p?u.buildURL(i,p):i;this.origin=r;this.idempotent=A==null?l==="HEAD"||l==="GET":A;this.blocking=g==null?false:g;this.reset=S==null?null:S;this.host=null;this.contentLength=null;this.contentType=null;this.headers="";this.expectContinue=N!=null?N:false;if(Array.isArray(d)){if(d.length%2!==0){throw new a("headers array must be even")}for(let r=0;r{r.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kHeadersList:Symbol("headers list"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kHTTP2BuildRequest:Symbol("http2 build request"),kHTTP1BuildRequest:Symbol("http1 build request"),kHTTP2CopyHeaders:Symbol("http2 copy headers"),kHTTPConnVersion:Symbol("http connection version"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable")}},85310:(r,i,s)=>{"use strict";const a=s(39491);const{kDestroyed:l,kBodyUsed:c}=s(22405);const{IncomingMessage:d}=s(13685);const p=s(12781);const A=s(41808);const{InvalidArgumentError:u}=s(95594);const{Blob:h}=s(14300);const g=s(73837);const{stringify:y}=s(63477);const{headerNameLowerCasedRecord:b}=s(31566);const[C,B]=process.versions.node.split(".").map((r=>Number(r)));function nop(){}function isStream(r){return r&&typeof r==="object"&&typeof r.pipe==="function"&&typeof r.on==="function"}function isBlobLike(r){return h&&r instanceof h||r&&typeof r==="object"&&(typeof r.stream==="function"||typeof r.arrayBuffer==="function")&&/^(Blob|File)$/.test(r[Symbol.toStringTag])}function buildURL(r,i){if(r.includes("?")||r.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const s=y(i);if(s){r+="?"+s}return r}function parseURL(r){if(typeof r==="string"){r=new URL(r);if(!/^https?:/.test(r.origin||r.protocol)){throw new u("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return r}if(!r||typeof r!=="object"){throw new u("Invalid URL: The URL argument must be a non-null object.")}if(!/^https?:/.test(r.origin||r.protocol)){throw new u("Invalid URL protocol: the URL must start with `http:` or `https:`.")}if(!(r instanceof URL)){if(r.port!=null&&r.port!==""&&!Number.isFinite(parseInt(r.port))){throw new u("Invalid URL: port must be a valid integer or a string representation of an integer.")}if(r.path!=null&&typeof r.path!=="string"){throw new u("Invalid URL path: the path must be a string or null/undefined.")}if(r.pathname!=null&&typeof r.pathname!=="string"){throw new u("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(r.hostname!=null&&typeof r.hostname!=="string"){throw new u("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(r.origin!=null&&typeof r.origin!=="string"){throw new u("Invalid URL origin: the origin must be a string or null/undefined.")}const i=r.port!=null?r.port:r.protocol==="https:"?443:80;let s=r.origin!=null?r.origin:`${r.protocol}//${r.hostname}:${i}`;let a=r.path!=null?r.path:`${r.pathname||""}${r.search||""}`;if(s.endsWith("/")){s=s.substring(0,s.length-1)}if(a&&!a.startsWith("/")){a=`/${a}`}r=new URL(s+a)}return r}function parseOrigin(r){r=parseURL(r);if(r.pathname!=="/"||r.search||r.hash){throw new u("invalid url")}return r}function getHostname(r){if(r[0]==="["){const i=r.indexOf("]");a(i!==-1);return r.substring(1,i)}const i=r.indexOf(":");if(i===-1)return r;return r.substring(0,i)}function getServerName(r){if(!r){return null}a.strictEqual(typeof r,"string");const i=getHostname(r);if(A.isIP(i)){return""}return i}function deepClone(r){return JSON.parse(JSON.stringify(r))}function isAsyncIterable(r){return!!(r!=null&&typeof r[Symbol.asyncIterator]==="function")}function isIterable(r){return!!(r!=null&&(typeof r[Symbol.iterator]==="function"||typeof r[Symbol.asyncIterator]==="function"))}function bodyLength(r){if(r==null){return 0}else if(isStream(r)){const i=r._readableState;return i&&i.objectMode===false&&i.ended===true&&Number.isFinite(i.length)?i.length:null}else if(isBlobLike(r)){return r.size!=null?r.size:null}else if(isBuffer(r)){return r.byteLength}return null}function isDestroyed(r){return!r||!!(r.destroyed||r[l])}function isReadableAborted(r){const i=r&&r._readableState;return isDestroyed(r)&&i&&!i.endEmitted}function destroy(r,i){if(r==null||!isStream(r)||isDestroyed(r)){return}if(typeof r.destroy==="function"){if(Object.getPrototypeOf(r).constructor===d){r.socket=null}r.destroy(i)}else if(i){process.nextTick(((r,i)=>{r.emit("error",i)}),r,i)}if(r.destroyed!==true){r[l]=true}}const I=/timeout=(\d+)/;function parseKeepAliveTimeout(r){const i=r.toString().match(I);return i?parseInt(i[1],10)*1e3:null}function headerNameToString(r){return b[r]||r.toLowerCase()}function parseHeaders(r,i={}){if(!Array.isArray(r))return r;for(let s=0;sr.toString("utf8")))}else{i[a]=r[s+1].toString("utf8")}}else{if(!Array.isArray(l)){l=[l];i[a]=l}l.push(r[s+1].toString("utf8"))}}if("content-length"in i&&"content-disposition"in i){i["content-disposition"]=Buffer.from(i["content-disposition"]).toString("latin1")}return i}function parseRawHeaders(r){const i=[];let s=false;let a=-1;for(let l=0;l{r.close()}))}else{const i=Buffer.isBuffer(a)?a:Buffer.from(a);r.enqueue(new Uint8Array(i))}return r.desiredSize>0},async cancel(r){await i.return()}},0)}function isFormDataLike(r){return r&&typeof r==="object"&&typeof r.append==="function"&&typeof r.delete==="function"&&typeof r.get==="function"&&typeof r.getAll==="function"&&typeof r.has==="function"&&typeof r.set==="function"&&r[Symbol.toStringTag]==="FormData"}function throwIfAborted(r){if(!r){return}if(typeof r.throwIfAborted==="function"){r.throwIfAborted()}else{if(r.aborted){const r=new Error("The operation was aborted");r.name="AbortError";throw r}}}function addAbortListener(r,i){if("addEventListener"in r){r.addEventListener("abort",i,{once:true});return()=>r.removeEventListener("abort",i)}r.addListener("abort",i);return()=>r.removeListener("abort",i)}const v=!!String.prototype.toWellFormed;function toUSVString(r){if(v){return`${r}`.toWellFormed()}else if(g.toUSVString){return g.toUSVString(r)}return`${r}`}function parseRangeHeader(r){if(r==null||r==="")return{start:0,end:null,size:null};const i=r?r.match(/^bytes (\d+)-(\d+)\/(\d+)?$/):null;return i?{start:parseInt(i[1]),end:i[2]?parseInt(i[2]):null,size:i[3]?parseInt(i[3]):null}:null}const S=Object.create(null);S.enumerable=true;r.exports={kEnumerableProperty:S,nop:nop,isDisturbed:isDisturbed,isErrored:isErrored,isReadable:isReadable,toUSVString:toUSVString,isReadableAborted:isReadableAborted,isBlobLike:isBlobLike,parseOrigin:parseOrigin,parseURL:parseURL,getServerName:getServerName,isStream:isStream,isIterable:isIterable,isAsyncIterable:isAsyncIterable,isDestroyed:isDestroyed,headerNameToString:headerNameToString,parseRawHeaders:parseRawHeaders,parseHeaders:parseHeaders,parseKeepAliveTimeout:parseKeepAliveTimeout,destroy:destroy,bodyLength:bodyLength,deepClone:deepClone,ReadableStreamFrom:ReadableStreamFrom,isBuffer:isBuffer,validateHandler:validateHandler,getSocketInfo:getSocketInfo,isFormDataLike:isFormDataLike,buildURL:buildURL,throwIfAborted:throwIfAborted,addAbortListener:addAbortListener,parseRangeHeader:parseRangeHeader,nodeMajor:C,nodeMinor:B,nodeHasAutoSelectFamily:C>18||C===18&&B>=13,safeHTTPMethods:["GET","HEAD","OPTIONS","TRACE"]}},3522:(r,i,s)=>{"use strict";const a=s(17013);const{ClientDestroyedError:l,ClientClosedError:c,InvalidArgumentError:d}=s(95594);const{kDestroy:p,kClose:A,kDispatch:u,kInterceptors:h}=s(22405);const g=Symbol("destroyed");const y=Symbol("closed");const b=Symbol("onDestroyed");const C=Symbol("onClosed");const B=Symbol("Intercepted Dispatch");class DispatcherBase extends a{constructor(){super();this[g]=false;this[b]=null;this[y]=false;this[C]=[]}get destroyed(){return this[g]}get closed(){return this[y]}get interceptors(){return this[h]}set interceptors(r){if(r){for(let i=r.length-1;i>=0;i--){const r=this[h][i];if(typeof r!=="function"){throw new d("interceptor must be an function")}}}this[h]=r}close(r){if(r===undefined){return new Promise(((r,i)=>{this.close(((s,a)=>s?i(s):r(a)))}))}if(typeof r!=="function"){throw new d("invalid callback")}if(this[g]){queueMicrotask((()=>r(new l,null)));return}if(this[y]){if(this[C]){this[C].push(r)}else{queueMicrotask((()=>r(null,null)))}return}this[y]=true;this[C].push(r);const onClosed=()=>{const r=this[C];this[C]=null;for(let i=0;ithis.destroy())).then((()=>{queueMicrotask(onClosed)}))}destroy(r,i){if(typeof r==="function"){i=r;r=null}if(i===undefined){return new Promise(((i,s)=>{this.destroy(r,((r,a)=>r?s(r):i(a)))}))}if(typeof i!=="function"){throw new d("invalid callback")}if(this[g]){if(this[b]){this[b].push(i)}else{queueMicrotask((()=>i(null,null)))}return}if(!r){r=new l}this[g]=true;this[b]=this[b]||[];this[b].push(i);const onDestroyed=()=>{const r=this[b];this[b]=null;for(let i=0;i{queueMicrotask(onDestroyed)}))}[B](r,i){if(!this[h]||this[h].length===0){this[B]=this[u];return this[u](r,i)}let s=this[u].bind(this);for(let r=this[h].length-1;r>=0;r--){s=this[h][r](s)}this[B]=s;return s(r,i)}dispatch(r,i){if(!i||typeof i!=="object"){throw new d("handler must be an object")}try{if(!r||typeof r!=="object"){throw new d("opts must be an object.")}if(this[g]||this[b]){throw new l}if(this[y]){throw new c}return this[B](r,i)}catch(r){if(typeof i.onError!=="function"){throw new d("invalid onError method")}i.onError(r);return false}}}r.exports=DispatcherBase},17013:(r,i,s)=>{"use strict";const a=s(82361);class Dispatcher extends a{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}}r.exports=Dispatcher},79758:(r,i,s)=>{"use strict";const a=s(59861);const l=s(85310);const{ReadableStreamFrom:c,isBlobLike:d,isReadableStreamLike:p,readableStreamClose:A,createDeferredPromise:u,fullyReadBody:h}=s(52663);const{FormData:g}=s(24081);const{kState:y}=s(42378);const{webidl:b}=s(54150);const{DOMException:C,structuredClone:B}=s(11753);const{Blob:I,File:w}=s(14300);const{kBodyUsed:v}=s(22405);const S=s(39491);const{isErrored:Q}=s(85310);const{isUint8Array:N,isArrayBuffer:R}=s(29830);const{File:k}=s(7831);const{parseMIMEType:T,serializeAMimeType:_}=s(3464);let x=globalThis.ReadableStream;const D=w??k;const P=new TextEncoder;const O=new TextDecoder;function extractBody(r,i=false){if(!x){x=s(35356).ReadableStream}let a=null;if(r instanceof x){a=r}else if(d(r)){a=r.stream()}else{a=new x({async pull(r){r.enqueue(typeof h==="string"?P.encode(h):h);queueMicrotask((()=>A(r)))},start(){},type:undefined})}S(p(a));let u=null;let h=null;let g=null;let y=null;if(typeof r==="string"){h=r;y="text/plain;charset=UTF-8"}else if(r instanceof URLSearchParams){h=r.toString();y="application/x-www-form-urlencoded;charset=UTF-8"}else if(R(r)){h=new Uint8Array(r.slice())}else if(ArrayBuffer.isView(r)){h=new Uint8Array(r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength))}else if(l.isFormDataLike(r)){const i=`----formdata-undici-0${`${Math.floor(Math.random()*1e11)}`.padStart(11,"0")}`;const s=`--${i}\r\nContent-Disposition: form-data` -/*! formdata-polyfill. MIT License. Jimmy Wärting */;const escape=r=>r.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=r=>r.replace(/\r?\n|\r/g,"\r\n");const a=[];const l=new Uint8Array([13,10]);g=0;let c=false;for(const[i,d]of r){if(typeof d==="string"){const r=P.encode(s+`; name="${escape(normalizeLinefeeds(i))}"`+`\r\n\r\n${normalizeLinefeeds(d)}\r\n`);a.push(r);g+=r.byteLength}else{const r=P.encode(`${s}; name="${escape(normalizeLinefeeds(i))}"`+(d.name?`; filename="${escape(d.name)}"`:"")+"\r\n"+`Content-Type: ${d.type||"application/octet-stream"}\r\n\r\n`);a.push(r,d,l);if(typeof d.size==="number"){g+=r.byteLength+d.size+l.byteLength}else{c=true}}}const d=P.encode(`--${i}--`);a.push(d);g+=d.byteLength;if(c){g=null}h=r;u=async function*(){for(const r of a){if(r.stream){yield*r.stream()}else{yield r}}};y="multipart/form-data; boundary="+i}else if(d(r)){h=r;g=r.size;if(r.type){y=r.type}}else if(typeof r[Symbol.asyncIterator]==="function"){if(i){throw new TypeError("keepalive")}if(l.isDisturbed(r)||r.locked){throw new TypeError("Response body object should not be disturbed or locked")}a=r instanceof x?r:c(r)}if(typeof h==="string"||l.isBuffer(h)){g=Buffer.byteLength(h)}if(u!=null){let i;a=new x({async start(){i=u(r)[Symbol.asyncIterator]()},async pull(r){const{value:s,done:l}=await i.next();if(l){queueMicrotask((()=>{r.close()}))}else{if(!Q(a)){r.enqueue(new Uint8Array(s))}}return r.desiredSize>0},async cancel(r){await i.return()},type:undefined})}const b={stream:a,source:h,length:g};return[b,y]}function safelyExtractBody(r,i=false){if(!x){x=s(35356).ReadableStream}if(r instanceof x){S(!l.isDisturbed(r),"The body has already been consumed.");S(!r.locked,"The stream is locked.")}return extractBody(r,i)}function cloneBody(r){const[i,s]=r.stream.tee();const a=B(s,{transfer:[s]});const[,l]=a.tee();r.stream=i;return{stream:l,length:r.length,source:r.source}}async function*consumeBody(r){if(r){if(N(r)){yield r}else{const i=r.stream;if(l.isDisturbed(i)){throw new TypeError("The body has already been consumed.")}if(i.locked){throw new TypeError("The stream is locked.")}i[v]=true;yield*i}}}function throwIfAborted(r){if(r.aborted){throw new C("The operation was aborted.","AbortError")}}function bodyMixinMethods(r){const i={blob(){return specConsumeBody(this,(r=>{let i=bodyMimeType(this);if(i==="failure"){i=""}else if(i){i=_(i)}return new I([r],{type:i})}),r)},arrayBuffer(){return specConsumeBody(this,(r=>new Uint8Array(r).buffer),r)},text(){return specConsumeBody(this,utf8DecodeBytes,r)},json(){return specConsumeBody(this,parseJSONFromBytes,r)},async formData(){b.brandCheck(this,r);throwIfAborted(this[y]);const i=this.headers.get("Content-Type");if(/multipart\/form-data/.test(i)){const r={};for(const[i,s]of this.headers)r[i.toLowerCase()]=s;const i=new g;let s;try{s=new a({headers:r,preservePath:true})}catch(r){throw new C(`${r}`,"AbortError")}s.on("field",((r,s)=>{i.append(r,s)}));s.on("file",((r,s,a,l,c)=>{const d=[];if(l==="base64"||l.toLowerCase()==="base64"){let l="";s.on("data",(r=>{l+=r.toString().replace(/[\r\n]/gm,"");const i=l.length-l.length%4;d.push(Buffer.from(l.slice(0,i),"base64"));l=l.slice(i)}));s.on("end",(()=>{d.push(Buffer.from(l,"base64"));i.append(r,new D(d,a,{type:c}))}))}else{s.on("data",(r=>{d.push(r)}));s.on("end",(()=>{i.append(r,new D(d,a,{type:c}))}))}}));const l=new Promise(((r,i)=>{s.on("finish",r);s.on("error",(r=>i(new TypeError(r))))}));if(this.body!==null)for await(const r of consumeBody(this[y].body))s.write(r);s.end();await l;return i}else if(/application\/x-www-form-urlencoded/.test(i)){let r;try{let i="";const s=new TextDecoder("utf-8",{ignoreBOM:true});for await(const r of consumeBody(this[y].body)){if(!N(r)){throw new TypeError("Expected Uint8Array chunk")}i+=s.decode(r,{stream:true})}i+=s.decode();r=new URLSearchParams(i)}catch(r){throw Object.assign(new TypeError,{cause:r})}const i=new g;for(const[s,a]of r){i.append(s,a)}return i}else{await Promise.resolve();throwIfAborted(this[y]);throw b.errors.exception({header:`${r.name}.formData`,message:"Could not parse content as FormData."})}}};return i}function mixinBody(r){Object.assign(r.prototype,bodyMixinMethods(r))}async function specConsumeBody(r,i,s){b.brandCheck(r,s);throwIfAborted(r[y]);if(bodyUnusable(r[y].body)){throw new TypeError("Body is unusable")}const a=u();const errorSteps=r=>a.reject(r);const successSteps=r=>{try{a.resolve(i(r))}catch(r){errorSteps(r)}};if(r[y].body==null){successSteps(new Uint8Array);return a.promise}await h(r[y].body,successSteps,errorSteps);return a.promise}function bodyUnusable(r){return r!=null&&(r.stream.locked||l.isDisturbed(r.stream))}function utf8DecodeBytes(r){if(r.length===0){return""}if(r[0]===239&&r[1]===187&&r[2]===191){r=r.subarray(3)}const i=O.decode(r);return i}function parseJSONFromBytes(r){return JSON.parse(utf8DecodeBytes(r))}function bodyMimeType(r){const{headersList:i}=r[y];const s=i.get("content-type");if(s===null){return"failure"}return T(s)}r.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody}},11753:(r,i,s)=>{"use strict";const{MessageChannel:a,receiveMessageOnPort:l}=s(71267);const c=["GET","HEAD","POST"];const d=new Set(c);const p=[101,204,205,304];const A=[301,302,303,307,308];const u=new Set(A);const h=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","5060","5061","6000","6566","6665","6666","6667","6668","6669","6697","10080"];const g=new Set(h);const y=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const b=new Set(y);const C=["follow","manual","error"];const B=["GET","HEAD","OPTIONS","TRACE"];const I=new Set(B);const w=["navigate","same-origin","no-cors","cors"];const v=["omit","same-origin","include"];const S=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const Q=["content-encoding","content-language","content-location","content-type","content-length"];const N=["half"];const R=["CONNECT","TRACE","TRACK"];const k=new Set(R);const T=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const _=new Set(T);const x=globalThis.DOMException??(()=>{try{atob("~")}catch(r){return Object.getPrototypeOf(r).constructor}})();let D;const P=globalThis.structuredClone??function structuredClone(r,i=undefined){if(arguments.length===0){throw new TypeError("missing argument")}if(!D){D=new a}D.port1.unref();D.port2.unref();D.port1.postMessage(r,i?.transfer);return l(D.port2).message};r.exports={DOMException:x,structuredClone:P,subresource:T,forbiddenMethods:R,requestBodyHeader:Q,referrerPolicy:y,requestRedirect:C,requestMode:w,requestCredentials:v,requestCache:S,redirectStatus:A,corsSafeListedMethods:c,nullBodyStatus:p,safeMethods:B,badPorts:h,requestDuplex:N,subresourceSet:_,badPortsSet:g,redirectStatusSet:u,corsSafeListedMethodsSet:d,safeMethodsSet:I,forbiddenMethodsSet:k,referrerPolicySet:b}},3464:(r,i,s)=>{const a=s(39491);const{atob:l}=s(14300);const{isomorphicDecode:c}=s(52663);const d=new TextEncoder;const p=/^[!#$%&'*+-.^_|~A-Za-z0-9]+$/;const A=/(\u000A|\u000D|\u0009|\u0020)/;const u=/[\u0009|\u0020-\u007E|\u0080-\u00FF]/;function dataURLProcessor(r){a(r.protocol==="data:");let i=URLSerializer(r,true);i=i.slice(5);const s={position:0};let l=collectASequenceOfCodePointsFast(",",i,s);const d=l.length;l=removeASCIIWhitespace(l,true,true);if(s.position>=i.length){return"failure"}s.position++;const p=i.slice(d+1);let A=stringPercentDecode(p);if(/;(\u0020){0,}base64$/i.test(l)){const r=c(A);A=forgivingBase64(r);if(A==="failure"){return"failure"}l=l.slice(0,-6);l=l.replace(/(\u0020)+$/,"");l=l.slice(0,-1)}if(l.startsWith(";")){l="text/plain"+l}let u=parseMIMEType(l);if(u==="failure"){u=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:u,body:A}}function URLSerializer(r,i=false){if(!i){return r.href}const s=r.href;const a=r.hash.length;return a===0?s:s.substring(0,s.length-a)}function collectASequenceOfCodePoints(r,i,s){let a="";while(s.positionr.length){return"failure"}i.position++;let a=collectASequenceOfCodePointsFast(";",r,i);a=removeHTTPWhitespace(a,false,true);if(a.length===0||!p.test(a)){return"failure"}const l=s.toLowerCase();const c=a.toLowerCase();const d={type:l,subtype:c,parameters:new Map,essence:`${l}/${c}`};while(i.positionA.test(r)),r,i);let s=collectASequenceOfCodePoints((r=>r!==";"&&r!=="="),r,i);s=s.toLowerCase();if(i.positionr.length){break}let a=null;if(r[i.position]==='"'){a=collectAnHTTPQuotedString(r,i,true);collectASequenceOfCodePointsFast(";",r,i)}else{a=collectASequenceOfCodePointsFast(";",r,i);a=removeHTTPWhitespace(a,false,true);if(a.length===0){continue}}if(s.length!==0&&p.test(s)&&(a.length===0||u.test(a))&&!d.parameters.has(s)){d.parameters.set(s,a)}}return d}function forgivingBase64(r){r=r.replace(/[\u0009\u000A\u000C\u000D\u0020]/g,"");if(r.length%4===0){r=r.replace(/=?=$/,"")}if(r.length%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(r)){return"failure"}const i=l(r);const s=new Uint8Array(i.length);for(let r=0;rr!=='"'&&r!=="\\"),r,i);if(i.position>=r.length){break}const s=r[i.position];i.position++;if(s==="\\"){if(i.position>=r.length){c+="\\";break}c+=r[i.position];i.position++}else{a(s==='"');break}}if(s){return c}return r.slice(l,i.position)}function serializeAMimeType(r){a(r!=="failure");const{parameters:i,essence:s}=r;let l=s;for(let[r,s]of i.entries()){l+=";";l+=r;l+="=";if(!p.test(s)){s=s.replace(/(\\|")/g,"\\$1");s='"'+s;s+='"'}l+=s}return l}function isHTTPWhiteSpace(r){return r==="\r"||r==="\n"||r==="\t"||r===" "}function removeHTTPWhitespace(r,i=true,s=true){let a=0;let l=r.length-1;if(i){for(;a0&&isHTTPWhiteSpace(r[l]);l--);}return r.slice(a,l+1)}function isASCIIWhitespace(r){return r==="\r"||r==="\n"||r==="\t"||r==="\f"||r===" "}function removeASCIIWhitespace(r,i=true,s=true){let a=0;let l=r.length-1;if(i){for(;a0&&isASCIIWhitespace(r[l]);l--);}return r.slice(a,l+1)}r.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType}},7831:(r,i,s)=>{"use strict";const{Blob:a,File:l}=s(14300);const{types:c}=s(73837);const{kState:d}=s(42378);const{isBlobLike:p}=s(52663);const{webidl:A}=s(54150);const{parseMIMEType:u,serializeAMimeType:h}=s(3464);const{kEnumerableProperty:g}=s(85310);const y=new TextEncoder;class File extends a{constructor(r,i,s={}){A.argumentLengthCheck(arguments,2,{header:"File constructor"});r=A.converters["sequence"](r);i=A.converters.USVString(i);s=A.converters.FilePropertyBag(s);const a=i;let l=s.type;let c;e:{if(l){l=u(l);if(l==="failure"){l="";break e}l=h(l).toLowerCase()}c=s.lastModified}super(processBlobParts(r,s),{type:l});this[d]={name:a,lastModified:c,type:l}}get name(){A.brandCheck(this,File);return this[d].name}get lastModified(){A.brandCheck(this,File);return this[d].lastModified}get type(){A.brandCheck(this,File);return this[d].type}}class FileLike{constructor(r,i,s={}){const a=i;const l=s.type;const c=s.lastModified??Date.now();this[d]={blobLike:r,name:a,type:l,lastModified:c}}stream(...r){A.brandCheck(this,FileLike);return this[d].blobLike.stream(...r)}arrayBuffer(...r){A.brandCheck(this,FileLike);return this[d].blobLike.arrayBuffer(...r)}slice(...r){A.brandCheck(this,FileLike);return this[d].blobLike.slice(...r)}text(...r){A.brandCheck(this,FileLike);return this[d].blobLike.text(...r)}get size(){A.brandCheck(this,FileLike);return this[d].blobLike.size}get type(){A.brandCheck(this,FileLike);return this[d].blobLike.type}get name(){A.brandCheck(this,FileLike);return this[d].name}get lastModified(){A.brandCheck(this,FileLike);return this[d].lastModified}get[Symbol.toStringTag](){return"File"}}Object.defineProperties(File.prototype,{[Symbol.toStringTag]:{value:"File",configurable:true},name:g,lastModified:g});A.converters.Blob=A.interfaceConverter(a);A.converters.BlobPart=function(r,i){if(A.util.Type(r)==="Object"){if(p(r)){return A.converters.Blob(r,{strict:false})}if(ArrayBuffer.isView(r)||c.isAnyArrayBuffer(r)){return A.converters.BufferSource(r,i)}}return A.converters.USVString(r,i)};A.converters["sequence"]=A.sequenceConverter(A.converters.BlobPart);A.converters.FilePropertyBag=A.dictionaryConverter([{key:"lastModified",converter:A.converters["long long"],get defaultValue(){return Date.now()}},{key:"type",converter:A.converters.DOMString,defaultValue:""},{key:"endings",converter:r=>{r=A.converters.DOMString(r);r=r.toLowerCase();if(r!=="native"){r="transparent"}return r},defaultValue:"transparent"}]);function processBlobParts(r,i){const s=[];for(const a of r){if(typeof a==="string"){let r=a;if(i.endings==="native"){r=convertLineEndingsNative(r)}s.push(y.encode(r))}else if(c.isAnyArrayBuffer(a)||c.isTypedArray(a)){if(!a.buffer){s.push(new Uint8Array(a))}else{s.push(new Uint8Array(a.buffer,a.byteOffset,a.byteLength))}}else if(p(a)){s.push(a)}}return s}function convertLineEndingsNative(r){let i="\n";if(process.platform==="win32"){i="\r\n"}return r.replace(/\r?\n/g,i)}function isFileLike(r){return l&&r instanceof l||r instanceof File||r&&(typeof r.stream==="function"||typeof r.arrayBuffer==="function")&&r[Symbol.toStringTag]==="File"}r.exports={File:File,FileLike:FileLike,isFileLike:isFileLike}},24081:(r,i,s)=>{"use strict";const{isBlobLike:a,toUSVString:l,makeIterator:c}=s(52663);const{kState:d}=s(42378);const{File:p,FileLike:A,isFileLike:u}=s(7831);const{webidl:h}=s(54150);const{Blob:g,File:y}=s(14300);const b=y??p;class FormData{constructor(r){if(r!==undefined){throw h.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[d]=[]}append(r,i,s=undefined){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,2,{header:"FormData.append"});if(arguments.length===3&&!a(i)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}r=h.converters.USVString(r);i=a(i)?h.converters.Blob(i,{strict:false}):h.converters.USVString(i);s=arguments.length===3?h.converters.USVString(s):undefined;const l=makeEntry(r,i,s);this[d].push(l)}delete(r){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,1,{header:"FormData.delete"});r=h.converters.USVString(r);this[d]=this[d].filter((i=>i.name!==r))}get(r){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,1,{header:"FormData.get"});r=h.converters.USVString(r);const i=this[d].findIndex((i=>i.name===r));if(i===-1){return null}return this[d][i].value}getAll(r){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,1,{header:"FormData.getAll"});r=h.converters.USVString(r);return this[d].filter((i=>i.name===r)).map((r=>r.value))}has(r){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,1,{header:"FormData.has"});r=h.converters.USVString(r);return this[d].findIndex((i=>i.name===r))!==-1}set(r,i,s=undefined){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,2,{header:"FormData.set"});if(arguments.length===3&&!a(i)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}r=h.converters.USVString(r);i=a(i)?h.converters.Blob(i,{strict:false}):h.converters.USVString(i);s=arguments.length===3?l(s):undefined;const c=makeEntry(r,i,s);const p=this[d].findIndex((i=>i.name===r));if(p!==-1){this[d]=[...this[d].slice(0,p),c,...this[d].slice(p+1).filter((i=>i.name!==r))]}else{this[d].push(c)}}entries(){h.brandCheck(this,FormData);return c((()=>this[d].map((r=>[r.name,r.value]))),"FormData","key+value")}keys(){h.brandCheck(this,FormData);return c((()=>this[d].map((r=>[r.name,r.value]))),"FormData","key")}values(){h.brandCheck(this,FormData);return c((()=>this[d].map((r=>[r.name,r.value]))),"FormData","value")}forEach(r,i=globalThis){h.brandCheck(this,FormData);h.argumentLengthCheck(arguments,1,{header:"FormData.forEach"});if(typeof r!=="function"){throw new TypeError("Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.")}for(const[s,a]of this){r.apply(i,[a,s,this])}}}FormData.prototype[Symbol.iterator]=FormData.prototype.entries;Object.defineProperties(FormData.prototype,{[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(r,i,s){r=Buffer.from(r).toString("utf8");if(typeof i==="string"){i=Buffer.from(i).toString("utf8")}else{if(!u(i)){i=i instanceof g?new b([i],"blob",{type:i.type}):new A(i,"blob",{type:i.type})}if(s!==undefined){const r={type:i.type,lastModified:i.lastModified};i=y&&i instanceof y||i instanceof p?new b([i],s,r):new A(i,s,r)}}return{name:r,value:i}}r.exports={FormData:FormData}},51227:r=>{"use strict";const i=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[i]}function setGlobalOrigin(r){if(r===undefined){Object.defineProperty(globalThis,i,{value:undefined,writable:true,enumerable:false,configurable:false});return}const s=new URL(r);if(s.protocol!=="http:"&&s.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${s.protocol}`)}Object.defineProperty(globalThis,i,{value:s,writable:true,enumerable:false,configurable:false})}r.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},77613:(r,i,s)=>{"use strict";const{kHeadersList:a,kConstruct:l}=s(22405);const{kGuard:c}=s(42378);const{kEnumerableProperty:d}=s(85310);const{makeIterator:p,isValidHeaderName:A,isValidHeaderValue:u}=s(52663);const{webidl:h}=s(54150);const g=s(39491);const y=Symbol("headers map");const b=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(r){return r===10||r===13||r===9||r===32}function headerValueNormalize(r){let i=0;let s=r.length;while(s>i&&isHTTPWhiteSpaceCharCode(r.charCodeAt(s-1)))--s;while(s>i&&isHTTPWhiteSpaceCharCode(r.charCodeAt(i)))++i;return i===0&&s===r.length?r:r.substring(i,s)}function fill(r,i){if(Array.isArray(i)){for(let s=0;s>","record"]})}}function appendHeader(r,i,s){s=headerValueNormalize(s);if(!A(i)){throw h.errors.invalidArgument({prefix:"Headers.append",value:i,type:"header name"})}else if(!u(s)){throw h.errors.invalidArgument({prefix:"Headers.append",value:s,type:"header value"})}if(r[c]==="immutable"){throw new TypeError("immutable")}else if(r[c]==="request-no-cors"){}return r[a].append(i,s)}class HeadersList{cookies=null;constructor(r){if(r instanceof HeadersList){this[y]=new Map(r[y]);this[b]=r[b];this.cookies=r.cookies===null?null:[...r.cookies]}else{this[y]=new Map(r);this[b]=null}}contains(r){r=r.toLowerCase();return this[y].has(r)}clear(){this[y].clear();this[b]=null;this.cookies=null}append(r,i){this[b]=null;const s=r.toLowerCase();const a=this[y].get(s);if(a){const r=s==="cookie"?"; ":", ";this[y].set(s,{name:a.name,value:`${a.value}${r}${i}`})}else{this[y].set(s,{name:r,value:i})}if(s==="set-cookie"){this.cookies??=[];this.cookies.push(i)}}set(r,i){this[b]=null;const s=r.toLowerCase();if(s==="set-cookie"){this.cookies=[i]}this[y].set(s,{name:r,value:i})}delete(r){this[b]=null;r=r.toLowerCase();if(r==="set-cookie"){this.cookies=null}this[y].delete(r)}get(r){const i=this[y].get(r.toLowerCase());return i===undefined?null:i.value}*[Symbol.iterator](){for(const[r,{value:i}]of this[y]){yield[r,i]}}get entries(){const r={};if(this[y].size){for(const{name:i,value:s}of this[y].values()){r[i]=s}}return r}}class Headers{constructor(r=undefined){if(r===l){return}this[a]=new HeadersList;this[c]="none";if(r!==undefined){r=h.converters.HeadersInit(r);fill(this,r)}}append(r,i){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,2,{header:"Headers.append"});r=h.converters.ByteString(r);i=h.converters.ByteString(i);return appendHeader(this,r,i)}delete(r){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,1,{header:"Headers.delete"});r=h.converters.ByteString(r);if(!A(r)){throw h.errors.invalidArgument({prefix:"Headers.delete",value:r,type:"header name"})}if(this[c]==="immutable"){throw new TypeError("immutable")}else if(this[c]==="request-no-cors"){}if(!this[a].contains(r)){return}this[a].delete(r)}get(r){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,1,{header:"Headers.get"});r=h.converters.ByteString(r);if(!A(r)){throw h.errors.invalidArgument({prefix:"Headers.get",value:r,type:"header name"})}return this[a].get(r)}has(r){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,1,{header:"Headers.has"});r=h.converters.ByteString(r);if(!A(r)){throw h.errors.invalidArgument({prefix:"Headers.has",value:r,type:"header name"})}return this[a].contains(r)}set(r,i){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,2,{header:"Headers.set"});r=h.converters.ByteString(r);i=h.converters.ByteString(i);i=headerValueNormalize(i);if(!A(r)){throw h.errors.invalidArgument({prefix:"Headers.set",value:r,type:"header name"})}else if(!u(i)){throw h.errors.invalidArgument({prefix:"Headers.set",value:i,type:"header value"})}if(this[c]==="immutable"){throw new TypeError("immutable")}else if(this[c]==="request-no-cors"){}this[a].set(r,i)}getSetCookie(){h.brandCheck(this,Headers);const r=this[a].cookies;if(r){return[...r]}return[]}get[b](){if(this[a][b]){return this[a][b]}const r=[];const i=[...this[a]].sort(((r,i)=>r[0]r),"Headers","key")}return p((()=>[...this[b].values()]),"Headers","key")}values(){h.brandCheck(this,Headers);if(this[c]==="immutable"){const r=this[b];return p((()=>r),"Headers","value")}return p((()=>[...this[b].values()]),"Headers","value")}entries(){h.brandCheck(this,Headers);if(this[c]==="immutable"){const r=this[b];return p((()=>r),"Headers","key+value")}return p((()=>[...this[b].values()]),"Headers","key+value")}forEach(r,i=globalThis){h.brandCheck(this,Headers);h.argumentLengthCheck(arguments,1,{header:"Headers.forEach"});if(typeof r!=="function"){throw new TypeError("Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.")}for(const[s,a]of this){r.apply(i,[a,s,this])}}[Symbol.for("nodejs.util.inspect.custom")](){h.brandCheck(this,Headers);return this[a]}}Headers.prototype[Symbol.iterator]=Headers.prototype.entries;Object.defineProperties(Headers.prototype,{append:d,delete:d,get:d,has:d,set:d,getSetCookie:d,keys:d,values:d,entries:d,forEach:d,[Symbol.iterator]:{enumerable:false},[Symbol.toStringTag]:{value:"Headers",configurable:true}});h.converters.HeadersInit=function(r){if(h.util.Type(r)==="Object"){if(r[Symbol.iterator]){return h.converters["sequence>"](r)}return h.converters["record"](r)}throw h.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};r.exports={fill:fill,Headers:Headers,HeadersList:HeadersList}},82564:(r,i,s)=>{"use strict";const{Response:a,makeNetworkError:l,makeAppropriateNetworkError:c,filterResponse:d,makeResponse:p}=s(89530);const{Headers:A}=s(77613);const{Request:u,makeRequest:h}=s(87911);const g=s(59796);const{bytesMatch:y,makePolicyContainer:b,clonePolicyContainer:C,requestBadPort:B,TAOCheck:I,appendRequestOriginHeader:w,responseLocationURL:v,requestCurrentURL:S,setRequestReferrerPolicyOnRedirect:Q,tryUpgradeRequestToAPotentiallyTrustworthyURL:N,createOpaqueTimingInfo:R,appendFetchMetadata:k,corsCheck:T,crossOriginResourcePolicyCheck:_,determineRequestsReferrer:x,coarsenedSharedCurrentTime:D,createDeferredPromise:P,isBlobLike:O,sameOrigin:L,isCancelled:F,isAborted:M,isErrorLike:U,fullyReadBody:H,readableStreamClose:q,isomorphicEncode:G,urlIsLocal:j,urlIsHttpHttpsScheme:z,urlHasHttpsScheme:V}=s(52663);const{kState:W,kHeaders:Y,kGuard:J,kRealm:$}=s(42378);const K=s(39491);const{safelyExtractBody:X}=s(79758);const{redirectStatusSet:Z,nullBodyStatus:ee,safeMethodsSet:te,requestBodyHeader:re,subresourceSet:ie,DOMException:ne}=s(11753);const{kHeadersList:se}=s(22405);const ae=s(82361);const{Readable:oe,pipeline:le}=s(12781);const{addAbortListener:ce,isErrored:de,isReadable:pe,nodeMajor:Ae,nodeMinor:ue}=s(85310);const{dataURLProcessor:fe,serializeAMimeType:he}=s(3464);const{TransformStream:me}=s(35356);const{getGlobalDispatcher:ge}=s(40598);const{webidl:ye}=s(54150);const{STATUS_CODES:Ee}=s(13685);const be=["GET","HEAD"];let Ce;let Be=globalThis.ReadableStream;class Fetch extends ae{constructor(r){super();this.dispatcher=r;this.connection=null;this.dump=false;this.state="ongoing";this.setMaxListeners(21)}terminate(r){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(r);this.emit("terminated",r)}abort(r){if(this.state!=="ongoing"){return}this.state="aborted";if(!r){r=new ne("The operation was aborted.","AbortError")}this.serializedAbortReason=r;this.connection?.destroy(r);this.emit("terminated",r)}}function fetch(r,i={}){ye.argumentLengthCheck(arguments,1,{header:"globalThis.fetch"});const s=P();let l;try{l=new u(r,i)}catch(r){s.reject(r);return s.promise}const c=l[W];if(l.signal.aborted){abortFetch(s,c,null,l.signal.reason);return s.promise}const d=c.client.globalObject;if(d?.constructor?.name==="ServiceWorkerGlobalScope"){c.serviceWorkers="none"}let p=null;const A=null;let h=false;let g=null;ce(l.signal,(()=>{h=true;K(g!=null);g.abort(l.signal.reason);abortFetch(s,c,p,l.signal.reason)}));const handleFetchDone=r=>finalizeAndReportTiming(r,"fetch");const processResponse=r=>{if(h){return Promise.resolve()}if(r.aborted){abortFetch(s,c,p,g.serializedAbortReason);return Promise.resolve()}if(r.type==="error"){s.reject(Object.assign(new TypeError("fetch failed"),{cause:r.error}));return Promise.resolve()}p=new a;p[W]=r;p[$]=A;p[Y][se]=r.headersList;p[Y][J]="immutable";p[Y][$]=A;s.resolve(p)};g=fetching({request:c,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:i.dispatcher??ge()});return s.promise}function finalizeAndReportTiming(r,i="other"){if(r.type==="error"&&r.aborted){return}if(!r.urlList?.length){return}const s=r.urlList[0];let a=r.timingInfo;let l=r.cacheState;if(!z(s)){return}if(a===null){return}if(!r.timingAllowPassed){a=R({startTime:a.startTime});l=""}a.endTime=D();r.timingInfo=a;markResourceTiming(a,s,i,globalThis,l)}function markResourceTiming(r,i,s,a,l){if(Ae>18||Ae===18&&ue>=2){performance.markResourceTiming(r,i.href,s,a,l)}}function abortFetch(r,i,s,a){if(!a){a=new ne("The operation was aborted.","AbortError")}r.reject(a);if(i.body!=null&&pe(i.body?.stream)){i.body.stream.cancel(a).catch((r=>{if(r.code==="ERR_INVALID_STATE"){return}throw r}))}if(s==null){return}const l=s[W];if(l.body!=null&&pe(l.body?.stream)){l.body.stream.cancel(a).catch((r=>{if(r.code==="ERR_INVALID_STATE"){return}throw r}))}}function fetching({request:r,processRequestBodyChunkLength:i,processRequestEndOfBody:s,processResponse:a,processResponseEndOfBody:l,processResponseConsumeBody:c,useParallelQueue:d=false,dispatcher:p}){let A=null;let u=false;if(r.client!=null){A=r.client.globalObject;u=r.client.crossOriginIsolatedCapability}const h=D(u);const g=R({startTime:h});const y={controller:new Fetch(p),request:r,timingInfo:g,processRequestBodyChunkLength:i,processRequestEndOfBody:s,processResponse:a,processResponseConsumeBody:c,processResponseEndOfBody:l,taskDestination:A,crossOriginIsolatedCapability:u};K(!r.body||r.body.stream);if(r.window==="client"){r.window=r.client?.globalObject?.constructor?.name==="Window"?r.client:"no-window"}if(r.origin==="client"){r.origin=r.client?.origin}if(r.policyContainer==="client"){if(r.client!=null){r.policyContainer=C(r.client.policyContainer)}else{r.policyContainer=b()}}if(!r.headersList.contains("accept")){const i="*/*";r.headersList.append("accept",i)}if(!r.headersList.contains("accept-language")){r.headersList.append("accept-language","*")}if(r.priority===null){}if(ie.has(r.destination)){}mainFetch(y).catch((r=>{y.controller.terminate(r)}));return y.controller}async function mainFetch(r,i=false){const s=r.request;let a=null;if(s.localURLsOnly&&!j(S(s))){a=l("local URLs only")}N(s);if(B(s)==="blocked"){a=l("bad port")}if(s.referrerPolicy===""){s.referrerPolicy=s.policyContainer.referrerPolicy}if(s.referrer!=="no-referrer"){s.referrer=x(s)}if(a===null){a=await(async()=>{const i=S(s);if(L(i,s.url)&&s.responseTainting==="basic"||i.protocol==="data:"||(s.mode==="navigate"||s.mode==="websocket")){s.responseTainting="basic";return await schemeFetch(r)}if(s.mode==="same-origin"){return l('request mode cannot be "same-origin"')}if(s.mode==="no-cors"){if(s.redirect!=="follow"){return l('redirect mode cannot be "follow" for "no-cors" request')}s.responseTainting="opaque";return await schemeFetch(r)}if(!z(S(s))){return l("URL scheme must be a HTTP(S) scheme")}s.responseTainting="cors";return await httpFetch(r)})()}if(i){return a}if(a.status!==0&&!a.internalResponse){if(s.responseTainting==="cors"){}if(s.responseTainting==="basic"){a=d(a,"basic")}else if(s.responseTainting==="cors"){a=d(a,"cors")}else if(s.responseTainting==="opaque"){a=d(a,"opaque")}else{K(false)}}let c=a.status===0?a:a.internalResponse;if(c.urlList.length===0){c.urlList.push(...s.urlList)}if(!s.timingAllowFailed){a.timingAllowPassed=true}if(a.type==="opaque"&&c.status===206&&c.rangeRequested&&!s.headers.contains("range")){a=c=l()}if(a.status!==0&&(s.method==="HEAD"||s.method==="CONNECT"||ee.includes(c.status))){c.body=null;r.controller.dump=true}if(s.integrity){const processBodyError=i=>fetchFinale(r,l(i));if(s.responseTainting==="opaque"||a.body==null){processBodyError(a.error);return}const processBody=i=>{if(!y(i,s.integrity)){processBodyError("integrity mismatch");return}a.body=X(i)[0];fetchFinale(r,a)};await H(a.body,processBody,processBodyError)}else{fetchFinale(r,a)}}function schemeFetch(r){if(F(r)&&r.request.redirectCount===0){return Promise.resolve(c(r))}const{request:i}=r;const{protocol:a}=S(i);switch(a){case"about:":{return Promise.resolve(l("about scheme is not supported"))}case"blob:":{if(!Ce){Ce=s(14300).resolveObjectURL}const r=S(i);if(r.search.length!==0){return Promise.resolve(l("NetworkError when attempting to fetch resource."))}const a=Ce(r.toString());if(i.method!=="GET"||!O(a)){return Promise.resolve(l("invalid method"))}const c=X(a);const d=c[0];const A=G(`${d.length}`);const u=c[1]??"";const h=p({statusText:"OK",headersList:[["content-length",{name:"Content-Length",value:A}],["content-type",{name:"Content-Type",value:u}]]});h.body=d;return Promise.resolve(h)}case"data:":{const r=S(i);const s=fe(r);if(s==="failure"){return Promise.resolve(l("failed to fetch the data URL"))}const a=he(s.mimeType);return Promise.resolve(p({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:a}]],body:X(s.body)[0]}))}case"file:":{return Promise.resolve(l("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(r).catch((r=>l(r)))}default:{return Promise.resolve(l("unknown scheme"))}}}function finalizeResponse(r,i){r.request.done=true;if(r.processResponseDone!=null){queueMicrotask((()=>r.processResponseDone(i)))}}function fetchFinale(r,i){if(i.type==="error"){i.urlList=[r.request.urlList[0]];i.timingInfo=R({startTime:r.timingInfo.startTime})}const processResponseEndOfBody=()=>{r.request.done=true;if(r.processResponseEndOfBody!=null){queueMicrotask((()=>r.processResponseEndOfBody(i)))}};if(r.processResponse!=null){queueMicrotask((()=>r.processResponse(i)))}if(i.body==null){processResponseEndOfBody()}else{const identityTransformAlgorithm=(r,i)=>{i.enqueue(r)};const r=new me({start(){},transform:identityTransformAlgorithm,flush:processResponseEndOfBody},{size(){return 1}},{size(){return 1}});i.body={stream:i.body.stream.pipeThrough(r)}}if(r.processResponseConsumeBody!=null){const processBody=s=>r.processResponseConsumeBody(i,s);const processBodyError=s=>r.processResponseConsumeBody(i,s);if(i.body==null){queueMicrotask((()=>processBody(null)))}else{return H(i.body,processBody,processBodyError)}return Promise.resolve()}}async function httpFetch(r){const i=r.request;let s=null;let a=null;const c=r.timingInfo;if(i.serviceWorkers==="all"){}if(s===null){if(i.redirect==="follow"){i.serviceWorkers="none"}a=s=await httpNetworkOrCacheFetch(r);if(i.responseTainting==="cors"&&T(i,s)==="failure"){return l("cors failure")}if(I(i,s)==="failure"){i.timingAllowFailed=true}}if((i.responseTainting==="opaque"||s.type==="opaque")&&_(i.origin,i.client,i.destination,a)==="blocked"){return l("blocked")}if(Z.has(a.status)){if(i.redirect!=="manual"){r.controller.connection.destroy()}if(i.redirect==="error"){s=l("unexpected redirect")}else if(i.redirect==="manual"){s=a}else if(i.redirect==="follow"){s=await httpRedirectFetch(r,s)}else{K(false)}}s.timingInfo=c;return s}function httpRedirectFetch(r,i){const s=r.request;const a=i.internalResponse?i.internalResponse:i;let c;try{c=v(a,S(s).hash);if(c==null){return i}}catch(r){return Promise.resolve(l(r))}if(!z(c)){return Promise.resolve(l("URL scheme must be a HTTP(S) scheme"))}if(s.redirectCount===20){return Promise.resolve(l("redirect count exceeded"))}s.redirectCount+=1;if(s.mode==="cors"&&(c.username||c.password)&&!L(s,c)){return Promise.resolve(l('cross origin not allowed for request mode "cors"'))}if(s.responseTainting==="cors"&&(c.username||c.password)){return Promise.resolve(l('URL cannot contain credentials for request mode "cors"'))}if(a.status!==303&&s.body!=null&&s.body.source==null){return Promise.resolve(l())}if([301,302].includes(a.status)&&s.method==="POST"||a.status===303&&!be.includes(s.method)){s.method="GET";s.body=null;for(const r of re){s.headersList.delete(r)}}if(!L(S(s),c)){s.headersList.delete("authorization");s.headersList.delete("proxy-authorization",true);s.headersList.delete("cookie");s.headersList.delete("host")}if(s.body!=null){K(s.body.source!=null);s.body=X(s.body.source)[0]}const d=r.timingInfo;d.redirectEndTime=d.postRedirectStartTime=D(r.crossOriginIsolatedCapability);if(d.redirectStartTime===0){d.redirectStartTime=d.startTime}s.urlList.push(c);Q(s,a);return mainFetch(r,true)}async function httpNetworkOrCacheFetch(r,i=false,s=false){const a=r.request;let d=null;let p=null;let A=null;const u=null;const g=false;if(a.window==="no-window"&&a.redirect==="error"){d=r;p=a}else{p=h(a);d={...r};d.request=p}const y=a.credentials==="include"||a.credentials==="same-origin"&&a.responseTainting==="basic";const b=p.body?p.body.length:null;let C=null;if(p.body==null&&["POST","PUT"].includes(p.method)){C="0"}if(b!=null){C=G(`${b}`)}if(C!=null){p.headersList.append("content-length",C)}if(b!=null&&p.keepalive){}if(p.referrer instanceof URL){p.headersList.append("referer",G(p.referrer.href))}w(p);k(p);if(!p.headersList.contains("user-agent")){p.headersList.append("user-agent",typeof esbuildDetection==="undefined"?"undici":"node")}if(p.cache==="default"&&(p.headersList.contains("if-modified-since")||p.headersList.contains("if-none-match")||p.headersList.contains("if-unmodified-since")||p.headersList.contains("if-match")||p.headersList.contains("if-range"))){p.cache="no-store"}if(p.cache==="no-cache"&&!p.preventNoCacheCacheControlHeaderModification&&!p.headersList.contains("cache-control")){p.headersList.append("cache-control","max-age=0")}if(p.cache==="no-store"||p.cache==="reload"){if(!p.headersList.contains("pragma")){p.headersList.append("pragma","no-cache")}if(!p.headersList.contains("cache-control")){p.headersList.append("cache-control","no-cache")}}if(p.headersList.contains("range")){p.headersList.append("accept-encoding","identity")}if(!p.headersList.contains("accept-encoding")){if(V(S(p))){p.headersList.append("accept-encoding","br, gzip, deflate")}else{p.headersList.append("accept-encoding","gzip, deflate")}}p.headersList.delete("host");if(y){}if(u==null){p.cache="no-store"}if(p.mode!=="no-store"&&p.mode!=="reload"){}if(A==null){if(p.mode==="only-if-cached"){return l("only if cached")}const r=await httpNetworkFetch(d,y,s);if(!te.has(p.method)&&r.status>=200&&r.status<=399){}if(g&&r.status===304){}if(A==null){A=r}}A.urlList=[...p.urlList];if(p.headersList.contains("range")){A.rangeRequested=true}A.requestIncludesCredentials=y;if(A.status===407){if(a.window==="no-window"){return l()}if(F(r)){return c(r)}return l("proxy authentication required")}if(A.status===421&&!s&&(a.body==null||a.body.source!=null)){if(F(r)){return c(r)}r.controller.connection.destroy();A=await httpNetworkOrCacheFetch(r,i,true)}if(i){}return A}async function httpNetworkFetch(r,i=false,a=false){K(!r.controller.connection||r.controller.connection.destroyed);r.controller.connection={abort:null,destroyed:false,destroy(r){if(!this.destroyed){this.destroyed=true;this.abort?.(r??new ne("The operation was aborted.","AbortError"))}}};const d=r.request;let u=null;const h=r.timingInfo;const y=null;if(y==null){d.cache="no-store"}const b=a?"yes":"no";if(d.mode==="websocket"){}else{}let C=null;if(d.body==null&&r.processRequestEndOfBody){queueMicrotask((()=>r.processRequestEndOfBody()))}else if(d.body!=null){const processBodyChunk=async function*(i){if(F(r)){return}yield i;r.processRequestBodyChunkLength?.(i.byteLength)};const processEndOfBody=()=>{if(F(r)){return}if(r.processRequestEndOfBody){r.processRequestEndOfBody()}};const processBodyError=i=>{if(F(r)){return}if(i.name==="AbortError"){r.controller.abort()}else{r.controller.terminate(i)}};C=async function*(){try{for await(const r of d.body.stream){yield*processBodyChunk(r)}processEndOfBody()}catch(r){processBodyError(r)}}()}try{const{body:i,status:s,statusText:a,headersList:l,socket:c}=await dispatch({body:C});if(c){u=p({status:s,statusText:a,headersList:l,socket:c})}else{const c=i[Symbol.asyncIterator]();r.controller.next=()=>c.next();u=p({status:s,statusText:a,headersList:l})}}catch(i){if(i.name==="AbortError"){r.controller.connection.destroy();return c(r,i)}return l(i)}const pullAlgorithm=()=>{r.controller.resume()};const cancelAlgorithm=i=>{r.controller.abort(i)};if(!Be){Be=s(35356).ReadableStream}const B=new Be({async start(i){r.controller.controller=i},async pull(r){await pullAlgorithm(r)},async cancel(r){await cancelAlgorithm(r)}},{highWaterMark:0,size(){return 1}});u.body={stream:B};r.controller.on("terminated",onAborted);r.controller.resume=async()=>{while(true){let i;let s;try{const{done:s,value:a}=await r.controller.next();if(M(r)){break}i=s?undefined:a}catch(a){if(r.controller.ended&&!h.encodedBodySize){i=undefined}else{i=a;s=true}}if(i===undefined){q(r.controller.controller);finalizeResponse(r,u);return}h.decodedBodySize+=i?.byteLength??0;if(s){r.controller.terminate(i);return}r.controller.controller.enqueue(new Uint8Array(i));if(de(B)){r.controller.terminate();return}if(!r.controller.controller.desiredSize){return}}};function onAborted(i){if(M(r)){u.aborted=true;if(pe(B)){r.controller.controller.error(r.controller.serializedAbortReason)}}else{if(pe(B)){r.controller.controller.error(new TypeError("terminated",{cause:U(i)?i:undefined}))}}r.controller.connection.destroy()}return u;async function dispatch({body:i}){const s=S(d);const a=r.controller.dispatcher;return new Promise(((l,c)=>a.dispatch({path:s.pathname+s.search,origin:s.origin,method:d.method,body:r.controller.dispatcher.isMockActive?d.body&&(d.body.source||d.body.stream):i,headers:d.headersList.entries,maxRedirections:0,upgrade:d.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(i){const{connection:s}=r.controller;if(s.destroyed){i(new ne("The operation was aborted.","AbortError"))}else{r.controller.on("terminated",i);this.abort=s.abort=i}},onHeaders(r,i,s,a){if(r<200){return}let c=[];let p="";const u=new A;if(Array.isArray(i)){for(let r=0;rr.trim()))}else if(s.toLowerCase()==="location"){p=a}u[se].append(s,a)}}else{const r=Object.keys(i);for(const s of r){const r=i[s];if(s.toLowerCase()==="content-encoding"){c=r.toLowerCase().split(",").map((r=>r.trim())).reverse()}else if(s.toLowerCase()==="location"){p=r}u[se].append(s,r)}}this.body=new oe({read:s});const h=[];const y=d.redirect==="follow"&&p&&Z.has(r);if(d.method!=="HEAD"&&d.method!=="CONNECT"&&!ee.includes(r)&&!y){for(const r of c){if(r==="x-gzip"||r==="gzip"){h.push(g.createGunzip({flush:g.constants.Z_SYNC_FLUSH,finishFlush:g.constants.Z_SYNC_FLUSH}))}else if(r==="deflate"){h.push(g.createInflate())}else if(r==="br"){h.push(g.createBrotliDecompress())}else{h.length=0;break}}}l({status:r,statusText:a,headersList:u[se],body:h.length?le(this.body,...h,(()=>{})):this.body.on("error",(()=>{}))});return true},onData(i){if(r.controller.dump){return}const s=i;h.encodedBodySize+=s.byteLength;return this.body.push(s)},onComplete(){if(this.abort){r.controller.off("terminated",this.abort)}r.controller.ended=true;this.body.push(null)},onError(i){if(this.abort){r.controller.off("terminated",this.abort)}this.body?.destroy(i);r.controller.terminate(i);c(i)},onUpgrade(r,i,s){if(r!==101){return}const a=new A;for(let r=0;r{"use strict";const{extractBody:a,mixinBody:l,cloneBody:c}=s(79758);const{Headers:d,fill:p,HeadersList:A}=s(77613);const{FinalizationRegistry:u}=s(15575)();const h=s(85310);const{isValidHTTPToken:g,sameOrigin:y,normalizeMethod:b,makePolicyContainer:C,normalizeMethodRecord:B}=s(52663);const{forbiddenMethodsSet:I,corsSafeListedMethodsSet:w,referrerPolicy:v,requestRedirect:S,requestMode:Q,requestCredentials:N,requestCache:R,requestDuplex:k}=s(11753);const{kEnumerableProperty:T}=h;const{kHeaders:_,kSignal:x,kState:D,kGuard:P,kRealm:O}=s(42378);const{webidl:L}=s(54150);const{getGlobalOrigin:F}=s(51227);const{URLSerializer:M}=s(3464);const{kHeadersList:U,kConstruct:H}=s(22405);const q=s(39491);const{getMaxListeners:G,setMaxListeners:j,getEventListeners:z,defaultMaxListeners:V}=s(82361);let W=globalThis.TransformStream;const Y=Symbol("abortController");const J=new u((({signal:r,abort:i})=>{r.removeEventListener("abort",i)}));class Request{constructor(r,i={}){if(r===H){return}L.argumentLengthCheck(arguments,1,{header:"Request constructor"});r=L.converters.RequestInfo(r);i=L.converters.RequestInit(i);this[O]={settingsObject:{baseUrl:F(),get origin(){return this.baseUrl?.origin},policyContainer:C()}};let l=null;let c=null;const u=this[O].settingsObject.baseUrl;let v=null;if(typeof r==="string"){let i;try{i=new URL(r,u)}catch(i){throw new TypeError("Failed to parse URL from "+r,{cause:i})}if(i.username||i.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+r)}l=makeRequest({urlList:[i]});c="cors"}else{q(r instanceof Request);l=r[D];v=r[x]}const S=this[O].settingsObject.origin;let Q="client";if(l.window?.constructor?.name==="EnvironmentSettingsObject"&&y(l.window,S)){Q=l.window}if(i.window!=null){throw new TypeError(`'window' option '${Q}' must be null`)}if("window"in i){Q="no-window"}l=makeRequest({method:l.method,headersList:l.headersList,unsafeRequest:l.unsafeRequest,client:this[O].settingsObject,window:Q,priority:l.priority,origin:l.origin,referrer:l.referrer,referrerPolicy:l.referrerPolicy,mode:l.mode,credentials:l.credentials,cache:l.cache,redirect:l.redirect,integrity:l.integrity,keepalive:l.keepalive,reloadNavigation:l.reloadNavigation,historyNavigation:l.historyNavigation,urlList:[...l.urlList]});const N=Object.keys(i).length!==0;if(N){if(l.mode==="navigate"){l.mode="same-origin"}l.reloadNavigation=false;l.historyNavigation=false;l.origin="client";l.referrer="client";l.referrerPolicy="";l.url=l.urlList[l.urlList.length-1];l.urlList=[l.url]}if(i.referrer!==undefined){const r=i.referrer;if(r===""){l.referrer="no-referrer"}else{let i;try{i=new URL(r,u)}catch(i){throw new TypeError(`Referrer "${r}" is not a valid URL.`,{cause:i})}if(i.protocol==="about:"&&i.hostname==="client"||S&&!y(i,this[O].settingsObject.baseUrl)){l.referrer="client"}else{l.referrer=i}}}if(i.referrerPolicy!==undefined){l.referrerPolicy=i.referrerPolicy}let R;if(i.mode!==undefined){R=i.mode}else{R=c}if(R==="navigate"){throw L.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(R!=null){l.mode=R}if(i.credentials!==undefined){l.credentials=i.credentials}if(i.cache!==undefined){l.cache=i.cache}if(l.cache==="only-if-cached"&&l.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(i.redirect!==undefined){l.redirect=i.redirect}if(i.integrity!=null){l.integrity=String(i.integrity)}if(i.keepalive!==undefined){l.keepalive=Boolean(i.keepalive)}if(i.method!==undefined){let r=i.method;if(!g(r)){throw new TypeError(`'${r}' is not a valid HTTP method.`)}if(I.has(r.toUpperCase())){throw new TypeError(`'${r}' HTTP method is unsupported.`)}r=B[r]??b(r);l.method=r}if(i.signal!==undefined){v=i.signal}this[D]=l;const k=new AbortController;this[x]=k.signal;this[x][O]=this[O];if(v!=null){if(!v||typeof v.aborted!=="boolean"||typeof v.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(v.aborted){k.abort(v.reason)}else{this[Y]=k;const r=new WeakRef(k);const abort=function(){const i=r.deref();if(i!==undefined){i.abort(this.reason)}};try{if(typeof G==="function"&&G(v)===V){j(100,v)}else if(z(v,"abort").length>=V){j(100,v)}}catch{}h.addAbortListener(v,abort);J.register(k,{signal:v,abort:abort})}}this[_]=new d(H);this[_][U]=l.headersList;this[_][P]="request";this[_][O]=this[O];if(R==="no-cors"){if(!w.has(l.method)){throw new TypeError(`'${l.method} is unsupported in no-cors mode.`)}this[_][P]="request-no-cors"}if(N){const r=this[_][U];const s=i.headers!==undefined?i.headers:new A(r);r.clear();if(s instanceof A){for(const[i,a]of s){r.append(i,a)}r.cookies=s.cookies}else{p(this[_],s)}}const T=r instanceof Request?r[D].body:null;if((i.body!=null||T!=null)&&(l.method==="GET"||l.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let M=null;if(i.body!=null){const[r,s]=a(i.body,l.keepalive);M=r;if(s&&!this[_][U].contains("content-type")){this[_].append("content-type",s)}}const $=M??T;if($!=null&&$.source==null){if(M!=null&&i.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(l.mode!=="same-origin"&&l.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}l.useCORSPreflightFlag=true}let K=$;if(M==null&&T!=null){if(h.isDisturbed(T.stream)||T.stream.locked){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}if(!W){W=s(35356).TransformStream}const r=new W;T.stream.pipeThrough(r);K={source:T.source,length:T.length,stream:r.readable}}this[D].body=K}get method(){L.brandCheck(this,Request);return this[D].method}get url(){L.brandCheck(this,Request);return M(this[D].url)}get headers(){L.brandCheck(this,Request);return this[_]}get destination(){L.brandCheck(this,Request);return this[D].destination}get referrer(){L.brandCheck(this,Request);if(this[D].referrer==="no-referrer"){return""}if(this[D].referrer==="client"){return"about:client"}return this[D].referrer.toString()}get referrerPolicy(){L.brandCheck(this,Request);return this[D].referrerPolicy}get mode(){L.brandCheck(this,Request);return this[D].mode}get credentials(){return this[D].credentials}get cache(){L.brandCheck(this,Request);return this[D].cache}get redirect(){L.brandCheck(this,Request);return this[D].redirect}get integrity(){L.brandCheck(this,Request);return this[D].integrity}get keepalive(){L.brandCheck(this,Request);return this[D].keepalive}get isReloadNavigation(){L.brandCheck(this,Request);return this[D].reloadNavigation}get isHistoryNavigation(){L.brandCheck(this,Request);return this[D].historyNavigation}get signal(){L.brandCheck(this,Request);return this[x]}get body(){L.brandCheck(this,Request);return this[D].body?this[D].body.stream:null}get bodyUsed(){L.brandCheck(this,Request);return!!this[D].body&&h.isDisturbed(this[D].body.stream)}get duplex(){L.brandCheck(this,Request);return"half"}clone(){L.brandCheck(this,Request);if(this.bodyUsed||this.body?.locked){throw new TypeError("unusable")}const r=cloneRequest(this[D]);const i=new Request(H);i[D]=r;i[O]=this[O];i[_]=new d(H);i[_][U]=r.headersList;i[_][P]=this[_][P];i[_][O]=this[_][O];const s=new AbortController;if(this.signal.aborted){s.abort(this.signal.reason)}else{h.addAbortListener(this.signal,(()=>{s.abort(this.signal.reason)}))}i[x]=s.signal;return i}}l(Request);function makeRequest(r){const i={method:"GET",localURLsOnly:false,unsafeRequest:false,body:null,client:null,reservedClient:null,replacesClientId:"",window:"client",keepalive:false,serviceWorkers:"all",initiator:"",destination:"",priority:null,origin:"client",policyContainer:"client",referrer:"client",referrerPolicy:"",mode:"no-cors",useCORSPreflightFlag:false,credentials:"same-origin",useCredentials:false,cache:"default",redirect:"follow",integrity:"",cryptoGraphicsNonceMetadata:"",parserMetadata:"",reloadNavigation:false,historyNavigation:false,userActivation:false,taintedOrigin:false,redirectCount:0,responseTainting:"basic",preventNoCacheCacheControlHeaderModification:false,done:false,timingAllowFailed:false,...r,headersList:r.headersList?new A(r.headersList):new A};i.url=i.urlList[0];return i}function cloneRequest(r){const i=makeRequest({...r,body:null});if(r.body!=null){i.body=c(r.body)}return i}Object.defineProperties(Request.prototype,{method:T,url:T,headers:T,redirect:T,clone:T,signal:T,duplex:T,destination:T,body:T,bodyUsed:T,isHistoryNavigation:T,isReloadNavigation:T,keepalive:T,integrity:T,cache:T,credentials:T,attribute:T,referrerPolicy:T,referrer:T,mode:T,[Symbol.toStringTag]:{value:"Request",configurable:true}});L.converters.Request=L.interfaceConverter(Request);L.converters.RequestInfo=function(r){if(typeof r==="string"){return L.converters.USVString(r)}if(r instanceof Request){return L.converters.Request(r)}return L.converters.USVString(r)};L.converters.AbortSignal=L.interfaceConverter(AbortSignal);L.converters.RequestInit=L.dictionaryConverter([{key:"method",converter:L.converters.ByteString},{key:"headers",converter:L.converters.HeadersInit},{key:"body",converter:L.nullableConverter(L.converters.BodyInit)},{key:"referrer",converter:L.converters.USVString},{key:"referrerPolicy",converter:L.converters.DOMString,allowedValues:v},{key:"mode",converter:L.converters.DOMString,allowedValues:Q},{key:"credentials",converter:L.converters.DOMString,allowedValues:N},{key:"cache",converter:L.converters.DOMString,allowedValues:R},{key:"redirect",converter:L.converters.DOMString,allowedValues:S},{key:"integrity",converter:L.converters.DOMString},{key:"keepalive",converter:L.converters.boolean},{key:"signal",converter:L.nullableConverter((r=>L.converters.AbortSignal(r,{strict:false})))},{key:"window",converter:L.converters.any},{key:"duplex",converter:L.converters.DOMString,allowedValues:k}]);r.exports={Request:Request,makeRequest:makeRequest}},89530:(r,i,s)=>{"use strict";const{Headers:a,HeadersList:l,fill:c}=s(77613);const{extractBody:d,cloneBody:p,mixinBody:A}=s(79758);const u=s(85310);const{kEnumerableProperty:h}=u;const{isValidReasonPhrase:g,isCancelled:y,isAborted:b,isBlobLike:C,serializeJavascriptValueToJSONString:B,isErrorLike:I,isomorphicEncode:w}=s(52663);const{redirectStatusSet:v,nullBodyStatus:S,DOMException:Q}=s(11753);const{kState:N,kHeaders:R,kGuard:k,kRealm:T}=s(42378);const{webidl:_}=s(54150);const{FormData:x}=s(24081);const{getGlobalOrigin:D}=s(51227);const{URLSerializer:P}=s(3464);const{kHeadersList:O,kConstruct:L}=s(22405);const F=s(39491);const{types:M}=s(73837);const U=globalThis.ReadableStream||s(35356).ReadableStream;const H=new TextEncoder("utf-8");class Response{static error(){const r={settingsObject:{}};const i=new Response;i[N]=makeNetworkError();i[T]=r;i[R][O]=i[N].headersList;i[R][k]="immutable";i[R][T]=r;return i}static json(r,i={}){_.argumentLengthCheck(arguments,1,{header:"Response.json"});if(i!==null){i=_.converters.ResponseInit(i)}const s=H.encode(B(r));const a=d(s);const l={settingsObject:{}};const c=new Response;c[T]=l;c[R][k]="response";c[R][T]=l;initializeResponse(c,i,{body:a[0],type:"application/json"});return c}static redirect(r,i=302){const s={settingsObject:{}};_.argumentLengthCheck(arguments,1,{header:"Response.redirect"});r=_.converters.USVString(r);i=_.converters["unsigned short"](i);let a;try{a=new URL(r,D())}catch(i){throw Object.assign(new TypeError("Failed to parse URL from "+r),{cause:i})}if(!v.has(i)){throw new RangeError("Invalid status code "+i)}const l=new Response;l[T]=s;l[R][k]="immutable";l[R][T]=s;l[N].status=i;const c=w(P(a));l[N].headersList.append("location",c);return l}constructor(r=null,i={}){if(r!==null){r=_.converters.BodyInit(r)}i=_.converters.ResponseInit(i);this[T]={settingsObject:{}};this[N]=makeResponse({});this[R]=new a(L);this[R][k]="response";this[R][O]=this[N].headersList;this[R][T]=this[T];let s=null;if(r!=null){const[i,a]=d(r);s={body:i,type:a}}initializeResponse(this,i,s)}get type(){_.brandCheck(this,Response);return this[N].type}get url(){_.brandCheck(this,Response);const r=this[N].urlList;const i=r[r.length-1]??null;if(i===null){return""}return P(i,true)}get redirected(){_.brandCheck(this,Response);return this[N].urlList.length>1}get status(){_.brandCheck(this,Response);return this[N].status}get ok(){_.brandCheck(this,Response);return this[N].status>=200&&this[N].status<=299}get statusText(){_.brandCheck(this,Response);return this[N].statusText}get headers(){_.brandCheck(this,Response);return this[R]}get body(){_.brandCheck(this,Response);return this[N].body?this[N].body.stream:null}get bodyUsed(){_.brandCheck(this,Response);return!!this[N].body&&u.isDisturbed(this[N].body.stream)}clone(){_.brandCheck(this,Response);if(this.bodyUsed||this.body&&this.body.locked){throw _.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const r=cloneResponse(this[N]);const i=new Response;i[N]=r;i[T]=this[T];i[R][O]=r.headersList;i[R][k]=this[R][k];i[R][T]=this[R][T];return i}}A(Response);Object.defineProperties(Response.prototype,{type:h,url:h,status:h,ok:h,redirected:h,statusText:h,headers:h,clone:h,body:h,bodyUsed:h,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:h,redirect:h,error:h});function cloneResponse(r){if(r.internalResponse){return filterResponse(cloneResponse(r.internalResponse),r.type)}const i=makeResponse({...r,body:null});if(r.body!=null){i.body=p(r.body)}return i}function makeResponse(r){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...r,headersList:r.headersList?new l(r.headersList):new l,urlList:r.urlList?[...r.urlList]:[]}}function makeNetworkError(r){const i=I(r);return makeResponse({type:"error",status:0,error:i?r:new Error(r?String(r):r),aborted:r&&r.name==="AbortError"})}function makeFilteredResponse(r,i){i={internalResponse:r,...i};return new Proxy(r,{get(r,s){return s in i?i[s]:r[s]},set(r,s,a){F(!(s in i));r[s]=a;return true}})}function filterResponse(r,i){if(i==="basic"){return makeFilteredResponse(r,{type:"basic",headersList:r.headersList})}else if(i==="cors"){return makeFilteredResponse(r,{type:"cors",headersList:r.headersList})}else if(i==="opaque"){return makeFilteredResponse(r,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(i==="opaqueredirect"){return makeFilteredResponse(r,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{F(false)}}function makeAppropriateNetworkError(r,i=null){F(y(r));return b(r)?makeNetworkError(Object.assign(new Q("The operation was aborted.","AbortError"),{cause:i})):makeNetworkError(Object.assign(new Q("Request was cancelled."),{cause:i}))}function initializeResponse(r,i,s){if(i.status!==null&&(i.status<200||i.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in i&&i.statusText!=null){if(!g(String(i.statusText))){throw new TypeError("Invalid statusText")}}if("status"in i&&i.status!=null){r[N].status=i.status}if("statusText"in i&&i.statusText!=null){r[N].statusText=i.statusText}if("headers"in i&&i.headers!=null){c(r[R],i.headers)}if(s){if(S.includes(r.status)){throw _.errors.exception({header:"Response constructor",message:"Invalid response status code "+r.status})}r[N].body=s.body;if(s.type!=null&&!r[N].headersList.contains("Content-Type")){r[N].headersList.append("content-type",s.type)}}}_.converters.ReadableStream=_.interfaceConverter(U);_.converters.FormData=_.interfaceConverter(x);_.converters.URLSearchParams=_.interfaceConverter(URLSearchParams);_.converters.XMLHttpRequestBodyInit=function(r){if(typeof r==="string"){return _.converters.USVString(r)}if(C(r)){return _.converters.Blob(r,{strict:false})}if(M.isArrayBuffer(r)||M.isTypedArray(r)||M.isDataView(r)){return _.converters.BufferSource(r)}if(u.isFormDataLike(r)){return _.converters.FormData(r,{strict:false})}if(r instanceof URLSearchParams){return _.converters.URLSearchParams(r)}return _.converters.DOMString(r)};_.converters.BodyInit=function(r){if(r instanceof U){return _.converters.ReadableStream(r)}if(r?.[Symbol.asyncIterator]){return r}return _.converters.XMLHttpRequestBodyInit(r)};_.converters.ResponseInit=_.dictionaryConverter([{key:"status",converter:_.converters["unsigned short"],defaultValue:200},{key:"statusText",converter:_.converters.ByteString,defaultValue:""},{key:"headers",converter:_.converters.HeadersInit}]);r.exports={makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse}},42378:r=>{"use strict";r.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kGuard:Symbol("guard"),kRealm:Symbol("realm")}},52663:(r,i,s)=>{"use strict";const{redirectStatusSet:a,referrerPolicySet:l,badPortsSet:c}=s(11753);const{getGlobalOrigin:d}=s(51227);const{performance:p}=s(4074);const{isBlobLike:A,toUSVString:u,ReadableStreamFrom:h}=s(85310);const g=s(39491);const{isUint8Array:y}=s(29830);let b=[];let C;try{C=s(6113);const r=["sha256","sha384","sha512"];b=C.getHashes().filter((i=>r.includes(i)))}catch{}function responseURL(r){const i=r.urlList;const s=i.length;return s===0?null:i[s-1].toString()}function responseLocationURL(r,i){if(!a.has(r.status)){return null}let s=r.headersList.get("location");if(s!==null&&isValidHeaderValue(s)){s=new URL(s,responseURL(r))}if(s&&!s.hash){s.hash=i}return s}function requestCurrentURL(r){return r.urlList[r.urlList.length-1]}function requestBadPort(r){const i=requestCurrentURL(r);if(urlIsHttpHttpsScheme(i)&&c.has(i.port)){return"blocked"}return"allowed"}function isErrorLike(r){return r instanceof Error||(r?.constructor?.name==="Error"||r?.constructor?.name==="DOMException")}function isValidReasonPhrase(r){for(let i=0;i=32&&s<=126||s>=128&&s<=255)){return false}}return true}function isTokenCharCode(r){switch(r){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return false;default:return r>=33&&r<=126}}function isValidHTTPToken(r){if(r.length===0){return false}for(let i=0;i0){for(let r=a.length;r!==0;r--){const i=a[r-1].trim();if(l.has(i)){c=i;break}}}if(c!==""){r.referrerPolicy=c}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(r){let i=null;i=r.mode;r.headersList.set("sec-fetch-mode",i)}function appendRequestOriginHeader(r){let i=r.origin;if(r.responseTainting==="cors"||r.mode==="websocket"){if(i){r.headersList.append("origin",i)}}else if(r.method!=="GET"&&r.method!=="HEAD"){switch(r.referrerPolicy){case"no-referrer":i=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(r.origin&&urlHasHttpsScheme(r.origin)&&!urlHasHttpsScheme(requestCurrentURL(r))){i=null}break;case"same-origin":if(!sameOrigin(r,requestCurrentURL(r))){i=null}break;default:}if(i){r.headersList.append("origin",i)}}}function coarsenedSharedCurrentTime(r){return p.now()}function createOpaqueTimingInfo(r){return{startTime:r.startTime??0,redirectStartTime:0,redirectEndTime:0,postRedirectStartTime:r.startTime??0,finalServiceWorkerStartTime:0,finalNetworkResponseStartTime:0,finalNetworkRequestStartTime:0,endTime:0,encodedBodySize:0,decodedBodySize:0,finalConnectionTimingInfo:null}}function makePolicyContainer(){return{referrerPolicy:"strict-origin-when-cross-origin"}}function clonePolicyContainer(r){return{referrerPolicy:r.referrerPolicy}}function determineRequestsReferrer(r){const i=r.referrerPolicy;g(i);let s=null;if(r.referrer==="client"){const r=d();if(!r||r.origin==="null"){return"no-referrer"}s=new URL(r)}else if(r.referrer instanceof URL){s=r.referrer}let a=stripURLForReferrer(s);const l=stripURLForReferrer(s,true);if(a.toString().length>4096){a=l}const c=sameOrigin(r,a);const p=isURLPotentiallyTrustworthy(a)&&!isURLPotentiallyTrustworthy(r.url);switch(i){case"origin":return l!=null?l:stripURLForReferrer(s,true);case"unsafe-url":return a;case"same-origin":return c?l:"no-referrer";case"origin-when-cross-origin":return c?a:l;case"strict-origin-when-cross-origin":{const i=requestCurrentURL(r);if(sameOrigin(a,i)){return a}if(isURLPotentiallyTrustworthy(a)&&!isURLPotentiallyTrustworthy(i)){return"no-referrer"}return l}case"strict-origin":case"no-referrer-when-downgrade":default:return p?"no-referrer":l}}function stripURLForReferrer(r,i){g(r instanceof URL);if(r.protocol==="file:"||r.protocol==="about:"||r.protocol==="blank:"){return"no-referrer"}r.username="";r.password="";r.hash="";if(i){r.pathname="";r.search=""}return r}function isURLPotentiallyTrustworthy(r){if(!(r instanceof URL)){return false}if(r.href==="about:blank"||r.href==="about:srcdoc"){return true}if(r.protocol==="data:")return true;if(r.protocol==="file:")return true;return isOriginPotentiallyTrustworthy(r.origin);function isOriginPotentiallyTrustworthy(r){if(r==null||r==="null")return false;const i=new URL(r);if(i.protocol==="https:"||i.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(i.hostname)||(i.hostname==="localhost"||i.hostname.includes("localhost."))||i.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(r,i){if(C===undefined){return true}const s=parseMetadata(i);if(s==="no metadata"){return true}if(s.length===0){return true}const a=getStrongestMetadata(s);const l=filterMetadataListByAlgorithm(s,a);for(const i of l){const s=i.algo;const a=i.hash;let l=C.createHash(s).update(r).digest("base64");if(l[l.length-1]==="="){if(l[l.length-2]==="="){l=l.slice(0,-2)}else{l=l.slice(0,-1)}}if(compareBase64Mixed(l,a)){return true}}return false}const B=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function parseMetadata(r){const i=[];let s=true;for(const a of r.split(" ")){s=false;const r=B.exec(a);if(r===null||r.groups===undefined||r.groups.algo===undefined){continue}const l=r.groups.algo.toLowerCase();if(b.includes(l)){i.push(r.groups)}}if(s===true){return"no metadata"}return i}function getStrongestMetadata(r){let i=r[0].algo;if(i[3]==="5"){return i}for(let s=1;s{r=s;i=a}));return{promise:s,resolve:r,reject:i}}function isAborted(r){return r.controller.state==="aborted"}function isCancelled(r){return r.controller.state==="aborted"||r.controller.state==="terminated"}const I={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"};Object.setPrototypeOf(I,null);function normalizeMethod(r){return I[r.toLowerCase()]??r}function serializeJavascriptValueToJSONString(r){const i=JSON.stringify(r);if(i===undefined){throw new TypeError("Value is not JSON serializable")}g(typeof i==="string");return i}const w=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function makeIterator(r,i,s){const a={index:0,kind:s,target:r};const l={next(){if(Object.getPrototypeOf(this)!==l){throw new TypeError(`'next' called on an object that does not implement interface ${i} Iterator.`)}const{index:r,kind:s,target:c}=a;const d=c();const p=d.length;if(r>=p){return{value:undefined,done:true}}const A=d[r];a.index=r+1;return iteratorResult(A,s)},[Symbol.toStringTag]:`${i} Iterator`};Object.setPrototypeOf(l,w);return Object.setPrototypeOf({},l)}function iteratorResult(r,i){let s;switch(i){case"key":{s=r[0];break}case"value":{s=r[1];break}case"key+value":{s=r;break}}return{value:s,done:false}}async function fullyReadBody(r,i,s){const a=i;const l=s;let c;try{c=r.stream.getReader()}catch(r){l(r);return}try{const r=await readAllBytes(c);a(r)}catch(r){l(r)}}let v=globalThis.ReadableStream;function isReadableStreamLike(r){if(!v){v=s(35356).ReadableStream}return r instanceof v||r[Symbol.toStringTag]==="ReadableStream"&&typeof r.tee==="function"}const S=65535;function isomorphicDecode(r){if(r.lengthr+String.fromCharCode(i)),"")}function readableStreamClose(r){try{r.close()}catch(r){if(!r.message.includes("Controller is already closed")){throw r}}}function isomorphicEncode(r){for(let i=0;iObject.prototype.hasOwnProperty.call(r,i));r.exports={isAborted:isAborted,isCancelled:isCancelled,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:h,toUSVString:u,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:isValidHTTPToken,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:A,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,makeIterator:makeIterator,isValidHeaderName:isValidHeaderName,isValidHeaderValue:isValidHeaderValue,hasOwn:Q,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,isomorphicDecode:isomorphicDecode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,normalizeMethodRecord:I,parseMetadata:parseMetadata}},54150:(r,i,s)=>{"use strict";const{types:a}=s(73837);const{hasOwn:l,toUSVString:c}=s(52663);const d={};d.converters={};d.util={};d.errors={};d.errors.exception=function(r){return new TypeError(`${r.header}: ${r.message}`)};d.errors.conversionFailed=function(r){const i=r.types.length===1?"":" one of";const s=`${r.argument} could not be converted to`+`${i}: ${r.types.join(", ")}.`;return d.errors.exception({header:r.prefix,message:s})};d.errors.invalidArgument=function(r){return d.errors.exception({header:r.prefix,message:`"${r.value}" is an invalid ${r.type}.`})};d.brandCheck=function(r,i,s=undefined){if(s?.strict!==false&&!(r instanceof i)){throw new TypeError("Illegal invocation")}else{return r?.[Symbol.toStringTag]===i.prototype[Symbol.toStringTag]}};d.argumentLengthCheck=function({length:r},i,s){if(rl){throw d.errors.exception({header:"Integer conversion",message:`Value must be between ${c}-${l}, got ${p}.`})}return p}if(!Number.isNaN(p)&&a.clamp===true){p=Math.min(Math.max(p,c),l);if(Math.floor(p)%2===0){p=Math.floor(p)}else{p=Math.ceil(p)}return p}if(Number.isNaN(p)||p===0&&Object.is(0,p)||p===Number.POSITIVE_INFINITY||p===Number.NEGATIVE_INFINITY){return 0}p=d.util.IntegerPart(p);p=p%Math.pow(2,i);if(s==="signed"&&p>=Math.pow(2,i)-1){return p-Math.pow(2,i)}return p};d.util.IntegerPart=function(r){const i=Math.floor(Math.abs(r));if(r<0){return-1*i}return i};d.sequenceConverter=function(r){return i=>{if(d.util.Type(i)!=="Object"){throw d.errors.exception({header:"Sequence",message:`Value of type ${d.util.Type(i)} is not an Object.`})}const s=i?.[Symbol.iterator]?.();const a=[];if(s===undefined||typeof s.next!=="function"){throw d.errors.exception({header:"Sequence",message:"Object is not an iterator."})}while(true){const{done:i,value:l}=s.next();if(i){break}a.push(r(l))}return a}};d.recordConverter=function(r,i){return s=>{if(d.util.Type(s)!=="Object"){throw d.errors.exception({header:"Record",message:`Value of type ${d.util.Type(s)} is not an Object.`})}const l={};if(!a.isProxy(s)){const a=Object.keys(s);for(const c of a){const a=r(c);const d=i(s[c]);l[a]=d}return l}const c=Reflect.ownKeys(s);for(const a of c){const c=Reflect.getOwnPropertyDescriptor(s,a);if(c?.enumerable){const c=r(a);const d=i(s[a]);l[c]=d}}return l}};d.interfaceConverter=function(r){return(i,s={})=>{if(s.strict!==false&&!(i instanceof r)){throw d.errors.exception({header:r.name,message:`Expected ${i} to be an instance of ${r.name}.`})}return i}};d.dictionaryConverter=function(r){return i=>{const s=d.util.Type(i);const a={};if(s==="Null"||s==="Undefined"){return a}else if(s!=="Object"){throw d.errors.exception({header:"Dictionary",message:`Expected ${i} to be one of: Null, Undefined, Object.`})}for(const s of r){const{key:r,defaultValue:c,required:p,converter:A}=s;if(p===true){if(!l(i,r)){throw d.errors.exception({header:"Dictionary",message:`Missing required key "${r}".`})}}let u=i[r];const h=l(s,"defaultValue");if(h&&u!==null){u=u??c}if(p||h||u!==undefined){u=A(u);if(s.allowedValues&&!s.allowedValues.includes(u)){throw d.errors.exception({header:"Dictionary",message:`${u} is not an accepted type. Expected one of ${s.allowedValues.join(", ")}.`})}a[r]=u}}return a}};d.nullableConverter=function(r){return i=>{if(i===null){return i}return r(i)}};d.converters.DOMString=function(r,i={}){if(r===null&&i.legacyNullToEmptyString){return""}if(typeof r==="symbol"){throw new TypeError("Could not convert argument of type symbol to string.")}return String(r)};d.converters.ByteString=function(r){const i=d.converters.DOMString(r);for(let r=0;r255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${r} has a value of ${i.charCodeAt(r)} which is greater than 255.`)}}return i};d.converters.USVString=c;d.converters.boolean=function(r){const i=Boolean(r);return i};d.converters.any=function(r){return r};d.converters["long long"]=function(r){const i=d.util.ConvertToInt(r,64,"signed");return i};d.converters["unsigned long long"]=function(r){const i=d.util.ConvertToInt(r,64,"unsigned");return i};d.converters["unsigned long"]=function(r){const i=d.util.ConvertToInt(r,32,"unsigned");return i};d.converters["unsigned short"]=function(r,i){const s=d.util.ConvertToInt(r,16,"unsigned",i);return s};d.converters.ArrayBuffer=function(r,i={}){if(d.util.Type(r)!=="Object"||!a.isAnyArrayBuffer(r)){throw d.errors.conversionFailed({prefix:`${r}`,argument:`${r}`,types:["ArrayBuffer"]})}if(i.allowShared===false&&a.isSharedArrayBuffer(r)){throw d.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return r};d.converters.TypedArray=function(r,i,s={}){if(d.util.Type(r)!=="Object"||!a.isTypedArray(r)||r.constructor.name!==i.name){throw d.errors.conversionFailed({prefix:`${i.name}`,argument:`${r}`,types:[i.name]})}if(s.allowShared===false&&a.isSharedArrayBuffer(r.buffer)){throw d.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return r};d.converters.DataView=function(r,i={}){if(d.util.Type(r)!=="Object"||!a.isDataView(r)){throw d.errors.exception({header:"DataView",message:"Object is not a DataView."})}if(i.allowShared===false&&a.isSharedArrayBuffer(r.buffer)){throw d.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}return r};d.converters.BufferSource=function(r,i={}){if(a.isAnyArrayBuffer(r)){return d.converters.ArrayBuffer(r,i)}if(a.isTypedArray(r)){return d.converters.TypedArray(r,r.constructor)}if(a.isDataView(r)){return d.converters.DataView(r,i)}throw new TypeError(`Could not convert ${r} to a BufferSource.`)};d.converters["sequence"]=d.sequenceConverter(d.converters.ByteString);d.converters["sequence>"]=d.sequenceConverter(d.converters["sequence"]);d.converters["record"]=d.recordConverter(d.converters.ByteString,d.converters.ByteString);r.exports={webidl:d}},99009:r=>{"use strict";function getEncoding(r){if(!r){return"failure"}switch(r.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}r.exports={getEncoding:getEncoding}},7517:(r,i,s)=>{"use strict";const{staticPropertyDescriptors:a,readOperation:l,fireAProgressEvent:c}=s(57560);const{kState:d,kError:p,kResult:A,kEvents:u,kAborted:h}=s(43985);const{webidl:g}=s(54150);const{kEnumerableProperty:y}=s(85310);class FileReader extends EventTarget{constructor(){super();this[d]="empty";this[A]=null;this[p]=null;this[u]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(r){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,{header:"FileReader.readAsArrayBuffer"});r=g.converters.Blob(r,{strict:false});l(this,r,"ArrayBuffer")}readAsBinaryString(r){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,{header:"FileReader.readAsBinaryString"});r=g.converters.Blob(r,{strict:false});l(this,r,"BinaryString")}readAsText(r,i=undefined){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,{header:"FileReader.readAsText"});r=g.converters.Blob(r,{strict:false});if(i!==undefined){i=g.converters.DOMString(i)}l(this,r,"Text",i)}readAsDataURL(r){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,{header:"FileReader.readAsDataURL"});r=g.converters.Blob(r,{strict:false});l(this,r,"DataURL")}abort(){if(this[d]==="empty"||this[d]==="done"){this[A]=null;return}if(this[d]==="loading"){this[d]="done";this[A]=null}this[h]=true;c("abort",this);if(this[d]!=="loading"){c("loadend",this)}}get readyState(){g.brandCheck(this,FileReader);switch(this[d]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){g.brandCheck(this,FileReader);return this[A]}get error(){g.brandCheck(this,FileReader);return this[p]}get onloadend(){g.brandCheck(this,FileReader);return this[u].loadend}set onloadend(r){g.brandCheck(this,FileReader);if(this[u].loadend){this.removeEventListener("loadend",this[u].loadend)}if(typeof r==="function"){this[u].loadend=r;this.addEventListener("loadend",r)}else{this[u].loadend=null}}get onerror(){g.brandCheck(this,FileReader);return this[u].error}set onerror(r){g.brandCheck(this,FileReader);if(this[u].error){this.removeEventListener("error",this[u].error)}if(typeof r==="function"){this[u].error=r;this.addEventListener("error",r)}else{this[u].error=null}}get onloadstart(){g.brandCheck(this,FileReader);return this[u].loadstart}set onloadstart(r){g.brandCheck(this,FileReader);if(this[u].loadstart){this.removeEventListener("loadstart",this[u].loadstart)}if(typeof r==="function"){this[u].loadstart=r;this.addEventListener("loadstart",r)}else{this[u].loadstart=null}}get onprogress(){g.brandCheck(this,FileReader);return this[u].progress}set onprogress(r){g.brandCheck(this,FileReader);if(this[u].progress){this.removeEventListener("progress",this[u].progress)}if(typeof r==="function"){this[u].progress=r;this.addEventListener("progress",r)}else{this[u].progress=null}}get onload(){g.brandCheck(this,FileReader);return this[u].load}set onload(r){g.brandCheck(this,FileReader);if(this[u].load){this.removeEventListener("load",this[u].load)}if(typeof r==="function"){this[u].load=r;this.addEventListener("load",r)}else{this[u].load=null}}get onabort(){g.brandCheck(this,FileReader);return this[u].abort}set onabort(r){g.brandCheck(this,FileReader);if(this[u].abort){this.removeEventListener("abort",this[u].abort)}if(typeof r==="function"){this[u].abort=r;this.addEventListener("abort",r)}else{this[u].abort=null}}}FileReader.EMPTY=FileReader.prototype.EMPTY=0;FileReader.LOADING=FileReader.prototype.LOADING=1;FileReader.DONE=FileReader.prototype.DONE=2;Object.defineProperties(FileReader.prototype,{EMPTY:a,LOADING:a,DONE:a,readAsArrayBuffer:y,readAsBinaryString:y,readAsText:y,readAsDataURL:y,abort:y,readyState:y,result:y,error:y,onloadstart:y,onprogress:y,onload:y,onabort:y,onerror:y,onloadend:y,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:a,LOADING:a,DONE:a});r.exports={FileReader:FileReader}},29599:(r,i,s)=>{"use strict";const{webidl:a}=s(54150);const l=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(r,i={}){r=a.converters.DOMString(r);i=a.converters.ProgressEventInit(i??{});super(r,i);this[l]={lengthComputable:i.lengthComputable,loaded:i.loaded,total:i.total}}get lengthComputable(){a.brandCheck(this,ProgressEvent);return this[l].lengthComputable}get loaded(){a.brandCheck(this,ProgressEvent);return this[l].loaded}get total(){a.brandCheck(this,ProgressEvent);return this[l].total}}a.converters.ProgressEventInit=a.dictionaryConverter([{key:"lengthComputable",converter:a.converters.boolean,defaultValue:false},{key:"loaded",converter:a.converters["unsigned long long"],defaultValue:0},{key:"total",converter:a.converters["unsigned long long"],defaultValue:0},{key:"bubbles",converter:a.converters.boolean,defaultValue:false},{key:"cancelable",converter:a.converters.boolean,defaultValue:false},{key:"composed",converter:a.converters.boolean,defaultValue:false}]);r.exports={ProgressEvent:ProgressEvent}},43985:r=>{"use strict";r.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}},57560:(r,i,s)=>{"use strict";const{kState:a,kError:l,kResult:c,kAborted:d,kLastProgressEventFired:p}=s(43985);const{ProgressEvent:A}=s(29599);const{getEncoding:u}=s(99009);const{DOMException:h}=s(11753);const{serializeAMimeType:g,parseMIMEType:y}=s(3464);const{types:b}=s(73837);const{StringDecoder:C}=s(71576);const{btoa:B}=s(14300);const I={enumerable:true,writable:false,configurable:false};function readOperation(r,i,s,A){if(r[a]==="loading"){throw new h("Invalid state","InvalidStateError")}r[a]="loading";r[c]=null;r[l]=null;const u=i.stream();const g=u.getReader();const y=[];let C=g.read();let B=true;(async()=>{while(!r[d]){try{const{done:u,value:h}=await C;if(B&&!r[d]){queueMicrotask((()=>{fireAProgressEvent("loadstart",r)}))}B=false;if(!u&&b.isUint8Array(h)){y.push(h);if((r[p]===undefined||Date.now()-r[p]>=50)&&!r[d]){r[p]=Date.now();queueMicrotask((()=>{fireAProgressEvent("progress",r)}))}C=g.read()}else if(u){queueMicrotask((()=>{r[a]="done";try{const a=packageData(y,s,i.type,A);if(r[d]){return}r[c]=a;fireAProgressEvent("load",r)}catch(i){r[l]=i;fireAProgressEvent("error",r)}if(r[a]!=="loading"){fireAProgressEvent("loadend",r)}}));break}}catch(i){if(r[d]){return}queueMicrotask((()=>{r[a]="done";r[l]=i;fireAProgressEvent("error",r);if(r[a]!=="loading"){fireAProgressEvent("loadend",r)}}));break}}})()}function fireAProgressEvent(r,i){const s=new A(r,{bubbles:false,cancelable:false});i.dispatchEvent(s)}function packageData(r,i,s,a){switch(i){case"DataURL":{let i="data:";const a=y(s||"application/octet-stream");if(a!=="failure"){i+=g(a)}i+=";base64,";const l=new C("latin1");for(const s of r){i+=B(l.write(s))}i+=B(l.end());return i}case"Text":{let i="failure";if(a){i=u(a)}if(i==="failure"&&s){const r=y(s);if(r!=="failure"){i=u(r.parameters.get("charset"))}}if(i==="failure"){i="UTF-8"}return decode(r,i)}case"ArrayBuffer":{const i=combineByteSequences(r);return i.buffer}case"BinaryString":{let i="";const s=new C("latin1");for(const a of r){i+=s.write(a)}i+=s.end();return i}}}function decode(r,i){const s=combineByteSequences(r);const a=BOMSniffing(s);let l=0;if(a!==null){i=a;l=a==="UTF-8"?3:2}const c=s.slice(l);return new TextDecoder(i).decode(c)}function BOMSniffing(r){const[i,s,a]=r;if(i===239&&s===187&&a===191){return"UTF-8"}else if(i===254&&s===255){return"UTF-16BE"}else if(i===255&&s===254){return"UTF-16LE"}return null}function combineByteSequences(r){const i=r.reduce(((r,i)=>r+i.byteLength),0);let s=0;return r.reduce(((r,i)=>{r.set(i,s);s+=i.byteLength;return r}),new Uint8Array(i))}r.exports={staticPropertyDescriptors:I,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},40598:(r,i,s)=>{"use strict";const a=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:l}=s(95594);const c=s(80706);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new c)}function setGlobalDispatcher(r){if(!r||typeof r.dispatch!=="function"){throw new l("Argument agent must implement Agent")}Object.defineProperty(globalThis,a,{value:r,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[a]}r.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},4901:r=>{"use strict";r.exports=class DecoratorHandler{constructor(r){this.handler=r}onConnect(...r){return this.handler.onConnect(...r)}onError(...r){return this.handler.onError(...r)}onUpgrade(...r){return this.handler.onUpgrade(...r)}onHeaders(...r){return this.handler.onHeaders(...r)}onData(...r){return this.handler.onData(...r)}onComplete(...r){return this.handler.onComplete(...r)}onBodySent(...r){return this.handler.onBodySent(...r)}}},10943:(r,i,s)=>{"use strict";const a=s(85310);const{kBodyUsed:l}=s(22405);const c=s(39491);const{InvalidArgumentError:d}=s(95594);const p=s(82361);const A=[300,301,302,303,307,308];const u=Symbol("body");class BodyAsyncIterable{constructor(r){this[u]=r;this[l]=false}async*[Symbol.asyncIterator](){c(!this[l],"disturbed");this[l]=true;yield*this[u]}}class RedirectHandler{constructor(r,i,s,A){if(i!=null&&(!Number.isInteger(i)||i<0)){throw new d("maxRedirections must be a positive number")}a.validateHandler(A,s.method,s.upgrade);this.dispatch=r;this.location=null;this.abort=null;this.opts={...s,maxRedirections:0};this.maxRedirections=i;this.handler=A;this.history=[];if(a.isStream(this.opts.body)){if(a.bodyLength(this.opts.body)===0){this.opts.body.on("data",(function(){c(false)}))}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[l]=false;p.prototype.on.call(this.opts.body,"data",(function(){this[l]=true}))}}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function"){this.opts.body=new BodyAsyncIterable(this.opts.body)}else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&a.isIterable(this.opts.body)){this.opts.body=new BodyAsyncIterable(this.opts.body)}}onConnect(r){this.abort=r;this.handler.onConnect(r,{history:this.history})}onUpgrade(r,i,s){this.handler.onUpgrade(r,i,s)}onError(r){this.handler.onError(r)}onHeaders(r,i,s,l){this.location=this.history.length>=this.maxRedirections||a.isDisturbed(this.opts.body)?null:parseLocation(r,i);if(this.opts.origin){this.history.push(new URL(this.opts.path,this.opts.origin))}if(!this.location){return this.handler.onHeaders(r,i,s,l)}const{origin:c,pathname:d,search:p}=a.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const A=p?`${d}${p}`:d;this.opts.headers=cleanRequestHeaders(this.opts.headers,r===303,this.opts.origin!==c);this.opts.path=A;this.opts.origin=c;this.opts.maxRedirections=0;this.opts.query=null;if(r===303&&this.opts.method!=="HEAD"){this.opts.method="GET";this.opts.body=null}}onData(r){if(this.location){}else{return this.handler.onData(r)}}onComplete(r){if(this.location){this.location=null;this.abort=null;this.dispatch(this.opts,this)}else{this.handler.onComplete(r)}}onBodySent(r){if(this.handler.onBodySent){this.handler.onBodySent(r)}}}function parseLocation(r,i){if(A.indexOf(r)===-1){return null}for(let r=0;r{const a=s(39491);const{kRetryHandlerDefaultRetry:l}=s(22405);const{RequestRetryError:c}=s(95594);const{isDisturbed:d,parseHeaders:p,parseRangeHeader:A}=s(85310);function calculateRetryAfterHeader(r){const i=Date.now();const s=new Date(r).getTime()-i;return s}class RetryHandler{constructor(r,i){const{retryOptions:s,...a}=r;const{retry:c,maxRetries:d,maxTimeout:p,minTimeout:A,timeoutFactor:u,methods:h,errorCodes:g,retryAfter:y,statusCodes:b}=s??{};this.dispatch=i.dispatch;this.handler=i.handler;this.opts=a;this.abort=null;this.aborted=false;this.retryOpts={retry:c??RetryHandler[l],retryAfter:y??true,maxTimeout:p??30*1e3,timeout:A??500,timeoutFactor:u??2,maxRetries:d??5,methods:h??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:b??[500,502,503,504,429],errorCodes:g??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE"]};this.retryCount=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.handler.onConnect((r=>{this.aborted=true;if(this.abort){this.abort(r)}else{this.reason=r}}))}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(r,i,s){if(this.handler.onUpgrade){this.handler.onUpgrade(r,i,s)}}onConnect(r){if(this.aborted){r(this.reason)}else{this.abort=r}}onBodySent(r){if(this.handler.onBodySent)return this.handler.onBodySent(r)}static[l](r,{state:i,opts:s},a){const{statusCode:l,code:c,headers:d}=r;const{method:p,retryOptions:A}=s;const{maxRetries:u,timeout:h,maxTimeout:g,timeoutFactor:y,statusCodes:b,errorCodes:C,methods:B}=A;let{counter:I,currentTimeout:w}=i;w=w!=null&&w>0?w:h;if(c&&c!=="UND_ERR_REQ_RETRY"&&c!=="UND_ERR_SOCKET"&&!C.includes(c)){a(r);return}if(Array.isArray(B)&&!B.includes(p)){a(r);return}if(l!=null&&Array.isArray(b)&&!b.includes(l)){a(r);return}if(I>u){a(r);return}let v=d!=null&&d["retry-after"];if(v){v=Number(v);v=isNaN(v)?calculateRetryAfterHeader(v):v*1e3}const S=v>0?Math.min(v,g):Math.min(w*y**I,g);i.currentTimeout=S;setTimeout((()=>a(null)),S)}onHeaders(r,i,s,l){const d=p(i);this.retryCount+=1;if(r>=300){this.abort(new c("Request failed",r,{headers:d,count:this.retryCount}));return false}if(this.resume!=null){this.resume=null;if(r!==206){return true}const i=A(d["content-range"]);if(!i){this.abort(new c("Content-Range mismatch",r,{headers:d,count:this.retryCount}));return false}if(this.etag!=null&&this.etag!==d.etag){this.abort(new c("ETag mismatch",r,{headers:d,count:this.retryCount}));return false}const{start:l,size:p,end:u=p}=i;a(this.start===l,"content-range mismatch");a(this.end==null||this.end===u,"content-range mismatch");this.resume=s;return true}if(this.end==null){if(r===206){const c=A(d["content-range"]);if(c==null){return this.handler.onHeaders(r,i,s,l)}const{start:p,size:u,end:h=u}=c;a(p!=null&&Number.isFinite(p)&&this.start!==p,"content-range mismatch");a(Number.isFinite(p));a(h!=null&&Number.isFinite(h)&&this.end!==h,"invalid content-length");this.start=p;this.end=h}if(this.end==null){const r=d["content-length"];this.end=r!=null?Number(r):null}a(Number.isFinite(this.start));a(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=s;this.etag=d.etag!=null?d.etag:null;return this.handler.onHeaders(r,i,s,l)}const u=new c("Request failed",r,{headers:d,count:this.retryCount});this.abort(u);return false}onData(r){this.start+=r.length;return this.handler.onData(r)}onComplete(r){this.retryCount=0;return this.handler.onComplete(r)}onError(r){if(this.aborted||d(this.opts.body)){return this.handler.onError(r)}this.retryOpts.retry(r,{state:{counter:this.retryCount++,currentTimeout:this.retryAfter},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(r){if(r!=null||this.aborted||d(this.opts.body)){return this.handler.onError(r)}if(this.start!==0){this.opts={...this.opts,headers:{...this.opts.headers,range:`bytes=${this.start}-${this.end??""}`}}}try{this.dispatch(this.opts,this)}catch(r){this.handler.onError(r)}}}}r.exports=RetryHandler},17682:(r,i,s)=>{"use strict";const a=s(10943);function createRedirectInterceptor({maxRedirections:r}){return i=>function Intercept(s,l){const{maxRedirections:c=r}=s;if(!c){return i(s,l)}const d=new a(i,c,s,l);s={...s,maxRedirections:0};return i(s,d)}}r.exports=createRedirectInterceptor},32925:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.SPECIAL_HEADERS=i.HEADER_STATE=i.MINOR=i.MAJOR=i.CONNECTION_TOKEN_CHARS=i.HEADER_CHARS=i.TOKEN=i.STRICT_TOKEN=i.HEX=i.URL_CHAR=i.STRICT_URL_CHAR=i.USERINFO_CHARS=i.MARK=i.ALPHANUM=i.NUM=i.HEX_MAP=i.NUM_MAP=i.ALPHA=i.FINISH=i.H_METHOD_MAP=i.METHOD_MAP=i.METHODS_RTSP=i.METHODS_ICE=i.METHODS_HTTP=i.METHODS=i.LENIENT_FLAGS=i.FLAGS=i.TYPE=i.ERROR=void 0;const a=s(42716);var l;(function(r){r[r["OK"]=0]="OK";r[r["INTERNAL"]=1]="INTERNAL";r[r["STRICT"]=2]="STRICT";r[r["LF_EXPECTED"]=3]="LF_EXPECTED";r[r["UNEXPECTED_CONTENT_LENGTH"]=4]="UNEXPECTED_CONTENT_LENGTH";r[r["CLOSED_CONNECTION"]=5]="CLOSED_CONNECTION";r[r["INVALID_METHOD"]=6]="INVALID_METHOD";r[r["INVALID_URL"]=7]="INVALID_URL";r[r["INVALID_CONSTANT"]=8]="INVALID_CONSTANT";r[r["INVALID_VERSION"]=9]="INVALID_VERSION";r[r["INVALID_HEADER_TOKEN"]=10]="INVALID_HEADER_TOKEN";r[r["INVALID_CONTENT_LENGTH"]=11]="INVALID_CONTENT_LENGTH";r[r["INVALID_CHUNK_SIZE"]=12]="INVALID_CHUNK_SIZE";r[r["INVALID_STATUS"]=13]="INVALID_STATUS";r[r["INVALID_EOF_STATE"]=14]="INVALID_EOF_STATE";r[r["INVALID_TRANSFER_ENCODING"]=15]="INVALID_TRANSFER_ENCODING";r[r["CB_MESSAGE_BEGIN"]=16]="CB_MESSAGE_BEGIN";r[r["CB_HEADERS_COMPLETE"]=17]="CB_HEADERS_COMPLETE";r[r["CB_MESSAGE_COMPLETE"]=18]="CB_MESSAGE_COMPLETE";r[r["CB_CHUNK_HEADER"]=19]="CB_CHUNK_HEADER";r[r["CB_CHUNK_COMPLETE"]=20]="CB_CHUNK_COMPLETE";r[r["PAUSED"]=21]="PAUSED";r[r["PAUSED_UPGRADE"]=22]="PAUSED_UPGRADE";r[r["PAUSED_H2_UPGRADE"]=23]="PAUSED_H2_UPGRADE";r[r["USER"]=24]="USER"})(l=i.ERROR||(i.ERROR={}));var c;(function(r){r[r["BOTH"]=0]="BOTH";r[r["REQUEST"]=1]="REQUEST";r[r["RESPONSE"]=2]="RESPONSE"})(c=i.TYPE||(i.TYPE={}));var d;(function(r){r[r["CONNECTION_KEEP_ALIVE"]=1]="CONNECTION_KEEP_ALIVE";r[r["CONNECTION_CLOSE"]=2]="CONNECTION_CLOSE";r[r["CONNECTION_UPGRADE"]=4]="CONNECTION_UPGRADE";r[r["CHUNKED"]=8]="CHUNKED";r[r["UPGRADE"]=16]="UPGRADE";r[r["CONTENT_LENGTH"]=32]="CONTENT_LENGTH";r[r["SKIPBODY"]=64]="SKIPBODY";r[r["TRAILING"]=128]="TRAILING";r[r["TRANSFER_ENCODING"]=512]="TRANSFER_ENCODING"})(d=i.FLAGS||(i.FLAGS={}));var p;(function(r){r[r["HEADERS"]=1]="HEADERS";r[r["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";r[r["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(p=i.LENIENT_FLAGS||(i.LENIENT_FLAGS={}));var A;(function(r){r[r["DELETE"]=0]="DELETE";r[r["GET"]=1]="GET";r[r["HEAD"]=2]="HEAD";r[r["POST"]=3]="POST";r[r["PUT"]=4]="PUT";r[r["CONNECT"]=5]="CONNECT";r[r["OPTIONS"]=6]="OPTIONS";r[r["TRACE"]=7]="TRACE";r[r["COPY"]=8]="COPY";r[r["LOCK"]=9]="LOCK";r[r["MKCOL"]=10]="MKCOL";r[r["MOVE"]=11]="MOVE";r[r["PROPFIND"]=12]="PROPFIND";r[r["PROPPATCH"]=13]="PROPPATCH";r[r["SEARCH"]=14]="SEARCH";r[r["UNLOCK"]=15]="UNLOCK";r[r["BIND"]=16]="BIND";r[r["REBIND"]=17]="REBIND";r[r["UNBIND"]=18]="UNBIND";r[r["ACL"]=19]="ACL";r[r["REPORT"]=20]="REPORT";r[r["MKACTIVITY"]=21]="MKACTIVITY";r[r["CHECKOUT"]=22]="CHECKOUT";r[r["MERGE"]=23]="MERGE";r[r["M-SEARCH"]=24]="M-SEARCH";r[r["NOTIFY"]=25]="NOTIFY";r[r["SUBSCRIBE"]=26]="SUBSCRIBE";r[r["UNSUBSCRIBE"]=27]="UNSUBSCRIBE";r[r["PATCH"]=28]="PATCH";r[r["PURGE"]=29]="PURGE";r[r["MKCALENDAR"]=30]="MKCALENDAR";r[r["LINK"]=31]="LINK";r[r["UNLINK"]=32]="UNLINK";r[r["SOURCE"]=33]="SOURCE";r[r["PRI"]=34]="PRI";r[r["DESCRIBE"]=35]="DESCRIBE";r[r["ANNOUNCE"]=36]="ANNOUNCE";r[r["SETUP"]=37]="SETUP";r[r["PLAY"]=38]="PLAY";r[r["PAUSE"]=39]="PAUSE";r[r["TEARDOWN"]=40]="TEARDOWN";r[r["GET_PARAMETER"]=41]="GET_PARAMETER";r[r["SET_PARAMETER"]=42]="SET_PARAMETER";r[r["REDIRECT"]=43]="REDIRECT";r[r["RECORD"]=44]="RECORD";r[r["FLUSH"]=45]="FLUSH"})(A=i.METHODS||(i.METHODS={}));i.METHODS_HTTP=[A.DELETE,A.GET,A.HEAD,A.POST,A.PUT,A.CONNECT,A.OPTIONS,A.TRACE,A.COPY,A.LOCK,A.MKCOL,A.MOVE,A.PROPFIND,A.PROPPATCH,A.SEARCH,A.UNLOCK,A.BIND,A.REBIND,A.UNBIND,A.ACL,A.REPORT,A.MKACTIVITY,A.CHECKOUT,A.MERGE,A["M-SEARCH"],A.NOTIFY,A.SUBSCRIBE,A.UNSUBSCRIBE,A.PATCH,A.PURGE,A.MKCALENDAR,A.LINK,A.UNLINK,A.PRI,A.SOURCE];i.METHODS_ICE=[A.SOURCE];i.METHODS_RTSP=[A.OPTIONS,A.DESCRIBE,A.ANNOUNCE,A.SETUP,A.PLAY,A.PAUSE,A.TEARDOWN,A.GET_PARAMETER,A.SET_PARAMETER,A.REDIRECT,A.RECORD,A.FLUSH,A.GET,A.POST];i.METHOD_MAP=a.enumToMap(A);i.H_METHOD_MAP={};Object.keys(i.METHOD_MAP).forEach((r=>{if(/^H/.test(r)){i.H_METHOD_MAP[r]=i.METHOD_MAP[r]}}));var u;(function(r){r[r["SAFE"]=0]="SAFE";r[r["SAFE_WITH_CB"]=1]="SAFE_WITH_CB";r[r["UNSAFE"]=2]="UNSAFE"})(u=i.FINISH||(i.FINISH={}));i.ALPHA=[];for(let r="A".charCodeAt(0);r<="Z".charCodeAt(0);r++){i.ALPHA.push(String.fromCharCode(r));i.ALPHA.push(String.fromCharCode(r+32))}i.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};i.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};i.NUM=["0","1","2","3","4","5","6","7","8","9"];i.ALPHANUM=i.ALPHA.concat(i.NUM);i.MARK=["-","_",".","!","~","*","'","(",")"];i.USERINFO_CHARS=i.ALPHANUM.concat(i.MARK).concat(["%",";",":","&","=","+","$",","]);i.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(i.ALPHANUM);i.URL_CHAR=i.STRICT_URL_CHAR.concat(["\t","\f"]);for(let r=128;r<=255;r++){i.URL_CHAR.push(r)}i.HEX=i.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);i.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(i.ALPHANUM);i.TOKEN=i.STRICT_TOKEN.concat([" "]);i.HEADER_CHARS=["\t"];for(let r=32;r<=255;r++){if(r!==127){i.HEADER_CHARS.push(r)}}i.CONNECTION_TOKEN_CHARS=i.HEADER_CHARS.filter((r=>r!==44));i.MAJOR=i.NUM_MAP;i.MINOR=i.MAJOR;var h;(function(r){r[r["GENERAL"]=0]="GENERAL";r[r["CONNECTION"]=1]="CONNECTION";r[r["CONTENT_LENGTH"]=2]="CONTENT_LENGTH";r[r["TRANSFER_ENCODING"]=3]="TRANSFER_ENCODING";r[r["UPGRADE"]=4]="UPGRADE";r[r["CONNECTION_KEEP_ALIVE"]=5]="CONNECTION_KEEP_ALIVE";r[r["CONNECTION_CLOSE"]=6]="CONNECTION_CLOSE";r[r["CONNECTION_UPGRADE"]=7]="CONNECTION_UPGRADE";r[r["TRANSFER_ENCODING_CHUNKED"]=8]="TRANSFER_ENCODING_CHUNKED"})(h=i.HEADER_STATE||(i.HEADER_STATE={}));i.SPECIAL_HEADERS={connection:h.CONNECTION,"content-length":h.CONTENT_LENGTH,"proxy-connection":h.CONNECTION,"transfer-encoding":h.TRANSFER_ENCODING,upgrade:h.UPGRADE}},49323:r=>{r.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCsLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC1kAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwHLAcoBuAHJAbkByAG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAQDcAQtBACEQDMYBC0EOIRAMxQELQQ0hEAzEAQtBDyEQDMMBC0EQIRAMwgELQRMhEAzBAQtBFCEQDMABC0EVIRAMvwELQRYhEAy+AQtBFyEQDL0BC0EYIRAMvAELQRkhEAy7AQtBGiEQDLoBC0EbIRAMuQELQRwhEAy4AQtBCCEQDLcBC0EdIRAMtgELQSAhEAy1AQtBHyEQDLQBC0EHIRAMswELQSEhEAyyAQtBIiEQDLEBC0EeIRAMsAELQSMhEAyvAQtBEiEQDK4BC0ERIRAMrQELQSQhEAysAQtBJSEQDKsBC0EmIRAMqgELQSchEAypAQtBwwEhEAyoAQtBKSEQDKcBC0ErIRAMpgELQSwhEAylAQtBLSEQDKQBC0EuIRAMowELQS8hEAyiAQtBxAEhEAyhAQtBMCEQDKABC0E0IRAMnwELQQwhEAyeAQtBMSEQDJ0BC0EyIRAMnAELQTMhEAybAQtBOSEQDJoBC0E1IRAMmQELQcUBIRAMmAELQQshEAyXAQtBOiEQDJYBC0E2IRAMlQELQQohEAyUAQtBNyEQDJMBC0E4IRAMkgELQTwhEAyRAQtBOyEQDJABC0E9IRAMjwELQQkhEAyOAQtBKCEQDI0BC0E+IRAMjAELQT8hEAyLAQtBwAAhEAyKAQtBwQAhEAyJAQtBwgAhEAyIAQtBwwAhEAyHAQtBxAAhEAyGAQtBxQAhEAyFAQtBxgAhEAyEAQtBKiEQDIMBC0HHACEQDIIBC0HIACEQDIEBC0HJACEQDIABC0HKACEQDH8LQcsAIRAMfgtBzQAhEAx9C0HMACEQDHwLQc4AIRAMewtBzwAhEAx6C0HQACEQDHkLQdEAIRAMeAtB0gAhEAx3C0HTACEQDHYLQdQAIRAMdQtB1gAhEAx0C0HVACEQDHMLQQYhEAxyC0HXACEQDHELQQUhEAxwC0HYACEQDG8LQQQhEAxuC0HZACEQDG0LQdoAIRAMbAtB2wAhEAxrC0HcACEQDGoLQQMhEAxpC0HdACEQDGgLQd4AIRAMZwtB3wAhEAxmC0HhACEQDGULQeAAIRAMZAtB4gAhEAxjC0HjACEQDGILQQIhEAxhC0HkACEQDGALQeUAIRAMXwtB5gAhEAxeC0HnACEQDF0LQegAIRAMXAtB6QAhEAxbC0HqACEQDFoLQesAIRAMWQtB7AAhEAxYC0HtACEQDFcLQe4AIRAMVgtB7wAhEAxVC0HwACEQDFQLQfEAIRAMUwtB8gAhEAxSC0HzACEQDFELQfQAIRAMUAtB9QAhEAxPC0H2ACEQDE4LQfcAIRAMTQtB+AAhEAxMC0H5ACEQDEsLQfoAIRAMSgtB+wAhEAxJC0H8ACEQDEgLQf0AIRAMRwtB/gAhEAxGC0H/ACEQDEULQYABIRAMRAtBgQEhEAxDC0GCASEQDEILQYMBIRAMQQtBhAEhEAxAC0GFASEQDD8LQYYBIRAMPgtBhwEhEAw9C0GIASEQDDwLQYkBIRAMOwtBigEhEAw6C0GLASEQDDkLQYwBIRAMOAtBjQEhEAw3C0GOASEQDDYLQY8BIRAMNQtBkAEhEAw0C0GRASEQDDMLQZIBIRAMMgtBkwEhEAwxC0GUASEQDDALQZUBIRAMLwtBlgEhEAwuC0GXASEQDC0LQZgBIRAMLAtBmQEhEAwrC0GaASEQDCoLQZsBIRAMKQtBnAEhEAwoC0GdASEQDCcLQZ4BIRAMJgtBnwEhEAwlC0GgASEQDCQLQaEBIRAMIwtBogEhEAwiC0GjASEQDCELQaQBIRAMIAtBpQEhEAwfC0GmASEQDB4LQacBIRAMHQtBqAEhEAwcC0GpASEQDBsLQaoBIRAMGgtBqwEhEAwZC0GsASEQDBgLQa0BIRAMFwtBrgEhEAwWC0EBIRAMFQtBrwEhEAwUC0GwASEQDBMLQbEBIRAMEgtBswEhEAwRC0GyASEQDBALQbQBIRAMDwtBtQEhEAwOC0G2ASEQDA0LQbcBIRAMDAtBuAEhEAwLC0G5ASEQDAoLQboBIRAMCQtBuwEhEAwIC0HGASEQDAcLQbwBIRAMBgtBvQEhEAwFC0G+ASEQDAQLQb8BIRAMAwtBwAEhEAwCC0HCASEQDAELQcEBIRALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8="},86445:r=>{r.exports="AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCrLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC0kBAXsgAEEQav0MAAAAAAAAAAAAAAAAAAAAACIB/QsDACAAIAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB4fICEjJSg/QEFERUZHSElKS0xNT1BRUlPeA1dZW1xdYGJlZmdoaWprbG1vcHFyc3R1dnd4eXp7fH1+gAGCAYUBhgGHAYkBiwGMAY0BjgGPAZABkQGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMBmQKkArAC/gL+AgsgASIEIAJHDfMBQd0BIRAM/wMLIAEiECACRw3dAUHDASEQDP4DCyABIgEgAkcNkAFB9wAhEAz9AwsgASIBIAJHDYYBQe8AIRAM/AMLIAEiASACRw1/QeoAIRAM+wMLIAEiASACRw17QegAIRAM+gMLIAEiASACRw14QeYAIRAM+QMLIAEiASACRw0aQRghEAz4AwsgASIBIAJHDRRBEiEQDPcDCyABIgEgAkcNWUHFACEQDPYDCyABIgEgAkcNSkE/IRAM9QMLIAEiASACRw1IQTwhEAz0AwsgASIBIAJHDUFBMSEQDPMDCyAALQAuQQFGDesDDIcCCyAAIAEiASACEMCAgIAAQQFHDeYBIABCADcDIAznAQsgACABIgEgAhC0gICAACIQDecBIAEhAQz1AgsCQCABIgEgAkcNAEEGIRAM8AMLIAAgAUEBaiIBIAIQu4CAgAAiEA3oASABIQEMMQsgAEIANwMgQRIhEAzVAwsgASIQIAJHDStBHSEQDO0DCwJAIAEiASACRg0AIAFBAWohAUEQIRAM1AMLQQchEAzsAwsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3lAUEIIRAM6wMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRQhEAzSAwtBCSEQDOoDCyABIQEgACkDIFAN5AEgASEBDPICCwJAIAEiASACRw0AQQshEAzpAwsgACABQQFqIgEgAhC2gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeYBIAEhAQwNCyAAIAEiASACELqAgIAAIhAN5wEgASEBDPACCwJAIAEiASACRw0AQQ8hEAzlAwsgAS0AACIQQTtGDQggEEENRw3oASABQQFqIQEM7wILIAAgASIBIAIQuoCAgAAiEA3oASABIQEM8gILA0ACQCABLQAAQfC1gIAAai0AACIQQQFGDQAgEEECRw3rASAAKAIEIRAgAEEANgIEIAAgECABQQFqIgEQuYCAgAAiEA3qASABIQEM9AILIAFBAWoiASACRw0AC0ESIRAM4gMLIAAgASIBIAIQuoCAgAAiEA3pASABIQEMCgsgASIBIAJHDQZBGyEQDOADCwJAIAEiASACRw0AQRYhEAzgAwsgAEGKgICAADYCCCAAIAE2AgQgACABIAIQuICAgAAiEA3qASABIQFBICEQDMYDCwJAIAEiASACRg0AA0ACQCABLQAAQfC3gIAAai0AACIQQQJGDQACQCAQQX9qDgTlAewBAOsB7AELIAFBAWohAUEIIRAMyAMLIAFBAWoiASACRw0AC0EVIRAM3wMLQRUhEAzeAwsDQAJAIAEtAABB8LmAgABqLQAAIhBBAkYNACAQQX9qDgTeAewB4AHrAewBCyABQQFqIgEgAkcNAAtBGCEQDN0DCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUEHIRAMxAMLQRkhEAzcAwsgAUEBaiEBDAILAkAgASIUIAJHDQBBGiEQDNsDCyAUIQECQCAULQAAQXNqDhTdAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAgDuAgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQM2gMLAkAgAS0AACIQQTtGDQAgEEENRw3oASABQQFqIQEM5QILIAFBAWohAQtBIiEQDL8DCwJAIAEiECACRw0AQRwhEAzYAwtCACERIBAhASAQLQAAQVBqDjfnAeYBAQIDBAUGBwgAAAAAAAAACQoLDA0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPEBESExQAC0EeIRAMvQMLQgIhEQzlAQtCAyERDOQBC0IEIREM4wELQgUhEQziAQtCBiERDOEBC0IHIREM4AELQgghEQzfAQtCCSERDN4BC0IKIREM3QELQgshEQzcAQtCDCERDNsBC0INIREM2gELQg4hEQzZAQtCDyERDNgBC0IKIREM1wELQgshEQzWAQtCDCERDNUBC0INIREM1AELQg4hEQzTAQtCDyERDNIBC0IAIRECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAtAABBUGoON+UB5AEAAQIDBAUGB+YB5gHmAeYB5gHmAeYBCAkKCwwN5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAQ4PEBESE+YBC0ICIREM5AELQgMhEQzjAQtCBCERDOIBC0IFIREM4QELQgYhEQzgAQtCByERDN8BC0IIIREM3gELQgkhEQzdAQtCCiERDNwBC0ILIREM2wELQgwhEQzaAQtCDSERDNkBC0IOIREM2AELQg8hEQzXAQtCCiERDNYBC0ILIREM1QELQgwhEQzUAQtCDSERDNMBC0IOIREM0gELQg8hEQzRAQsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3SAUEfIRAMwAMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQSQhEAynAwtBICEQDL8DCyAAIAEiECACEL6AgIAAQX9qDgW2AQDFAgHRAdIBC0ERIRAMpAMLIABBAToALyAQIQEMuwMLIAEiASACRw3SAUEkIRAMuwMLIAEiDSACRw0eQcYAIRAMugMLIAAgASIBIAIQsoCAgAAiEA3UASABIQEMtQELIAEiECACRw0mQdAAIRAMuAMLAkAgASIBIAJHDQBBKCEQDLgDCyAAQQA2AgQgAEGMgICAADYCCCAAIAEgARCxgICAACIQDdMBIAEhAQzYAQsCQCABIhAgAkcNAEEpIRAMtwMLIBAtAAAiAUEgRg0UIAFBCUcN0wEgEEEBaiEBDBULAkAgASIBIAJGDQAgAUEBaiEBDBcLQSohEAy1AwsCQCABIhAgAkcNAEErIRAMtQMLAkAgEC0AACIBQQlGDQAgAUEgRw3VAQsgAC0ALEEIRg3TASAQIQEMkQMLAkAgASIBIAJHDQBBLCEQDLQDCyABLQAAQQpHDdUBIAFBAWohAQzJAgsgASIOIAJHDdUBQS8hEAyyAwsDQAJAIAEtAAAiEEEgRg0AAkAgEEF2ag4EANwB3AEA2gELIAEhAQzgAQsgAUEBaiIBIAJHDQALQTEhEAyxAwtBMiEQIAEiFCACRg2wAyACIBRrIAAoAgAiAWohFSAUIAFrQQNqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB8LuAgABqLQAARw0BAkAgAUEDRw0AQQYhAQyWAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMsQMLIABBADYCACAUIQEM2QELQTMhECABIhQgAkYNrwMgAiAUayAAKAIAIgFqIRUgFCABa0EIaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfS7gIAAai0AAEcNAQJAIAFBCEcNAEEFIQEMlQMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLADCyAAQQA2AgAgFCEBDNgBC0E0IRAgASIUIAJGDa4DIAIgFGsgACgCACIBaiEVIBQgAWtBBWohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUHQwoCAAGotAABHDQECQCABQQVHDQBBByEBDJQDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAyvAwsgAEEANgIAIBQhAQzXAQsCQCABIgEgAkYNAANAAkAgAS0AAEGAvoCAAGotAAAiEEEBRg0AIBBBAkYNCiABIQEM3QELIAFBAWoiASACRw0AC0EwIRAMrgMLQTAhEAytAwsCQCABIgEgAkYNAANAAkAgAS0AACIQQSBGDQAgEEF2ag4E2QHaAdoB2QHaAQsgAUEBaiIBIAJHDQALQTghEAytAwtBOCEQDKwDCwNAAkAgAS0AACIQQSBGDQAgEEEJRw0DCyABQQFqIgEgAkcNAAtBPCEQDKsDCwNAAkAgAS0AACIQQSBGDQACQAJAIBBBdmoOBNoBAQHaAQALIBBBLEYN2wELIAEhAQwECyABQQFqIgEgAkcNAAtBPyEQDKoDCyABIQEM2wELQcAAIRAgASIUIAJGDagDIAIgFGsgACgCACIBaiEWIBQgAWtBBmohFwJAA0AgFC0AAEEgciABQYDAgIAAai0AAEcNASABQQZGDY4DIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADKkDCyAAQQA2AgAgFCEBC0E2IRAMjgMLAkAgASIPIAJHDQBBwQAhEAynAwsgAEGMgICAADYCCCAAIA82AgQgDyEBIAAtACxBf2oOBM0B1QHXAdkBhwMLIAFBAWohAQzMAQsCQCABIgEgAkYNAANAAkAgAS0AACIQQSByIBAgEEG/f2pB/wFxQRpJG0H/AXEiEEEJRg0AIBBBIEYNAAJAAkACQAJAIBBBnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQTEhEAyRAwsgAUEBaiEBQTIhEAyQAwsgAUEBaiEBQTMhEAyPAwsgASEBDNABCyABQQFqIgEgAkcNAAtBNSEQDKUDC0E1IRAMpAMLAkAgASIBIAJGDQADQAJAIAEtAABBgLyAgABqLQAAQQFGDQAgASEBDNMBCyABQQFqIgEgAkcNAAtBPSEQDKQDC0E9IRAMowMLIAAgASIBIAIQsICAgAAiEA3WASABIQEMAQsgEEEBaiEBC0E8IRAMhwMLAkAgASIBIAJHDQBBwgAhEAygAwsCQANAAkAgAS0AAEF3ag4YAAL+Av4ChAP+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gIA/gILIAFBAWoiASACRw0AC0HCACEQDKADCyABQQFqIQEgAC0ALUEBcUUNvQEgASEBC0EsIRAMhQMLIAEiASACRw3TAUHEACEQDJ0DCwNAAkAgAS0AAEGQwICAAGotAABBAUYNACABIQEMtwILIAFBAWoiASACRw0AC0HFACEQDJwDCyANLQAAIhBBIEYNswEgEEE6Rw2BAyAAKAIEIQEgAEEANgIEIAAgASANEK+AgIAAIgEN0AEgDUEBaiEBDLMCC0HHACEQIAEiDSACRg2aAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQZDCgIAAai0AAEcNgAMgAUEFRg30AiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyaAwtByAAhECABIg0gAkYNmQMgAiANayAAKAIAIgFqIRYgDSABa0EJaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGWwoCAAGotAABHDf8CAkAgAUEJRw0AQQIhAQz1AgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmQMLAkAgASINIAJHDQBByQAhEAyZAwsCQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZJ/ag4HAIADgAOAA4ADgAMBgAMLIA1BAWohAUE+IRAMgAMLIA1BAWohAUE/IRAM/wILQcoAIRAgASINIAJGDZcDIAIgDWsgACgCACIBaiEWIA0gAWtBAWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBoMKAgABqLQAARw39AiABQQFGDfACIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJcDC0HLACEQIAEiDSACRg2WAyACIA1rIAAoAgAiAWohFiANIAFrQQ5qIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaLCgIAAai0AAEcN/AIgAUEORg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyWAwtBzAAhECABIg0gAkYNlQMgAiANayAAKAIAIgFqIRYgDSABa0EPaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUHAwoCAAGotAABHDfsCAkAgAUEPRw0AQQMhAQzxAgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlQMLQc0AIRAgASINIAJGDZQDIAIgDWsgACgCACIBaiEWIA0gAWtBBWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw36AgJAIAFBBUcNAEEEIQEM8AILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJQDCwJAIAEiDSACRw0AQc4AIRAMlAMLAkACQAJAAkAgDS0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBnX9qDhMA/QL9Av0C/QL9Av0C/QL9Av0C/QL9Av0CAf0C/QL9AgID/QILIA1BAWohAUHBACEQDP0CCyANQQFqIQFBwgAhEAz8AgsgDUEBaiEBQcMAIRAM+wILIA1BAWohAUHEACEQDPoCCwJAIAEiASACRg0AIABBjYCAgAA2AgggACABNgIEIAEhAUHFACEQDPoCC0HPACEQDJIDCyAQIQECQAJAIBAtAABBdmoOBAGoAqgCAKgCCyAQQQFqIQELQSchEAz4AgsCQCABIgEgAkcNAEHRACEQDJEDCwJAIAEtAABBIEYNACABIQEMjQELIAFBAWohASAALQAtQQFxRQ3HASABIQEMjAELIAEiFyACRw3IAUHSACEQDI8DC0HTACEQIAEiFCACRg2OAyACIBRrIAAoAgAiAWohFiAUIAFrQQFqIRcDQCAULQAAIAFB1sKAgABqLQAARw3MASABQQFGDccBIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADI4DCwJAIAEiASACRw0AQdUAIRAMjgMLIAEtAABBCkcNzAEgAUEBaiEBDMcBCwJAIAEiASACRw0AQdYAIRAMjQMLAkACQCABLQAAQXZqDgQAzQHNAQHNAQsgAUEBaiEBDMcBCyABQQFqIQFBygAhEAzzAgsgACABIgEgAhCugICAACIQDcsBIAEhAUHNACEQDPICCyAALQApQSJGDYUDDKYCCwJAIAEiASACRw0AQdsAIRAMigMLQQAhFEEBIRdBASEWQQAhEAJAAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgrUAdMBAAECAwQFBgjVAQtBAiEQDAYLQQMhEAwFC0EEIRAMBAtBBSEQDAMLQQYhEAwCC0EHIRAMAQtBCCEQC0EAIRdBACEWQQAhFAzMAQtBCSEQQQEhFEEAIRdBACEWDMsBCwJAIAEiASACRw0AQd0AIRAMiQMLIAEtAABBLkcNzAEgAUEBaiEBDKYCCyABIgEgAkcNzAFB3wAhEAyHAwsCQCABIgEgAkYNACAAQY6AgIAANgIIIAAgATYCBCABIQFB0AAhEAzuAgtB4AAhEAyGAwtB4QAhECABIgEgAkYNhQMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQeLCgIAAai0AAEcNzQEgFEEDRg3MASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyFAwtB4gAhECABIgEgAkYNhAMgAiABayAAKAIAIhRqIRYgASAUa0ECaiEXA0AgAS0AACAUQebCgIAAai0AAEcNzAEgFEECRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyEAwtB4wAhECABIgEgAkYNgwMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQenCgIAAai0AAEcNywEgFEEDRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyDAwsCQCABIgEgAkcNAEHlACEQDIMDCyAAIAFBAWoiASACEKiAgIAAIhANzQEgASEBQdYAIRAM6QILAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AAkACQAJAIBBBuH9qDgsAAc8BzwHPAc8BzwHPAc8BzwECzwELIAFBAWohAUHSACEQDO0CCyABQQFqIQFB0wAhEAzsAgsgAUEBaiEBQdQAIRAM6wILIAFBAWoiASACRw0AC0HkACEQDIIDC0HkACEQDIEDCwNAAkAgAS0AAEHwwoCAAGotAAAiEEEBRg0AIBBBfmoOA88B0AHRAdIBCyABQQFqIgEgAkcNAAtB5gAhEAyAAwsCQCABIgEgAkYNACABQQFqIQEMAwtB5wAhEAz/AgsDQAJAIAEtAABB8MSAgABqLQAAIhBBAUYNAAJAIBBBfmoOBNIB0wHUAQDVAQsgASEBQdcAIRAM5wILIAFBAWoiASACRw0AC0HoACEQDP4CCwJAIAEiASACRw0AQekAIRAM/gILAkAgAS0AACIQQXZqDhq6AdUB1QG8AdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAcoB1QHVAQDTAQsgAUEBaiEBC0EGIRAM4wILA0ACQCABLQAAQfDGgIAAai0AAEEBRg0AIAEhAQyeAgsgAUEBaiIBIAJHDQALQeoAIRAM+wILAkAgASIBIAJGDQAgAUEBaiEBDAMLQesAIRAM+gILAkAgASIBIAJHDQBB7AAhEAz6AgsgAUEBaiEBDAELAkAgASIBIAJHDQBB7QAhEAz5AgsgAUEBaiEBC0EEIRAM3gILAkAgASIUIAJHDQBB7gAhEAz3AgsgFCEBAkACQAJAIBQtAABB8MiAgABqLQAAQX9qDgfUAdUB1gEAnAIBAtcBCyAUQQFqIQEMCgsgFEEBaiEBDM0BC0EAIRAgAEEANgIcIABBm5KAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAz2AgsCQANAAkAgAS0AAEHwyICAAGotAAAiEEEERg0AAkACQCAQQX9qDgfSAdMB1AHZAQAEAdkBCyABIQFB2gAhEAzgAgsgAUEBaiEBQdwAIRAM3wILIAFBAWoiASACRw0AC0HvACEQDPYCCyABQQFqIQEMywELAkAgASIUIAJHDQBB8AAhEAz1AgsgFC0AAEEvRw3UASAUQQFqIQEMBgsCQCABIhQgAkcNAEHxACEQDPQCCwJAIBQtAAAiAUEvRw0AIBRBAWohAUHdACEQDNsCCyABQXZqIgRBFksN0wFBASAEdEGJgIACcUUN0wEMygILAkAgASIBIAJGDQAgAUEBaiEBQd4AIRAM2gILQfIAIRAM8gILAkAgASIUIAJHDQBB9AAhEAzyAgsgFCEBAkAgFC0AAEHwzICAAGotAABBf2oOA8kClAIA1AELQeEAIRAM2AILAkAgASIUIAJGDQADQAJAIBQtAABB8MqAgABqLQAAIgFBA0YNAAJAIAFBf2oOAssCANUBCyAUIQFB3wAhEAzaAgsgFEEBaiIUIAJHDQALQfMAIRAM8QILQfMAIRAM8AILAkAgASIBIAJGDQAgAEGPgICAADYCCCAAIAE2AgQgASEBQeAAIRAM1wILQfUAIRAM7wILAkAgASIBIAJHDQBB9gAhEAzvAgsgAEGPgICAADYCCCAAIAE2AgQgASEBC0EDIRAM1AILA0AgAS0AAEEgRw3DAiABQQFqIgEgAkcNAAtB9wAhEAzsAgsCQCABIgEgAkcNAEH4ACEQDOwCCyABLQAAQSBHDc4BIAFBAWohAQzvAQsgACABIgEgAhCsgICAACIQDc4BIAEhAQyOAgsCQCABIgQgAkcNAEH6ACEQDOoCCyAELQAAQcwARw3RASAEQQFqIQFBEyEQDM8BCwJAIAEiBCACRw0AQfsAIRAM6QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEANAIAQtAAAgAUHwzoCAAGotAABHDdABIAFBBUYNzgEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBB+wAhEAzoAgsCQCABIgQgAkcNAEH8ACEQDOgCCwJAAkAgBC0AAEG9f2oODADRAdEB0QHRAdEB0QHRAdEB0QHRAQHRAQsgBEEBaiEBQeYAIRAMzwILIARBAWohAUHnACEQDM4CCwJAIAEiBCACRw0AQf0AIRAM5wILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNzwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf0AIRAM5wILIABBADYCACAQQQFqIQFBECEQDMwBCwJAIAEiBCACRw0AQf4AIRAM5gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQfbOgIAAai0AAEcNzgEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf4AIRAM5gILIABBADYCACAQQQFqIQFBFiEQDMsBCwJAIAEiBCACRw0AQf8AIRAM5QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQfzOgIAAai0AAEcNzQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf8AIRAM5QILIABBADYCACAQQQFqIQFBBSEQDMoBCwJAIAEiBCACRw0AQYABIRAM5AILIAQtAABB2QBHDcsBIARBAWohAUEIIRAMyQELAkAgASIEIAJHDQBBgQEhEAzjAgsCQAJAIAQtAABBsn9qDgMAzAEBzAELIARBAWohAUHrACEQDMoCCyAEQQFqIQFB7AAhEAzJAgsCQCABIgQgAkcNAEGCASEQDOICCwJAAkAgBC0AAEG4f2oOCADLAcsBywHLAcsBywEBywELIARBAWohAUHqACEQDMkCCyAEQQFqIQFB7QAhEAzIAgsCQCABIgQgAkcNAEGDASEQDOECCyACIARrIAAoAgAiAWohECAEIAFrQQJqIRQCQANAIAQtAAAgAUGAz4CAAGotAABHDckBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgEDYCAEGDASEQDOECC0EAIRAgAEEANgIAIBRBAWohAQzGAQsCQCABIgQgAkcNAEGEASEQDOACCyACIARrIAAoAgAiAWohFCAEIAFrQQRqIRACQANAIAQtAAAgAUGDz4CAAGotAABHDcgBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGEASEQDOACCyAAQQA2AgAgEEEBaiEBQSMhEAzFAQsCQCABIgQgAkcNAEGFASEQDN8CCwJAAkAgBC0AAEG0f2oOCADIAcgByAHIAcgByAEByAELIARBAWohAUHvACEQDMYCCyAEQQFqIQFB8AAhEAzFAgsCQCABIgQgAkcNAEGGASEQDN4CCyAELQAAQcUARw3FASAEQQFqIQEMgwILAkAgASIEIAJHDQBBhwEhEAzdAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBiM+AgABqLQAARw3FASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhwEhEAzdAgsgAEEANgIAIBBBAWohAUEtIRAMwgELAkAgASIEIAJHDQBBiAEhEAzcAgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw3EASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiAEhEAzcAgsgAEEANgIAIBBBAWohAUEpIRAMwQELAkAgASIBIAJHDQBBiQEhEAzbAgtBASEQIAEtAABB3wBHDcABIAFBAWohAQyBAgsCQCABIgQgAkcNAEGKASEQDNoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRADQCAELQAAIAFBjM+AgABqLQAARw3BASABQQFGDa8CIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYoBIRAM2QILAkAgASIEIAJHDQBBiwEhEAzZAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBjs+AgABqLQAARw3BASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiwEhEAzZAgsgAEEANgIAIBBBAWohAUECIRAMvgELAkAgASIEIAJHDQBBjAEhEAzYAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw3AASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjAEhEAzYAgsgAEEANgIAIBBBAWohAUEfIRAMvQELAkAgASIEIAJHDQBBjQEhEAzXAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8s+AgABqLQAARw2/ASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjQEhEAzXAgsgAEEANgIAIBBBAWohAUEJIRAMvAELAkAgASIEIAJHDQBBjgEhEAzWAgsCQAJAIAQtAABBt39qDgcAvwG/Ab8BvwG/AQG/AQsgBEEBaiEBQfgAIRAMvQILIARBAWohAUH5ACEQDLwCCwJAIAEiBCACRw0AQY8BIRAM1QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQZHPgIAAai0AAEcNvQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY8BIRAM1QILIABBADYCACAQQQFqIQFBGCEQDLoBCwJAIAEiBCACRw0AQZABIRAM1AILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQZfPgIAAai0AAEcNvAEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZABIRAM1AILIABBADYCACAQQQFqIQFBFyEQDLkBCwJAIAEiBCACRw0AQZEBIRAM0wILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQZrPgIAAai0AAEcNuwEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZEBIRAM0wILIABBADYCACAQQQFqIQFBFSEQDLgBCwJAIAEiBCACRw0AQZIBIRAM0gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQaHPgIAAai0AAEcNugEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZIBIRAM0gILIABBADYCACAQQQFqIQFBHiEQDLcBCwJAIAEiBCACRw0AQZMBIRAM0QILIAQtAABBzABHDbgBIARBAWohAUEKIRAMtgELAkAgBCACRw0AQZQBIRAM0AILAkACQCAELQAAQb9/ag4PALkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AbkBAbkBCyAEQQFqIQFB/gAhEAy3AgsgBEEBaiEBQf8AIRAMtgILAkAgBCACRw0AQZUBIRAMzwILAkACQCAELQAAQb9/ag4DALgBAbgBCyAEQQFqIQFB/QAhEAy2AgsgBEEBaiEEQYABIRAMtQILAkAgBCACRw0AQZYBIRAMzgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQafPgIAAai0AAEcNtgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZYBIRAMzgILIABBADYCACAQQQFqIQFBCyEQDLMBCwJAIAQgAkcNAEGXASEQDM0CCwJAAkACQAJAIAQtAABBU2oOIwC4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBAbgBuAG4AbgBuAECuAG4AbgBA7gBCyAEQQFqIQFB+wAhEAy2AgsgBEEBaiEBQfwAIRAMtQILIARBAWohBEGBASEQDLQCCyAEQQFqIQRBggEhEAyzAgsCQCAEIAJHDQBBmAEhEAzMAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBqc+AgABqLQAARw20ASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmAEhEAzMAgsgAEEANgIAIBBBAWohAUEZIRAMsQELAkAgBCACRw0AQZkBIRAMywILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQa7PgIAAai0AAEcNswEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZkBIRAMywILIABBADYCACAQQQFqIQFBBiEQDLABCwJAIAQgAkcNAEGaASEQDMoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG0z4CAAGotAABHDbIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGaASEQDMoCCyAAQQA2AgAgEEEBaiEBQRwhEAyvAQsCQCAEIAJHDQBBmwEhEAzJAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBts+AgABqLQAARw2xASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmwEhEAzJAgsgAEEANgIAIBBBAWohAUEnIRAMrgELAkAgBCACRw0AQZwBIRAMyAILAkACQCAELQAAQax/ag4CAAGxAQsgBEEBaiEEQYYBIRAMrwILIARBAWohBEGHASEQDK4CCwJAIAQgAkcNAEGdASEQDMcCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG4z4CAAGotAABHDa8BIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGdASEQDMcCCyAAQQA2AgAgEEEBaiEBQSYhEAysAQsCQCAEIAJHDQBBngEhEAzGAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBus+AgABqLQAARw2uASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBngEhEAzGAgsgAEEANgIAIBBBAWohAUEDIRAMqwELAkAgBCACRw0AQZ8BIRAMxQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNrQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ8BIRAMxQILIABBADYCACAQQQFqIQFBDCEQDKoBCwJAIAQgAkcNAEGgASEQDMQCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUG8z4CAAGotAABHDawBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGgASEQDMQCCyAAQQA2AgAgEEEBaiEBQQ0hEAypAQsCQCAEIAJHDQBBoQEhEAzDAgsCQAJAIAQtAABBun9qDgsArAGsAawBrAGsAawBrAGsAawBAawBCyAEQQFqIQRBiwEhEAyqAgsgBEEBaiEEQYwBIRAMqQILAkAgBCACRw0AQaIBIRAMwgILIAQtAABB0ABHDakBIARBAWohBAzpAQsCQCAEIAJHDQBBowEhEAzBAgsCQAJAIAQtAABBt39qDgcBqgGqAaoBqgGqAQCqAQsgBEEBaiEEQY4BIRAMqAILIARBAWohAUEiIRAMpgELAkAgBCACRw0AQaQBIRAMwAILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQcDPgIAAai0AAEcNqAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaQBIRAMwAILIABBADYCACAQQQFqIQFBHSEQDKUBCwJAIAQgAkcNAEGlASEQDL8CCwJAAkAgBC0AAEGuf2oOAwCoAQGoAQsgBEEBaiEEQZABIRAMpgILIARBAWohAUEEIRAMpAELAkAgBCACRw0AQaYBIRAMvgILAkACQAJAAkACQCAELQAAQb9/ag4VAKoBqgGqAaoBqgGqAaoBqgGqAaoBAaoBqgECqgGqAQOqAaoBBKoBCyAEQQFqIQRBiAEhEAyoAgsgBEEBaiEEQYkBIRAMpwILIARBAWohBEGKASEQDKYCCyAEQQFqIQRBjwEhEAylAgsgBEEBaiEEQZEBIRAMpAILAkAgBCACRw0AQacBIRAMvQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNpQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQacBIRAMvQILIABBADYCACAQQQFqIQFBESEQDKIBCwJAIAQgAkcNAEGoASEQDLwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHCz4CAAGotAABHDaQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGoASEQDLwCCyAAQQA2AgAgEEEBaiEBQSwhEAyhAQsCQCAEIAJHDQBBqQEhEAy7AgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBxc+AgABqLQAARw2jASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqQEhEAy7AgsgAEEANgIAIBBBAWohAUErIRAMoAELAkAgBCACRw0AQaoBIRAMugILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQcrPgIAAai0AAEcNogEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaoBIRAMugILIABBADYCACAQQQFqIQFBFCEQDJ8BCwJAIAQgAkcNAEGrASEQDLkCCwJAAkACQAJAIAQtAABBvn9qDg8AAQKkAaQBpAGkAaQBpAGkAaQBpAGkAaQBA6QBCyAEQQFqIQRBkwEhEAyiAgsgBEEBaiEEQZQBIRAMoQILIARBAWohBEGVASEQDKACCyAEQQFqIQRBlgEhEAyfAgsCQCAEIAJHDQBBrAEhEAy4AgsgBC0AAEHFAEcNnwEgBEEBaiEEDOABCwJAIAQgAkcNAEGtASEQDLcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHNz4CAAGotAABHDZ8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGtASEQDLcCCyAAQQA2AgAgEEEBaiEBQQ4hEAycAQsCQCAEIAJHDQBBrgEhEAy2AgsgBC0AAEHQAEcNnQEgBEEBaiEBQSUhEAybAQsCQCAEIAJHDQBBrwEhEAy1AgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw2dASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrwEhEAy1AgsgAEEANgIAIBBBAWohAUEqIRAMmgELAkAgBCACRw0AQbABIRAMtAILAkACQCAELQAAQat/ag4LAJ0BnQGdAZ0BnQGdAZ0BnQGdAQGdAQsgBEEBaiEEQZoBIRAMmwILIARBAWohBEGbASEQDJoCCwJAIAQgAkcNAEGxASEQDLMCCwJAAkAgBC0AAEG/f2oOFACcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEBnAELIARBAWohBEGZASEQDJoCCyAEQQFqIQRBnAEhEAyZAgsCQCAEIAJHDQBBsgEhEAyyAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFB2c+AgABqLQAARw2aASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBsgEhEAyyAgsgAEEANgIAIBBBAWohAUEhIRAMlwELAkAgBCACRw0AQbMBIRAMsQILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQd3PgIAAai0AAEcNmQEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbMBIRAMsQILIABBADYCACAQQQFqIQFBGiEQDJYBCwJAIAQgAkcNAEG0ASEQDLACCwJAAkACQCAELQAAQbt/ag4RAJoBmgGaAZoBmgGaAZoBmgGaAQGaAZoBmgGaAZoBApoBCyAEQQFqIQRBnQEhEAyYAgsgBEEBaiEEQZ4BIRAMlwILIARBAWohBEGfASEQDJYCCwJAIAQgAkcNAEG1ASEQDK8CCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUHkz4CAAGotAABHDZcBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG1ASEQDK8CCyAAQQA2AgAgEEEBaiEBQSghEAyUAQsCQCAEIAJHDQBBtgEhEAyuAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB6s+AgABqLQAARw2WASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtgEhEAyuAgsgAEEANgIAIBBBAWohAUEHIRAMkwELAkAgBCACRw0AQbcBIRAMrQILAkACQCAELQAAQbt/ag4OAJYBlgGWAZYBlgGWAZYBlgGWAZYBlgGWAQGWAQsgBEEBaiEEQaEBIRAMlAILIARBAWohBEGiASEQDJMCCwJAIAQgAkcNAEG4ASEQDKwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDZQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG4ASEQDKwCCyAAQQA2AgAgEEEBaiEBQRIhEAyRAQsCQCAEIAJHDQBBuQEhEAyrAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw2TASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuQEhEAyrAgsgAEEANgIAIBBBAWohAUEgIRAMkAELAkAgBCACRw0AQboBIRAMqgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNkgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQboBIRAMqgILIABBADYCACAQQQFqIQFBDyEQDI8BCwJAIAQgAkcNAEG7ASEQDKkCCwJAAkAgBC0AAEG3f2oOBwCSAZIBkgGSAZIBAZIBCyAEQQFqIQRBpQEhEAyQAgsgBEEBaiEEQaYBIRAMjwILAkAgBCACRw0AQbwBIRAMqAILIAIgBGsgACgCACIBaiEUIAQgAWtBB2ohEAJAA0AgBC0AACABQfTPgIAAai0AAEcNkAEgAUEHRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbwBIRAMqAILIABBADYCACAQQQFqIQFBGyEQDI0BCwJAIAQgAkcNAEG9ASEQDKcCCwJAAkACQCAELQAAQb5/ag4SAJEBkQGRAZEBkQGRAZEBkQGRAQGRAZEBkQGRAZEBkQECkQELIARBAWohBEGkASEQDI8CCyAEQQFqIQRBpwEhEAyOAgsgBEEBaiEEQagBIRAMjQILAkAgBCACRw0AQb4BIRAMpgILIAQtAABBzgBHDY0BIARBAWohBAzPAQsCQCAEIAJHDQBBvwEhEAylAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAELQAAQb9/ag4VAAECA5wBBAUGnAGcAZwBBwgJCgucAQwNDg+cAQsgBEEBaiEBQegAIRAMmgILIARBAWohAUHpACEQDJkCCyAEQQFqIQFB7gAhEAyYAgsgBEEBaiEBQfIAIRAMlwILIARBAWohAUHzACEQDJYCCyAEQQFqIQFB9gAhEAyVAgsgBEEBaiEBQfcAIRAMlAILIARBAWohAUH6ACEQDJMCCyAEQQFqIQRBgwEhEAySAgsgBEEBaiEEQYQBIRAMkQILIARBAWohBEGFASEQDJACCyAEQQFqIQRBkgEhEAyPAgsgBEEBaiEEQZgBIRAMjgILIARBAWohBEGgASEQDI0CCyAEQQFqIQRBowEhEAyMAgsgBEEBaiEEQaoBIRAMiwILAkAgBCACRg0AIABBkICAgAA2AgggACAENgIEQasBIRAMiwILQcABIRAMowILIAAgBSACEKqAgIAAIgENiwEgBSEBDFwLAkAgBiACRg0AIAZBAWohBQyNAQtBwgEhEAyhAgsDQAJAIBAtAABBdmoOBIwBAACPAQALIBBBAWoiECACRw0AC0HDASEQDKACCwJAIAcgAkYNACAAQZGAgIAANgIIIAAgBzYCBCAHIQFBASEQDIcCC0HEASEQDJ8CCwJAIAcgAkcNAEHFASEQDJ8CCwJAAkAgBy0AAEF2ag4EAc4BzgEAzgELIAdBAWohBgyNAQsgB0EBaiEFDIkBCwJAIAcgAkcNAEHGASEQDJ4CCwJAAkAgBy0AAEF2ag4XAY8BjwEBjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAI8BCyAHQQFqIQcLQbABIRAMhAILAkAgCCACRw0AQcgBIRAMnQILIAgtAABBIEcNjQEgAEEAOwEyIAhBAWohAUGzASEQDIMCCyABIRcCQANAIBciByACRg0BIActAABBUGpB/wFxIhBBCk8NzAECQCAALwEyIhRBmTNLDQAgACAUQQpsIhQ7ATIgEEH//wNzIBRB/v8DcUkNACAHQQFqIRcgACAUIBBqIhA7ATIgEEH//wNxQegHSQ0BCwtBACEQIABBADYCHCAAQcGJgIAANgIQIABBDTYCDCAAIAdBAWo2AhQMnAILQccBIRAMmwILIAAgCCACEK6AgIAAIhBFDcoBIBBBFUcNjAEgAEHIATYCHCAAIAg2AhQgAEHJl4CAADYCECAAQRU2AgxBACEQDJoCCwJAIAkgAkcNAEHMASEQDJoCC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgCS0AAEFQag4KlgGVAQABAgMEBQYIlwELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMjgELQQkhEEEBIRRBACEXQQAhFgyNAQsCQCAKIAJHDQBBzgEhEAyZAgsgCi0AAEEuRw2OASAKQQFqIQkMygELIAsgAkcNjgFB0AEhEAyXAgsCQCALIAJGDQAgAEGOgICAADYCCCAAIAs2AgRBtwEhEAz+AQtB0QEhEAyWAgsCQCAEIAJHDQBB0gEhEAyWAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EEaiELA0AgBC0AACAQQfzPgIAAai0AAEcNjgEgEEEERg3pASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHSASEQDJUCCyAAIAwgAhCsgICAACIBDY0BIAwhAQy4AQsCQCAEIAJHDQBB1AEhEAyUAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EBaiEMA0AgBC0AACAQQYHQgIAAai0AAEcNjwEgEEEBRg2OASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHUASEQDJMCCwJAIAQgAkcNAEHWASEQDJMCCyACIARrIAAoAgAiEGohFCAEIBBrQQJqIQsDQCAELQAAIBBBg9CAgABqLQAARw2OASAQQQJGDZABIBBBAWohECAEQQFqIgQgAkcNAAsgACAUNgIAQdYBIRAMkgILAkAgBCACRw0AQdcBIRAMkgILAkACQCAELQAAQbt/ag4QAI8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwEBjwELIARBAWohBEG7ASEQDPkBCyAEQQFqIQRBvAEhEAz4AQsCQCAEIAJHDQBB2AEhEAyRAgsgBC0AAEHIAEcNjAEgBEEBaiEEDMQBCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEG+ASEQDPcBC0HZASEQDI8CCwJAIAQgAkcNAEHaASEQDI8CCyAELQAAQcgARg3DASAAQQE6ACgMuQELIABBAjoALyAAIAQgAhCmgICAACIQDY0BQcIBIRAM9AELIAAtAChBf2oOArcBuQG4AQsDQAJAIAQtAABBdmoOBACOAY4BAI4BCyAEQQFqIgQgAkcNAAtB3QEhEAyLAgsgAEEAOgAvIAAtAC1BBHFFDYQCCyAAQQA6AC8gAEEBOgA0IAEhAQyMAQsgEEEVRg3aASAAQQA2AhwgACABNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAyIAgsCQCAAIBAgAhC0gICAACIEDQAgECEBDIECCwJAIARBFUcNACAAQQM2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAyIAgsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMhwILIBBBFUYN1gEgAEEANgIcIAAgATYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMhgILIAAoAgQhFyAAQQA2AgQgECARp2oiFiEBIAAgFyAQIBYgFBsiEBC1gICAACIURQ2NASAAQQc2AhwgACAQNgIUIAAgFDYCDEEAIRAMhQILIAAgAC8BMEGAAXI7ATAgASEBC0EqIRAM6gELIBBBFUYN0QEgAEEANgIcIAAgATYCFCAAQYOMgIAANgIQIABBEzYCDEEAIRAMggILIBBBFUYNzwEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAMgQILIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDI0BCyAAQQw2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMgAILIBBBFUYNzAEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM/wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIwBCyAAQQ02AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/gELIBBBFUYNyQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM/QELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIsBCyAAQQ42AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/AELIABBADYCHCAAIAE2AhQgAEHAlYCAADYCECAAQQI2AgxBACEQDPsBCyAQQRVGDcUBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPoBCyAAQRA2AhwgACABNgIUIAAgEDYCDEEAIRAM+QELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDPEBCyAAQRE2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM+AELIBBBFUYNwQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM9wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIgBCyAAQRM2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM9gELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDO0BCyAAQRQ2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM9QELIBBBFUYNvQEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM9AELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIYBCyAAQRY2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM8wELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC3gICAACIEDQAgAUEBaiEBDOkBCyAAQRc2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM8gELIABBADYCHCAAIAE2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDPEBC0IBIRELIBBBAWohAQJAIAApAyAiEkL//////////w9WDQAgACASQgSGIBGENwMgIAEhAQyEAQsgAEEANgIcIAAgATYCFCAAQa2JgIAANgIQIABBDDYCDEEAIRAM7wELIABBADYCHCAAIBA2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDO4BCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNcyAAQQU2AhwgACAQNgIUIAAgFDYCDEEAIRAM7QELIABBADYCHCAAIBA2AhQgAEGqnICAADYCECAAQQ82AgxBACEQDOwBCyAAIBAgAhC0gICAACIBDQEgECEBC0EOIRAM0QELAkAgAUEVRw0AIABBAjYCHCAAIBA2AhQgAEGwmICAADYCECAAQRU2AgxBACEQDOoBCyAAQQA2AhwgACAQNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAzpAQsgAUEBaiEQAkAgAC8BMCIBQYABcUUNAAJAIAAgECACELuAgIAAIgENACAQIQEMcAsgAUEVRw26ASAAQQU2AhwgACAQNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAzpAQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgEDYCFCAAQZaTgIAANgIQIABBBDYCDEEAIRAM6QELIAAgECACEL2AgIAAGiAQIQECQAJAAkACQAJAIAAgECACELOAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIBAhAQtBJiEQDNEBCyAAQSM2AhwgACAQNgIUIABBpZaAgAA2AhAgAEEVNgIMQQAhEAzpAQsgAEEANgIcIAAgEDYCFCAAQdWLgIAANgIQIABBETYCDEEAIRAM6AELIAAtAC1BAXFFDQFBwwEhEAzOAQsCQCANIAJGDQADQAJAIA0tAABBIEYNACANIQEMxAELIA1BAWoiDSACRw0AC0ElIRAM5wELQSUhEAzmAQsgACgCBCEEIABBADYCBCAAIAQgDRCvgICAACIERQ2tASAAQSY2AhwgACAENgIMIAAgDUEBajYCFEEAIRAM5QELIBBBFUYNqwEgAEEANgIcIAAgATYCFCAAQf2NgIAANgIQIABBHTYCDEEAIRAM5AELIABBJzYCHCAAIAE2AhQgACAQNgIMQQAhEAzjAQsgECEBQQEhFAJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0ErIRAMygELIABBADYCHCAAIBA2AhQgAEGrkoCAADYCECAAQQs2AgxBACEQDOIBCyAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMQQAhEAzhAQsgAEEAOgAsIBAhAQy9AQsgECEBQQEhFAJAAkACQAJAAkAgAC0ALEF7ag4EAwECAAULIAAgAC8BMEEIcjsBMAwDC0ECIRQMAQtBBCEUCyAAQQE6ACwgACAALwEwIBRyOwEwCyAQIQELQSkhEAzFAQsgAEEANgIcIAAgATYCFCAAQfCUgIAANgIQIABBAzYCDEEAIRAM3QELAkAgDi0AAEENRw0AIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHULIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzdAQsgAC0ALUEBcUUNAUHEASEQDMMBCwJAIA4gAkcNAEEtIRAM3AELAkACQANAAkAgDi0AAEF2ag4EAgAAAwALIA5BAWoiDiACRw0AC0EtIRAM3QELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDiEBDHQLIABBLDYCHCAAIA42AhQgACABNgIMQQAhEAzcAQsgACgCBCEBIABBADYCBAJAIAAgASAOELGAgIAAIgENACAOQQFqIQEMcwsgAEEsNgIcIAAgATYCDCAAIA5BAWo2AhRBACEQDNsBCyAAKAIEIQQgAEEANgIEIAAgBCAOELGAgIAAIgQNoAEgDiEBDM4BCyAQQSxHDQEgAUEBaiEQQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIBAhAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIBAhAQwBCyAAIAAvATBBCHI7ATAgECEBC0E5IRAMvwELIABBADoALCABIQELQTQhEAy9AQsgACAALwEwQSByOwEwIAEhAQwCCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBA0AIAEhAQzHAQsgAEE3NgIcIAAgATYCFCAAIAQ2AgxBACEQDNQBCyAAQQg6ACwgASEBC0EwIRAMuQELAkAgAC0AKEEBRg0AIAEhAQwECyAALQAtQQhxRQ2TASABIQEMAwsgAC0AMEEgcQ2UAUHFASEQDLcBCwJAIA8gAkYNAAJAA0ACQCAPLQAAQVBqIgFB/wFxQQpJDQAgDyEBQTUhEAy6AQsgACkDICIRQpmz5syZs+bMGVYNASAAIBFCCn4iETcDICARIAGtQv8BgyISQn+FVg0BIAAgESASfDcDICAPQQFqIg8gAkcNAAtBOSEQDNEBCyAAKAIEIQIgAEEANgIEIAAgAiAPQQFqIgQQsYCAgAAiAg2VASAEIQEMwwELQTkhEAzPAQsCQCAALwEwIgFBCHFFDQAgAC0AKEEBRw0AIAAtAC1BCHFFDZABCyAAIAFB9/sDcUGABHI7ATAgDyEBC0E3IRAMtAELIAAgAC8BMEEQcjsBMAyrAQsgEEEVRg2LASAAQQA2AhwgACABNgIUIABB8I6AgAA2AhAgAEEcNgIMQQAhEAzLAQsgAEHDADYCHCAAIAE2AgwgACANQQFqNgIUQQAhEAzKAQsCQCABLQAAQTpHDQAgACgCBCEQIABBADYCBAJAIAAgECABEK+AgIAAIhANACABQQFqIQEMYwsgAEHDADYCHCAAIBA2AgwgACABQQFqNgIUQQAhEAzKAQsgAEEANgIcIAAgATYCFCAAQbGRgIAANgIQIABBCjYCDEEAIRAMyQELIABBADYCHCAAIAE2AhQgAEGgmYCAADYCECAAQR42AgxBACEQDMgBCyAAQQA2AgALIABBgBI7ASogACAXQQFqIgEgAhCogICAACIQDQEgASEBC0HHACEQDKwBCyAQQRVHDYMBIABB0QA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAzEAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAzDAQsgAEEANgIcIAAgFDYCFCAAQcGogIAANgIQIABBBzYCDCAAQQA2AgBBACEQDMIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxdCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDMEBC0EAIRAgAEEANgIcIAAgATYCFCAAQYCRgIAANgIQIABBCTYCDAzAAQsgEEEVRg19IABBADYCHCAAIAE2AhQgAEGUjYCAADYCECAAQSE2AgxBACEQDL8BC0EBIRZBACEXQQAhFEEBIRALIAAgEDoAKyABQQFqIQECQAJAIAAtAC1BEHENAAJAAkACQCAALQAqDgMBAAIECyAWRQ0DDAILIBQNAQwCCyAXRQ0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQrYCAgAAiEA0AIAEhAQxcCyAAQdgANgIcIAAgATYCFCAAIBA2AgxBACEQDL4BCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQytAQsgAEHZADYCHCAAIAE2AhQgACAENgIMQQAhEAy9AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMqwELIABB2gA2AhwgACABNgIUIAAgBDYCDEEAIRAMvAELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKkBCyAAQdwANgIcIAAgATYCFCAAIAQ2AgxBACEQDLsBCwJAIAEtAABBUGoiEEH/AXFBCk8NACAAIBA6ACogAUEBaiEBQc8AIRAMogELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKcBCyAAQd4ANgIcIAAgATYCFCAAIAQ2AgxBACEQDLoBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKUEjTw0AIAEhAQxZCyAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMQQAhEAy5AQsgAEEANgIAC0EAIRAgAEEANgIcIAAgATYCFCAAQZCzgIAANgIQIABBCDYCDAy3AQsgAEEANgIAIBdBAWohAQJAIAAtAClBIUcNACABIQEMVgsgAEEANgIcIAAgATYCFCAAQZuKgIAANgIQIABBCDYCDEEAIRAMtgELIABBADYCACAXQQFqIQECQCAALQApIhBBXWpBC08NACABIQEMVQsCQCAQQQZLDQBBASAQdEHKAHFFDQAgASEBDFULQQAhECAAQQA2AhwgACABNgIUIABB94mAgAA2AhAgAEEINgIMDLUBCyAQQRVGDXEgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMtAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFQLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMswELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMsgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMsQELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFELIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMsAELIABBADYCHCAAIAE2AhQgAEHGioCAADYCECAAQQc2AgxBACEQDK8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDK4BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDK0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDKwBCyAAQQA2AhwgACABNgIUIABB3IiAgAA2AhAgAEEHNgIMQQAhEAyrAQsgEEE/Rw0BIAFBAWohAQtBBSEQDJABC0EAIRAgAEEANgIcIAAgATYCFCAAQf2SgIAANgIQIABBBzYCDAyoAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAynAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAymAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMRgsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAylAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHSADYCHCAAIBQ2AhQgACABNgIMQQAhEAykAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHTADYCHCAAIBQ2AhQgACABNgIMQQAhEAyjAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMQwsgAEHlADYCHCAAIBQ2AhQgACABNgIMQQAhEAyiAQsgAEEANgIcIAAgFDYCFCAAQcOPgIAANgIQIABBBzYCDEEAIRAMoQELIABBADYCHCAAIAE2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKABC0EAIRAgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDAyfAQsgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDEEAIRAMngELIABBADYCHCAAIBQ2AhQgAEH+kYCAADYCECAAQQc2AgxBACEQDJ0BCyAAQQA2AhwgACABNgIUIABBjpuAgAA2AhAgAEEGNgIMQQAhEAycAQsgEEEVRg1XIABBADYCHCAAIAE2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDJsBCyAAQQA2AgAgEEEBaiEBQSQhEAsgACAQOgApIAAoAgQhECAAQQA2AgQgACAQIAEQq4CAgAAiEA1UIAEhAQw+CyAAQQA2AgALQQAhECAAQQA2AhwgACAENgIUIABB8ZuAgAA2AhAgAEEGNgIMDJcBCyABQRVGDVAgAEEANgIcIAAgBTYCFCAAQfCMgIAANgIQIABBGzYCDEEAIRAMlgELIAAoAgQhBSAAQQA2AgQgACAFIBAQqYCAgAAiBQ0BIBBBAWohBQtBrQEhEAx7CyAAQcEBNgIcIAAgBTYCDCAAIBBBAWo2AhRBACEQDJMBCyAAKAIEIQYgAEEANgIEIAAgBiAQEKmAgIAAIgYNASAQQQFqIQYLQa4BIRAMeAsgAEHCATYCHCAAIAY2AgwgACAQQQFqNgIUQQAhEAyQAQsgAEEANgIcIAAgBzYCFCAAQZeLgIAANgIQIABBDTYCDEEAIRAMjwELIABBADYCHCAAIAg2AhQgAEHjkICAADYCECAAQQk2AgxBACEQDI4BCyAAQQA2AhwgACAINgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAyNAQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgCUEBaiEIAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBCAAIBAgCBCtgICAACIQRQ09IABByQE2AhwgACAINgIUIAAgEDYCDEEAIRAMjAELIAAoAgQhBCAAQQA2AgQgACAEIAgQrYCAgAAiBEUNdiAAQcoBNgIcIAAgCDYCFCAAIAQ2AgxBACEQDIsBCyAAKAIEIQQgAEEANgIEIAAgBCAJEK2AgIAAIgRFDXQgAEHLATYCHCAAIAk2AhQgACAENgIMQQAhEAyKAQsgACgCBCEEIABBADYCBCAAIAQgChCtgICAACIERQ1yIABBzQE2AhwgACAKNgIUIAAgBDYCDEEAIRAMiQELAkAgCy0AAEFQaiIQQf8BcUEKTw0AIAAgEDoAKiALQQFqIQpBtgEhEAxwCyAAKAIEIQQgAEEANgIEIAAgBCALEK2AgIAAIgRFDXAgAEHPATYCHCAAIAs2AhQgACAENgIMQQAhEAyIAQsgAEEANgIcIAAgBDYCFCAAQZCzgIAANgIQIABBCDYCDCAAQQA2AgBBACEQDIcBCyABQRVGDT8gAEEANgIcIAAgDDYCFCAAQcyOgIAANgIQIABBIDYCDEEAIRAMhgELIABBgQQ7ASggACgCBCEQIABCADcDACAAIBAgDEEBaiIMEKuAgIAAIhBFDTggAEHTATYCHCAAIAw2AhQgACAQNgIMQQAhEAyFAQsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQdibgIAANgIQIABBCDYCDAyDAQsgACgCBCEQIABCADcDACAAIBAgC0EBaiILEKuAgIAAIhANAUHGASEQDGkLIABBAjoAKAxVCyAAQdUBNgIcIAAgCzYCFCAAIBA2AgxBACEQDIABCyAQQRVGDTcgAEEANgIcIAAgBDYCFCAAQaSMgIAANgIQIABBEDYCDEEAIRAMfwsgAC0ANEEBRw00IAAgBCACELyAgIAAIhBFDTQgEEEVRw01IABB3AE2AhwgACAENgIUIABB1ZaAgAA2AhAgAEEVNgIMQQAhEAx+C0EAIRAgAEEANgIcIABBr4uAgAA2AhAgAEECNgIMIAAgFEEBajYCFAx9C0EAIRAMYwtBAiEQDGILQQ0hEAxhC0EPIRAMYAtBJSEQDF8LQRMhEAxeC0EVIRAMXQtBFiEQDFwLQRchEAxbC0EYIRAMWgtBGSEQDFkLQRohEAxYC0EbIRAMVwtBHCEQDFYLQR0hEAxVC0EfIRAMVAtBISEQDFMLQSMhEAxSC0HGACEQDFELQS4hEAxQC0EvIRAMTwtBOyEQDE4LQT0hEAxNC0HIACEQDEwLQckAIRAMSwtBywAhEAxKC0HMACEQDEkLQc4AIRAMSAtB0QAhEAxHC0HVACEQDEYLQdgAIRAMRQtB2QAhEAxEC0HbACEQDEMLQeQAIRAMQgtB5QAhEAxBC0HxACEQDEALQfQAIRAMPwtBjQEhEAw+C0GXASEQDD0LQakBIRAMPAtBrAEhEAw7C0HAASEQDDoLQbkBIRAMOQtBrwEhEAw4C0GxASEQDDcLQbIBIRAMNgtBtAEhEAw1C0G1ASEQDDQLQboBIRAMMwtBvQEhEAwyC0G/ASEQDDELQcEBIRAMMAsgAEEANgIcIAAgBDYCFCAAQemLgIAANgIQIABBHzYCDEEAIRAMSAsgAEHbATYCHCAAIAQ2AhQgAEH6loCAADYCECAAQRU2AgxBACEQDEcLIABB+AA2AhwgACAMNgIUIABBypiAgAA2AhAgAEEVNgIMQQAhEAxGCyAAQdEANgIcIAAgBTYCFCAAQbCXgIAANgIQIABBFTYCDEEAIRAMRQsgAEH5ADYCHCAAIAE2AhQgACAQNgIMQQAhEAxECyAAQfgANgIcIAAgATYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMQwsgAEHkADYCHCAAIAE2AhQgAEHjl4CAADYCECAAQRU2AgxBACEQDEILIABB1wA2AhwgACABNgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAxBCyAAQQA2AhwgACABNgIUIABBuY2AgAA2AhAgAEEaNgIMQQAhEAxACyAAQcIANgIcIAAgATYCFCAAQeOYgIAANgIQIABBFTYCDEEAIRAMPwsgAEEANgIEIAAgDyAPELGAgIAAIgRFDQEgAEE6NgIcIAAgBDYCDCAAIA9BAWo2AhRBACEQDD4LIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCxgICAACIERQ0AIABBOzYCHCAAIAQ2AgwgACABQQFqNgIUQQAhEAw+CyABQQFqIQEMLQsgD0EBaiEBDC0LIABBADYCHCAAIA82AhQgAEHkkoCAADYCECAAQQQ2AgxBACEQDDsLIABBNjYCHCAAIAQ2AhQgACACNgIMQQAhEAw6CyAAQS42AhwgACAONgIUIAAgBDYCDEEAIRAMOQsgAEHQADYCHCAAIAE2AhQgAEGRmICAADYCECAAQRU2AgxBACEQDDgLIA1BAWohAQwsCyAAQRU2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAw2CyAAQRs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw1CyAAQQ82AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw0CyAAQQs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAwzCyAAQRo2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwyCyAAQQs2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwxCyAAQQo2AhwgACABNgIUIABB5JaAgAA2AhAgAEEVNgIMQQAhEAwwCyAAQR42AhwgACABNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAwvCyAAQQA2AhwgACAQNgIUIABB2o2AgAA2AhAgAEEUNgIMQQAhEAwuCyAAQQQ2AhwgACABNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAwtCyAAQQA2AgAgC0EBaiELC0G4ASEQDBILIABBADYCACAQQQFqIQFB9QAhEAwRCyABIQECQCAALQApQQVHDQBB4wAhEAwRC0HiACEQDBALQQAhECAAQQA2AhwgAEHkkYCAADYCECAAQQc2AgwgACAUQQFqNgIUDCgLIABBADYCACAXQQFqIQFBwAAhEAwOC0EBIQELIAAgAToALCAAQQA2AgAgF0EBaiEBC0EoIRAMCwsgASEBC0E4IRAMCQsCQCABIg8gAkYNAANAAkAgDy0AAEGAvoCAAGotAAAiAUEBRg0AIAFBAkcNAyAPQQFqIQEMBAsgD0EBaiIPIAJHDQALQT4hEAwiC0E+IRAMIQsgAEEAOgAsIA8hAQwBC0ELIRAMBgtBOiEQDAULIAFBAWohAUEtIRAMBAsgACABOgAsIABBADYCACAWQQFqIQFBDCEQDAMLIABBADYCACAXQQFqIQFBCiEQDAILIABBADYCAAsgAEEAOgAsIA0hAUEJIRAMAAsLQQAhECAAQQA2AhwgACALNgIUIABBzZCAgAA2AhAgAEEJNgIMDBcLQQAhECAAQQA2AhwgACAKNgIUIABB6YqAgAA2AhAgAEEJNgIMDBYLQQAhECAAQQA2AhwgACAJNgIUIABBt5CAgAA2AhAgAEEJNgIMDBULQQAhECAAQQA2AhwgACAINgIUIABBnJGAgAA2AhAgAEEJNgIMDBQLQQAhECAAQQA2AhwgACABNgIUIABBzZCAgAA2AhAgAEEJNgIMDBMLQQAhECAAQQA2AhwgACABNgIUIABB6YqAgAA2AhAgAEEJNgIMDBILQQAhECAAQQA2AhwgACABNgIUIABBt5CAgAA2AhAgAEEJNgIMDBELQQAhECAAQQA2AhwgACABNgIUIABBnJGAgAA2AhAgAEEJNgIMDBALQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA8LQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA4LQQAhECAAQQA2AhwgACABNgIUIABBwJKAgAA2AhAgAEELNgIMDA0LQQAhECAAQQA2AhwgACABNgIUIABBlYmAgAA2AhAgAEELNgIMDAwLQQAhECAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMDAsLQQAhECAAQQA2AhwgACABNgIUIABB+4+AgAA2AhAgAEEKNgIMDAoLQQAhECAAQQA2AhwgACABNgIUIABB8ZmAgAA2AhAgAEECNgIMDAkLQQAhECAAQQA2AhwgACABNgIUIABBxJSAgAA2AhAgAEECNgIMDAgLQQAhECAAQQA2AhwgACABNgIUIABB8pWAgAA2AhAgAEECNgIMDAcLIABBAjYCHCAAIAE2AhQgAEGcmoCAADYCECAAQRY2AgxBACEQDAYLQQEhEAwFC0HUACEQIAEiBCACRg0EIANBCGogACAEIAJB2MKAgABBChDFgICAACADKAIMIQQgAygCCA4DAQQCAAsQyoCAgAAACyAAQQA2AhwgAEG1moCAADYCECAAQRc2AgwgACAEQQFqNgIUQQAhEAwCCyAAQQA2AhwgACAENgIUIABBypqAgAA2AhAgAEEJNgIMQQAhEAwBCwJAIAEiBCACRw0AQSIhEAwBCyAAQYmAgIAANgIIIAAgBDYCBEEhIRALIANBEGokgICAgAAgEAuvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAEMeAgIAAC/I2AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKg0ICAAA0AQQAQy4CAgABBgNSEgABrIgJB2QBJDQBBACEDAkBBACgC4NOAgAAiBA0AQQBCfzcC7NOAgABBAEKAgISAgIDAADcC5NOAgABBACABQQhqQXBxQdiq1aoFcyIENgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgAALQQAgAjYCzNOAgABBAEGA1ISAADYCyNOAgABBAEGA1ISAADYCmNCAgABBACAENgKs0ICAAEEAQX82AqjQgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgNSEgABBeEGA1ISAAGtBD3FBAEGA1ISAAEEIakEPcRsiA2oiBEEEaiACQUhqIgUgA2siA0EBcjYCAEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgABBgNSEgAAgBWpBODYCBAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAUsNAAJAQQAoAojQgIAAIgZBECAAQRNqQXBxIABBC0kbIgJBA3YiBHYiA0EDcUUNAAJAAkAgA0EBcSAEckEBcyIFQQN0IgRBsNCAgABqIgMgBEG40ICAAGooAgAiBCgCCCICRw0AQQAgBkF+IAV3cTYCiNCAgAAMAQsgAyACNgIIIAIgAzYCDAsgBEEIaiEDIAQgBUEDdCIFQQNyNgIEIAQgBWoiBCAEKAIEQQFyNgIEDAwLIAJBACgCkNCAgAAiB00NAQJAIANFDQACQAJAIAMgBHRBAiAEdCIDQQAgA2tycSIDQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmoiBEEDdCIDQbDQgIAAaiIFIANBuNCAgABqKAIAIgMoAggiAEcNAEEAIAZBfiAEd3EiBjYCiNCAgAAMAQsgBSAANgIIIAAgBTYCDAsgAyACQQNyNgIEIAMgBEEDdCIEaiAEIAJrIgU2AgAgAyACaiIAIAVBAXI2AgQCQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhBAJAAkAgBkEBIAdBA3Z0IghxDQBBACAGIAhyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAQ2AgwgAiAENgIIIAQgAjYCDCAEIAg2AggLIANBCGohA0EAIAA2ApzQgIAAQQAgBTYCkNCAgAAMDAtBACgCjNCAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRBuNKAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNACAAKAIIIgNBACgCmNCAgABJGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCjNCAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRBuNKAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0QbjSgIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoApDQgIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AIAgoAggiA0EAKAKY0ICAAEkaIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoApDQgIAAIgMgAkkNAEEAKAKc0ICAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ApDQgIAAQQAgADYCnNCAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgBCADaiIDIAMoAgRBAXI2AgRBAEEANgKc0ICAAEEAQQA2ApDQgIAACyAEQQhqIQMMCgsCQEEAKAKU0ICAACIAIAJNDQBBACgCoNCAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ApTQgIAAQQAgBDYCoNCAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgC4NOAgABFDQBBACgC6NOAgAAhBAwBC0EAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEMakFwcUHYqtWqBXM2AuDTgIAAQQBBADYC9NOAgABBAEEANgLE04CAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYC+NOAgAAMCgsCQEEAKALA04CAACIDRQ0AAkBBACgCuNOAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgL404CAAAwKC0EALQDE04CAAEEEcQ0EAkACQAJAQQAoAqDQgIAAIgRFDQBByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQy4CAgAAiAEF/Rg0FIAghBgJAQQAoAuTTgIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgCwNOAgAAiA0UNAEEAKAK404CAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQy4CAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEMuAgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAujTgIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBDLgICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxDLgICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALE04CAAEEEcjYCxNOAgAALIAhB/v///wdLDQEgCBDLgICAACEAQQAQy4CAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKAK404CAACAGaiIDNgK404CAAAJAIANBACgCvNOAgABNDQBBACADNgK804CAAAsCQAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCmNCAgAAiA0UNACAAIANPDQELQQAgADYCmNCAgAALQQAhA0EAIAY2AszTgIAAQQAgADYCyNOAgABBAEF/NgKo0ICAAEEAQQAoAuDTgIAANgKs0ICAAEEAQQA2AtTTgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGQUhqIgUgA2siA0EBcjYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgAAgACAFakE4NgIEDAILIAMtAAxBCHENACAEIAVJDQAgBCAATw0AIARBeCAEa0EPcUEAIARBCGpBD3EbIgVqIgBBACgClNCAgAAgBmoiCyAFayIFQQFyNgIEIAMgCCAGajYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAU2ApTQgIAAQQAgADYCoNCAgAAgBCALakE4NgIEDAELAkAgAEEAKAKY0ICAACIITw0AQQAgADYCmNCAgAAgACEICyAAIAZqIQVByNOAgAAhAwJAAkACQAJAAkACQAJAA0AgAygCACAFRg0BIAMoAggiAw0ADAILCyADLQAMQQhxRQ0BC0HI04CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIgUgBEsNAwsgAygCCCEDDAALCyADIAA2AgAgAyADKAIEIAZqNgIEIABBeCAAa0EPcUEAIABBCGpBD3EbaiILIAJBA3I2AgQgBUF4IAVrQQ9xQQAgBUEIakEPcRtqIgYgCyACaiICayEDAkAgBiAERw0AQQAgAjYCoNCAgABBAEEAKAKU0ICAACADaiIDNgKU0ICAACACIANBAXI2AgQMAwsCQCAGQQAoApzQgIAARw0AQQAgAjYCnNCAgABBAEEAKAKQ0ICAACADaiIDNgKQ0ICAACACIANBAXI2AgQgAiADaiADNgIADAMLAkAgBigCBCIEQQNxQQFHDQAgBEF4cSEHAkACQCAEQf8BSw0AIAYoAggiBSAEQQN2IghBA3RBsNCAgABqIgBGGgJAIAYoAgwiBCAFRw0AQQBBACgCiNCAgABBfiAId3E2AojQgIAADAILIAQgAEYaIAQgBTYCCCAFIAQ2AgwMAQsgBigCGCEJAkACQCAGKAIMIgAgBkYNACAGKAIIIgQgCEkaIAAgBDYCCCAEIAA2AgwMAQsCQCAGQRRqIgQoAgAiBQ0AIAZBEGoiBCgCACIFDQBBACEADAELA0AgBCEIIAUiAEEUaiIEKAIAIgUNACAAQRBqIQQgACgCECIFDQALIAhBADYCAAsgCUUNAAJAAkAgBiAGKAIcIgVBAnRBuNKAgABqIgQoAgBHDQAgBCAANgIAIAANAUEAQQAoAozQgIAAQX4gBXdxNgKM0ICAAAwCCyAJQRBBFCAJKAIQIAZGG2ogADYCACAARQ0BCyAAIAk2AhgCQCAGKAIQIgRFDQAgACAENgIQIAQgADYCGAsgBigCFCIERQ0AIABBFGogBDYCACAEIAA2AhgLIAcgA2ohAyAGIAdqIgYoAgQhBAsgBiAEQX5xNgIEIAIgA2ogAzYCACACIANBAXI2AgQCQCADQf8BSw0AIANBeHFBsNCAgABqIQQCQAJAQQAoAojQgIAAIgVBASADQQN2dCIDcQ0AQQAgBSADcjYCiNCAgAAgBCEDDAELIAQoAgghAwsgAyACNgIMIAQgAjYCCCACIAQ2AgwgAiADNgIIDAMLQR8hBAJAIANB////B0sNACADQQh2IgQgBEGA/j9qQRB2QQhxIgR0IgUgBUGA4B9qQRB2QQRxIgV0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAQgBXIgAHJrIgRBAXQgAyAEQRVqdkEBcXJBHGohBAsgAiAENgIcIAJCADcCECAEQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiAEEBIAR0IghxDQAgBSACNgIAQQAgACAIcjYCjNCAgAAgAiAFNgIYIAIgAjYCCCACIAI2AgwMAwsgA0EAQRkgBEEBdmsgBEEfRht0IQQgBSgCACEAA0AgACIFKAIEQXhxIANGDQIgBEEddiEAIARBAXQhBCAFIABBBHFqQRBqIggoAgAiAA0ACyAIIAI2AgAgAiAFNgIYIAIgAjYCDCACIAI2AggMAgsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiCyAGQUhqIgggA2siA0EBcjYCBCAAIAhqQTg2AgQgBCAFQTcgBWtBD3FBACAFQUlqQQ9xG2pBQWoiCCAIIARBEGpJGyIIQSM2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAs2AqDQgIAAIAhBEGpBACkC0NOAgAA3AgAgCEEAKQLI04CAADcCCEEAIAhBCGo2AtDTgIAAQQAgBjYCzNOAgABBACAANgLI04CAAEEAQQA2AtTTgIAAIAhBJGohAwNAIANBBzYCACADQQRqIgMgBUkNAAsgCCAERg0DIAggCCgCBEF+cTYCBCAIIAggBGsiADYCACAEIABBAXI2AgQCQCAAQf8BSw0AIABBeHFBsNCAgABqIQMCQAJAQQAoAojQgIAAIgVBASAAQQN2dCIAcQ0AQQAgBSAAcjYCiNCAgAAgAyEFDAELIAMoAgghBQsgBSAENgIMIAMgBDYCCCAEIAM2AgwgBCAFNgIIDAQLQR8hAwJAIABB////B0sNACAAQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgggCEGAgA9qQRB2QQJxIgh0QQ92IAMgBXIgCHJrIgNBAXQgACADQRVqdkEBcXJBHGohAwsgBCADNgIcIARCADcCECADQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiCEEBIAN0IgZxDQAgBSAENgIAQQAgCCAGcjYCjNCAgAAgBCAFNgIYIAQgBDYCCCAEIAQ2AgwMBAsgAEEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACEIA0AgCCIFKAIEQXhxIABGDQMgA0EddiEIIANBAXQhAyAFIAhBBHFqQRBqIgYoAgAiCA0ACyAGIAQ2AgAgBCAFNgIYIAQgBDYCDCAEIAQ2AggMAwsgBSgCCCIDIAI2AgwgBSACNgIIIAJBADYCGCACIAU2AgwgAiADNgIICyALQQhqIQMMBQsgBSgCCCIDIAQ2AgwgBSAENgIIIARBADYCGCAEIAU2AgwgBCADNgIIC0EAKAKU0ICAACIDIAJNDQBBACgCoNCAgAAiBCACaiIFIAMgAmsiA0EBcjYCBEEAIAM2ApTQgIAAQQAgBTYCoNCAgAAgBCACQQNyNgIEIARBCGohAwwDC0EAIQNBAEEwNgL404CAAAwCCwJAIAtFDQACQAJAIAggCCgCHCIFQQJ0QbjSgIAAaiIDKAIARw0AIAMgADYCACAADQFBACAHQX4gBXdxIgc2AozQgIAADAILIAtBEEEUIAsoAhAgCEYbaiAANgIAIABFDQELIAAgCzYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIQRRqKAIAIgNFDQAgAEEUaiADNgIAIAMgADYCGAsCQAJAIARBD0sNACAIIAQgAmoiA0EDcjYCBCAIIANqIgMgAygCBEEBcjYCBAwBCyAIIAJqIgAgBEEBcjYCBCAIIAJBA3I2AgQgACAEaiAENgIAAkAgBEH/AUsNACAEQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgBEEDdnQiBHENAEEAIAUgBHI2AojQgIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG40oCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2AozQgIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCjNCAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAAgA2oiAyADKAIEQQFyNgIEDAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhAwJAAkBBASAHQQN2dCIIIAZxDQBBACAIIAZyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAM2AgwgAiADNgIIIAMgAjYCDCADIAg2AggLQQAgBTYCnNCAgABBACAENgKQ0ICAAAsgAEEIaiEDCyABQRBqJICAgIAAIAMLCgAgABDJgICAAAviDQEHfwJAIABFDQAgAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkAgAkEBcQ0AIAJBA3FFDQEgASABKAIAIgJrIgFBACgCmNCAgAAiBEkNASACIABqIQACQCABQQAoApzQgIAARg0AAkAgAkH/AUsNACABKAIIIgQgAkEDdiIFQQN0QbDQgIAAaiIGRhoCQCABKAIMIgIgBEcNAEEAQQAoAojQgIAAQX4gBXdxNgKI0ICAAAwDCyACIAZGGiACIAQ2AgggBCACNgIMDAILIAEoAhghBwJAAkAgASgCDCIGIAFGDQAgASgCCCICIARJGiAGIAI2AgggAiAGNgIMDAELAkAgAUEUaiICKAIAIgQNACABQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQECQAJAIAEgASgCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAwsgB0EQQRQgBygCECABRhtqIAY2AgAgBkUNAgsgBiAHNgIYAkAgASgCECICRQ0AIAYgAjYCECACIAY2AhgLIAEoAhQiAkUNASAGQRRqIAI2AgAgAiAGNgIYDAELIAMoAgQiAkEDcUEDRw0AIAMgAkF+cTYCBEEAIAA2ApDQgIAAIAEgAGogADYCACABIABBAXI2AgQPCyABIANPDQAgAygCBCICQQFxRQ0AAkACQCACQQJxDQACQCADQQAoAqDQgIAARw0AQQAgATYCoNCAgABBAEEAKAKU0ICAACAAaiIANgKU0ICAACABIABBAXI2AgQgAUEAKAKc0ICAAEcNA0EAQQA2ApDQgIAAQQBBADYCnNCAgAAPCwJAIANBACgCnNCAgABHDQBBACABNgKc0ICAAEEAQQAoApDQgIAAIABqIgA2ApDQgIAAIAEgAEEBcjYCBCABIABqIAA2AgAPCyACQXhxIABqIQACQAJAIAJB/wFLDQAgAygCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgAygCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAgsgAiAGRhogAiAENgIIIAQgAjYCDAwBCyADKAIYIQcCQAJAIAMoAgwiBiADRg0AIAMoAggiAkEAKAKY0ICAAEkaIAYgAjYCCCACIAY2AgwMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAAJAAkAgAyADKAIcIgRBAnRBuNKAgABqIgIoAgBHDQAgAiAGNgIAIAYNAUEAQQAoAozQgIAAQX4gBHdxNgKM0ICAAAwCCyAHQRBBFCAHKAIQIANGG2ogBjYCACAGRQ0BCyAGIAc2AhgCQCADKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgAygCFCICRQ0AIAZBFGogAjYCACACIAY2AhgLIAEgAGogADYCACABIABBAXI2AgQgAUEAKAKc0ICAAEcNAUEAIAA2ApDQgIAADwsgAyACQX5xNgIEIAEgAGogADYCACABIABBAXI2AgQLAkAgAEH/AUsNACAAQXhxQbDQgIAAaiECAkACQEEAKAKI0ICAACIEQQEgAEEDdnQiAHENAEEAIAQgAHI2AojQgIAAIAIhAAwBCyACKAIIIQALIAAgATYCDCACIAE2AgggASACNgIMIAEgADYCCA8LQR8hAgJAIABB////B0sNACAAQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgQgBEGA4B9qQRB2QQRxIgR0IgYgBkGAgA9qQRB2QQJxIgZ0QQ92IAIgBHIgBnJrIgJBAXQgACACQRVqdkEBcXJBHGohAgsgASACNgIcIAFCADcCECACQQJ0QbjSgIAAaiEEAkACQEEAKAKM0ICAACIGQQEgAnQiA3ENACAEIAE2AgBBACAGIANyNgKM0ICAACABIAQ2AhggASABNgIIIAEgATYCDAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAEgBDYCGCABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQQA2AhggASAENgIMIAEgADYCCAtBAEEAKAKo0ICAAEF/aiIBQX8gARs2AqjQgIAACwsEAAAAC04AAkAgAA0APwBBEHQPCwJAIABB//8DcQ0AIABBf0wNAAJAIABBEHZAACIAQX9HDQBBAEEwNgL404CAAEF/DwsgAEEQdA8LEMqAgIAAAAvyAgIDfwF+AkAgAkUNACAAIAE6AAAgAiAAaiIDQX9qIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0F9aiABOgAAIANBfmogAToAACACQQdJDQAgACABOgADIANBfGogAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgVrIgJBIEkNACABrUKBgICAEH4hBiADIAVqIQEDQCABIAY3AxggASAGNwMQIAEgBjcDCCABIAY3AwAgAUEgaiEBIAJBYGoiAkEfSw0ACwsgAAsLjkgBAEGACAuGSAEAAAACAAAAAwAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=="},42716:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.enumToMap=void 0;function enumToMap(r){const i={};Object.keys(r).forEach((s=>{const a=r[s];if(typeof a==="number"){i[s]=a}}));return i}i.enumToMap=enumToMap},59017:(r,i,s)=>{"use strict";const{kClients:a}=s(22405);const l=s(80706);const{kAgent:c,kMockAgentSet:d,kMockAgentGet:p,kDispatches:A,kIsMockActive:u,kNetConnect:h,kGetNetConnect:g,kOptions:y,kFactory:b}=s(35858);const C=s(53554);const B=s(61548);const{matchValue:I,buildMockOptions:w}=s(18736);const{InvalidArgumentError:v,UndiciError:S}=s(95594);const Q=s(17013);const N=s(32692);const R=s(72890);class FakeWeakRef{constructor(r){this.value=r}deref(){return this.value}}class MockAgent extends Q{constructor(r){super(r);this[h]=true;this[u]=true;if(r&&r.agent&&typeof r.agent.dispatch!=="function"){throw new v("Argument opts.agent must implement Agent")}const i=r&&r.agent?r.agent:new l(r);this[c]=i;this[a]=i[a];this[y]=w(r)}get(r){let i=this[p](r);if(!i){i=this[b](r);this[d](r,i)}return i}dispatch(r,i){this.get(r.origin);return this[c].dispatch(r,i)}async close(){await this[c].close();this[a].clear()}deactivate(){this[u]=false}activate(){this[u]=true}enableNetConnect(r){if(typeof r==="string"||typeof r==="function"||r instanceof RegExp){if(Array.isArray(this[h])){this[h].push(r)}else{this[h]=[r]}}else if(typeof r==="undefined"){this[h]=true}else{throw new v("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[h]=false}get isMockActive(){return this[u]}[d](r,i){this[a].set(r,new FakeWeakRef(i))}[b](r){const i=Object.assign({agent:this},this[y]);return this[y]&&this[y].connections===1?new C(r,i):new B(r,i)}[p](r){const i=this[a].get(r);if(i){return i.deref()}if(typeof r!=="string"){const i=this[b]("http://localhost:9999");this[d](r,i);return i}for(const[i,s]of Array.from(this[a])){const a=s.deref();if(a&&typeof i!=="string"&&I(i,r)){const i=this[b](r);this[d](r,i);i[A]=a[A];return i}}}[g](){return this[h]}pendingInterceptors(){const r=this[a];return Array.from(r.entries()).flatMap((([r,i])=>i.deref()[A].map((i=>({...i,origin:r}))))).filter((({pending:r})=>r))}assertNoPendingInterceptors({pendingInterceptorsFormatter:r=new R}={}){const i=this.pendingInterceptors();if(i.length===0){return}const s=new N("interceptor","interceptors").pluralize(i.length);throw new S(`\n${s.count} ${s.noun} ${s.is} pending:\n\n${r.format(i)}\n`.trim())}}r.exports=MockAgent},53554:(r,i,s)=>{"use strict";const{promisify:a}=s(73837);const l=s(37451);const{buildMockDispatch:c}=s(18736);const{kDispatches:d,kMockAgent:p,kClose:A,kOriginalClose:u,kOrigin:h,kOriginalDispatch:g,kConnected:y}=s(35858);const{MockInterceptor:b}=s(32922);const C=s(22405);const{InvalidArgumentError:B}=s(95594);class MockClient extends l{constructor(r,i){super(r,i);if(!i||!i.agent||typeof i.agent.dispatch!=="function"){throw new B("Argument opts.agent must implement Agent")}this[p]=i.agent;this[h]=r;this[d]=[];this[y]=1;this[g]=this.dispatch;this[u]=this.close.bind(this);this.dispatch=c.call(this);this.close=this[A]}get[C.kConnected](){return this[y]}intercept(r){return new b(r,this[d])}async[A](){await a(this[u])();this[y]=0;this[p][C.kClients].delete(this[h])}}r.exports=MockClient},88609:(r,i,s)=>{"use strict";const{UndiciError:a}=s(95594);class MockNotMatchedError extends a{constructor(r){super(r);Error.captureStackTrace(this,MockNotMatchedError);this.name="MockNotMatchedError";this.message=r||"The request does not match any registered mock dispatches";this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}}r.exports={MockNotMatchedError:MockNotMatchedError}},32922:(r,i,s)=>{"use strict";const{getResponseData:a,buildKey:l,addMockDispatch:c}=s(18736);const{kDispatches:d,kDispatchKey:p,kDefaultHeaders:A,kDefaultTrailers:u,kContentLength:h,kMockDispatch:g}=s(35858);const{InvalidArgumentError:y}=s(95594);const{buildURL:b}=s(85310);class MockScope{constructor(r){this[g]=r}delay(r){if(typeof r!=="number"||!Number.isInteger(r)||r<=0){throw new y("waitInMs must be a valid integer > 0")}this[g].delay=r;return this}persist(){this[g].persist=true;return this}times(r){if(typeof r!=="number"||!Number.isInteger(r)||r<=0){throw new y("repeatTimes must be a valid integer > 0")}this[g].times=r;return this}}class MockInterceptor{constructor(r,i){if(typeof r!=="object"){throw new y("opts must be an object")}if(typeof r.path==="undefined"){throw new y("opts.path must be defined")}if(typeof r.method==="undefined"){r.method="GET"}if(typeof r.path==="string"){if(r.query){r.path=b(r.path,r.query)}else{const i=new URL(r.path,"data://");r.path=i.pathname+i.search}}if(typeof r.method==="string"){r.method=r.method.toUpperCase()}this[p]=l(r);this[d]=i;this[A]={};this[u]={};this[h]=false}createMockScopeDispatchData(r,i,s={}){const l=a(i);const c=this[h]?{"content-length":l.length}:{};const d={...this[A],...c,...s.headers};const p={...this[u],...s.trailers};return{statusCode:r,data:i,headers:d,trailers:p}}validateReplyParameters(r,i,s){if(typeof r==="undefined"){throw new y("statusCode must be defined")}if(typeof i==="undefined"){throw new y("data must be defined")}if(typeof s!=="object"){throw new y("responseOptions must be an object")}}reply(r){if(typeof r==="function"){const wrappedDefaultsCallback=i=>{const s=r(i);if(typeof s!=="object"){throw new y("reply options callback must return an object")}const{statusCode:a,data:l="",responseOptions:c={}}=s;this.validateReplyParameters(a,l,c);return{...this.createMockScopeDispatchData(a,l,c)}};const i=c(this[d],this[p],wrappedDefaultsCallback);return new MockScope(i)}const[i,s="",a={}]=[...arguments];this.validateReplyParameters(i,s,a);const l=this.createMockScopeDispatchData(i,s,a);const A=c(this[d],this[p],l);return new MockScope(A)}replyWithError(r){if(typeof r==="undefined"){throw new y("error must be defined")}const i=c(this[d],this[p],{error:r});return new MockScope(i)}defaultReplyHeaders(r){if(typeof r==="undefined"){throw new y("headers must be defined")}this[A]=r;return this}defaultReplyTrailers(r){if(typeof r==="undefined"){throw new y("trailers must be defined")}this[u]=r;return this}replyContentLength(){this[h]=true;return this}}r.exports.MockInterceptor=MockInterceptor;r.exports.MockScope=MockScope},61548:(r,i,s)=>{"use strict";const{promisify:a}=s(73837);const l=s(95223);const{buildMockDispatch:c}=s(18736);const{kDispatches:d,kMockAgent:p,kClose:A,kOriginalClose:u,kOrigin:h,kOriginalDispatch:g,kConnected:y}=s(35858);const{MockInterceptor:b}=s(32922);const C=s(22405);const{InvalidArgumentError:B}=s(95594);class MockPool extends l{constructor(r,i){super(r,i);if(!i||!i.agent||typeof i.agent.dispatch!=="function"){throw new B("Argument opts.agent must implement Agent")}this[p]=i.agent;this[h]=r;this[d]=[];this[y]=1;this[g]=this.dispatch;this[u]=this.close.bind(this);this.dispatch=c.call(this);this.close=this[A]}get[C.kConnected](){return this[y]}intercept(r){return new b(r,this[d])}async[A](){await a(this[u])();this[y]=0;this[p][C.kClients].delete(this[h])}}r.exports=MockPool},35858:r=>{"use strict";r.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}},18736:(r,i,s)=>{"use strict";const{MockNotMatchedError:a}=s(88609);const{kDispatches:l,kMockAgent:c,kOriginalDispatch:d,kOrigin:p,kGetNetConnect:A}=s(35858);const{buildURL:u,nop:h}=s(85310);const{STATUS_CODES:g}=s(13685);const{types:{isPromise:y}}=s(73837);function matchValue(r,i){if(typeof r==="string"){return r===i}if(r instanceof RegExp){return r.test(i)}if(typeof r==="function"){return r(i)===true}return false}function lowerCaseEntries(r){return Object.fromEntries(Object.entries(r).map((([r,i])=>[r.toLocaleLowerCase(),i])))}function getHeaderByName(r,i){if(Array.isArray(r)){for(let s=0;s!r)).filter((({path:r})=>matchValue(safeUrl(r),l)));if(c.length===0){throw new a(`Mock dispatch not matched for path '${l}'`)}c=c.filter((({method:r})=>matchValue(r,i.method)));if(c.length===0){throw new a(`Mock dispatch not matched for method '${i.method}'`)}c=c.filter((({body:r})=>typeof r!=="undefined"?matchValue(r,i.body):true));if(c.length===0){throw new a(`Mock dispatch not matched for body '${i.body}'`)}c=c.filter((r=>matchHeaders(r,i.headers)));if(c.length===0){throw new a(`Mock dispatch not matched for headers '${typeof i.headers==="object"?JSON.stringify(i.headers):i.headers}'`)}return c[0]}function addMockDispatch(r,i,s){const a={timesInvoked:0,times:1,persist:false,consumed:false};const l=typeof s==="function"?{callback:s}:{...s};const c={...a,...i,pending:true,data:{error:null,...l}};r.push(c);return c}function deleteMockDispatch(r,i){const s=r.findIndex((r=>{if(!r.consumed){return false}return matchKey(r,i)}));if(s!==-1){r.splice(s,1)}}function buildKey(r){const{path:i,method:s,body:a,headers:l,query:c}=r;return{path:i,method:s,body:a,headers:l,query:c}}function generateKeyValues(r){return Object.entries(r).reduce(((r,[i,s])=>[...r,Buffer.from(`${i}`),Array.isArray(s)?s.map((r=>Buffer.from(`${r}`))):Buffer.from(`${s}`)]),[])}function getStatusText(r){return g[r]||"unknown"}async function getResponse(r){const i=[];for await(const s of r){i.push(s)}return Buffer.concat(i).toString("utf8")}function mockDispatch(r,i){const s=buildKey(r);const a=getMockDispatch(this[l],s);a.timesInvoked++;if(a.data.callback){a.data={...a.data,...a.data.callback(r)}}const{data:{statusCode:c,data:d,headers:p,trailers:A,error:u},delay:g,persist:b}=a;const{timesInvoked:C,times:B}=a;a.consumed=!b&&C>=B;a.pending=C0){setTimeout((()=>{handleReply(this[l])}),g)}else{handleReply(this[l])}function handleReply(a,l=d){const u=Array.isArray(r.headers)?buildHeadersFromArray(r.headers):r.headers;const g=typeof l==="function"?l({...r,headers:u}):l;if(y(g)){g.then((r=>handleReply(a,r)));return}const b=getResponseData(g);const C=generateKeyValues(p);const B=generateKeyValues(A);i.abort=h;i.onHeaders(c,C,resume,getStatusText(c));i.onData(Buffer.from(b));i.onComplete(B);deleteMockDispatch(a,s)}function resume(){}return true}function buildMockDispatch(){const r=this[c];const i=this[p];const s=this[d];return function dispatch(l,c){if(r.isMockActive){try{mockDispatch.call(this,l,c)}catch(d){if(d instanceof a){const p=r[A]();if(p===false){throw new a(`${d.message}: subsequent request to origin ${i} was not allowed (net.connect disabled)`)}if(checkNetConnect(p,i)){s.call(this,l,c)}else{throw new a(`${d.message}: subsequent request to origin ${i} was not allowed (net.connect is not enabled for this origin)`)}}else{throw d}}}else{s.call(this,l,c)}}}function checkNetConnect(r,i){const s=new URL(i);if(r===true){return true}else if(Array.isArray(r)&&r.some((r=>matchValue(r,s.host)))){return true}return false}function buildMockOptions(r){if(r){const{agent:i,...s}=r;return s}}r.exports={getResponseData:getResponseData,getMockDispatch:getMockDispatch,addMockDispatch:addMockDispatch,deleteMockDispatch:deleteMockDispatch,buildKey:buildKey,generateKeyValues:generateKeyValues,matchValue:matchValue,getResponse:getResponse,getStatusText:getStatusText,mockDispatch:mockDispatch,buildMockDispatch:buildMockDispatch,checkNetConnect:checkNetConnect,buildMockOptions:buildMockOptions,getHeaderByName:getHeaderByName}},72890:(r,i,s)=>{"use strict";const{Transform:a}=s(12781);const{Console:l}=s(96206);r.exports=class PendingInterceptorsFormatter{constructor({disableColors:r}={}){this.transform=new a({transform(r,i,s){s(null,r)}});this.logger=new l({stdout:this.transform,inspectOptions:{colors:!r&&!process.env.CI}})}format(r){const i=r.map((({method:r,path:i,data:{statusCode:s},persist:a,times:l,timesInvoked:c,origin:d})=>({Method:r,Origin:d,Path:i,"Status code":s,Persistent:a?"✅":"❌",Invocations:c,Remaining:a?Infinity:l-c})));this.logger.table(i);return this.transform.read().toString()}}},32692:r=>{"use strict";const i={pronoun:"it",is:"is",was:"was",this:"this"};const s={pronoun:"they",is:"are",was:"were",this:"these"};r.exports=class Pluralizer{constructor(r,i){this.singular=r;this.plural=i}pluralize(r){const a=r===1;const l=a?i:s;const c=a?this.singular:this.plural;return{...l,count:r,noun:c}}}},9775:r=>{"use strict";const i=2048;const s=i-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(i);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&s)===this.bottom}push(r){this.list[this.top]=r;this.top=this.top+1&s}shift(){const r=this.list[this.bottom];if(r===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&s;return r}}r.exports=class FixedQueue{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(r){if(this.head.isFull()){this.head=this.head.next=new FixedCircularBuffer}this.head.push(r)}shift(){const r=this.tail;const i=r.shift();if(r.isEmpty()&&r.next!==null){this.tail=r.next}return i}}},76772:(r,i,s)=>{"use strict";const a=s(3522);const l=s(9775);const{kConnected:c,kSize:d,kRunning:p,kPending:A,kQueued:u,kBusy:h,kFree:g,kUrl:y,kClose:b,kDestroy:C,kDispatch:B}=s(22405);const I=s(97279);const w=Symbol("clients");const v=Symbol("needDrain");const S=Symbol("queue");const Q=Symbol("closed resolve");const N=Symbol("onDrain");const R=Symbol("onConnect");const k=Symbol("onDisconnect");const T=Symbol("onConnectionError");const _=Symbol("get dispatcher");const x=Symbol("add client");const D=Symbol("remove client");const P=Symbol("stats");class PoolBase extends a{constructor(){super();this[S]=new l;this[w]=[];this[u]=0;const r=this;this[N]=function onDrain(i,s){const a=r[S];let l=false;while(!l){const i=a.shift();if(!i){break}r[u]--;l=!this.dispatch(i.opts,i.handler)}this[v]=l;if(!this[v]&&r[v]){r[v]=false;r.emit("drain",i,[r,...s])}if(r[Q]&&a.isEmpty()){Promise.all(r[w].map((r=>r.close()))).then(r[Q])}};this[R]=(i,s)=>{r.emit("connect",i,[r,...s])};this[k]=(i,s,a)=>{r.emit("disconnect",i,[r,...s],a)};this[T]=(i,s,a)=>{r.emit("connectionError",i,[r,...s],a)};this[P]=new I(this)}get[h](){return this[v]}get[c](){return this[w].filter((r=>r[c])).length}get[g](){return this[w].filter((r=>r[c]&&!r[v])).length}get[A](){let r=this[u];for(const{[A]:i}of this[w]){r+=i}return r}get[p](){let r=0;for(const{[p]:i}of this[w]){r+=i}return r}get[d](){let r=this[u];for(const{[d]:i}of this[w]){r+=i}return r}get stats(){return this[P]}async[b](){if(this[S].isEmpty()){return Promise.all(this[w].map((r=>r.close())))}else{return new Promise((r=>{this[Q]=r}))}}async[C](r){while(true){const i=this[S].shift();if(!i){break}i.handler.onError(r)}return Promise.all(this[w].map((i=>i.destroy(r))))}[B](r,i){const s=this[_]();if(!s){this[v]=true;this[S].push({opts:r,handler:i});this[u]++}else if(!s.dispatch(r,i)){s[v]=true;this[v]=!this[_]()}return!this[v]}[x](r){r.on("drain",this[N]).on("connect",this[R]).on("disconnect",this[k]).on("connectionError",this[T]);this[w].push(r);if(this[v]){process.nextTick((()=>{if(this[v]){this[N](r[y],[this,r])}}))}return this}[D](r){r.close((()=>{const i=this[w].indexOf(r);if(i!==-1){this[w].splice(i,1)}}));this[v]=this[w].some((r=>!r[v]&&r.closed!==true&&r.destroyed!==true))}}r.exports={PoolBase:PoolBase,kClients:w,kNeedDrain:v,kAddClient:x,kRemoveClient:D,kGetDispatcher:_}},97279:(r,i,s)=>{const{kFree:a,kConnected:l,kPending:c,kQueued:d,kRunning:p,kSize:A}=s(22405);const u=Symbol("pool");class PoolStats{constructor(r){this[u]=r}get connected(){return this[u][l]}get free(){return this[u][a]}get pending(){return this[u][c]}get queued(){return this[u][d]}get running(){return this[u][p]}get size(){return this[u][A]}}r.exports=PoolStats},95223:(r,i,s)=>{"use strict";const{PoolBase:a,kClients:l,kNeedDrain:c,kAddClient:d,kGetDispatcher:p}=s(76772);const A=s(37451);const{InvalidArgumentError:u}=s(95594);const h=s(85310);const{kUrl:g,kInterceptors:y}=s(22405);const b=s(43224);const C=Symbol("options");const B=Symbol("connections");const I=Symbol("factory");function defaultFactory(r,i){return new A(r,i)}class Pool extends a{constructor(r,{connections:i,factory:s=defaultFactory,connect:a,connectTimeout:l,tls:c,maxCachedSessions:d,socketPath:p,autoSelectFamily:A,autoSelectFamilyAttemptTimeout:w,allowH2:v,...S}={}){super();if(i!=null&&(!Number.isFinite(i)||i<0)){throw new u("invalid connections")}if(typeof s!=="function"){throw new u("factory must be a function.")}if(a!=null&&typeof a!=="function"&&typeof a!=="object"){throw new u("connect must be a function or an object")}if(typeof a!=="function"){a=b({...c,maxCachedSessions:d,allowH2:v,socketPath:p,timeout:l,...h.nodeHasAutoSelectFamily&&A?{autoSelectFamily:A,autoSelectFamilyAttemptTimeout:w}:undefined,...a})}this[y]=S.interceptors&&S.interceptors.Pool&&Array.isArray(S.interceptors.Pool)?S.interceptors.Pool:[];this[B]=i||null;this[g]=h.parseOrigin(r);this[C]={...h.deepClone(S),connect:a,allowH2:v};this[C].interceptors=S.interceptors?{...S.interceptors}:undefined;this[I]=s}[p](){let r=this[l].find((r=>!r[c]));if(r){return r}if(!this[B]||this[l].length{"use strict";const{kProxy:a,kClose:l,kDestroy:c,kInterceptors:d}=s(22405);const{URL:p}=s(57310);const A=s(80706);const u=s(95223);const h=s(3522);const{InvalidArgumentError:g,RequestAbortedError:y}=s(95594);const b=s(43224);const C=Symbol("proxy agent");const B=Symbol("proxy client");const I=Symbol("proxy headers");const w=Symbol("request tls settings");const v=Symbol("proxy tls settings");const S=Symbol("connect endpoint function");function defaultProtocolPort(r){return r==="https:"?443:80}function buildProxyOptions(r){if(typeof r==="string"){r={uri:r}}if(!r||!r.uri){throw new g("Proxy opts.uri is mandatory")}return{uri:r.uri,protocol:r.protocol||"https"}}function defaultFactory(r,i){return new u(r,i)}class ProxyAgent extends h{constructor(r){super(r);this[a]=buildProxyOptions(r);this[C]=new A(r);this[d]=r.interceptors&&r.interceptors.ProxyAgent&&Array.isArray(r.interceptors.ProxyAgent)?r.interceptors.ProxyAgent:[];if(typeof r==="string"){r={uri:r}}if(!r||!r.uri){throw new g("Proxy opts.uri is mandatory")}const{clientFactory:i=defaultFactory}=r;if(typeof i!=="function"){throw new g("Proxy opts.clientFactory must be a function.")}this[w]=r.requestTls;this[v]=r.proxyTls;this[I]=r.headers||{};const s=new p(r.uri);const{origin:l,port:c,host:u,username:h,password:Q}=s;if(r.auth&&r.token){throw new g("opts.auth cannot be used in combination with opts.token")}else if(r.auth){this[I]["proxy-authorization"]=`Basic ${r.auth}`}else if(r.token){this[I]["proxy-authorization"]=r.token}else if(h&&Q){this[I]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(h)}:${decodeURIComponent(Q)}`).toString("base64")}`}const N=b({...r.proxyTls});this[S]=b({...r.requestTls});this[B]=i(s,{connect:N});this[C]=new A({...r,connect:async(r,i)=>{let s=r.host;if(!r.port){s+=`:${defaultProtocolPort(r.protocol)}`}try{const{socket:a,statusCode:d}=await this[B].connect({origin:l,port:c,path:s,signal:r.signal,headers:{...this[I],host:u}});if(d!==200){a.on("error",(()=>{})).destroy();i(new y(`Proxy response (${d}) !== 200 when HTTP Tunneling`))}if(r.protocol!=="https:"){i(null,a);return}let p;if(this[w]){p=this[w].servername}else{p=r.servername}this[S]({...r,servername:p,httpSocket:a},i)}catch(r){i(r)}}})}dispatch(r,i){const{host:s}=new p(r.origin);const a=buildHeaders(r.headers);throwIfProxyAuthIsSent(a);return this[C].dispatch({...r,headers:{...a,host:s}},i)}async[l](){await this[C].close();await this[B].close()}async[c](){await this[C].destroy();await this[B].destroy()}}function buildHeaders(r){if(Array.isArray(r)){const i={};for(let s=0;sr.toLowerCase()==="proxy-authorization"));if(i){throw new g("Proxy-Authorization should be sent in ProxyAgent constructor")}}r.exports=ProxyAgent},95914:r=>{"use strict";let i=Date.now();let s;const a=[];function onTimeout(){i=Date.now();let r=a.length;let s=0;while(s0&&i>=l.state){l.state=-1;l.callback(l.opaque)}if(l.state===-1){l.state=-2;if(s!==r-1){a[s]=a.pop()}else{a.pop()}r-=1}else{s+=1}}if(a.length>0){refreshTimeout()}}function refreshTimeout(){if(s&&s.refresh){s.refresh()}else{clearTimeout(s);s=setTimeout(onTimeout,1e3);if(s.unref){s.unref()}}}class Timeout{constructor(r,i,s){this.callback=r;this.delay=i;this.opaque=s;this.state=-2;this.refresh()}refresh(){if(this.state===-2){a.push(this);if(!s||a.length===1){refreshTimeout()}}this.state=0}clear(){this.state=-1}}r.exports={setTimeout(r,i,s){return i<1e3?setTimeout(r,i,s):new Timeout(r,i,s)},clearTimeout(r){if(r instanceof Timeout){r.clear()}else{clearTimeout(r)}}}},12415:(r,i,s)=>{"use strict";const a=s(67643);const{uid:l,states:c}=s(82282);const{kReadyState:d,kSentClose:p,kByteParser:A,kReceivedClose:u}=s(98856);const{fireEvent:h,failWebsocketConnection:g}=s(13439);const{CloseEvent:y}=s(46090);const{makeRequest:b}=s(87911);const{fetching:C}=s(82564);const{Headers:B}=s(77613);const{getGlobalDispatcher:I}=s(40598);const{kHeadersList:w}=s(22405);const v={};v.open=a.channel("undici:websocket:open");v.close=a.channel("undici:websocket:close");v.socketError=a.channel("undici:websocket:socket_error");let S;try{S=s(6113)}catch{}function establishWebSocketConnection(r,i,s,a,c){const d=r;d.protocol=r.protocol==="ws:"?"http:":"https:";const p=b({urlList:[d],serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(c.headers){const r=new B(c.headers)[w];p.headersList=r}const A=S.randomBytes(16).toString("base64");p.headersList.append("sec-websocket-key",A);p.headersList.append("sec-websocket-version","13");for(const r of i){p.headersList.append("sec-websocket-protocol",r)}const u="";const h=C({request:p,useParallelQueue:true,dispatcher:c.dispatcher??I(),processResponse(r){if(r.type==="error"||r.status!==101){g(s,"Received network error or non-101 status code.");return}if(i.length!==0&&!r.headersList.get("Sec-WebSocket-Protocol")){g(s,"Server did not respond with sent protocols.");return}if(r.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){g(s,'Server did not set Upgrade header to "websocket".');return}if(r.headersList.get("Connection")?.toLowerCase()!=="upgrade"){g(s,'Server did not set Connection header to "upgrade".');return}const c=r.headersList.get("Sec-WebSocket-Accept");const d=S.createHash("sha1").update(A+l).digest("base64");if(c!==d){g(s,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const h=r.headersList.get("Sec-WebSocket-Extensions");if(h!==null&&h!==u){g(s,"Received different permessage-deflate than the one set.");return}const y=r.headersList.get("Sec-WebSocket-Protocol");if(y!==null&&y!==p.headersList.get("Sec-WebSocket-Protocol")){g(s,"Protocol was not set in the opening handshake.");return}r.socket.on("data",onSocketData);r.socket.on("close",onSocketClose);r.socket.on("error",onSocketError);if(v.open.hasSubscribers){v.open.publish({address:r.socket.address(),protocol:y,extensions:h})}a(r)}});return h}function onSocketData(r){if(!this.ws[A].write(r)){this.pause()}}function onSocketClose(){const{ws:r}=this;const i=r[p]&&r[u];let s=1005;let a="";const l=r[A].closingInfo;if(l){s=l.code??1005;a=l.reason}else if(!r[p]){s=1006}r[d]=c.CLOSED;h("close",r,y,{wasClean:i,code:s,reason:a});if(v.close.hasSubscribers){v.close.publish({websocket:r,code:s,reason:a})}}function onSocketError(r){const{ws:i}=this;i[d]=c.CLOSING;if(v.socketError.hasSubscribers){v.socketError.publish(r)}this.destroy()}r.exports={establishWebSocketConnection:establishWebSocketConnection}},82282:r=>{"use strict";const i="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const s={enumerable:true,writable:false,configurable:false};const a={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const l={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const c=2**16-1;const d={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const p=Buffer.allocUnsafe(0);r.exports={uid:i,staticPropertyDescriptors:s,states:a,opcodes:l,maxUnsigned16Bit:c,parserStates:d,emptyBuffer:p}},46090:(r,i,s)=>{"use strict";const{webidl:a}=s(54150);const{kEnumerableProperty:l}=s(85310);const{MessagePort:c}=s(71267);class MessageEvent extends Event{#s;constructor(r,i={}){a.argumentLengthCheck(arguments,1,{header:"MessageEvent constructor"});r=a.converters.DOMString(r);i=a.converters.MessageEventInit(i);super(r,i);this.#s=i}get data(){a.brandCheck(this,MessageEvent);return this.#s.data}get origin(){a.brandCheck(this,MessageEvent);return this.#s.origin}get lastEventId(){a.brandCheck(this,MessageEvent);return this.#s.lastEventId}get source(){a.brandCheck(this,MessageEvent);return this.#s.source}get ports(){a.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#s.ports)){Object.freeze(this.#s.ports)}return this.#s.ports}initMessageEvent(r,i=false,s=false,l=null,c="",d="",p=null,A=[]){a.brandCheck(this,MessageEvent);a.argumentLengthCheck(arguments,1,{header:"MessageEvent.initMessageEvent"});return new MessageEvent(r,{bubbles:i,cancelable:s,data:l,origin:c,lastEventId:d,source:p,ports:A})}}class CloseEvent extends Event{#s;constructor(r,i={}){a.argumentLengthCheck(arguments,1,{header:"CloseEvent constructor"});r=a.converters.DOMString(r);i=a.converters.CloseEventInit(i);super(r,i);this.#s=i}get wasClean(){a.brandCheck(this,CloseEvent);return this.#s.wasClean}get code(){a.brandCheck(this,CloseEvent);return this.#s.code}get reason(){a.brandCheck(this,CloseEvent);return this.#s.reason}}class ErrorEvent extends Event{#s;constructor(r,i){a.argumentLengthCheck(arguments,1,{header:"ErrorEvent constructor"});super(r,i);r=a.converters.DOMString(r);i=a.converters.ErrorEventInit(i??{});this.#s=i}get message(){a.brandCheck(this,ErrorEvent);return this.#s.message}get filename(){a.brandCheck(this,ErrorEvent);return this.#s.filename}get lineno(){a.brandCheck(this,ErrorEvent);return this.#s.lineno}get colno(){a.brandCheck(this,ErrorEvent);return this.#s.colno}get error(){a.brandCheck(this,ErrorEvent);return this.#s.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:l,origin:l,lastEventId:l,source:l,ports:l,initMessageEvent:l});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:l,code:l,wasClean:l});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:l,filename:l,lineno:l,colno:l,error:l});a.converters.MessagePort=a.interfaceConverter(c);a.converters["sequence"]=a.sequenceConverter(a.converters.MessagePort);const d=[{key:"bubbles",converter:a.converters.boolean,defaultValue:false},{key:"cancelable",converter:a.converters.boolean,defaultValue:false},{key:"composed",converter:a.converters.boolean,defaultValue:false}];a.converters.MessageEventInit=a.dictionaryConverter([...d,{key:"data",converter:a.converters.any,defaultValue:null},{key:"origin",converter:a.converters.USVString,defaultValue:""},{key:"lastEventId",converter:a.converters.DOMString,defaultValue:""},{key:"source",converter:a.nullableConverter(a.converters.MessagePort),defaultValue:null},{key:"ports",converter:a.converters["sequence"],get defaultValue(){return[]}}]);a.converters.CloseEventInit=a.dictionaryConverter([...d,{key:"wasClean",converter:a.converters.boolean,defaultValue:false},{key:"code",converter:a.converters["unsigned short"],defaultValue:0},{key:"reason",converter:a.converters.USVString,defaultValue:""}]);a.converters.ErrorEventInit=a.dictionaryConverter([...d,{key:"message",converter:a.converters.DOMString,defaultValue:""},{key:"filename",converter:a.converters.USVString,defaultValue:""},{key:"lineno",converter:a.converters["unsigned long"],defaultValue:0},{key:"colno",converter:a.converters["unsigned long"],defaultValue:0},{key:"error",converter:a.converters.any}]);r.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent}},62011:(r,i,s)=>{"use strict";const{maxUnsigned16Bit:a}=s(82282);let l;try{l=s(6113)}catch{}class WebsocketFrameSend{constructor(r){this.frameData=r;this.maskKey=l.randomBytes(4)}createFrame(r){const i=this.frameData?.byteLength??0;let s=i;let l=6;if(i>a){l+=8;s=127}else if(i>125){l+=2;s=126}const c=Buffer.allocUnsafe(i+l);c[0]=c[1]=0;c[0]|=128;c[0]=(c[0]&240)+r; -/*! ws. MIT License. Einar Otto Stangvik */c[l-4]=this.maskKey[0];c[l-3]=this.maskKey[1];c[l-2]=this.maskKey[2];c[l-1]=this.maskKey[3];c[1]=s;if(s===126){c.writeUInt16BE(i,2)}else if(s===127){c[2]=c[3]=0;c.writeUIntBE(i,4,6)}c[1]|=128;for(let r=0;r{"use strict";const{Writable:a}=s(12781);const l=s(67643);const{parserStates:c,opcodes:d,states:p,emptyBuffer:A}=s(82282);const{kReadyState:u,kSentClose:h,kResponse:g,kReceivedClose:y}=s(98856);const{isValidStatusCode:b,failWebsocketConnection:C,websocketMessageReceived:B}=s(13439);const{WebsocketFrameSend:I}=s(62011);const w={};w.ping=l.channel("undici:websocket:ping");w.pong=l.channel("undici:websocket:pong");class ByteParser extends a{#a=[];#o=0;#l=c.INFO;#c={};#d=[];constructor(r){super();this.ws=r}_write(r,i,s){this.#a.push(r);this.#o+=r.length;this.run(s)}run(r){while(true){if(this.#l===c.INFO){if(this.#o<2){return r()}const i=this.consume(2);this.#c.fin=(i[0]&128)!==0;this.#c.opcode=i[0]&15;this.#c.originalOpcode??=this.#c.opcode;this.#c.fragmented=!this.#c.fin&&this.#c.opcode!==d.CONTINUATION;if(this.#c.fragmented&&this.#c.opcode!==d.BINARY&&this.#c.opcode!==d.TEXT){C(this.ws,"Invalid frame type was fragmented.");return}const s=i[1]&127;if(s<=125){this.#c.payloadLength=s;this.#l=c.READ_DATA}else if(s===126){this.#l=c.PAYLOADLENGTH_16}else if(s===127){this.#l=c.PAYLOADLENGTH_64}if(this.#c.fragmented&&s>125){C(this.ws,"Fragmented frame exceeded 125 bytes.");return}else if((this.#c.opcode===d.PING||this.#c.opcode===d.PONG||this.#c.opcode===d.CLOSE)&&s>125){C(this.ws,"Payload length for control frame exceeded 125 bytes.");return}else if(this.#c.opcode===d.CLOSE){if(s===1){C(this.ws,"Received close frame with a 1-byte body.");return}const r=this.consume(s);this.#c.closeInfo=this.parseCloseBody(false,r);if(!this.ws[h]){const r=Buffer.allocUnsafe(2);r.writeUInt16BE(this.#c.closeInfo.code,0);const i=new I(r);this.ws[g].socket.write(i.createFrame(d.CLOSE),(r=>{if(!r){this.ws[h]=true}}))}this.ws[u]=p.CLOSING;this.ws[y]=true;this.end();return}else if(this.#c.opcode===d.PING){const i=this.consume(s);if(!this.ws[y]){const r=new I(i);this.ws[g].socket.write(r.createFrame(d.PONG));if(w.ping.hasSubscribers){w.ping.publish({payload:i})}}this.#l=c.INFO;if(this.#o>0){continue}else{r();return}}else if(this.#c.opcode===d.PONG){const i=this.consume(s);if(w.pong.hasSubscribers){w.pong.publish({payload:i})}if(this.#o>0){continue}else{r();return}}}else if(this.#l===c.PAYLOADLENGTH_16){if(this.#o<2){return r()}const i=this.consume(2);this.#c.payloadLength=i.readUInt16BE(0);this.#l=c.READ_DATA}else if(this.#l===c.PAYLOADLENGTH_64){if(this.#o<8){return r()}const i=this.consume(8);const s=i.readUInt32BE(0);if(s>2**31-1){C(this.ws,"Received payload length > 2^31 bytes.");return}const a=i.readUInt32BE(4);this.#c.payloadLength=(s<<8)+a;this.#l=c.READ_DATA}else if(this.#l===c.READ_DATA){if(this.#o=this.#c.payloadLength){const r=this.consume(this.#c.payloadLength);this.#d.push(r);if(!this.#c.fragmented||this.#c.fin&&this.#c.opcode===d.CONTINUATION){const r=Buffer.concat(this.#d);B(this.ws,this.#c.originalOpcode,r);this.#c={};this.#d.length=0}this.#l=c.INFO}}if(this.#o>0){continue}else{r();break}}}consume(r){if(r>this.#o){return null}else if(r===0){return A}if(this.#a[0].length===r){this.#o-=this.#a[0].length;return this.#a.shift()}const i=Buffer.allocUnsafe(r);let s=0;while(s!==r){const a=this.#a[0];const{length:l}=a;if(l+s===r){i.set(this.#a.shift(),s);break}else if(l+s>r){i.set(a.subarray(0,r-s),s);this.#a[0]=a.subarray(r-s);break}else{i.set(this.#a.shift(),s);s+=a.length}}this.#o-=r;return i}parseCloseBody(r,i){let s;if(i.length>=2){s=i.readUInt16BE(0)}if(r){if(!b(s)){return null}return{code:s}}let a=i.subarray(2);if(a[0]===239&&a[1]===187&&a[2]===191){a=a.subarray(3)}if(s!==undefined&&!b(s)){return null}try{a=new TextDecoder("utf-8",{fatal:true}).decode(a)}catch{return null}return{code:s,reason:a}}get closingInfo(){return this.#c.closeInfo}}r.exports={ByteParser:ByteParser}},98856:r=>{"use strict";r.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},13439:(r,i,s)=>{"use strict";const{kReadyState:a,kController:l,kResponse:c,kBinaryType:d,kWebSocketURL:p}=s(98856);const{states:A,opcodes:u}=s(82282);const{MessageEvent:h,ErrorEvent:g}=s(46090);function isEstablished(r){return r[a]===A.OPEN}function isClosing(r){return r[a]===A.CLOSING}function isClosed(r){return r[a]===A.CLOSED}function fireEvent(r,i,s=Event,a){const l=new s(r,a);i.dispatchEvent(l)}function websocketMessageReceived(r,i,s){if(r[a]!==A.OPEN){return}let l;if(i===u.TEXT){try{l=new TextDecoder("utf-8",{fatal:true}).decode(s)}catch{failWebsocketConnection(r,"Received invalid UTF-8 in text frame.");return}}else if(i===u.BINARY){if(r[d]==="blob"){l=new Blob([s])}else{l=new Uint8Array(s).buffer}}fireEvent("message",r,h,{origin:r[p].origin,data:l})}function isValidSubprotocol(r){if(r.length===0){return false}for(const i of r){const r=i.charCodeAt(0);if(r<33||r>126||i==="("||i===")"||i==="<"||i===">"||i==="@"||i===","||i===";"||i===":"||i==="\\"||i==='"'||i==="/"||i==="["||i==="]"||i==="?"||i==="="||i==="{"||i==="}"||r===32||r===9){return false}}return true}function isValidStatusCode(r){if(r>=1e3&&r<1015){return r!==1004&&r!==1005&&r!==1006}return r>=3e3&&r<=4999}function failWebsocketConnection(r,i){const{[l]:s,[c]:a}=r;s.abort();if(a?.socket&&!a.socket.destroyed){a.socket.destroy()}if(i){fireEvent("error",r,g,{error:new Error(i)})}}r.exports={isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived}},83257:(r,i,s)=>{"use strict";const{webidl:a}=s(54150);const{DOMException:l}=s(11753);const{URLSerializer:c}=s(3464);const{getGlobalOrigin:d}=s(51227);const{staticPropertyDescriptors:p,states:A,opcodes:u,emptyBuffer:h}=s(82282);const{kWebSocketURL:g,kReadyState:y,kController:b,kBinaryType:C,kResponse:B,kSentClose:I,kByteParser:w}=s(98856);const{isEstablished:v,isClosing:S,isValidSubprotocol:Q,failWebsocketConnection:N,fireEvent:R}=s(13439);const{establishWebSocketConnection:k}=s(12415);const{WebsocketFrameSend:T}=s(62011);const{ByteParser:_}=s(50497);const{kEnumerableProperty:x,isBlobLike:D}=s(85310);const{getGlobalDispatcher:P}=s(40598);const{types:O}=s(73837);let L=false;class WebSocket extends EventTarget{#p={open:null,error:null,close:null,message:null};#A=0;#u="";#f="";constructor(r,i=[]){super();a.argumentLengthCheck(arguments,1,{header:"WebSocket constructor"});if(!L){L=true;process.emitWarning("WebSockets are experimental, expect them to change at any time.",{code:"UNDICI-WS"})}const s=a.converters["DOMString or sequence or WebSocketInit"](i);r=a.converters.USVString(r);i=s.protocols;const c=d();let p;try{p=new URL(r,c)}catch(r){throw new l(r,"SyntaxError")}if(p.protocol==="http:"){p.protocol="ws:"}else if(p.protocol==="https:"){p.protocol="wss:"}if(p.protocol!=="ws:"&&p.protocol!=="wss:"){throw new l(`Expected a ws: or wss: protocol, got ${p.protocol}`,"SyntaxError")}if(p.hash||p.href.endsWith("#")){throw new l("Got fragment","SyntaxError")}if(typeof i==="string"){i=[i]}if(i.length!==new Set(i.map((r=>r.toLowerCase()))).size){throw new l("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(i.length>0&&!i.every((r=>Q(r)))){throw new l("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[g]=new URL(p.href);this[b]=k(p,i,this,(r=>this.#h(r)),s);this[y]=WebSocket.CONNECTING;this[C]="blob"}close(r=undefined,i=undefined){a.brandCheck(this,WebSocket);if(r!==undefined){r=a.converters["unsigned short"](r,{clamp:true})}if(i!==undefined){i=a.converters.USVString(i)}if(r!==undefined){if(r!==1e3&&(r<3e3||r>4999)){throw new l("invalid code","InvalidAccessError")}}let s=0;if(i!==undefined){s=Buffer.byteLength(i);if(s>123){throw new l(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}if(this[y]===WebSocket.CLOSING||this[y]===WebSocket.CLOSED){}else if(!v(this)){N(this,"Connection was closed before it was established.");this[y]=WebSocket.CLOSING}else if(!S(this)){const a=new T;if(r!==undefined&&i===undefined){a.frameData=Buffer.allocUnsafe(2);a.frameData.writeUInt16BE(r,0)}else if(r!==undefined&&i!==undefined){a.frameData=Buffer.allocUnsafe(2+s);a.frameData.writeUInt16BE(r,0);a.frameData.write(i,2,"utf-8")}else{a.frameData=h}const l=this[B].socket;l.write(a.createFrame(u.CLOSE),(r=>{if(!r){this[I]=true}}));this[y]=A.CLOSING}else{this[y]=WebSocket.CLOSING}}send(r){a.brandCheck(this,WebSocket);a.argumentLengthCheck(arguments,1,{header:"WebSocket.send"});r=a.converters.WebSocketSendData(r);if(this[y]===WebSocket.CONNECTING){throw new l("Sent before connected.","InvalidStateError")}if(!v(this)||S(this)){return}const i=this[B].socket;if(typeof r==="string"){const s=Buffer.from(r);const a=new T(s);const l=a.createFrame(u.TEXT);this.#A+=s.byteLength;i.write(l,(()=>{this.#A-=s.byteLength}))}else if(O.isArrayBuffer(r)){const s=Buffer.from(r);const a=new T(s);const l=a.createFrame(u.BINARY);this.#A+=s.byteLength;i.write(l,(()=>{this.#A-=s.byteLength}))}else if(ArrayBuffer.isView(r)){const s=Buffer.from(r,r.byteOffset,r.byteLength);const a=new T(s);const l=a.createFrame(u.BINARY);this.#A+=s.byteLength;i.write(l,(()=>{this.#A-=s.byteLength}))}else if(D(r)){const s=new T;r.arrayBuffer().then((r=>{const a=Buffer.from(r);s.frameData=a;const l=s.createFrame(u.BINARY);this.#A+=a.byteLength;i.write(l,(()=>{this.#A-=a.byteLength}))}))}}get readyState(){a.brandCheck(this,WebSocket);return this[y]}get bufferedAmount(){a.brandCheck(this,WebSocket);return this.#A}get url(){a.brandCheck(this,WebSocket);return c(this[g])}get extensions(){a.brandCheck(this,WebSocket);return this.#f}get protocol(){a.brandCheck(this,WebSocket);return this.#u}get onopen(){a.brandCheck(this,WebSocket);return this.#p.open}set onopen(r){a.brandCheck(this,WebSocket);if(this.#p.open){this.removeEventListener("open",this.#p.open)}if(typeof r==="function"){this.#p.open=r;this.addEventListener("open",r)}else{this.#p.open=null}}get onerror(){a.brandCheck(this,WebSocket);return this.#p.error}set onerror(r){a.brandCheck(this,WebSocket);if(this.#p.error){this.removeEventListener("error",this.#p.error)}if(typeof r==="function"){this.#p.error=r;this.addEventListener("error",r)}else{this.#p.error=null}}get onclose(){a.brandCheck(this,WebSocket);return this.#p.close}set onclose(r){a.brandCheck(this,WebSocket);if(this.#p.close){this.removeEventListener("close",this.#p.close)}if(typeof r==="function"){this.#p.close=r;this.addEventListener("close",r)}else{this.#p.close=null}}get onmessage(){a.brandCheck(this,WebSocket);return this.#p.message}set onmessage(r){a.brandCheck(this,WebSocket);if(this.#p.message){this.removeEventListener("message",this.#p.message)}if(typeof r==="function"){this.#p.message=r;this.addEventListener("message",r)}else{this.#p.message=null}}get binaryType(){a.brandCheck(this,WebSocket);return this[C]}set binaryType(r){a.brandCheck(this,WebSocket);if(r!=="blob"&&r!=="arraybuffer"){this[C]="blob"}else{this[C]=r}}#h(r){this[B]=r;const i=new _(this);i.on("drain",(function onParserDrain(){this.ws[B].socket.resume()}));r.socket.ws=this;this[w]=i;this[y]=A.OPEN;const s=r.headersList.get("sec-websocket-extensions");if(s!==null){this.#f=s}const a=r.headersList.get("sec-websocket-protocol");if(a!==null){this.#u=a}R("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=A.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=A.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=A.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=A.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:p,OPEN:p,CLOSING:p,CLOSED:p,url:x,readyState:x,bufferedAmount:x,onopen:x,onerror:x,onclose:x,close:x,onmessage:x,binaryType:x,send:x,extensions:x,protocol:x,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:p,OPEN:p,CLOSING:p,CLOSED:p});a.converters["sequence"]=a.sequenceConverter(a.converters.DOMString);a.converters["DOMString or sequence"]=function(r){if(a.util.Type(r)==="Object"&&Symbol.iterator in r){return a.converters["sequence"](r)}return a.converters.DOMString(r)};a.converters.WebSocketInit=a.dictionaryConverter([{key:"protocols",converter:a.converters["DOMString or sequence"],get defaultValue(){return[]}},{key:"dispatcher",converter:r=>r,get defaultValue(){return P()}},{key:"headers",converter:a.nullableConverter(a.converters.HeadersInit)}]);a.converters["DOMString or sequence or WebSocketInit"]=function(r){if(a.util.Type(r)==="Object"&&!(Symbol.iterator in r)){return a.converters.WebSocketInit(r)}return{protocols:a.converters["DOMString or sequence"](r)}};a.converters.WebSocketSendData=function(r){if(a.util.Type(r)==="Object"){if(D(r)){return a.converters.Blob(r,{strict:false})}if(ArrayBuffer.isView(r)||O.isAnyArrayBuffer(r)){return a.converters.BufferSource(r)}}return a.converters.USVString(r)};r.exports={WebSocket:WebSocket}},98912:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});function getUserAgent(){if(typeof navigator==="object"&&"userAgent"in navigator){return navigator.userAgent}if(typeof process==="object"&&process.version!==undefined){return`Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`}return""}i.getUserAgent=getUserAgent},85744:(r,i,s)=>{"use strict";var a=s(12781);var l=s(73837).inherits;function Entry(){if(!(this instanceof Entry)){return new Entry}a.PassThrough.call(this);this.path=null;this.type=null;this.isDirectory=false}l(Entry,a.PassThrough);Entry.prototype.autodrain=function(){return this.pipe(new a.Transform({transform:function(r,i,s){s()}}))};r.exports=Entry},73061:(r,i,s)=>{var a=s(57147);var l=s(71017);var c=s(73837);var d=s(61850);var p=s(12781).Transform;var A=s(27866);function Extract(r){if(!(this instanceof Extract))return new Extract(r);p.call(this);this.opts=r||{};this.unzipStream=new A(this.opts);this.unfinishedEntries=0;this.afterFlushWait=false;this.createdDirectories={};var i=this;this.unzipStream.on("entry",this._processEntry.bind(this));this.unzipStream.on("error",(function(r){i.emit("error",r)}))}c.inherits(Extract,p);Extract.prototype._transform=function(r,i,s){this.unzipStream.write(r,i,s)};Extract.prototype._flush=function(r){var i=this;var allDone=function(){process.nextTick((function(){i.emit("close")}));r()};this.unzipStream.end((function(){if(i.unfinishedEntries>0){i.afterFlushWait=true;return i.on("await-finished",allDone)}allDone()}))};Extract.prototype._processEntry=function(r){var i=this;var s=l.join(this.opts.path,r.path);var c=r.isDirectory?s:l.dirname(s);this.unfinishedEntries++;var writeFileFn=function(){var l=a.createWriteStream(s);l.on("close",(function(){i.unfinishedEntries--;i._notifyAwaiter()}));l.on("error",(function(r){i.emit("error",r)}));r.pipe(l)};if(this.createdDirectories[c]||c==="."){return writeFileFn()}d(c,(function(s){if(s)return i.emit("error",s);i.createdDirectories[c]=true;if(r.isDirectory){i.unfinishedEntries--;i._notifyAwaiter();return}writeFileFn()}))};Extract.prototype._notifyAwaiter=function(){if(this.afterFlushWait&&this.unfinishedEntries===0){this.emit("await-finished");this.afterFlushWait=false}};r.exports=Extract},25141:(r,i,s)=>{var a=s(12781).Transform;var l=s(73837);function MatcherStream(r,i){if(!(this instanceof MatcherStream)){return new MatcherStream}a.call(this);var s=typeof r==="object"?r.pattern:r;this.pattern=Buffer.isBuffer(s)?s:Buffer.from(s);this.requiredLength=this.pattern.length;if(r.requiredExtraSize)this.requiredLength+=r.requiredExtraSize;this.data=new Buffer("");this.bytesSoFar=0;this.matchFn=i}l.inherits(MatcherStream,a);MatcherStream.prototype.checkDataChunk=function(r){var i=this.data.length>=this.requiredLength;if(!i){return}var s=this.data.indexOf(this.pattern,r?1:0);if(s>=0&&s+this.requiredLength>this.data.length){if(s>0){var a=this.data.slice(0,s);this.push(a);this.bytesSoFar+=s;this.data=this.data.slice(s)}return}if(s===-1){var l=this.data.length-this.requiredLength+1;var a=this.data.slice(0,l);this.push(a);this.bytesSoFar+=l;this.data=this.data.slice(l);return}if(s>0){var a=this.data.slice(0,s);this.data=this.data.slice(s);this.push(a);this.bytesSoFar+=s}var c=this.matchFn?this.matchFn(this.data,this.bytesSoFar):true;if(c){this.data=new Buffer("");return}return true};MatcherStream.prototype._transform=function(r,i,s){this.data=Buffer.concat([this.data,r]);var a=true;while(this.checkDataChunk(!a)){a=false}s()};MatcherStream.prototype._flush=function(r){if(this.data.length>0){var i=true;while(this.checkDataChunk(!i)){i=false}}if(this.data.length>0){this.push(this.data);this.data=null}r()};r.exports=MatcherStream},72016:(r,i,s)=>{var a=s(12781).Transform;var l=s(73837);var c=s(27866);function ParserStream(r){if(!(this instanceof ParserStream)){return new ParserStream(r)}var i=r||{};a.call(this,{readableObjectMode:true});this.opts=r||{};this.unzipStream=new c(this.opts);var s=this;this.unzipStream.on("entry",(function(r){s.push(r)}));this.unzipStream.on("error",(function(r){s.emit("error",r)}))}l.inherits(ParserStream,a);ParserStream.prototype._transform=function(r,i,s){this.unzipStream.write(r,i,s)};ParserStream.prototype._flush=function(r){var i=this;this.unzipStream.end((function(){process.nextTick((function(){i.emit("close")}));r()}))};ParserStream.prototype.on=function(r,i){if(r==="entry"){return a.prototype.on.call(this,"data",i)}return a.prototype.on.call(this,r,i)};ParserStream.prototype.drainAll=function(){this.unzipStream.drainAll();return this.pipe(new a({objectMode:true,transform:function(r,i,s){s()}}))};r.exports=ParserStream},27866:(r,i,s)=>{"use strict";var a=s(62423);var l=s(12781);var c=s(73837);var d=s(59796);var p=s(25141);var A=s(85744);const u={STREAM_START:0,START:1,LOCAL_FILE_HEADER:2,LOCAL_FILE_HEADER_SUFFIX:3,FILE_DATA:4,FILE_DATA_END:5,DATA_DESCRIPTOR:6,CENTRAL_DIRECTORY_FILE_HEADER:7,CENTRAL_DIRECTORY_FILE_HEADER_SUFFIX:8,CDIR64_END:9,CDIR64_END_DATA_SECTOR:10,CDIR64_LOCATOR:11,CENTRAL_DIRECTORY_END:12,CENTRAL_DIRECTORY_END_COMMENT:13,TRAILING_JUNK:14,ERROR:99};const h=4294967296;const g=67324752;const y=134695760;const b=33639248;const C=101075792;const B=117853008;const I=101010256;function UnzipStream(r){if(!(this instanceof UnzipStream)){return new UnzipStream(r)}l.Transform.call(this);this.options=r||{};this.data=new Buffer("");this.state=u.STREAM_START;this.skippedBytes=0;this.parsedEntity=null;this.outStreamInfo={}}c.inherits(UnzipStream,l.Transform);UnzipStream.prototype.processDataChunk=function(r){var i;switch(this.state){case u.STREAM_START:case u.START:i=4;break;case u.LOCAL_FILE_HEADER:i=26;break;case u.LOCAL_FILE_HEADER_SUFFIX:i=this.parsedEntity.fileNameLength+this.parsedEntity.extraFieldLength;break;case u.DATA_DESCRIPTOR:i=12;break;case u.CENTRAL_DIRECTORY_FILE_HEADER:i=42;break;case u.CENTRAL_DIRECTORY_FILE_HEADER_SUFFIX:i=this.parsedEntity.fileNameLength+this.parsedEntity.extraFieldLength+this.parsedEntity.fileCommentLength;break;case u.CDIR64_END:i=52;break;case u.CDIR64_END_DATA_SECTOR:i=this.parsedEntity.centralDirectoryRecordSize-44;break;case u.CDIR64_LOCATOR:i=16;break;case u.CENTRAL_DIRECTORY_END:i=18;break;case u.CENTRAL_DIRECTORY_END_COMMENT:i=this.parsedEntity.commentLength;break;case u.FILE_DATA:return 0;case u.FILE_DATA_END:return 0;case u.TRAILING_JUNK:if(this.options.debug)console.log("found",r.length,"bytes of TRAILING_JUNK");return r.length;default:return r.length}var s=r.length;if(s>>8;if((c&255)===80){d=p;break}}this.skippedBytes+=d;if(this.options.debug)console.log("Skipped",this.skippedBytes,"bytes");return d}this.state=u.ERROR;var y=l?"Not a valid zip file":"Invalid signature in zip file";if(this.options.debug){var w=r.readUInt32LE(0);var v;try{v=r.slice(0,4).toString()}catch(r){}console.log("Unexpected signature in zip file: 0x"+w.toString(16),'"'+v+'", skipped',this.skippedBytes,"bytes")}this.emit("error",new Error(y));return r.length}this.skippedBytes=0;return i;case u.LOCAL_FILE_HEADER:this.parsedEntity=this._readFile(r);this.state=u.LOCAL_FILE_HEADER_SUFFIX;return i;case u.LOCAL_FILE_HEADER_SUFFIX:var S=new A;var Q=(this.parsedEntity.flags&2048)!==0;S.path=this._decodeString(r.slice(0,this.parsedEntity.fileNameLength),Q);var N=r.slice(this.parsedEntity.fileNameLength,this.parsedEntity.fileNameLength+this.parsedEntity.extraFieldLength);var R=this._readExtraFields(N);if(R&&R.parsed){if(R.parsed.path&&!Q){S.path=R.parsed.path}if(Number.isFinite(R.parsed.uncompressedSize)&&this.parsedEntity.uncompressedSize===h-1){this.parsedEntity.uncompressedSize=R.parsed.uncompressedSize}if(Number.isFinite(R.parsed.compressedSize)&&this.parsedEntity.compressedSize===h-1){this.parsedEntity.compressedSize=R.parsed.compressedSize}}this.parsedEntity.extra=R.parsed||{};if(this.options.debug){const r=Object.assign({},this.parsedEntity,{path:S.path,flags:"0x"+this.parsedEntity.flags.toString(16),extraFields:R&&R.debug});console.log("decoded LOCAL_FILE_HEADER:",JSON.stringify(r,null,2))}this._prepareOutStream(this.parsedEntity,S);this.emit("entry",S);this.state=u.FILE_DATA;return i;case u.CENTRAL_DIRECTORY_FILE_HEADER:this.parsedEntity=this._readCentralDirectoryEntry(r);this.state=u.CENTRAL_DIRECTORY_FILE_HEADER_SUFFIX;return i;case u.CENTRAL_DIRECTORY_FILE_HEADER_SUFFIX:var Q=(this.parsedEntity.flags&2048)!==0;var k=this._decodeString(r.slice(0,this.parsedEntity.fileNameLength),Q);var N=r.slice(this.parsedEntity.fileNameLength,this.parsedEntity.fileNameLength+this.parsedEntity.extraFieldLength);var R=this._readExtraFields(N);if(R&&R.parsed&&R.parsed.path&&!Q){k=R.parsed.path}this.parsedEntity.extra=R.parsed;var T=(this.parsedEntity.versionMadeBy&65280)>>8===3;var _,x;if(T){_=this.parsedEntity.externalFileAttributes>>>16;var D=_>>>12;x=(D&10)===10}if(this.options.debug){const r=Object.assign({},this.parsedEntity,{path:k,flags:"0x"+this.parsedEntity.flags.toString(16),unixAttrs:_&&"0"+_.toString(8),isSymlink:x,extraFields:R.debug});console.log("decoded CENTRAL_DIRECTORY_FILE_HEADER:",JSON.stringify(r,null,2))}this.state=u.START;return i;case u.CDIR64_END:this.parsedEntity=this._readEndOfCentralDirectory64(r);if(this.options.debug){console.log("decoded CDIR64_END_RECORD:",this.parsedEntity)}this.state=u.CDIR64_END_DATA_SECTOR;return i;case u.CDIR64_END_DATA_SECTOR:this.state=u.START;return i;case u.CDIR64_LOCATOR:this.state=u.START;return i;case u.CENTRAL_DIRECTORY_END:this.parsedEntity=this._readEndOfCentralDirectory(r);if(this.options.debug){console.log("decoded CENTRAL_DIRECTORY_END:",this.parsedEntity)}this.state=u.CENTRAL_DIRECTORY_END_COMMENT;return i;case u.CENTRAL_DIRECTORY_END_COMMENT:if(this.options.debug){console.log("decoded CENTRAL_DIRECTORY_END_COMMENT:",r.slice(0,i).toString())}this.state=u.TRAILING_JUNK;return i;case u.ERROR:return r.length;default:console.log("didn't handle state #",this.state,"discarding");return r.length}};UnzipStream.prototype._prepareOutStream=function(r,i){var s=this;var a=r.uncompressedSize===0&&/[\/\\]$/.test(i.path);i.path=i.path.replace(/(?<=^|[/\\]+)[.][.]+(?=[/\\]+|$)/g,".");i.type=a?"Directory":"File";i.isDirectory=a;var c=!(r.flags&8);if(c){i.size=r.uncompressedSize}var g=r.versionsNeededToExtract<=45;this.outStreamInfo={stream:null,limit:c?r.compressedSize:-1,written:0};if(!c){var b=new Buffer(4);b.writeUInt32LE(y,0);var C=r.extra.zip64Mode;var B=C?20:12;var I={pattern:b,requiredExtraSize:B};var w=new p(I,(function(r,i){var a=s._readDataDescriptor(r,C);var l=a.compressedSize===i;if(!C&&!l&&i>=h){var c=i-h;while(c>=0){l=a.compressedSize===c;if(l)break;c-=h}}if(!l){return}s.state=u.FILE_DATA_END;var d=C?24:16;if(s.data.length>0){s.data=Buffer.concat([r.slice(d),s.data])}else{s.data=r.slice(d)}return true}));this.outStreamInfo.stream=w}else{this.outStreamInfo.stream=new l.PassThrough}var v=r.flags&1||r.flags&64;if(v||!g){var S=v?"Encrypted files are not supported!":"Zip version "+Math.floor(r.versionsNeededToExtract/10)+"."+r.versionsNeededToExtract%10+" is not supported";i.skip=true;setImmediate((()=>{s.emit("error",new Error(S))}));this.outStreamInfo.stream.pipe((new A).autodrain());return}var Q=r.compressionMethod>0;if(Q){var N=d.createInflateRaw();N.on("error",(function(r){s.state=u.ERROR;s.emit("error",r)}));this.outStreamInfo.stream.pipe(N).pipe(i)}else{this.outStreamInfo.stream.pipe(i)}if(this._drainAllEntries){i.autodrain()}};UnzipStream.prototype._readFile=function(r){var i=a.parse(r).word16lu("versionsNeededToExtract").word16lu("flags").word16lu("compressionMethod").word16lu("lastModifiedTime").word16lu("lastModifiedDate").word32lu("crc32").word32lu("compressedSize").word32lu("uncompressedSize").word16lu("fileNameLength").word16lu("extraFieldLength").vars;return i};UnzipStream.prototype._readExtraFields=function(r){var i={};var s={parsed:i};if(this.options.debug){s.debug=[]}var l=0;while(l=u+4&&A&1){i.mtime=new Date(r.readUInt32LE(l+u)*1e3);u+=4}if(c.extraSize>=u+4&&A&2){i.atime=new Date(r.readUInt32LE(l+u)*1e3);u+=4}if(c.extraSize>=u+4&&A&4){i.ctime=new Date(r.readUInt32LE(l+u)*1e3)}break;case 28789:d="Info-ZIP Unicode Path Extra Field";var h=r.readUInt8(l);if(h===1){var u=1;var g=r.readUInt32LE(l+u);u+=4;var y=r.slice(l+u);i.path=y.toString()}break;case 13:case 22613:d=c.extraId===13?"PKWARE Unix":"Info-ZIP UNIX (type 1)";var u=0;if(c.extraSize>=8){var b=new Date(r.readUInt32LE(l+u)*1e3);u+=4;var C=new Date(r.readUInt32LE(l+u)*1e3);u+=4;i.atime=b;i.mtime=C;if(c.extraSize>=12){var B=r.readUInt16LE(l+u);u+=2;var I=r.readUInt16LE(l+u);u+=2;i.uid=B;i.gid=I}}break;case 30805:d="Info-ZIP UNIX (type 2)";var u=0;if(c.extraSize>=4){var B=r.readUInt16LE(l+u);u+=2;var I=r.readUInt16LE(l+u);u+=2;i.uid=B;i.gid=I}break;case 30837:d="Info-ZIP New Unix";var u=0;var w=r.readUInt8(l);u+=1;if(w===1){var v=r.readUInt8(l+u);u+=1;if(v<=6){i.uid=r.readUIntLE(l+u,v)}u+=v;var S=r.readUInt8(l+u);u+=1;if(S<=6){i.gid=r.readUIntLE(l+u,S)}}break;case 30062:d="ASi Unix";var u=0;if(c.extraSize>=14){var Q=r.readUInt32LE(l+u);u+=4;var N=r.readUInt16LE(l+u);u+=2;var R=r.readUInt32LE(l+u);u+=4;var B=r.readUInt16LE(l+u);u+=2;var I=r.readUInt16LE(l+u);u+=2;i.mode=N;i.uid=B;i.gid=I;if(c.extraSize>14){var k=l+u;var T=l+c.extraSize-14;var _=this._decodeString(r.slice(k,T));i.symlink=_}}break}if(this.options.debug){s.debug.push({extraId:"0x"+c.extraId.toString(16),description:d,data:r.slice(l,l+c.extraSize).inspect()})}l+=c.extraSize}return s};UnzipStream.prototype._readDataDescriptor=function(r,i){if(i){var s=a.parse(r).word32lu("dataDescriptorSignature").word32lu("crc32").word64lu("compressedSize").word64lu("uncompressedSize").vars;return s}var s=a.parse(r).word32lu("dataDescriptorSignature").word32lu("crc32").word32lu("compressedSize").word32lu("uncompressedSize").vars;return s};UnzipStream.prototype._readCentralDirectoryEntry=function(r){var i=a.parse(r).word16lu("versionMadeBy").word16lu("versionsNeededToExtract").word16lu("flags").word16lu("compressionMethod").word16lu("lastModifiedTime").word16lu("lastModifiedDate").word32lu("crc32").word32lu("compressedSize").word32lu("uncompressedSize").word16lu("fileNameLength").word16lu("extraFieldLength").word16lu("fileCommentLength").word16lu("diskNumber").word16lu("internalFileAttributes").word32lu("externalFileAttributes").word32lu("offsetToLocalFileHeader").vars;return i};UnzipStream.prototype._readEndOfCentralDirectory64=function(r){var i=a.parse(r).word64lu("centralDirectoryRecordSize").word16lu("versionMadeBy").word16lu("versionsNeededToExtract").word32lu("diskNumber").word32lu("diskNumberWithCentralDirectoryStart").word64lu("centralDirectoryEntries").word64lu("totalCentralDirectoryEntries").word64lu("sizeOfCentralDirectory").word64lu("offsetToStartOfCentralDirectory").vars;return i};UnzipStream.prototype._readEndOfCentralDirectory=function(r){var i=a.parse(r).word16lu("diskNumber").word16lu("diskStart").word16lu("centralDirectoryEntries").word16lu("totalCentralDirectoryEntries").word32lu("sizeOfCentralDirectory").word32lu("offsetToStartOfCentralDirectory").word16lu("commentLength").vars;return i};const w="\0☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ";UnzipStream.prototype._decodeString=function(r,i){if(i){return r.toString("utf8")}if(this.options.decodeString){return this.options.decodeString(r)}let s="";for(var a=0;a0){this.data=this.data.slice(s);if(this.data.length===0)break}if(this.state===u.FILE_DATA){if(this.outStreamInfo.limit>=0){var a=this.outStreamInfo.limit-this.outStreamInfo.written;var l;if(a{if(this.state===u.FILE_DATA_END){this.state=u.START;return c.end(i)}i()}))}return}i()};UnzipStream.prototype.drainAll=function(){this._drainAllEntries=true};UnzipStream.prototype._transform=function(r,i,s){var a=this;if(a.data.length>0){a.data=Buffer.concat([a.data,r])}else{a.data=r}var l=a.data.length;var done=function(){if(a.data.length>0&&a.data.length0){i._parseOrOutput("buffer",(function(){if(i.data.length>0)return setImmediate((function(){i._flush(r)}));r()}));return}if(i.state===u.FILE_DATA){return r(new Error("Stream finished in an invalid state, uncompression failed"))}setImmediate(r)};r.exports=UnzipStream},1865:(r,i,s)=>{"use strict";i.Parse=s(72016);i.Extract=s(73061)},74104:(r,i,s)=>{r.exports=s(73837).deprecate},16328:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});Object.defineProperty(i,"v1",{enumerable:true,get:function(){return a.default}});Object.defineProperty(i,"v3",{enumerable:true,get:function(){return l.default}});Object.defineProperty(i,"v4",{enumerable:true,get:function(){return c.default}});Object.defineProperty(i,"v5",{enumerable:true,get:function(){return d.default}});Object.defineProperty(i,"NIL",{enumerable:true,get:function(){return p.default}});Object.defineProperty(i,"version",{enumerable:true,get:function(){return A.default}});Object.defineProperty(i,"validate",{enumerable:true,get:function(){return u.default}});Object.defineProperty(i,"stringify",{enumerable:true,get:function(){return h.default}});Object.defineProperty(i,"parse",{enumerable:true,get:function(){return g.default}});var a=_interopRequireDefault(s(74962));var l=_interopRequireDefault(s(80541));var c=_interopRequireDefault(s(72027));var d=_interopRequireDefault(s(10826));var p=_interopRequireDefault(s(91248));var A=_interopRequireDefault(s(21912));var u=_interopRequireDefault(s(51064));var h=_interopRequireDefault(s(22250));var g=_interopRequireDefault(s(78759));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}},24156:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(6113));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function md5(r){if(Array.isArray(r)){r=Buffer.from(r)}else if(typeof r==="string"){r=Buffer.from(r,"utf8")}return a.default.createHash("md5").update(r).digest()}var l=md5;i["default"]=l},91248:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var s="00000000-0000-0000-0000-000000000000";i["default"]=s},78759:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(51064));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function parse(r){if(!(0,a.default)(r)){throw TypeError("Invalid UUID")}let i;const s=new Uint8Array(16);s[0]=(i=parseInt(r.slice(0,8),16))>>>24;s[1]=i>>>16&255;s[2]=i>>>8&255;s[3]=i&255;s[4]=(i=parseInt(r.slice(9,13),16))>>>8;s[5]=i&255;s[6]=(i=parseInt(r.slice(14,18),16))>>>8;s[7]=i&255;s[8]=(i=parseInt(r.slice(19,23),16))>>>8;s[9]=i&255;s[10]=(i=parseInt(r.slice(24,36),16))/1099511627776&255;s[11]=i/4294967296&255;s[12]=i>>>24&255;s[13]=i>>>16&255;s[14]=i>>>8&255;s[15]=i&255;return s}var l=parse;i["default"]=l},43700:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var s=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;i["default"]=s},88475:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=rng;var a=_interopRequireDefault(s(6113));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}const l=new Uint8Array(256);let c=l.length;function rng(){if(c>l.length-16){a.default.randomFillSync(l);c=0}return l.slice(c,c+=16)}},50402:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(6113));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function sha1(r){if(Array.isArray(r)){r=Buffer.from(r)}else if(typeof r==="string"){r=Buffer.from(r,"utf8")}return a.default.createHash("sha1").update(r).digest()}var l=sha1;i["default"]=l},22250:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(51064));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}const l=[];for(let r=0;r<256;++r){l.push((r+256).toString(16).substr(1))}function stringify(r,i=0){const s=(l[r[i+0]]+l[r[i+1]]+l[r[i+2]]+l[r[i+3]]+"-"+l[r[i+4]]+l[r[i+5]]+"-"+l[r[i+6]]+l[r[i+7]]+"-"+l[r[i+8]]+l[r[i+9]]+"-"+l[r[i+10]]+l[r[i+11]]+l[r[i+12]]+l[r[i+13]]+l[r[i+14]]+l[r[i+15]]).toLowerCase();if(!(0,a.default)(s)){throw TypeError("Stringified UUID is invalid")}return s}var c=stringify;i["default"]=c},74962:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(88475));var l=_interopRequireDefault(s(22250));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}let c;let d;let p=0;let A=0;function v1(r,i,s){let u=i&&s||0;const h=i||new Array(16);r=r||{};let g=r.node||c;let y=r.clockseq!==undefined?r.clockseq:d;if(g==null||y==null){const i=r.random||(r.rng||a.default)();if(g==null){g=c=[i[0]|1,i[1],i[2],i[3],i[4],i[5]]}if(y==null){y=d=(i[6]<<8|i[7])&16383}}let b=r.msecs!==undefined?r.msecs:Date.now();let C=r.nsecs!==undefined?r.nsecs:A+1;const B=b-p+(C-A)/1e4;if(B<0&&r.clockseq===undefined){y=y+1&16383}if((B<0||b>p)&&r.nsecs===undefined){C=0}if(C>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}p=b;A=C;d=y;b+=122192928e5;const I=((b&268435455)*1e4+C)%4294967296;h[u++]=I>>>24&255;h[u++]=I>>>16&255;h[u++]=I>>>8&255;h[u++]=I&255;const w=b/4294967296*1e4&268435455;h[u++]=w>>>8&255;h[u++]=w&255;h[u++]=w>>>24&15|16;h[u++]=w>>>16&255;h[u++]=y>>>8|128;h[u++]=y&255;for(let r=0;r<6;++r){h[u+r]=g[r]}return i||(0,l.default)(h)}var u=v1;i["default"]=u},80541:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(23339));var l=_interopRequireDefault(s(24156));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}const c=(0,a.default)("v3",48,l.default);var d=c;i["default"]=d},23339:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=_default;i.URL=i.DNS=void 0;var a=_interopRequireDefault(s(22250));var l=_interopRequireDefault(s(78759));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function stringToBytes(r){r=unescape(encodeURIComponent(r));const i=[];for(let s=0;s{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(88475));var l=_interopRequireDefault(s(22250));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function v4(r,i,s){r=r||{};const c=r.random||(r.rng||a.default)();c[6]=c[6]&15|64;c[8]=c[8]&63|128;if(i){s=s||0;for(let r=0;r<16;++r){i[s+r]=c[r]}return i}return(0,l.default)(c)}var c=v4;i["default"]=c},10826:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(23339));var l=_interopRequireDefault(s(50402));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}const c=(0,a.default)("v5",80,l.default);var d=c;i["default"]=d},51064:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(43700));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function validate(r){return typeof r==="string"&&a.default.test(r)}var l=validate;i["default"]=l},21912:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i["default"]=void 0;var a=_interopRequireDefault(s(51064));function _interopRequireDefault(r){return r&&r.__esModule?r:{default:r}}function version(r){if(!(0,a.default)(r)){throw TypeError("Invalid UUID")}return parseInt(r.substr(14,1),16)}var l=version;i["default"]=l},31931:r=>{"use strict";var i={};r.exports=i;function sign(r){return r<0?-1:1}function evenRound(r){if(r%1===.5&&(r&1)===0){return Math.floor(r)}else{return Math.round(r)}}function createNumberConversion(r,i){if(!i.unsigned){--r}const s=i.unsigned?0:-Math.pow(2,r);const a=Math.pow(2,r)-1;const l=i.moduloBitLength?Math.pow(2,i.moduloBitLength):Math.pow(2,r);const c=i.moduloBitLength?Math.pow(2,i.moduloBitLength-1):Math.pow(2,r-1);return function(r,d){if(!d)d={};let p=+r;if(d.enforceRange){if(!Number.isFinite(p)){throw new TypeError("Argument is not a finite number")}p=sign(p)*Math.floor(Math.abs(p));if(pa){throw new TypeError("Argument is not in byte range")}return p}if(!isNaN(p)&&d.clamp){p=evenRound(p);if(pa)p=a;return p}if(!Number.isFinite(p)||p===0){return 0}p=sign(p)*Math.floor(Math.abs(p));p=p%l;if(!i.unsigned&&p>=c){return p-l}else if(i.unsigned){if(p<0){p+=l}else if(p===-0){return 0}}return p}}i["void"]=function(){return undefined};i["boolean"]=function(r){return!!r};i["byte"]=createNumberConversion(8,{unsigned:false});i["octet"]=createNumberConversion(8,{unsigned:true});i["short"]=createNumberConversion(16,{unsigned:false});i["unsigned short"]=createNumberConversion(16,{unsigned:true});i["long"]=createNumberConversion(32,{unsigned:false});i["unsigned long"]=createNumberConversion(32,{unsigned:true});i["long long"]=createNumberConversion(32,{unsigned:false,moduloBitLength:64});i["unsigned long long"]=createNumberConversion(32,{unsigned:true,moduloBitLength:64});i["double"]=function(r){const i=+r;if(!Number.isFinite(i)){throw new TypeError("Argument is not a finite floating-point value")}return i};i["unrestricted double"]=function(r){const i=+r;if(isNaN(i)){throw new TypeError("Argument is NaN")}return i};i["float"]=i["double"];i["unrestricted float"]=i["unrestricted double"];i["DOMString"]=function(r,i){if(!i)i={};if(i.treatNullAsEmptyString&&r===null){return""}return String(r)};i["ByteString"]=function(r,i){const s=String(r);let a=undefined;for(let r=0;(a=s.codePointAt(r))!==undefined;++r){if(a>255){throw new TypeError("Argument is not a valid bytestring")}}return s};i["USVString"]=function(r){const i=String(r);const s=i.length;const a=[];for(let r=0;r57343){a.push(String.fromCodePoint(l))}else if(56320<=l&&l<=57343){a.push(String.fromCodePoint(65533))}else{if(r===s-1){a.push(String.fromCodePoint(65533))}else{const s=i.charCodeAt(r+1);if(56320<=s&&s<=57343){const i=l&1023;const c=s&1023;a.push(String.fromCodePoint((2<<15)+(2<<9)*i+c));++r}else{a.push(String.fromCodePoint(65533))}}}}return a.join("")};i["Date"]=function(r,i){if(!(r instanceof Date)){throw new TypeError("Argument is not a Date object")}if(isNaN(r)){return undefined}return r};i["RegExp"]=function(r,i){if(!(r instanceof RegExp)){r=new RegExp(r)}return r}},62281:(r,i,s)=>{"use strict";const a=s(23916);i.implementation=class URLImpl{constructor(r){const i=r[0];const s=r[1];let l=null;if(s!==undefined){l=a.basicURLParse(s);if(l==="failure"){throw new TypeError("Invalid base URL")}}const c=a.basicURLParse(i,{baseURL:l});if(c==="failure"){throw new TypeError("Invalid URL")}this._url=c}get href(){return a.serializeURL(this._url)}set href(r){const i=a.basicURLParse(r);if(i==="failure"){throw new TypeError("Invalid URL")}this._url=i}get origin(){return a.serializeURLOrigin(this._url)}get protocol(){return this._url.scheme+":"}set protocol(r){a.basicURLParse(r+":",{url:this._url,stateOverride:"scheme start"})}get username(){return this._url.username}set username(r){if(a.cannotHaveAUsernamePasswordPort(this._url)){return}a.setTheUsername(this._url,r)}get password(){return this._url.password}set password(r){if(a.cannotHaveAUsernamePasswordPort(this._url)){return}a.setThePassword(this._url,r)}get host(){const r=this._url;if(r.host===null){return""}if(r.port===null){return a.serializeHost(r.host)}return a.serializeHost(r.host)+":"+a.serializeInteger(r.port)}set host(r){if(this._url.cannotBeABaseURL){return}a.basicURLParse(r,{url:this._url,stateOverride:"host"})}get hostname(){if(this._url.host===null){return""}return a.serializeHost(this._url.host)}set hostname(r){if(this._url.cannotBeABaseURL){return}a.basicURLParse(r,{url:this._url,stateOverride:"hostname"})}get port(){if(this._url.port===null){return""}return a.serializeInteger(this._url.port)}set port(r){if(a.cannotHaveAUsernamePasswordPort(this._url)){return}if(r===""){this._url.port=null}else{a.basicURLParse(r,{url:this._url,stateOverride:"port"})}}get pathname(){if(this._url.cannotBeABaseURL){return this._url.path[0]}if(this._url.path.length===0){return""}return"/"+this._url.path.join("/")}set pathname(r){if(this._url.cannotBeABaseURL){return}this._url.path=[];a.basicURLParse(r,{url:this._url,stateOverride:"path start"})}get search(){if(this._url.query===null||this._url.query===""){return""}return"?"+this._url.query}set search(r){const i=this._url;if(r===""){i.query=null;return}const s=r[0]==="?"?r.substring(1):r;i.query="";a.basicURLParse(s,{url:i,stateOverride:"query"})}get hash(){if(this._url.fragment===null||this._url.fragment===""){return""}return"#"+this._url.fragment}set hash(r){if(r===""){this._url.fragment=null;return}const i=r[0]==="#"?r.substring(1):r;this._url.fragment="";a.basicURLParse(i,{url:this._url,stateOverride:"fragment"})}toJSON(){return this.href}}},59761:(r,i,s)=>{"use strict";const a=s(31931);const l=s(10195);const c=s(62281);const d=l.implSymbol;function URL(i){if(!this||this[d]||!(this instanceof URL)){throw new TypeError("Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.")}if(arguments.length<1){throw new TypeError("Failed to construct 'URL': 1 argument required, but only "+arguments.length+" present.")}const s=[];for(let r=0;r{"use strict";i.URL=s(59761)["interface"];i.serializeURL=s(23916).serializeURL;i.serializeURLOrigin=s(23916).serializeURLOrigin;i.basicURLParse=s(23916).basicURLParse;i.setTheUsername=s(23916).setTheUsername;i.setThePassword=s(23916).setThePassword;i.serializeHost=s(23916).serializeHost;i.serializeInteger=s(23916).serializeInteger;i.parseURL=s(23916).parseURL},23916:(r,i,s)=>{"use strict";const a=s(85477);const l=s(18339);const c={ftp:21,file:null,gopher:70,http:80,https:443,ws:80,wss:443};const d=Symbol("failure");function countSymbols(r){return a.ucs2.decode(r).length}function at(r,i){const s=r[i];return isNaN(s)?undefined:String.fromCodePoint(s)}function isASCIIDigit(r){return r>=48&&r<=57}function isASCIIAlpha(r){return r>=65&&r<=90||r>=97&&r<=122}function isASCIIAlphanumeric(r){return isASCIIAlpha(r)||isASCIIDigit(r)}function isASCIIHex(r){return isASCIIDigit(r)||r>=65&&r<=70||r>=97&&r<=102}function isSingleDot(r){return r==="."||r.toLowerCase()==="%2e"}function isDoubleDot(r){r=r.toLowerCase();return r===".."||r==="%2e."||r===".%2e"||r==="%2e%2e"}function isWindowsDriveLetterCodePoints(r,i){return isASCIIAlpha(r)&&(i===58||i===124)}function isWindowsDriveLetterString(r){return r.length===2&&isASCIIAlpha(r.codePointAt(0))&&(r[1]===":"||r[1]==="|")}function isNormalizedWindowsDriveLetterString(r){return r.length===2&&isASCIIAlpha(r.codePointAt(0))&&r[1]===":"}function containsForbiddenHostCodePoint(r){return r.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:|\?|@|\[|\\|\]/)!==-1}function containsForbiddenHostCodePointExcludingPercent(r){return r.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:|\?|@|\[|\\|\]/)!==-1}function isSpecialScheme(r){return c[r]!==undefined}function isSpecial(r){return isSpecialScheme(r.scheme)}function defaultPort(r){return c[r]}function percentEncode(r){let i=r.toString(16).toUpperCase();if(i.length===1){i="0"+i}return"%"+i}function utf8PercentEncode(r){const i=new Buffer(r);let s="";for(let r=0;r126}const p=new Set([32,34,35,60,62,63,96,123,125]);function isPathPercentEncode(r){return isC0ControlPercentEncode(r)||p.has(r)}const A=new Set([47,58,59,61,64,91,92,93,94,124]);function isUserinfoPercentEncode(r){return isPathPercentEncode(r)||A.has(r)}function percentEncodeChar(r,i){const s=String.fromCodePoint(r);if(i(r)){return utf8PercentEncode(s)}return s}function parseIPv4Number(r){let i=10;if(r.length>=2&&r.charAt(0)==="0"&&r.charAt(1).toLowerCase()==="x"){r=r.substring(2);i=16}else if(r.length>=2&&r.charAt(0)==="0"){r=r.substring(1);i=8}if(r===""){return 0}const s=i===10?/[^0-9]/:i===16?/[^0-9A-Fa-f]/:/[^0-7]/;if(s.test(r)){return d}return parseInt(r,i)}function parseIPv4(r){const i=r.split(".");if(i[i.length-1]===""){if(i.length>1){i.pop()}}if(i.length>4){return r}const s=[];for(const a of i){if(a===""){return r}const i=parseIPv4Number(a);if(i===d){return r}s.push(i)}for(let r=0;r255){return d}}if(s[s.length-1]>=Math.pow(256,5-s.length)){return d}let a=s.pop();let l=0;for(const r of s){a+=r*Math.pow(256,3-l);++l}return a}function serializeIPv4(r){let i="";let s=r;for(let r=1;r<=4;++r){i=String(s%256)+i;if(r!==4){i="."+i}s=Math.floor(s/256)}return i}function parseIPv6(r){const i=[0,0,0,0,0,0,0,0];let s=0;let l=null;let c=0;r=a.ucs2.decode(r);if(r[c]===58){if(r[c+1]!==58){return d}c+=2;++s;l=s}while(c6){return d}let a=0;while(r[c]!==undefined){let l=null;if(a>0){if(r[c]===46&&a<4){++c}else{return d}}if(!isASCIIDigit(r[c])){return d}while(isASCIIDigit(r[c])){const i=parseInt(at(r,c));if(l===null){l=i}else if(l===0){return d}else{l=l*10+i}if(l>255){return d}++c}i[s]=i[s]*256+l;++a;if(a===2||a===4){++s}}if(a!==4){return d}break}else if(r[c]===58){++c;if(r[c]===undefined){return d}}else if(r[c]!==undefined){return d}i[s]=a;++s}if(l!==null){let r=s-l;s=7;while(s!==0&&r>0){const a=i[l+r-1];i[l+r-1]=i[s];i[s]=a;--s;--r}}else if(l===null&&s!==8){return d}return i}function serializeIPv6(r){let i="";const s=findLongestZeroSequence(r);const a=s.idx;let l=false;for(let s=0;s<=7;++s){if(l&&r[s]===0){continue}else if(l){l=false}if(a===s){const r=s===0?"::":":";i+=r;l=true;continue}i+=r[s].toString(16);if(s!==7){i+=":"}}return i}function parseHost(r,i){if(r[0]==="["){if(r[r.length-1]!=="]"){return d}return parseIPv6(r.substring(1,r.length-1))}if(!i){return parseOpaqueHost(r)}const s=utf8PercentDecode(r);const a=l.toASCII(s,false,l.PROCESSING_OPTIONS.NONTRANSITIONAL,false);if(a===null){return d}if(containsForbiddenHostCodePoint(a)){return d}const c=parseIPv4(a);if(typeof c==="number"||c===d){return c}return a}function parseOpaqueHost(r){if(containsForbiddenHostCodePointExcludingPercent(r)){return d}let i="";const s=a.ucs2.decode(r);for(let r=0;rs){i=a;s=l}a=null;l=0}else{if(a===null){a=c}++l}}if(l>s){i=a;s=l}return{idx:i,len:s}}function serializeHost(r){if(typeof r==="number"){return serializeIPv4(r)}if(r instanceof Array){return"["+serializeIPv6(r)+"]"}return r}function trimControlChars(r){return r.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/g,"")}function trimTabAndNewline(r){return r.replace(/\u0009|\u000A|\u000D/g,"")}function shortenPath(r){const i=r.path;if(i.length===0){return}if(r.scheme==="file"&&i.length===1&&isNormalizedWindowsDriveLetter(i[0])){return}i.pop()}function includesCredentials(r){return r.username!==""||r.password!==""}function cannotHaveAUsernamePasswordPort(r){return r.host===null||r.host===""||r.cannotBeABaseURL||r.scheme==="file"}function isNormalizedWindowsDriveLetter(r){return/^[A-Za-z]:$/.test(r)}function URLStateMachine(r,i,s,l,c){this.pointer=0;this.input=r;this.base=i||null;this.encodingOverride=s||"utf-8";this.stateOverride=c;this.url=l;this.failure=false;this.parseError=false;if(!this.url){this.url={scheme:"",username:"",password:"",host:null,port:null,path:[],query:null,fragment:null,cannotBeABaseURL:false};const r=trimControlChars(this.input);if(r!==this.input){this.parseError=true}this.input=r}const p=trimTabAndNewline(this.input);if(p!==this.input){this.parseError=true}this.input=p;this.state=c||"scheme start";this.buffer="";this.atFlag=false;this.arrFlag=false;this.passwordTokenSeenFlag=false;this.input=a.ucs2.decode(this.input);for(;this.pointer<=this.input.length;++this.pointer){const r=this.input[this.pointer];const i=isNaN(r)?undefined:String.fromCodePoint(r);const s=this["parse "+this.state](r,i);if(!s){break}else if(s===d){this.failure=true;break}}}URLStateMachine.prototype["parse scheme start"]=function parseSchemeStart(r,i){if(isASCIIAlpha(r)){this.buffer+=i.toLowerCase();this.state="scheme"}else if(!this.stateOverride){this.state="no scheme";--this.pointer}else{this.parseError=true;return d}return true};URLStateMachine.prototype["parse scheme"]=function parseScheme(r,i){if(isASCIIAlphanumeric(r)||r===43||r===45||r===46){this.buffer+=i.toLowerCase()}else if(r===58){if(this.stateOverride){if(isSpecial(this.url)&&!isSpecialScheme(this.buffer)){return false}if(!isSpecial(this.url)&&isSpecialScheme(this.buffer)){return false}if((includesCredentials(this.url)||this.url.port!==null)&&this.buffer==="file"){return false}if(this.url.scheme==="file"&&(this.url.host===""||this.url.host===null)){return false}}this.url.scheme=this.buffer;this.buffer="";if(this.stateOverride){return false}if(this.url.scheme==="file"){if(this.input[this.pointer+1]!==47||this.input[this.pointer+2]!==47){this.parseError=true}this.state="file"}else if(isSpecial(this.url)&&this.base!==null&&this.base.scheme===this.url.scheme){this.state="special relative or authority"}else if(isSpecial(this.url)){this.state="special authority slashes"}else if(this.input[this.pointer+1]===47){this.state="path or authority";++this.pointer}else{this.url.cannotBeABaseURL=true;this.url.path.push("");this.state="cannot-be-a-base-URL path"}}else if(!this.stateOverride){this.buffer="";this.state="no scheme";this.pointer=-1}else{this.parseError=true;return d}return true};URLStateMachine.prototype["parse no scheme"]=function parseNoScheme(r){if(this.base===null||this.base.cannotBeABaseURL&&r!==35){return d}else if(this.base.cannotBeABaseURL&&r===35){this.url.scheme=this.base.scheme;this.url.path=this.base.path.slice();this.url.query=this.base.query;this.url.fragment="";this.url.cannotBeABaseURL=true;this.state="fragment"}else if(this.base.scheme==="file"){this.state="file";--this.pointer}else{this.state="relative";--this.pointer}return true};URLStateMachine.prototype["parse special relative or authority"]=function parseSpecialRelativeOrAuthority(r){if(r===47&&this.input[this.pointer+1]===47){this.state="special authority ignore slashes";++this.pointer}else{this.parseError=true;this.state="relative";--this.pointer}return true};URLStateMachine.prototype["parse path or authority"]=function parsePathOrAuthority(r){if(r===47){this.state="authority"}else{this.state="path";--this.pointer}return true};URLStateMachine.prototype["parse relative"]=function parseRelative(r){this.url.scheme=this.base.scheme;if(isNaN(r)){this.url.username=this.base.username;this.url.password=this.base.password;this.url.host=this.base.host;this.url.port=this.base.port;this.url.path=this.base.path.slice();this.url.query=this.base.query}else if(r===47){this.state="relative slash"}else if(r===63){this.url.username=this.base.username;this.url.password=this.base.password;this.url.host=this.base.host;this.url.port=this.base.port;this.url.path=this.base.path.slice();this.url.query="";this.state="query"}else if(r===35){this.url.username=this.base.username;this.url.password=this.base.password;this.url.host=this.base.host;this.url.port=this.base.port;this.url.path=this.base.path.slice();this.url.query=this.base.query;this.url.fragment="";this.state="fragment"}else if(isSpecial(this.url)&&r===92){this.parseError=true;this.state="relative slash"}else{this.url.username=this.base.username;this.url.password=this.base.password;this.url.host=this.base.host;this.url.port=this.base.port;this.url.path=this.base.path.slice(0,this.base.path.length-1);this.state="path";--this.pointer}return true};URLStateMachine.prototype["parse relative slash"]=function parseRelativeSlash(r){if(isSpecial(this.url)&&(r===47||r===92)){if(r===92){this.parseError=true}this.state="special authority ignore slashes"}else if(r===47){this.state="authority"}else{this.url.username=this.base.username;this.url.password=this.base.password;this.url.host=this.base.host;this.url.port=this.base.port;this.state="path";--this.pointer}return true};URLStateMachine.prototype["parse special authority slashes"]=function parseSpecialAuthoritySlashes(r){if(r===47&&this.input[this.pointer+1]===47){this.state="special authority ignore slashes";++this.pointer}else{this.parseError=true;this.state="special authority ignore slashes";--this.pointer}return true};URLStateMachine.prototype["parse special authority ignore slashes"]=function parseSpecialAuthorityIgnoreSlashes(r){if(r!==47&&r!==92){this.state="authority";--this.pointer}else{this.parseError=true}return true};URLStateMachine.prototype["parse authority"]=function parseAuthority(r,i){if(r===64){this.parseError=true;if(this.atFlag){this.buffer="%40"+this.buffer}this.atFlag=true;const r=countSymbols(this.buffer);for(let i=0;iMath.pow(2,16)-1){this.parseError=true;return d}this.url.port=r===defaultPort(this.url.scheme)?null:r;this.buffer=""}if(this.stateOverride){return false}this.state="path start";--this.pointer}else{this.parseError=true;return d}return true};const u=new Set([47,92,63,35]);URLStateMachine.prototype["parse file"]=function parseFile(r){this.url.scheme="file";if(r===47||r===92){if(r===92){this.parseError=true}this.state="file slash"}else if(this.base!==null&&this.base.scheme==="file"){if(isNaN(r)){this.url.host=this.base.host;this.url.path=this.base.path.slice();this.url.query=this.base.query}else if(r===63){this.url.host=this.base.host;this.url.path=this.base.path.slice();this.url.query="";this.state="query"}else if(r===35){this.url.host=this.base.host;this.url.path=this.base.path.slice();this.url.query=this.base.query;this.url.fragment="";this.state="fragment"}else{if(this.input.length-this.pointer-1===0||!isWindowsDriveLetterCodePoints(r,this.input[this.pointer+1])||this.input.length-this.pointer-1>=2&&!u.has(this.input[this.pointer+2])){this.url.host=this.base.host;this.url.path=this.base.path.slice();shortenPath(this.url)}else{this.parseError=true}this.state="path";--this.pointer}}else{this.state="path";--this.pointer}return true};URLStateMachine.prototype["parse file slash"]=function parseFileSlash(r){if(r===47||r===92){if(r===92){this.parseError=true}this.state="file host"}else{if(this.base!==null&&this.base.scheme==="file"){if(isNormalizedWindowsDriveLetterString(this.base.path[0])){this.url.path.push(this.base.path[0])}else{this.url.host=this.base.host}}this.state="path";--this.pointer}return true};URLStateMachine.prototype["parse file host"]=function parseFileHost(r,i){if(isNaN(r)||r===47||r===92||r===63||r===35){--this.pointer;if(!this.stateOverride&&isWindowsDriveLetterString(this.buffer)){this.parseError=true;this.state="path"}else if(this.buffer===""){this.url.host="";if(this.stateOverride){return false}this.state="path start"}else{let r=parseHost(this.buffer,isSpecial(this.url));if(r===d){return d}if(r==="localhost"){r=""}this.url.host=r;if(this.stateOverride){return false}this.buffer="";this.state="path start"}}else{this.buffer+=i}return true};URLStateMachine.prototype["parse path start"]=function parsePathStart(r){if(isSpecial(this.url)){if(r===92){this.parseError=true}this.state="path";if(r!==47&&r!==92){--this.pointer}}else if(!this.stateOverride&&r===63){this.url.query="";this.state="query"}else if(!this.stateOverride&&r===35){this.url.fragment="";this.state="fragment"}else if(r!==undefined){this.state="path";if(r!==47){--this.pointer}}return true};URLStateMachine.prototype["parse path"]=function parsePath(r){if(isNaN(r)||r===47||isSpecial(this.url)&&r===92||!this.stateOverride&&(r===63||r===35)){if(isSpecial(this.url)&&r===92){this.parseError=true}if(isDoubleDot(this.buffer)){shortenPath(this.url);if(r!==47&&!(isSpecial(this.url)&&r===92)){this.url.path.push("")}}else if(isSingleDot(this.buffer)&&r!==47&&!(isSpecial(this.url)&&r===92)){this.url.path.push("")}else if(!isSingleDot(this.buffer)){if(this.url.scheme==="file"&&this.url.path.length===0&&isWindowsDriveLetterString(this.buffer)){if(this.url.host!==""&&this.url.host!==null){this.parseError=true;this.url.host=""}this.buffer=this.buffer[0]+":"}this.url.path.push(this.buffer)}this.buffer="";if(this.url.scheme==="file"&&(r===undefined||r===63||r===35)){while(this.url.path.length>1&&this.url.path[0]===""){this.parseError=true;this.url.path.shift()}}if(r===63){this.url.query="";this.state="query"}if(r===35){this.url.fragment="";this.state="fragment"}}else{if(r===37&&(!isASCIIHex(this.input[this.pointer+1])||!isASCIIHex(this.input[this.pointer+2]))){this.parseError=true}this.buffer+=percentEncodeChar(r,isPathPercentEncode)}return true};URLStateMachine.prototype["parse cannot-be-a-base-URL path"]=function parseCannotBeABaseURLPath(r){if(r===63){this.url.query="";this.state="query"}else if(r===35){this.url.fragment="";this.state="fragment"}else{if(!isNaN(r)&&r!==37){this.parseError=true}if(r===37&&(!isASCIIHex(this.input[this.pointer+1])||!isASCIIHex(this.input[this.pointer+2]))){this.parseError=true}if(!isNaN(r)){this.url.path[0]=this.url.path[0]+percentEncodeChar(r,isC0ControlPercentEncode)}}return true};URLStateMachine.prototype["parse query"]=function parseQuery(r,i){if(isNaN(r)||!this.stateOverride&&r===35){if(!isSpecial(this.url)||this.url.scheme==="ws"||this.url.scheme==="wss"){this.encodingOverride="utf-8"}const i=new Buffer(this.buffer);for(let r=0;r126||i[r]===34||i[r]===35||i[r]===60||i[r]===62){this.url.query+=percentEncode(i[r])}else{this.url.query+=String.fromCodePoint(i[r])}}this.buffer="";if(r===35){this.url.fragment="";this.state="fragment"}}else{if(r===37&&(!isASCIIHex(this.input[this.pointer+1])||!isASCIIHex(this.input[this.pointer+2]))){this.parseError=true}this.buffer+=i}return true};URLStateMachine.prototype["parse fragment"]=function parseFragment(r){if(isNaN(r)){}else if(r===0){this.parseError=true}else{if(r===37&&(!isASCIIHex(this.input[this.pointer+1])||!isASCIIHex(this.input[this.pointer+2]))){this.parseError=true}this.url.fragment+=percentEncodeChar(r,isC0ControlPercentEncode)}return true};function serializeURL(r,i){let s=r.scheme+":";if(r.host!==null){s+="//";if(r.username!==""||r.password!==""){s+=r.username;if(r.password!==""){s+=":"+r.password}s+="@"}s+=serializeHost(r.host);if(r.port!==null){s+=":"+r.port}}else if(r.host===null&&r.scheme==="file"){s+="//"}if(r.cannotBeABaseURL){s+=r.path[0]}else{for(const i of r.path){s+="/"+i}}if(r.query!==null){s+="?"+r.query}if(!i&&r.fragment!==null){s+="#"+r.fragment}return s}function serializeOrigin(r){let i=r.scheme+"://";i+=serializeHost(r.host);if(r.port!==null){i+=":"+r.port}return i}r.exports.serializeURL=serializeURL;r.exports.serializeURLOrigin=function(i){switch(i.scheme){case"blob":try{return r.exports.serializeURLOrigin(r.exports.parseURL(i.path[0]))}catch(r){return"null"}case"ftp":case"gopher":case"http":case"https":case"ws":case"wss":return serializeOrigin({scheme:i.scheme,host:i.host,port:i.port});case"file":return"file://";default:return"null"}};r.exports.basicURLParse=function(r,i){if(i===undefined){i={}}const s=new URLStateMachine(r,i.baseURL,i.encodingOverride,i.url,i.stateOverride);if(s.failure){return"failure"}return s.url};r.exports.setTheUsername=function(r,i){r.username="";const s=a.ucs2.decode(i);for(let i=0;i{"use strict";r.exports.mixin=function mixin(r,i){const s=Object.getOwnPropertyNames(i);for(let a=0;a{r.exports=wrappy;function wrappy(r,i){if(r&&i)return wrappy(r)(i);if(typeof r!=="function")throw new TypeError("need wrapper function");Object.keys(r).forEach((function(i){wrapper[i]=r[i]}));return wrapper;function wrapper(){var i=new Array(arguments.length);for(var s=0;s{ -/** - * ZipStream - * - * @ignore - * @license [MIT]{@link https://github.com/archiverjs/node-zip-stream/blob/master/LICENSE} - * @copyright (c) 2014 Chris Talkington, contributors. - */ -var a=s(73837).inherits;var l=s(60122).ZipArchiveOutputStream;var c=s(60122).ZipArchiveEntry;var d=s(49199);var p=r.exports=function(r){if(!(this instanceof p)){return new p(r)}r=this.options=r||{};r.zlib=r.zlib||{};l.call(this,r);if(typeof r.level==="number"&&r.level>=0){r.zlib.level=r.level;delete r.level}if(!r.forceZip64&&typeof r.zlib.level==="number"&&r.zlib.level===0){r.store=true}r.namePrependSlash=r.namePrependSlash||false;if(r.comment&&r.comment.length>0){this.setComment(r.comment)}};a(p,l);p.prototype._normalizeFileData=function(r){r=d.defaults(r,{type:"file",name:null,namePrependSlash:this.options.namePrependSlash,linkname:null,date:null,mode:null,store:this.options.store,comment:""});var i=r.type==="directory";var s=r.type==="symlink";if(r.name){r.name=d.sanitizePath(r.name);if(!s&&r.name.slice(-1)==="/"){i=true;r.type="directory"}else if(i){r.name+="/"}}if(i||s){r.store=true}r.date=d.dateify(r.date);return r};p.prototype.entry=function(r,i,s){if(typeof s!=="function"){s=this._emitErrorCallback.bind(this)}i=this._normalizeFileData(i);if(i.type!=="file"&&i.type!=="directory"&&i.type!=="symlink"){s(new Error(i.type+" entries not currently supported"));return}if(typeof i.name!=="string"||i.name.length===0){s(new Error("entry name must be a non-empty string value"));return}if(i.type==="symlink"&&typeof i.linkname!=="string"){s(new Error("entry linkname must be a non-empty string value when type equals symlink"));return}var a=new c(i.name);a.setTime(i.date,this.options.forceLocalTime);if(i.namePrependSlash){a.setName(i.name,true)}if(i.store){a.setMethod(0)}if(i.comment.length>0){a.setComment(i.comment)}if(i.type==="symlink"&&typeof i.mode!=="number"){i.mode=40960}if(typeof i.mode==="number"){if(i.type==="symlink"){i.mode|=40960}a.setUnixMode(i.mode)}if(i.type==="symlink"&&typeof i.linkname==="string"){r=Buffer.from(i.linkname)}return l.prototype.entry.call(this,a,r,s)};p.prototype.finalize=function(){this.finish()}},893:module=>{module.exports=eval("require")("encoding")},39491:r=>{"use strict";r.exports=require("assert")},50852:r=>{"use strict";r.exports=require("async_hooks")},14300:r=>{"use strict";r.exports=require("buffer")},96206:r=>{"use strict";r.exports=require("console")},22057:r=>{"use strict";r.exports=require("constants")},6113:r=>{"use strict";r.exports=require("crypto")},67643:r=>{"use strict";r.exports=require("diagnostics_channel")},82361:r=>{"use strict";r.exports=require("events")},57147:r=>{"use strict";r.exports=require("fs")},73292:r=>{"use strict";r.exports=require("fs/promises")},13685:r=>{"use strict";r.exports=require("http")},85158:r=>{"use strict";r.exports=require("http2")},95687:r=>{"use strict";r.exports=require("https")},41808:r=>{"use strict";r.exports=require("net")},15673:r=>{"use strict";r.exports=require("node:events")},87561:r=>{"use strict";r.exports=require("node:fs")},93977:r=>{"use strict";r.exports=require("node:fs/promises")},88849:r=>{"use strict";r.exports=require("node:http")},22286:r=>{"use strict";r.exports=require("node:https")},70612:r=>{"use strict";r.exports=require("node:os")},49411:r=>{"use strict";r.exports=require("node:path")},97742:r=>{"use strict";r.exports=require("node:process")},84492:r=>{"use strict";r.exports=require("node:stream")},76915:r=>{"use strict";r.exports=require("node:string_decoder")},41041:r=>{"use strict";r.exports=require("node:url")},47261:r=>{"use strict";r.exports=require("node:util")},65628:r=>{"use strict";r.exports=require("node:zlib")},22037:r=>{"use strict";r.exports=require("os")},71017:r=>{"use strict";r.exports=require("path")},4074:r=>{"use strict";r.exports=require("perf_hooks")},85477:r=>{"use strict";r.exports=require("punycode")},63477:r=>{"use strict";r.exports=require("querystring")},12781:r=>{"use strict";r.exports=require("stream")},35356:r=>{"use strict";r.exports=require("stream/web")},71576:r=>{"use strict";r.exports=require("string_decoder")},24404:r=>{"use strict";r.exports=require("tls")},76224:r=>{"use strict";r.exports=require("tty")},57310:r=>{"use strict";r.exports=require("url")},73837:r=>{"use strict";r.exports=require("util")},29830:r=>{"use strict";r.exports=require("util/types")},71267:r=>{"use strict";r.exports=require("worker_threads")},59796:r=>{"use strict";r.exports=require("zlib")},18884:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.AbortError=void 0;class AbortError extends Error{constructor(r){super(r);this.name="AbortError"}}i.AbortError=AbortError},97237:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.AbortError=void 0;var a=s(18884);Object.defineProperty(i,"AbortError",{enumerable:true,get:function(){return a.AbortError}})},86686:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.AzureKeyCredential=void 0;class AzureKeyCredential{get key(){return this._key}constructor(r){if(!r){throw new Error("key must be a non-empty string")}this._key=r}update(r){this._key=r}}i.AzureKeyCredential=AzureKeyCredential},16640:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isNamedKeyCredential=i.AzureNamedKeyCredential=void 0;const a=s(5263);class AzureNamedKeyCredential{get key(){return this._key}get name(){return this._name}constructor(r,i){if(!r||!i){throw new TypeError("name and key must be non-empty strings")}this._name=r;this._key=i}update(r,i){if(!r||!i){throw new TypeError("newName and newKey must be non-empty strings")}this._name=r;this._key=i}}i.AzureNamedKeyCredential=AzureNamedKeyCredential;function isNamedKeyCredential(r){return(0,a.isObjectWithProperties)(r,["name","key"])&&typeof r.key==="string"&&typeof r.name==="string"}i.isNamedKeyCredential=isNamedKeyCredential},62:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isSASCredential=i.AzureSASCredential=void 0;const a=s(5263);class AzureSASCredential{get signature(){return this._signature}constructor(r){if(!r){throw new Error("shared access signature must be a non-empty string")}this._signature=r}update(r){if(!r){throw new Error("shared access signature must be a non-empty string")}this._signature=r}}i.AzureSASCredential=AzureSASCredential;function isSASCredential(r){return(0,a.isObjectWithProperties)(r,["signature"])&&typeof r.signature==="string"}i.isSASCredential=isSASCredential},45728:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isTokenCredential=i.isSASCredential=i.AzureSASCredential=i.isNamedKeyCredential=i.AzureNamedKeyCredential=i.isKeyCredential=i.AzureKeyCredential=void 0;var a=s(86686);Object.defineProperty(i,"AzureKeyCredential",{enumerable:true,get:function(){return a.AzureKeyCredential}});var l=s(15491);Object.defineProperty(i,"isKeyCredential",{enumerable:true,get:function(){return l.isKeyCredential}});var c=s(16640);Object.defineProperty(i,"AzureNamedKeyCredential",{enumerable:true,get:function(){return c.AzureNamedKeyCredential}});Object.defineProperty(i,"isNamedKeyCredential",{enumerable:true,get:function(){return c.isNamedKeyCredential}});var d=s(62);Object.defineProperty(i,"AzureSASCredential",{enumerable:true,get:function(){return d.AzureSASCredential}});Object.defineProperty(i,"isSASCredential",{enumerable:true,get:function(){return d.isSASCredential}});var p=s(43605);Object.defineProperty(i,"isTokenCredential",{enumerable:true,get:function(){return p.isTokenCredential}})},15491:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isKeyCredential=void 0;const a=s(5263);function isKeyCredential(r){return(0,a.isObjectWithProperties)(r,["key"])&&typeof r.key==="string"}i.isKeyCredential=isKeyCredential},43605:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isTokenCredential=void 0;function isTokenCredential(r){const i=r;return i&&typeof i.getToken==="function"&&(i.signRequest===undefined||i.getToken.length>0)}i.isTokenCredential=isTokenCredential},45113:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.authorizeRequestOnClaimChallenge=i.parseCAEChallenge=void 0;const a=s(75659);const l=s(9604);function parseCAEChallenge(r){const i=`, ${r.trim()}`.split(", Bearer ").filter((r=>r));return i.map((r=>{const i=`${r.trim()}, `.split('", ').filter((r=>r));const s=i.map((r=>(([r,i])=>({[r]:i}))(r.trim().split('="'))));return s.reduce(((r,i)=>Object.assign(Object.assign({},r),i)),{})}))}i.parseCAEChallenge=parseCAEChallenge;async function authorizeRequestOnClaimChallenge(r){const{scopes:i,response:s}=r;const c=r.logger||a.logger;const d=s.headers.get("WWW-Authenticate");if(!d){c.info(`The WWW-Authenticate header was missing. Failed to perform the Continuous Access Evaluation authentication flow.`);return false}const p=parseCAEChallenge(d)||[];const A=p.find((r=>r.claims));if(!A){c.info(`The WWW-Authenticate header was missing the necessary "claims" to perform the Continuous Access Evaluation authentication flow.`);return false}const u=await r.getAccessToken(A.scope?[A.scope]:i,{claims:(0,l.decodeStringToString)(A.claims)});if(!u){return false}r.request.headers.set("Authorization",`Bearer ${u.token}`);return true}i.authorizeRequestOnClaimChallenge=authorizeRequestOnClaimChallenge},4096:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.authorizeRequestOnTenantChallenge=void 0;const s={DefaultScope:"/.default",HeaderConstants:{AUTHORIZATION:"authorization"}};function isUuid(r){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(r)}const authorizeRequestOnTenantChallenge=async r=>{const i=requestToOptions(r.request);const a=getChallenge(r.response);if(a){const l=parseChallenge(a);const c=buildScopes(r,l);const d=extractTenantId(l);if(!d){return false}const p=await r.getAccessToken(c,Object.assign(Object.assign({},i),{tenantId:d}));if(!p){return false}r.request.headers.set(s.HeaderConstants.AUTHORIZATION,`Bearer ${p.token}`);return true}return false};i.authorizeRequestOnTenantChallenge=authorizeRequestOnTenantChallenge;function extractTenantId(r){const i=new URL(r.authorization_uri);const s=i.pathname.split("/");const a=s[1];if(a&&isUuid(a)){return a}return undefined}function buildScopes(r,i){if(!i.resource_id){return r.scopes}const a=new URL(i.resource_id);a.pathname=s.DefaultScope;let l=a.toString();if(l==="https://disk.azure.com/.default"){l="https://disk.azure.com//.default"}return[l]}function getChallenge(r){const i=r.headers.get("WWW-Authenticate");if(r.status===401&&i){return i}return}function parseChallenge(r){const i=r.slice("Bearer ".length);const s=`${i.trim()} `.split(" ").filter((r=>r));const a=s.map((r=>(([r,i])=>({[r]:i}))(r.trim().split("="))));return a.reduce(((r,i)=>Object.assign(Object.assign({},r),i)),{})}function requestToOptions(r){return{abortSignal:r.abortSignal,requestOptions:{timeout:r.timeout},tracingOptions:r.tracingOptions}}},9604:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.decodeStringToString=i.decodeString=i.encodeByteArray=i.encodeString=void 0;function encodeString(r){return Buffer.from(r).toString("base64")}i.encodeString=encodeString;function encodeByteArray(r){const i=r instanceof Buffer?r:Buffer.from(r.buffer);return i.toString("base64")}i.encodeByteArray=encodeByteArray;function decodeString(r){return Buffer.from(r,"base64")}i.decodeString=decodeString;function decodeStringToString(r){return Buffer.from(r,"base64").toString()}i.decodeStringToString=decodeStringToString},94593:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.deserializationPolicy=i.deserializationPolicyName=void 0;const a=s(39946);const l=s(94417);const c=s(34887);const d=s(35525);const p=["application/json","text/json"];const A=["application/xml","application/atom+xml"];i.deserializationPolicyName="deserializationPolicy";function deserializationPolicy(r={}){var s,l,c,d,u,h,g;const y=(l=(s=r.expectedContentTypes)===null||s===void 0?void 0:s.json)!==null&&l!==void 0?l:p;const b=(d=(c=r.expectedContentTypes)===null||c===void 0?void 0:c.xml)!==null&&d!==void 0?d:A;const C=r.parseXML;const B=r.serializerOptions;const I={xml:{rootName:(u=B===null||B===void 0?void 0:B.xml.rootName)!==null&&u!==void 0?u:"",includeRoot:(h=B===null||B===void 0?void 0:B.xml.includeRoot)!==null&&h!==void 0?h:false,xmlCharKey:(g=B===null||B===void 0?void 0:B.xml.xmlCharKey)!==null&&g!==void 0?g:a.XML_CHARKEY}};return{name:i.deserializationPolicyName,async sendRequest(r,i){const s=await i(r);return deserializeResponseBody(y,b,s,I,C)}}}i.deserializationPolicy=deserializationPolicy;function getOperationResponseMap(r){let i;const s=r.request;const a=(0,d.getOperationRequestInfo)(s);const l=a===null||a===void 0?void 0:a.operationSpec;if(l){if(!(a===null||a===void 0?void 0:a.operationResponseGetter)){i=l.responses[r.status]}else{i=a===null||a===void 0?void 0:a.operationResponseGetter(l,r)}}return i}function shouldDeserializeResponse(r){const i=r.request;const s=(0,d.getOperationRequestInfo)(i);const a=s===null||s===void 0?void 0:s.shouldDeserialize;let l;if(a===undefined){l=true}else if(typeof a==="boolean"){l=a}else{l=a(r)}return l}async function deserializeResponseBody(r,i,s,a,p){const A=await parse(r,i,s,a,p);if(!shouldDeserializeResponse(A)){return A}const u=(0,d.getOperationRequestInfo)(A.request);const h=u===null||u===void 0?void 0:u.operationSpec;if(!h||!h.responses){return A}const g=getOperationResponseMap(A);const{error:y,shouldReturnResponse:b}=handleErrorResponse(A,h,g,a);if(y){throw y}else if(b){return A}if(g){if(g.bodyMapper){let r=A.parsedBody;if(h.isXML&&g.bodyMapper.type.name===c.MapperTypeNames.Sequence){r=typeof r==="object"?r[g.bodyMapper.xmlElementName]:[]}try{A.parsedBody=h.serializer.deserialize(g.bodyMapper,r,"operationRes.parsedBody",a)}catch(r){const i=new l.RestError(`Error ${r} occurred in deserializing the responseBody - ${A.bodyAsText}`,{statusCode:A.status,request:A.request,response:A});throw i}}else if(h.httpMethod==="HEAD"){A.parsedBody=s.status>=200&&s.status<300}if(g.headersMapper){A.parsedHeaders=h.serializer.deserialize(g.headersMapper,A.headers.toJSON(),"operationRes.parsedHeaders",{xml:{},ignoreUnknownProperties:true})}}return A}function isOperationSpecEmpty(r){const i=Object.keys(r.responses);return i.length===0||i.length===1&&i[0]==="default"}function handleErrorResponse(r,i,s,a){var d;const p=200<=r.status&&r.status<300;const A=isOperationSpecEmpty(i)?p:!!s;if(A){if(s){if(!s.isError){return{error:null,shouldReturnResponse:false}}}else{return{error:null,shouldReturnResponse:false}}}const u=s!==null&&s!==void 0?s:i.responses.default;const h=((d=r.request.streamResponseStatusCodes)===null||d===void 0?void 0:d.has(r.status))?`Unexpected status code: ${r.status}`:r.bodyAsText;const g=new l.RestError(h,{statusCode:r.status,request:r.request,response:r});if(!u){throw g}const y=u.bodyMapper;const b=u.headersMapper;try{if(r.parsedBody){const s=r.parsedBody;let l;if(y){let r=s;if(i.isXML&&y.type.name===c.MapperTypeNames.Sequence){r=[];const i=y.xmlElementName;if(typeof s==="object"&&i){r=s[i]}}l=i.serializer.deserialize(y,r,"error.response.parsedBody",a)}const d=s.error||l||s;g.code=d.code;if(d.message){g.message=d.message}if(y){g.response.parsedBody=l}}if(r.headers&&b){g.response.parsedHeaders=i.serializer.deserialize(b,r.headers.toJSON(),"operationRes.parsedHeaders")}}catch(i){g.message=`Error "${i.message}" occurred in deserializing the responseBody - "${r.bodyAsText}" for the default response.`}return{error:g,shouldReturnResponse:false}}async function parse(r,i,s,a,c){var d;if(!((d=s.request.streamResponseStatusCodes)===null||d===void 0?void 0:d.has(s.status))&&s.bodyAsText){const d=s.bodyAsText;const p=s.headers.get("Content-Type")||"";const A=!p?[]:p.split(";").map((r=>r.toLowerCase()));try{if(A.length===0||A.some((i=>r.indexOf(i)!==-1))){s.parsedBody=JSON.parse(d);return s}else if(A.some((r=>i.indexOf(r)!==-1))){if(!c){throw new Error("Parsing XML not supported.")}const r=await c(d,a.xml);s.parsedBody=r;return s}}catch(r){const i=`Error "${r}" occurred while parsing the response body - ${s.bodyAsText}.`;const a=r.code||l.RestError.PARSE_ERROR;const c=new l.RestError(i,{code:a,statusCode:s.status,request:s.request,response:s});throw c}}return s}},83072:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getCachedDefaultHttpClient=void 0;const a=s(94417);let l;function getCachedDefaultHttpClient(){if(!l){l=(0,a.createDefaultHttpClient)()}return l}i.getCachedDefaultHttpClient=getCachedDefaultHttpClient},51285:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.authorizeRequestOnTenantChallenge=i.authorizeRequestOnClaimChallenge=i.serializationPolicyName=i.serializationPolicy=i.deserializationPolicyName=i.deserializationPolicy=i.XML_CHARKEY=i.XML_ATTRKEY=i.createClientPipeline=i.ServiceClient=i.MapperTypeNames=i.createSerializer=void 0;var a=s(34887);Object.defineProperty(i,"createSerializer",{enumerable:true,get:function(){return a.createSerializer}});Object.defineProperty(i,"MapperTypeNames",{enumerable:true,get:function(){return a.MapperTypeNames}});var l=s(95729);Object.defineProperty(i,"ServiceClient",{enumerable:true,get:function(){return l.ServiceClient}});var c=s(96854);Object.defineProperty(i,"createClientPipeline",{enumerable:true,get:function(){return c.createClientPipeline}});var d=s(39946);Object.defineProperty(i,"XML_ATTRKEY",{enumerable:true,get:function(){return d.XML_ATTRKEY}});Object.defineProperty(i,"XML_CHARKEY",{enumerable:true,get:function(){return d.XML_CHARKEY}});var p=s(94593);Object.defineProperty(i,"deserializationPolicy",{enumerable:true,get:function(){return p.deserializationPolicy}});Object.defineProperty(i,"deserializationPolicyName",{enumerable:true,get:function(){return p.deserializationPolicyName}});var A=s(93156);Object.defineProperty(i,"serializationPolicy",{enumerable:true,get:function(){return A.serializationPolicy}});Object.defineProperty(i,"serializationPolicyName",{enumerable:true,get:function(){return A.serializationPolicyName}});var u=s(45113);Object.defineProperty(i,"authorizeRequestOnClaimChallenge",{enumerable:true,get:function(){return u.authorizeRequestOnClaimChallenge}});var h=s(4096);Object.defineProperty(i,"authorizeRequestOnTenantChallenge",{enumerable:true,get:function(){return h.authorizeRequestOnTenantChallenge}})},40153:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getPathStringFromParameter=i.getStreamingResponseStatusCodes=void 0;const a=s(34887);function getStreamingResponseStatusCodes(r){const i=new Set;for(const s in r.responses){const l=r.responses[s];if(l.bodyMapper&&l.bodyMapper.type.name===a.MapperTypeNames.Stream){i.add(Number(s))}}return i}i.getStreamingResponseStatusCodes=getStreamingResponseStatusCodes;function getPathStringFromParameter(r){const{parameterPath:i,mapper:s}=r;let a;if(typeof i==="string"){a=i}else if(Array.isArray(i)){a=i.join(".")}else{a=s.serializedName}return a}i.getPathStringFromParameter=getPathStringFromParameter},39946:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.XML_CHARKEY=i.XML_ATTRKEY=void 0;i.XML_ATTRKEY="$";i.XML_CHARKEY="_"},75659:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.logger=void 0;const a=s(44274);i.logger=(0,a.createClientLogger)("core-client")},35525:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getOperationRequestInfo=i.getOperationArgumentValueFromParameter=void 0;const a=s(33971);function getOperationArgumentValueFromParameter(r,i,s){let a=i.parameterPath;const l=i.mapper;let c;if(typeof a==="string"){a=[a]}if(Array.isArray(a)){if(a.length>0){if(l.isConstant){c=l.defaultValue}else{let i=getPropertyFromParameterPath(r,a);if(!i.propertyFound&&s){i=getPropertyFromParameterPath(s,a)}let d=false;if(!i.propertyFound){d=l.required||a[0]==="options"&&a.length===2}c=d?l.defaultValue:i.propertyValue}}}else{if(l.required){c={}}for(const i in a){const d=l.type.modelProperties[i];const p=a[i];const A=getOperationArgumentValueFromParameter(r,{parameterPath:p,mapper:d},s);if(A!==undefined){if(!c){c={}}c[i]=A}}}return c}i.getOperationArgumentValueFromParameter=getOperationArgumentValueFromParameter;function getPropertyFromParameterPath(r,i){const s={propertyFound:false};let a=0;for(;a{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createClientPipeline=void 0;const a=s(94593);const l=s(94417);const c=s(93156);function createClientPipeline(r={}){const i=(0,l.createPipelineFromOptions)(r!==null&&r!==void 0?r:{});if(r.credentialOptions){i.addPolicy((0,l.bearerTokenAuthenticationPolicy)({credential:r.credentialOptions.credential,scopes:r.credentialOptions.credentialScopes}))}i.addPolicy((0,c.serializationPolicy)(r.serializationOptions),{phase:"Serialize"});i.addPolicy((0,a.deserializationPolicy)(r.deserializationOptions),{phase:"Deserialize"});return i}i.createClientPipeline=createClientPipeline},93156:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.serializeRequestBody=i.serializeHeaders=i.serializationPolicy=i.serializationPolicyName=void 0;const a=s(39946);const l=s(35525);const c=s(34887);const d=s(40153);i.serializationPolicyName="serializationPolicy";function serializationPolicy(r={}){const s=r.stringifyXML;return{name:i.serializationPolicyName,async sendRequest(r,i){const a=(0,l.getOperationRequestInfo)(r);const c=a===null||a===void 0?void 0:a.operationSpec;const d=a===null||a===void 0?void 0:a.operationArguments;if(c&&d){serializeHeaders(r,d,c);serializeRequestBody(r,d,c,s)}return i(r)}}}i.serializationPolicy=serializationPolicy;function serializeHeaders(r,i,s){var a,c;if(s.headerParameters){for(const a of s.headerParameters){let c=(0,l.getOperationArgumentValueFromParameter)(i,a);if(c!==null&&c!==undefined||a.mapper.required){c=s.serializer.serialize(a.mapper,c,(0,d.getPathStringFromParameter)(a));const i=a.mapper.headerCollectionPrefix;if(i){for(const s of Object.keys(c)){r.headers.set(i+s,c[s])}}else{r.headers.set(a.mapper.serializedName||(0,d.getPathStringFromParameter)(a),c)}}}}const p=(c=(a=i.options)===null||a===void 0?void 0:a.requestOptions)===null||c===void 0?void 0:c.customHeaders;if(p){for(const i of Object.keys(p)){r.headers.set(i,p[i])}}}i.serializeHeaders=serializeHeaders;function serializeRequestBody(r,i,s,p=function(){throw new Error("XML serialization unsupported!")}){var A,u,h,g,y;const b=(A=i.options)===null||A===void 0?void 0:A.serializerOptions;const C={xml:{rootName:(u=b===null||b===void 0?void 0:b.xml.rootName)!==null&&u!==void 0?u:"",includeRoot:(h=b===null||b===void 0?void 0:b.xml.includeRoot)!==null&&h!==void 0?h:false,xmlCharKey:(g=b===null||b===void 0?void 0:b.xml.xmlCharKey)!==null&&g!==void 0?g:a.XML_CHARKEY}};const B=C.xml.xmlCharKey;if(s.requestBody&&s.requestBody.mapper){r.body=(0,l.getOperationArgumentValueFromParameter)(i,s.requestBody);const a=s.requestBody.mapper;const{required:A,serializedName:u,xmlName:h,xmlElementName:g,xmlNamespace:b,xmlNamespacePrefix:I,nullable:w}=a;const v=a.type.name;try{if(r.body!==undefined&&r.body!==null||w&&r.body===null||A){const i=(0,d.getPathStringFromParameter)(s.requestBody);r.body=s.serializer.serialize(a,r.body,i,C);const l=v===c.MapperTypeNames.Stream;if(s.isXML){const i=I?`xmlns:${I}`:"xmlns";const s=getXmlValueWithNamespace(b,i,v,r.body,C);if(v===c.MapperTypeNames.Sequence){r.body=p(prepareXMLRootList(s,g||h||u,i,b),{rootName:h||u,xmlCharKey:B})}else if(!l){r.body=p(s,{rootName:h||u,xmlCharKey:B})}}else if(v===c.MapperTypeNames.String&&(((y=s.contentType)===null||y===void 0?void 0:y.match("text/plain"))||s.mediaType==="text")){return}else if(!l){r.body=JSON.stringify(r.body)}}}catch(r){throw new Error(`Error "${r.message}" occurred in serializing the payload - ${JSON.stringify(u,undefined," ")}.`)}}else if(s.formDataParameters&&s.formDataParameters.length>0){r.formData={};for(const a of s.formDataParameters){const c=(0,l.getOperationArgumentValueFromParameter)(i,a);if(c!==undefined&&c!==null){const i=a.mapper.serializedName||(0,d.getPathStringFromParameter)(a);r.formData[i]=s.serializer.serialize(a.mapper,c,(0,d.getPathStringFromParameter)(a),C)}}}}i.serializeRequestBody=serializeRequestBody;function getXmlValueWithNamespace(r,i,s,l,c){if(r&&!["Composite","Sequence","Dictionary"].includes(s)){const s={};s[c.xml.xmlCharKey]=l;s[a.XML_ATTRKEY]={[i]:r};return s}return l}function prepareXMLRootList(r,i,s,l){if(!Array.isArray(r)){r=[r]}if(!s||!l){return{[i]:r}}const c={[i]:r};c[a.XML_ATTRKEY]={[s]:l};return c}},34887:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.MapperTypeNames=i.createSerializer=void 0;const a=s(59826);const l=a.__importStar(s(9604));const c=s(39946);const d=s(79222);class SerializerImpl{constructor(r={},i=false){this.modelMappers=r;this.isXML=i}validateConstraints(r,i,s){const failValidation=(r,a)=>{throw new Error(`"${s}" with value "${i}" should satisfy the constraint "${r}": ${a}.`)};if(r.constraints&&i!==undefined&&i!==null){const{ExclusiveMaximum:s,ExclusiveMinimum:a,InclusiveMaximum:l,InclusiveMinimum:c,MaxItems:d,MaxLength:p,MinItems:A,MinLength:u,MultipleOf:h,Pattern:g,UniqueItems:y}=r.constraints;if(s!==undefined&&i>=s){failValidation("ExclusiveMaximum",s)}if(a!==undefined&&i<=a){failValidation("ExclusiveMinimum",a)}if(l!==undefined&&i>l){failValidation("InclusiveMaximum",l)}if(c!==undefined&&id){failValidation("MaxItems",d)}if(p!==undefined&&i.length>p){failValidation("MaxLength",p)}if(A!==undefined&&i.lengths.indexOf(r)!==i))){failValidation("UniqueItems",y)}}}serialize(r,i,s,a={xml:{}}){var l,d,p;const A={xml:{rootName:(l=a.xml.rootName)!==null&&l!==void 0?l:"",includeRoot:(d=a.xml.includeRoot)!==null&&d!==void 0?d:false,xmlCharKey:(p=a.xml.xmlCharKey)!==null&&p!==void 0?p:c.XML_CHARKEY}};let u={};const h=r.type.name;if(!s){s=r.serializedName}if(h.match(/^Sequence$/i)!==null){u=[]}if(r.isConstant){i=r.defaultValue}const{required:g,nullable:y}=r;if(g&&y&&i===undefined){throw new Error(`${s} cannot be undefined.`)}if(g&&!y&&(i===undefined||i===null)){throw new Error(`${s} cannot be null or undefined.`)}if(!g&&y===false&&i===null){throw new Error(`${s} cannot be null.`)}if(i===undefined||i===null){u=i}else{if(h.match(/^any$/i)!==null){u=i}else if(h.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)!==null){u=serializeBasicTypes(h,s,i)}else if(h.match(/^Enum$/i)!==null){const a=r;u=serializeEnumType(s,a.type.allowedValues,i)}else if(h.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)!==null){u=serializeDateTypes(h,i,s)}else if(h.match(/^ByteArray$/i)!==null){u=serializeByteArrayType(s,i)}else if(h.match(/^Base64Url$/i)!==null){u=serializeBase64UrlType(s,i)}else if(h.match(/^Sequence$/i)!==null){u=serializeSequenceType(this,r,i,s,Boolean(this.isXML),A)}else if(h.match(/^Dictionary$/i)!==null){u=serializeDictionaryType(this,r,i,s,Boolean(this.isXML),A)}else if(h.match(/^Composite$/i)!==null){u=serializeCompositeType(this,r,i,s,Boolean(this.isXML),A)}}return u}deserialize(r,i,s,a={xml:{}}){var d,p,A,u;const h={xml:{rootName:(d=a.xml.rootName)!==null&&d!==void 0?d:"",includeRoot:(p=a.xml.includeRoot)!==null&&p!==void 0?p:false,xmlCharKey:(A=a.xml.xmlCharKey)!==null&&A!==void 0?A:c.XML_CHARKEY},ignoreUnknownProperties:(u=a.ignoreUnknownProperties)!==null&&u!==void 0?u:false};if(i===undefined||i===null){if(this.isXML&&r.type.name==="Sequence"&&!r.xmlIsWrapped){i=[]}if(r.defaultValue!==undefined){i=r.defaultValue}return i}let g;const y=r.type.name;if(!s){s=r.serializedName}if(y.match(/^Composite$/i)!==null){g=deserializeCompositeType(this,r,i,s,h)}else{if(this.isXML){const r=h.xml.xmlCharKey;if(i[c.XML_ATTRKEY]!==undefined&&i[r]!==undefined){i=i[r]}}if(y.match(/^Number$/i)!==null){g=parseFloat(i);if(isNaN(g)){g=i}}else if(y.match(/^Boolean$/i)!==null){if(i==="true"){g=true}else if(i==="false"){g=false}else{g=i}}else if(y.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)!==null){g=i}else if(y.match(/^(Date|DateTime|DateTimeRfc1123)$/i)!==null){g=new Date(i)}else if(y.match(/^UnixTime$/i)!==null){g=unixTimeToDate(i)}else if(y.match(/^ByteArray$/i)!==null){g=l.decodeString(i)}else if(y.match(/^Base64Url$/i)!==null){g=base64UrlToByteArray(i)}else if(y.match(/^Sequence$/i)!==null){g=deserializeSequenceType(this,r,i,s,h)}else if(y.match(/^Dictionary$/i)!==null){g=deserializeDictionaryType(this,r,i,s,h)}}if(r.isConstant){g=r.defaultValue}return g}}function createSerializer(r={},i=false){return new SerializerImpl(r,i)}i.createSerializer=createSerializer;function trimEnd(r,i){let s=r.length;while(s-1>=0&&r[s-1]===i){--s}return r.substr(0,s)}function bufferToBase64Url(r){if(!r){return undefined}if(!(r instanceof Uint8Array)){throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`)}const i=l.encodeByteArray(r);return trimEnd(i,"=").replace(/\+/g,"-").replace(/\//g,"_")}function base64UrlToByteArray(r){if(!r){return undefined}if(r&&typeof r.valueOf()!=="string"){throw new Error("Please provide an input of type string for converting to Uint8Array")}r=r.replace(/-/g,"+").replace(/_/g,"/");return l.decodeString(r)}function splitSerializeName(r){const i=[];let s="";if(r){const a=r.split(".");for(const r of a){if(r.charAt(r.length-1)==="\\"){s+=r.substr(0,r.length-1)+"."}else{s+=r;i.push(s);s=""}}}return i}function dateToUnixTime(r){if(!r){return undefined}if(typeof r.valueOf()==="string"){r=new Date(r)}return Math.floor(r.getTime()/1e3)}function unixTimeToDate(r){if(!r){return undefined}return new Date(r*1e3)}function serializeBasicTypes(r,i,s){if(s!==null&&s!==undefined){if(r.match(/^Number$/i)!==null){if(typeof s!=="number"){throw new Error(`${i} with value ${s} must be of type number.`)}}else if(r.match(/^String$/i)!==null){if(typeof s.valueOf()!=="string"){throw new Error(`${i} with value "${s}" must be of type string.`)}}else if(r.match(/^Uuid$/i)!==null){if(!(typeof s.valueOf()==="string"&&(0,d.isValidUuid)(s))){throw new Error(`${i} with value "${s}" must be of type string and a valid uuid.`)}}else if(r.match(/^Boolean$/i)!==null){if(typeof s!=="boolean"){throw new Error(`${i} with value ${s} must be of type boolean.`)}}else if(r.match(/^Stream$/i)!==null){const r=typeof s;if(r!=="string"&&typeof s.pipe!=="function"&&typeof s.tee!=="function"&&!(s instanceof ArrayBuffer)&&!ArrayBuffer.isView(s)&&!((typeof Blob==="function"||typeof Blob==="object")&&s instanceof Blob)&&r!=="function"){throw new Error(`${i} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}}return s}function serializeEnumType(r,i,s){if(!i){throw new Error(`Please provide a set of allowedValues to validate ${r} as an Enum Type.`)}const a=i.some((r=>{if(typeof r.valueOf()==="string"){return r.toLowerCase()===s.toLowerCase()}return r===s}));if(!a){throw new Error(`${s} is not a valid value for ${r}. The valid values are: ${JSON.stringify(i)}.`)}return s}function serializeByteArrayType(r,i){if(i!==undefined&&i!==null){if(!(i instanceof Uint8Array)){throw new Error(`${r} must be of type Uint8Array.`)}i=l.encodeByteArray(i)}return i}function serializeBase64UrlType(r,i){if(i!==undefined&&i!==null){if(!(i instanceof Uint8Array)){throw new Error(`${r} must be of type Uint8Array.`)}i=bufferToBase64Url(i)}return i}function serializeDateTypes(r,i,s){if(i!==undefined&&i!==null){if(r.match(/^Date$/i)!==null){if(!(i instanceof Date||typeof i.valueOf()==="string"&&!isNaN(Date.parse(i)))){throw new Error(`${s} must be an instanceof Date or a string in ISO8601 format.`)}i=i instanceof Date?i.toISOString().substring(0,10):new Date(i).toISOString().substring(0,10)}else if(r.match(/^DateTime$/i)!==null){if(!(i instanceof Date||typeof i.valueOf()==="string"&&!isNaN(Date.parse(i)))){throw new Error(`${s} must be an instanceof Date or a string in ISO8601 format.`)}i=i instanceof Date?i.toISOString():new Date(i).toISOString()}else if(r.match(/^DateTimeRfc1123$/i)!==null){if(!(i instanceof Date||typeof i.valueOf()==="string"&&!isNaN(Date.parse(i)))){throw new Error(`${s} must be an instanceof Date or a string in RFC-1123 format.`)}i=i instanceof Date?i.toUTCString():new Date(i).toUTCString()}else if(r.match(/^UnixTime$/i)!==null){if(!(i instanceof Date||typeof i.valueOf()==="string"&&!isNaN(Date.parse(i)))){throw new Error(`${s} must be an instanceof Date or a string in RFC-1123/ISO8601 format `+`for it to be serialized in UnixTime/Epoch format.`)}i=dateToUnixTime(i)}else if(r.match(/^TimeSpan$/i)!==null){if(!(0,d.isDuration)(i)){throw new Error(`${s} must be a string in ISO 8601 format. Instead was "${i}".`)}}}return i}function serializeSequenceType(r,i,s,a,l,d){var p;if(!Array.isArray(s)){throw new Error(`${a} must be of type Array.`)}let A=i.type.element;if(!A||typeof A!=="object"){throw new Error(`element" metadata for an Array must be defined in the `+`mapper and it must of type "object" in ${a}.`)}if(A.type.name==="Composite"&&A.type.className){A=(p=r.modelMappers[A.type.className])!==null&&p!==void 0?p:A}const u=[];for(let i=0;ir!==l));if(c){p[l]=r.serialize(u,s[l],a+'["'+l+'"]',d)}}}return p}return s}function getXmlObjectValue(r,i,s,a){if(!s||!r.xmlNamespace){return i}const l=r.xmlNamespacePrefix?`xmlns:${r.xmlNamespacePrefix}`:"xmlns";const d={[l]:r.xmlNamespace};if(["Composite"].includes(r.type.name)){if(i[c.XML_ATTRKEY]){return i}else{const r=Object.assign({},i);r[c.XML_ATTRKEY]=d;return r}}const p={};p[a.xml.xmlCharKey]=i;p[c.XML_ATTRKEY]=d;return p}function isSpecialXmlProperty(r,i){return[c.XML_ATTRKEY,i.xml.xmlCharKey].includes(r)}function deserializeCompositeType(r,i,s,a,l){var d,p;const A=(d=l.xml.xmlCharKey)!==null&&d!==void 0?d:c.XML_CHARKEY;if(getPolymorphicDiscriminatorRecursively(r,i)){i=getPolymorphicMapper(r,i,s,"serializedName")}const u=resolveModelProperties(r,i,a);let h={};const g=[];for(const d of Object.keys(u)){const y=u[d];const b=splitSerializeName(u[d].serializedName);g.push(b[0]);const{serializedName:C,xmlName:B,xmlElementName:I}=y;let w=a;if(C!==""&&C!==undefined){w=a+"."+C}const v=y.headerCollectionPrefix;if(v){const i={};for(const a of Object.keys(s)){if(a.startsWith(v)){i[a.substring(v.length)]=r.deserialize(y.type.value,s[a],w,l)}g.push(a)}h[d]=i}else if(r.isXML){if(y.xmlIsAttribute&&s[c.XML_ATTRKEY]){h[d]=r.deserialize(y,s[c.XML_ATTRKEY][B],w,l)}else if(y.xmlIsMsText){if(s[A]!==undefined){h[d]=s[A]}else if(typeof s==="string"){h[d]=s}}else{const i=I||B||C;if(y.xmlIsWrapped){const i=s[B];const a=(p=i===null||i===void 0?void 0:i[I])!==null&&p!==void 0?p:[];h[d]=r.deserialize(y,a,w,l);g.push(B)}else{const a=s[i];h[d]=r.deserialize(y,a,w,l);g.push(i)}}}else{let a;let c=s;let p=0;for(const r of b){if(!c)break;p++;c=c[r]}if(c===null&&p{for(const i in u){const s=splitSerializeName(u[i].serializedName);if(s[0]===r){return false}}return true};for(const i in s){if(isAdditionalProperty(i)){h[i]=r.deserialize(y,s[i],a+'["'+i+'"]',l)}}}else if(s&&!l.ignoreUnknownProperties){for(const r of Object.keys(s)){if(h[r]===undefined&&!g.includes(r)&&!isSpecialXmlProperty(r,l)){h[r]=s[r]}}}return h}function deserializeDictionaryType(r,i,s,a,l){const c=i.type.value;if(!c||typeof c!=="object"){throw new Error(`"value" metadata for a Dictionary must be defined in the `+`mapper and it must of type "object" in ${a}`)}if(s){const i={};for(const d of Object.keys(s)){i[d]=r.deserialize(c,s[d],a,l)}return i}return s}function deserializeSequenceType(r,i,s,a,l){var c;let d=i.type.element;if(!d||typeof d!=="object"){throw new Error(`element" metadata for an Array must be defined in the `+`mapper and it must of type "object" in ${a}`)}if(s){if(!Array.isArray(s)){s=[s]}if(d.type.name==="Composite"&&d.type.className){d=(c=r.modelMappers[d.type.className])!==null&&c!==void 0?c:d}const i=[];for(let c=0;c{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ServiceClient=void 0;const a=s(94417);const l=s(96854);const c=s(79222);const d=s(83072);const p=s(35525);const A=s(41707);const u=s(40153);const h=s(75659);class ServiceClient{constructor(r={}){var i,s;this._requestContentType=r.requestContentType;this._endpoint=(i=r.endpoint)!==null&&i!==void 0?i:r.baseUri;if(r.baseUri){h.logger.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead.")}this._allowInsecureConnection=r.allowInsecureConnection;this._httpClient=r.httpClient||(0,d.getCachedDefaultHttpClient)();this.pipeline=r.pipeline||createDefaultPipeline(r);if((s=r.additionalPolicies)===null||s===void 0?void 0:s.length){for(const{policy:i,position:s}of r.additionalPolicies){const r=s==="perRetry"?"Sign":undefined;this.pipeline.addPolicy(i,{afterPhase:r})}}}async sendRequest(r){return this.pipeline.sendRequest(this._httpClient,r)}async sendOperationRequest(r,i){const s=i.baseUrl||this._endpoint;if(!s){throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.")}const l=(0,A.getRequestUrl)(s,i,r,this);const d=(0,a.createPipelineRequest)({url:l});d.method=i.httpMethod;const h=(0,p.getOperationRequestInfo)(d);h.operationSpec=i;h.operationArguments=r;const g=i.contentType||this._requestContentType;if(g&&i.requestBody){d.headers.set("Content-Type",g)}const y=r.options;if(y){const r=y.requestOptions;if(r){if(r.timeout){d.timeout=r.timeout}if(r.onUploadProgress){d.onUploadProgress=r.onUploadProgress}if(r.onDownloadProgress){d.onDownloadProgress=r.onDownloadProgress}if(r.shouldDeserialize!==undefined){h.shouldDeserialize=r.shouldDeserialize}if(r.allowInsecureConnection){d.allowInsecureConnection=true}}if(y.abortSignal){d.abortSignal=y.abortSignal}if(y.tracingOptions){d.tracingOptions=y.tracingOptions}}if(this._allowInsecureConnection){d.allowInsecureConnection=true}if(d.streamResponseStatusCodes===undefined){d.streamResponseStatusCodes=(0,u.getStreamingResponseStatusCodes)(i)}try{const r=await this.sendRequest(d);const s=(0,c.flattenResponse)(r,i.responses[r.status]);if(y===null||y===void 0?void 0:y.onResponse){y.onResponse(r,s)}return s}catch(r){if(typeof r==="object"&&(r===null||r===void 0?void 0:r.response)){const s=r.response;const a=(0,c.flattenResponse)(s,i.responses[r.statusCode]||i.responses["default"]);r.details=a;if(y===null||y===void 0?void 0:y.onResponse){y.onResponse(s,a,r)}}throw r}}}i.ServiceClient=ServiceClient;function createDefaultPipeline(r){const i=getCredentialScopes(r);const s=r.credential&&i?{credentialScopes:i,credential:r.credential}:undefined;return(0,l.createClientPipeline)(Object.assign(Object.assign({},r),{credentialOptions:s}))}function getCredentialScopes(r){if(r.credentialScopes){return r.credentialScopes}if(r.endpoint){return`${r.endpoint}/.default`}if(r.baseUri){return`${r.baseUri}/.default`}if(r.credential&&!r.credentialScopes){throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`)}return undefined}},33971:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.state=void 0;i.state={operationRequestMap:new WeakMap}},41707:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.appendQueryParams=i.getRequestUrl=void 0;const a=s(35525);const l=s(40153);const c={CSV:",",SSV:" ",Multi:"Multi",TSV:"\t",Pipes:"|"};function getRequestUrl(r,i,s,a){const l=calculateUrlReplacements(i,s,a);let c=false;let d=replaceAll(r,l);if(i.path){let r=replaceAll(i.path,l);if(i.path==="/{nextLink}"&&r.startsWith("/")){r=r.substring(1)}if(isAbsoluteUrl(r)){d=r;c=true}else{d=appendPath(d,r)}}const{queryParams:p,sequenceParams:A}=calculateQueryParameters(i,s,a);d=appendQueryParams(d,p,A,c);return d}i.getRequestUrl=getRequestUrl;function replaceAll(r,i){let s=r;for(const[r,a]of i){s=s.split(r).join(a)}return s}function calculateUrlReplacements(r,i,s){var c;const d=new Map;if((c=r.urlParameters)===null||c===void 0?void 0:c.length){for(const c of r.urlParameters){let p=(0,a.getOperationArgumentValueFromParameter)(i,c,s);const A=(0,l.getPathStringFromParameter)(c);p=r.serializer.serialize(c.mapper,p,A);if(!c.skipEncoding){p=encodeURIComponent(p)}d.set(`{${c.mapper.serializedName||A}}`,p)}}return d}function isAbsoluteUrl(r){return r.includes("://")}function appendPath(r,i){if(!i){return r}const s=new URL(r);let a=s.pathname;if(!a.endsWith("/")){a=`${a}/`}if(i.startsWith("/")){i=i.substring(1)}const l=i.indexOf("?");if(l!==-1){const r=i.substring(0,l);const c=i.substring(l+1);a=a+r;if(c){s.search=s.search?`${s.search}&${c}`:c}}else{a=a+i}s.pathname=a;return s.toString()}function calculateQueryParameters(r,i,s){var d;const p=new Map;const A=new Set;if((d=r.queryParameters)===null||d===void 0?void 0:d.length){for(const d of r.queryParameters){if(d.mapper.type.name==="Sequence"&&d.mapper.serializedName){A.add(d.mapper.serializedName)}let u=(0,a.getOperationArgumentValueFromParameter)(i,d,s);if(u!==undefined&&u!==null||d.mapper.required){u=r.serializer.serialize(d.mapper,u,(0,l.getPathStringFromParameter)(d));const i=d.collectionFormat?c[d.collectionFormat]:"";if(Array.isArray(u)){u=u.map((r=>{if(r===null||r===undefined){return""}return r}))}if(d.collectionFormat==="Multi"&&u.length===0){continue}else if(Array.isArray(u)&&(d.collectionFormat==="SSV"||d.collectionFormat==="TSV")){u=u.join(i)}if(!d.skipEncoding){if(Array.isArray(u)){u=u.map((r=>encodeURIComponent(r)))}else{u=encodeURIComponent(u)}}if(Array.isArray(u)&&(d.collectionFormat==="CSV"||d.collectionFormat==="Pipes")){u=u.join(i)}p.set(d.mapper.serializedName||(0,l.getPathStringFromParameter)(d),u)}}}return{queryParams:p,sequenceParams:A}}function simpleParseQueryParams(r){const i=new Map;if(!r||r[0]!=="?"){return i}r=r.slice(1);const s=r.split("&");for(const r of s){const[s,a]=r.split("=",2);const l=i.get(s);if(l){if(Array.isArray(l)){l.push(a)}else{i.set(s,[l,a])}}else{i.set(s,a)}}return i}function appendQueryParams(r,i,s,a=false){if(i.size===0){return r}const l=new URL(r);const c=simpleParseQueryParams(l.search);for(const[r,l]of i){const i=c.get(r);if(Array.isArray(i)){if(Array.isArray(l)){i.push(...l);const s=new Set(i);c.set(r,Array.from(s))}else{i.push(l)}}else if(i){if(Array.isArray(l)){l.unshift(i)}else if(s.has(r)){c.set(r,[i,l])}if(!a){c.set(r,l)}}else{c.set(r,l)}}const d=[];for(const[r,i]of c){if(typeof i==="string"){d.push(`${r}=${i}`)}else if(Array.isArray(i)){for(const s of i){d.push(`${r}=${s}`)}}else{d.push(`${r}=${i}`)}}l.search=d.length?`?${d.join("&")}`:"";return l.toString()}i.appendQueryParams=appendQueryParams},79222:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.flattenResponse=i.isValidUuid=i.isDuration=i.isPrimitiveBody=void 0;function isPrimitiveBody(r,i){return i!=="Composite"&&i!=="Dictionary"&&(typeof r==="string"||typeof r==="number"||typeof r==="boolean"||(i===null||i===void 0?void 0:i.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i))!==null||r===undefined||r===null)}i.isPrimitiveBody=isPrimitiveBody;const s=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function isDuration(r){return s.test(r)}i.isDuration=isDuration;const a=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function isValidUuid(r){return a.test(r)}i.isValidUuid=isValidUuid;function handleNullableResponseAndWrappableBody(r){const i=Object.assign(Object.assign({},r.headers),r.body);if(r.hasNullableType&&Object.getOwnPropertyNames(i).length===0){return r.shouldWrapBody?{body:null}:null}else{return r.shouldWrapBody?Object.assign(Object.assign({},r.headers),{body:r.body}):i}}function flattenResponse(r,i){var s,a;const l=r.parsedHeaders;if(r.request.method==="HEAD"){return Object.assign(Object.assign({},l),{body:r.parsedBody})}const c=i&&i.bodyMapper;const d=Boolean(c===null||c===void 0?void 0:c.nullable);const p=c===null||c===void 0?void 0:c.type.name;if(p==="Stream"){return Object.assign(Object.assign({},l),{blobBody:r.blobBody,readableStreamBody:r.readableStreamBody})}const A=p==="Composite"&&c.type.modelProperties||{};const u=Object.keys(A).some((r=>A[r].serializedName===""));if(p==="Sequence"||u){const i=(s=r.parsedBody)!==null&&s!==void 0?s:[];for(const s of Object.keys(A)){if(A[s].serializedName){i[s]=(a=r.parsedBody)===null||a===void 0?void 0:a[s]}}if(l){for(const r of Object.keys(l)){i[r]=l[r]}}return d&&!r.parsedBody&&!l&&Object.getOwnPropertyNames(A).length===0?null:i}return handleNullableResponseAndWrappableBody({body:r.parsedBody,headers:l,hasNullableType:d,shouldWrapBody:isPrimitiveBody(r.parsedBody,p)})}i.flattenResponse=flattenResponse},16343:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ExtendedServiceClient=void 0;const a=s(27735);const l=s(94417);const c=s(51285);const d=s(33460);class ExtendedServiceClient extends c.ServiceClient{constructor(r){var i,s;super(r);if(((i=r.keepAliveOptions)===null||i===void 0?void 0:i.enable)===false&&!(0,a.pipelineContainsDisableKeepAlivePolicy)(this.pipeline)){this.pipeline.addPolicy((0,a.createDisableKeepAlivePolicy)())}if(((s=r.redirectOptions)===null||s===void 0?void 0:s.handleRedirects)===false){this.pipeline.removePolicy({name:l.redirectPolicyName})}}async sendOperationRequest(r,i){var s;const a=(s=r===null||r===void 0?void 0:r.options)===null||s===void 0?void 0:s.onResponse;let l;function onResponse(r,i,s){l=r;if(a){a(r,i,s)}}r.options=Object.assign(Object.assign({},r.options),{onResponse:onResponse});const c=await super.sendOperationRequest(r,i);if(l){Object.defineProperty(c,"_response",{value:(0,d.toCompatResponse)(l)})}return c}}i.ExtendedServiceClient=ExtendedServiceClient},5493:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.convertHttpClient=void 0;const a=s(33460);const l=s(71546);function convertHttpClient(r){return{sendRequest:async i=>{const s=await r.sendRequest((0,l.toWebResourceLike)(i,{createProxy:true}));return(0,a.toPipelineResponse)(s)}}}i.convertHttpClient=convertHttpClient},22542:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.toHttpHeadersLike=i.convertHttpClient=i.disableKeepAlivePolicyName=i.HttpPipelineLogLevel=i.createRequestPolicyFactoryPolicy=i.requestPolicyFactoryPolicyName=i.ExtendedServiceClient=void 0;var a=s(16343);Object.defineProperty(i,"ExtendedServiceClient",{enumerable:true,get:function(){return a.ExtendedServiceClient}});var l=s(79874);Object.defineProperty(i,"requestPolicyFactoryPolicyName",{enumerable:true,get:function(){return l.requestPolicyFactoryPolicyName}});Object.defineProperty(i,"createRequestPolicyFactoryPolicy",{enumerable:true,get:function(){return l.createRequestPolicyFactoryPolicy}});Object.defineProperty(i,"HttpPipelineLogLevel",{enumerable:true,get:function(){return l.HttpPipelineLogLevel}});var c=s(27735);Object.defineProperty(i,"disableKeepAlivePolicyName",{enumerable:true,get:function(){return c.disableKeepAlivePolicyName}});var d=s(5493);Object.defineProperty(i,"convertHttpClient",{enumerable:true,get:function(){return d.convertHttpClient}});var p=s(71546);Object.defineProperty(i,"toHttpHeadersLike",{enumerable:true,get:function(){return p.toHttpHeadersLike}})},27735:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.pipelineContainsDisableKeepAlivePolicy=i.createDisableKeepAlivePolicy=i.disableKeepAlivePolicyName=void 0;i.disableKeepAlivePolicyName="DisableKeepAlivePolicy";function createDisableKeepAlivePolicy(){return{name:i.disableKeepAlivePolicyName,async sendRequest(r,i){r.disableKeepAlive=true;return i(r)}}}i.createDisableKeepAlivePolicy=createDisableKeepAlivePolicy;function pipelineContainsDisableKeepAlivePolicy(r){return r.getOrderedPolicies().some((r=>r.name===i.disableKeepAlivePolicyName))}i.pipelineContainsDisableKeepAlivePolicy=pipelineContainsDisableKeepAlivePolicy},79874:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createRequestPolicyFactoryPolicy=i.requestPolicyFactoryPolicyName=i.HttpPipelineLogLevel=void 0;const a=s(71546);const l=s(33460);var c;(function(r){r[r["ERROR"]=1]="ERROR";r[r["INFO"]=3]="INFO";r[r["OFF"]=0]="OFF";r[r["WARNING"]=2]="WARNING"})(c||(i.HttpPipelineLogLevel=c={}));const d={log(r,i){},shouldLog(r){return false}};i.requestPolicyFactoryPolicyName="RequestPolicyFactoryPolicy";function createRequestPolicyFactoryPolicy(r){const s=r.slice().reverse();return{name:i.requestPolicyFactoryPolicyName,async sendRequest(r,i){let c={async sendRequest(r){const s=await i((0,a.toPipelineRequest)(r));return(0,l.toCompatResponse)(s,{createProxy:true})}};for(const r of s){c=r.create(c,d)}const p=(0,a.toWebResourceLike)(r,{createProxy:true});const A=await c.sendRequest(p);return(0,l.toPipelineResponse)(A)}}}i.createRequestPolicyFactoryPolicy=createRequestPolicyFactoryPolicy},33460:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.toPipelineResponse=i.toCompatResponse=void 0;const a=s(94417);const l=s(71546);const c=Symbol("Original FullOperationResponse");function toCompatResponse(r,i){let s=(0,l.toWebResourceLike)(r.request);let a=(0,l.toHttpHeadersLike)(r.headers);if(i===null||i===void 0?void 0:i.createProxy){return new Proxy(r,{get(i,l,d){if(l==="headers"){return a}else if(l==="request"){return s}else if(l===c){return r}return Reflect.get(i,l,d)},set(r,i,l,c){if(i==="headers"){a=l}else if(i==="request"){s=l}return Reflect.set(r,i,l,c)}})}else{return Object.assign(Object.assign({},r),{request:s,headers:a})}}i.toCompatResponse=toCompatResponse;function toPipelineResponse(r){const i=r;const s=i[c];const d=(0,a.createHttpHeaders)(r.headers.toJson({preserveCase:true}));if(s){s.headers=d;return s}else{return Object.assign(Object.assign({},r),{headers:d,request:(0,l.toPipelineRequest)(r.request)})}}i.toPipelineResponse=toPipelineResponse},71546:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.HttpHeaders=i.toHttpHeadersLike=i.toWebResourceLike=i.toPipelineRequest=void 0;const a=s(94417);const l=Symbol("Original PipelineRequest");const c=Symbol.for("@azure/core-client original request");function toPipelineRequest(r,i={}){const s=r;const d=s[l];const p=(0,a.createHttpHeaders)(r.headers.toJson({preserveCase:true}));if(d){d.headers=p;return d}else{const s=(0,a.createPipelineRequest)({url:r.url,method:r.method,headers:p,withCredentials:r.withCredentials,timeout:r.timeout,requestId:r.requestId,abortSignal:r.abortSignal,body:r.body,formData:r.formData,disableKeepAlive:!!r.keepAlive,onDownloadProgress:r.onDownloadProgress,onUploadProgress:r.onUploadProgress,proxySettings:r.proxySettings,streamResponseStatusCodes:r.streamResponseStatusCodes});if(i.originalRequest){s[c]=i.originalRequest}return s}}i.toPipelineRequest=toPipelineRequest;function toWebResourceLike(r,i){var s;const a=(s=i===null||i===void 0?void 0:i.originalRequest)!==null&&s!==void 0?s:r;const c={url:r.url,method:r.method,headers:toHttpHeadersLike(r.headers),withCredentials:r.withCredentials,timeout:r.timeout,requestId:r.headers.get("x-ms-client-request-id")||r.requestId,abortSignal:r.abortSignal,body:r.body,formData:r.formData,keepAlive:!!r.disableKeepAlive,onDownloadProgress:r.onDownloadProgress,onUploadProgress:r.onUploadProgress,proxySettings:r.proxySettings,streamResponseStatusCodes:r.streamResponseStatusCodes,clone(){throw new Error("Cannot clone a non-proxied WebResourceLike")},prepare(){throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat")},validateRequestProperties(){}};if(i===null||i===void 0?void 0:i.createProxy){return new Proxy(c,{get(i,s,d){if(s===l){return r}else if(s==="clone"){return()=>toWebResourceLike(toPipelineRequest(c,{originalRequest:a}),{createProxy:true,originalRequest:a})}return Reflect.get(i,s,d)},set(i,s,a,l){if(s==="keepAlive"){r.disableKeepAlive=!a}const c=["url","method","withCredentials","timeout","requestId","abortSignal","body","formData","onDownloadProgress","onUploadProgress","proxySettings","streamResponseStatusCodes"];if(typeof s==="string"&&c.includes(s)){r[s]=a}return Reflect.set(i,s,a,l)}})}else{return c}}i.toWebResourceLike=toWebResourceLike;function toHttpHeadersLike(r){return new HttpHeaders(r.toJSON({preserveCase:true}))}i.toHttpHeadersLike=toHttpHeadersLike;function getHeaderKey(r){return r.toLowerCase()}class HttpHeaders{constructor(r){this._headersMap={};if(r){for(const i in r){this.set(i,r[i])}}}set(r,i){this._headersMap[getHeaderKey(r)]={name:r,value:i.toString()}}get(r){const i=this._headersMap[getHeaderKey(r)];return!i?undefined:i.value}contains(r){return!!this._headersMap[getHeaderKey(r)]}remove(r){const i=this.contains(r);delete this._headersMap[getHeaderKey(r)];return i}rawHeaders(){return this.toJson({preserveCase:true})}headersArray(){const r=[];for(const i in this._headersMap){r.push(this._headersMap[i])}return r}headerNames(){const r=[];const i=this.headersArray();for(let s=0;s{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.pollHttpOperation=i.isOperationError=i.getResourceLocation=i.getOperationStatus=i.getOperationLocation=i.initHttpOperation=i.getStatusFromInitialResponse=i.getErrorFromResponse=i.parseRetryAfter=i.inferLroMode=void 0;const a=s(18843);const l=s(85502);function getOperationLocationPollingUrl(r){const{azureAsyncOperation:i,operationLocation:s}=r;return s!==null&&s!==void 0?s:i}function getLocationHeader(r){return r.headers["location"]}function getOperationLocationHeader(r){return r.headers["operation-location"]}function getAzureAsyncOperationHeader(r){return r.headers["azure-asyncoperation"]}function findResourceLocation(r){var i;const{location:s,requestMethod:a,requestPath:l,resourceLocationConfig:c}=r;switch(a){case"PUT":{return l}case"DELETE":{return undefined}case"PATCH":{return(i=getDefault())!==null&&i!==void 0?i:l}default:{return getDefault()}}function getDefault(){switch(c){case"azure-async-operation":{return undefined}case"original-uri":{return l}case"location":default:{return s}}}}function inferLroMode(r){const{rawResponse:i,requestMethod:s,requestPath:a,resourceLocationConfig:l}=r;const c=getOperationLocationHeader(i);const d=getAzureAsyncOperationHeader(i);const p=getOperationLocationPollingUrl({operationLocation:c,azureAsyncOperation:d});const A=getLocationHeader(i);const u=s===null||s===void 0?void 0:s.toLocaleUpperCase();if(p!==undefined){return{mode:"OperationLocation",operationLocation:p,resourceLocation:findResourceLocation({requestMethod:u,location:A,requestPath:a,resourceLocationConfig:l})}}else if(A!==undefined){return{mode:"ResourceLocation",operationLocation:A}}else if(u==="PUT"&&a){return{mode:"Body",operationLocation:a}}else{return undefined}}i.inferLroMode=inferLroMode;function transformStatus(r){const{status:i,statusCode:s}=r;if(typeof i!=="string"&&i!==undefined){throw new Error(`Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${i}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`)}switch(i===null||i===void 0?void 0:i.toLocaleLowerCase()){case undefined:return toOperationStatus(s);case"succeeded":return"succeeded";case"failed":return"failed";case"running":case"accepted":case"started":case"canceling":case"cancelling":return"running";case"canceled":case"cancelled":return"canceled";default:{l.logger.verbose(`LRO: unrecognized operation status: ${i}`);return i}}}function getStatus(r){var i;const{status:s}=(i=r.body)!==null&&i!==void 0?i:{};return transformStatus({status:s,statusCode:r.statusCode})}function getProvisioningState(r){var i,s;const{properties:a,provisioningState:l}=(i=r.body)!==null&&i!==void 0?i:{};const c=(s=a===null||a===void 0?void 0:a.provisioningState)!==null&&s!==void 0?s:l;return transformStatus({status:c,statusCode:r.statusCode})}function toOperationStatus(r){if(r===202){return"running"}else if(r<300){return"succeeded"}else{return"failed"}}function parseRetryAfter({rawResponse:r}){const i=r.headers["retry-after"];if(i!==undefined){const r=parseInt(i);return isNaN(r)?calculatePollingIntervalFromDate(new Date(i)):r*1e3}return undefined}i.parseRetryAfter=parseRetryAfter;function getErrorFromResponse(r){const i=accessBodyProperty(r,"error");if(!i){l.logger.warning(`The long-running operation failed but there is no error property in the response's body`);return}if(!i.code||!i.message){l.logger.warning(`The long-running operation failed but the error property in the response's body doesn't contain code or message`);return}return i}i.getErrorFromResponse=getErrorFromResponse;function calculatePollingIntervalFromDate(r){const i=Math.floor((new Date).getTime());const s=r.getTime();if(i{const r=await c.sendInitialRequest();const i=inferLroMode({rawResponse:r.rawResponse,requestPath:c.requestPath,requestMethod:c.requestMethod,resourceLocationConfig:s});return Object.assign({response:r,operationLocation:i===null||i===void 0?void 0:i.operationLocation,resourceLocation:i===null||i===void 0?void 0:i.resourceLocation},(i===null||i===void 0?void 0:i.mode)?{metadata:{mode:i.mode}}:{})},stateProxy:i,processResult:l?({flatResponse:r},i)=>l(r,i):({flatResponse:r})=>r,getOperationStatus:getStatusFromInitialResponse,setErrorAsResult:d})}i.initHttpOperation=initHttpOperation;function getOperationLocation({rawResponse:r},i){var s;const a=(s=i.config.metadata)===null||s===void 0?void 0:s["mode"];switch(a){case"OperationLocation":{return getOperationLocationPollingUrl({operationLocation:getOperationLocationHeader(r),azureAsyncOperation:getAzureAsyncOperationHeader(r)})}case"ResourceLocation":{return getLocationHeader(r)}case"Body":default:{return undefined}}}i.getOperationLocation=getOperationLocation;function getOperationStatus({rawResponse:r},i){var s;const a=(s=i.config.metadata)===null||s===void 0?void 0:s["mode"];switch(a){case"OperationLocation":{return getStatus(r)}case"ResourceLocation":{return toOperationStatus(r.statusCode)}case"Body":{return getProvisioningState(r)}default:throw new Error(`Internal error: Unexpected operation mode: ${a}`)}}i.getOperationStatus=getOperationStatus;function accessBodyProperty({flatResponse:r,rawResponse:i},s){var a,l;return(a=r===null||r===void 0?void 0:r[s])!==null&&a!==void 0?a:(l=i.body)===null||l===void 0?void 0:l[s]}function getResourceLocation(r,i){const s=accessBodyProperty(r,"resourceLocation");if(s&&typeof s==="string"){i.config.resourceLocation=s}return i.config.resourceLocation}i.getResourceLocation=getResourceLocation;function isOperationError(r){return r.name==="RestError"}i.isOperationError=isOperationError;async function pollHttpOperation(r){const{lro:i,stateProxy:s,options:l,processResult:c,updateState:d,setDelay:p,state:A,setErrorAsResult:u}=r;return(0,a.pollOperation)({state:A,stateProxy:s,setDelay:p,processResult:c?({flatResponse:r},i)=>c(r,i):({flatResponse:r})=>r,getError:getErrorFromResponse,updateState:d,getPollingInterval:parseRetryAfter,getOperationLocation:getOperationLocation,getOperationStatus:getOperationStatus,isOperationError:isOperationError,getResourceLocation:getResourceLocation,options:l,poll:async(r,s)=>i.sendPollRequest(r,s),setErrorAsResult:u})}i.pollHttpOperation=pollHttpOperation},66785:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createHttpPoller=void 0;const a=s(55090);const l=s(37289);async function createHttpPoller(r,i){const{resourceLocationConfig:s,intervalInMs:c,processResult:d,restoreFrom:p,updateState:A,withOperationLocation:u,resolveOnUnsuccessful:h=false}=i||{};return(0,l.buildCreatePoller)({getStatusFromInitialResponse:a.getStatusFromInitialResponse,getStatusFromPollResponse:a.getOperationStatus,isOperationError:a.isOperationError,getOperationLocation:a.getOperationLocation,getResourceLocation:a.getResourceLocation,getPollingInterval:a.parseRetryAfter,getError:a.getErrorFromResponse,resolveOnUnsuccessful:h})({init:async()=>{const i=await r.sendInitialRequest();const l=(0,a.inferLroMode)({rawResponse:i.rawResponse,requestPath:r.requestPath,requestMethod:r.requestMethod,resourceLocationConfig:s});return Object.assign({response:i,operationLocation:l===null||l===void 0?void 0:l.operationLocation,resourceLocation:l===null||l===void 0?void 0:l.resourceLocation},(l===null||l===void 0?void 0:l.mode)?{metadata:{mode:l.mode}}:{})},poll:r.sendPollRequest},{intervalInMs:c,withOperationLocation:u,restoreFrom:p,updateState:A,processResult:d?({flatResponse:r},i)=>d(r,i):({flatResponse:r})=>r})}i.createHttpPoller=createHttpPoller},43106:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createHttpPoller=void 0;const a=s(59826);var l=s(66785);Object.defineProperty(i,"createHttpPoller",{enumerable:true,get:function(){return l.createHttpPoller}});a.__exportStar(s(79703),i);a.__exportStar(s(53874),i);a.__exportStar(s(4333),i)},79703:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.LroEngine=void 0;var a=s(88750);Object.defineProperty(i,"LroEngine",{enumerable:true,get:function(){return a.LroEngine}})},88750:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.LroEngine=void 0;const a=s(68398);const l=s(73869);const c=s(53874);const d=s(18843);class LroEngine extends c.Poller{constructor(r,i){const{intervalInMs:s=l.POLL_INTERVAL_IN_MS,resumeFrom:c,resolveOnUnsuccessful:p=false,isDone:A,lroResourceLocationConfig:u,processResult:h,updateState:g}=i||{};const y=c?(0,d.deserializeState)(c):{};const b=new a.GenericPollOperation(y,r,!p,u,h,g,A);super(b);this.resolveOnUnsuccessful=p;this.config={intervalInMs:s};b.setPollerConfig(this.config)}delay(){return new Promise((r=>setTimeout((()=>r()),this.config.intervalInMs)))}}i.LroEngine=LroEngine},68398:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.GenericPollOperation=void 0;const a=s(55090);const l=s(85502);const createStateProxy=()=>({initState:r=>({config:r,isStarted:true}),setCanceled:r=>r.isCancelled=true,setError:(r,i)=>r.error=i,setResult:(r,i)=>r.result=i,setRunning:r=>r.isStarted=true,setSucceeded:r=>r.isCompleted=true,setFailed:()=>{},getError:r=>r.error,getResult:r=>r.result,isCanceled:r=>!!r.isCancelled,isFailed:r=>!!r.error,isRunning:r=>!!r.isStarted,isSucceeded:r=>Boolean(r.isCompleted&&!r.isCancelled&&!r.error)});class GenericPollOperation{constructor(r,i,s,a,l,c,d){this.state=r;this.lro=i;this.setErrorAsResult=s;this.lroResourceLocationConfig=a;this.processResult=l;this.updateState=c;this.isDone=d}setPollerConfig(r){this.pollerConfig=r}async update(r){var i;const s=createStateProxy();if(!this.state.isStarted){this.state=Object.assign(Object.assign({},this.state),await(0,a.initHttpOperation)({lro:this.lro,stateProxy:s,resourceLocationConfig:this.lroResourceLocationConfig,processResult:this.processResult,setErrorAsResult:this.setErrorAsResult}))}const l=this.updateState;const c=this.isDone;if(!this.state.isCompleted&&this.state.error===undefined){await(0,a.pollHttpOperation)({lro:this.lro,state:this.state,stateProxy:s,processResult:this.processResult,updateState:l?(r,{rawResponse:i})=>l(r,i):undefined,isDone:c?({flatResponse:r},i)=>c(r,i):undefined,options:r,setDelay:r=>{this.pollerConfig.intervalInMs=r},setErrorAsResult:this.setErrorAsResult})}(i=r===null||r===void 0?void 0:r.fireProgress)===null||i===void 0?void 0:i.call(r,this.state);return this}async cancel(){l.logger.error("`cancelOperation` is deprecated because it wasn't implemented");return this}toString(){return JSON.stringify({state:this.state})}}i.GenericPollOperation=GenericPollOperation},4333:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true})},53874:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Poller=i.PollerCancelledError=i.PollerStoppedError=void 0;class PollerStoppedError extends Error{constructor(r){super(r);this.name="PollerStoppedError";Object.setPrototypeOf(this,PollerStoppedError.prototype)}}i.PollerStoppedError=PollerStoppedError;class PollerCancelledError extends Error{constructor(r){super(r);this.name="PollerCancelledError";Object.setPrototypeOf(this,PollerCancelledError.prototype)}}i.PollerCancelledError=PollerCancelledError;class Poller{constructor(r){this.resolveOnUnsuccessful=false;this.stopped=true;this.pollProgressCallbacks=[];this.operation=r;this.promise=new Promise(((r,i)=>{this.resolve=r;this.reject=i}));this.promise.catch((()=>{}))}async startPolling(r={}){if(this.stopped){this.stopped=false}while(!this.isStopped()&&!this.isDone()){await this.poll(r);await this.delay()}}async pollOnce(r={}){if(!this.isDone()){this.operation=await this.operation.update({abortSignal:r.abortSignal,fireProgress:this.fireProgress.bind(this)})}this.processUpdatedState()}fireProgress(r){for(const i of this.pollProgressCallbacks){i(r)}}async cancelOnce(r={}){this.operation=await this.operation.cancel(r)}poll(r={}){if(!this.pollOncePromise){this.pollOncePromise=this.pollOnce(r);const clearPollOncePromise=()=>{this.pollOncePromise=undefined};this.pollOncePromise.then(clearPollOncePromise,clearPollOncePromise).catch(this.reject)}return this.pollOncePromise}processUpdatedState(){if(this.operation.state.error){this.stopped=true;if(!this.resolveOnUnsuccessful){this.reject(this.operation.state.error);throw this.operation.state.error}}if(this.operation.state.isCancelled){this.stopped=true;if(!this.resolveOnUnsuccessful){const r=new PollerCancelledError("Operation was canceled");this.reject(r);throw r}}if(this.isDone()&&this.resolve){this.resolve(this.getResult())}}async pollUntilDone(r={}){if(this.stopped){this.startPolling(r).catch(this.reject)}this.processUpdatedState();return this.promise}onProgress(r){this.pollProgressCallbacks.push(r);return()=>{this.pollProgressCallbacks=this.pollProgressCallbacks.filter((i=>i!==r))}}isDone(){const r=this.operation.state;return Boolean(r.isCompleted||r.isCancelled||r.error)}stopPolling(){if(!this.stopped){this.stopped=true;if(this.reject){this.reject(new PollerStoppedError("This poller is already stopped"))}}}isStopped(){return this.stopped}cancelOperation(r={}){if(!this.cancelPromise){this.cancelPromise=this.cancelOnce(r)}else if(r.abortSignal){throw new Error("A cancel request is currently pending")}return this.cancelPromise}getOperationState(){return this.operation.state}getResult(){const r=this.operation.state;return r.result}toString(){return this.operation.toString()}}i.Poller=Poller},85502:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.logger=void 0;const a=s(44274);i.logger=(0,a.createClientLogger)("core-lro")},73869:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.terminalStates=i.POLL_INTERVAL_IN_MS=void 0;i.POLL_INTERVAL_IN_MS=2e3;i.terminalStates=["succeeded","canceled","failed"]},18843:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.pollOperation=i.initOperation=i.deserializeState=void 0;const a=s(85502);const l=s(73869);function deserializeState(r){try{return JSON.parse(r).state}catch(i){throw new Error(`Unable to deserialize input state: ${r}`)}}i.deserializeState=deserializeState;function setStateError(r){const{state:i,stateProxy:s,isOperationError:a}=r;return r=>{if(a(r)){s.setError(i,r);s.setFailed(i)}throw r}}function appendReadableErrorMessage(r,i){let s=r;if(s.slice(-1)!=="."){s=s+"."}return s+" "+i}function simplifyError(r){let i=r.message;let s=r.code;let a=r;while(a.innererror){a=a.innererror;s=a.code;i=appendReadableErrorMessage(i,a.message)}return{code:s,message:i}}function processOperationStatus(r){const{state:i,stateProxy:s,status:l,isDone:c,processResult:d,getError:p,response:A,setErrorAsResult:u}=r;switch(l){case"succeeded":{s.setSucceeded(i);break}case"failed":{const r=p===null||p===void 0?void 0:p(A);let l="";if(r){const{code:i,message:s}=simplifyError(r);l=`. ${i}. ${s}`}const c=`The long-running operation has failed${l}`;s.setError(i,new Error(c));s.setFailed(i);a.logger.warning(c);break}case"canceled":{s.setCanceled(i);break}}if((c===null||c===void 0?void 0:c(A,i))||c===undefined&&["succeeded","canceled"].concat(u?[]:["failed"]).includes(l)){s.setResult(i,buildResult({response:A,state:i,processResult:d}))}}function buildResult(r){const{processResult:i,response:s,state:a}=r;return i?i(s,a):s}async function initOperation(r){const{init:i,stateProxy:s,processResult:l,getOperationStatus:c,withOperationLocation:d,setErrorAsResult:p}=r;const{operationLocation:A,resourceLocation:u,metadata:h,response:g}=await i();if(A)d===null||d===void 0?void 0:d(A,false);const y={metadata:h,operationLocation:A,resourceLocation:u};a.logger.verbose(`LRO: Operation description:`,y);const b=s.initState(y);const C=c({response:g,state:b,operationLocation:A});processOperationStatus({state:b,status:C,stateProxy:s,response:g,setErrorAsResult:p,processResult:l});return b}i.initOperation=initOperation;async function pollOperationHelper(r){const{poll:i,state:s,stateProxy:c,operationLocation:d,getOperationStatus:p,getResourceLocation:A,isOperationError:u,options:h}=r;const g=await i(d,h).catch(setStateError({state:s,stateProxy:c,isOperationError:u}));const y=p(g,s);a.logger.verbose(`LRO: Status:\n\tPolling from: ${s.config.operationLocation}\n\tOperation status: ${y}\n\tPolling status: ${l.terminalStates.includes(y)?"Stopped":"Running"}`);if(y==="succeeded"){const r=A(g,s);if(r!==undefined){return{response:await i(r).catch(setStateError({state:s,stateProxy:c,isOperationError:u})),status:y}}}return{response:g,status:y}}async function pollOperation(r){const{poll:i,state:s,stateProxy:a,options:c,getOperationStatus:d,getResourceLocation:p,getOperationLocation:A,isOperationError:u,withOperationLocation:h,getPollingInterval:g,processResult:y,getError:b,updateState:C,setDelay:B,isDone:I,setErrorAsResult:w}=r;const{operationLocation:v}=s.config;if(v!==undefined){const{response:r,status:S}=await pollOperationHelper({poll:i,getOperationStatus:d,state:s,stateProxy:a,operationLocation:v,getResourceLocation:p,isOperationError:u,options:c});processOperationStatus({status:S,response:r,state:s,stateProxy:a,isDone:I,processResult:y,getError:b,setErrorAsResult:w});if(!l.terminalStates.includes(S)){const i=g===null||g===void 0?void 0:g(r);if(i)B(i);const a=A===null||A===void 0?void 0:A(r,s);if(a!==undefined){const r=v!==a;s.config.operationLocation=a;h===null||h===void 0?void 0:h(a,r)}else h===null||h===void 0?void 0:h(v,false)}C===null||C===void 0?void 0:C(s,r)}}i.pollOperation=pollOperation},37289:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.buildCreatePoller=void 0;const a=s(18843);const l=s(73869);const c=s(5263);const createStateProxy=()=>({initState:r=>({status:"running",config:r}),setCanceled:r=>r.status="canceled",setError:(r,i)=>r.error=i,setResult:(r,i)=>r.result=i,setRunning:r=>r.status="running",setSucceeded:r=>r.status="succeeded",setFailed:r=>r.status="failed",getError:r=>r.error,getResult:r=>r.result,isCanceled:r=>r.status==="canceled",isFailed:r=>r.status==="failed",isRunning:r=>r.status==="running",isSucceeded:r=>r.status==="succeeded"});function buildCreatePoller(r){const{getOperationLocation:i,getStatusFromInitialResponse:s,getStatusFromPollResponse:d,isOperationError:p,getResourceLocation:A,getPollingInterval:u,getError:h,resolveOnUnsuccessful:g}=r;return async({init:r,poll:y},b)=>{const{processResult:C,updateState:B,withOperationLocation:I,intervalInMs:w=l.POLL_INTERVAL_IN_MS,restoreFrom:v}=b||{};const S=createStateProxy();const Q=I?(()=>{let r=false;return(i,s)=>{if(s)I(i);else if(!r)I(i);r=true}})():undefined;const N=v?(0,a.deserializeState)(v):await(0,a.initOperation)({init:r,stateProxy:S,processResult:C,getOperationStatus:s,withOperationLocation:Q,setErrorAsResult:!g});let R;const k=new AbortController;const T=new Map;const handleProgressEvents=async()=>T.forEach((r=>r(N)));const _="Operation was canceled";let x=w;const D={getOperationState:()=>N,getResult:()=>N.result,isDone:()=>["succeeded","failed","canceled"].includes(N.status),isStopped:()=>R===undefined,stopPolling:()=>{k.abort()},toString:()=>JSON.stringify({state:N}),onProgress:r=>{const i=Symbol();T.set(i,r);return()=>T.delete(i)},pollUntilDone:r=>R!==null&&R!==void 0?R:R=(async()=>{const{abortSignal:i}=r||{};function abortListener(){k.abort()}const s=k.signal;if(i===null||i===void 0?void 0:i.aborted){k.abort()}else if(!s.aborted){i===null||i===void 0?void 0:i.addEventListener("abort",abortListener,{once:true})}try{if(!D.isDone()){await D.poll({abortSignal:s});while(!D.isDone()){await(0,c.delay)(x,{abortSignal:s});await D.poll({abortSignal:s})}}}finally{i===null||i===void 0?void 0:i.removeEventListener("abort",abortListener)}if(g){return D.getResult()}else{switch(N.status){case"succeeded":return D.getResult();case"canceled":throw new Error(_);case"failed":throw N.error;case"notStarted":case"running":throw new Error(`Polling completed without succeeding or failing`)}}})().finally((()=>{R=undefined})),async poll(r){if(g){if(D.isDone())return}else{switch(N.status){case"succeeded":return;case"canceled":throw new Error(_);case"failed":throw N.error}}await(0,a.pollOperation)({poll:y,state:N,stateProxy:S,getOperationLocation:i,isOperationError:p,withOperationLocation:Q,getPollingInterval:u,getOperationStatus:d,getResourceLocation:A,processResult:C,getError:h,updateState:B,options:r,setDelay:r=>{x=r},setErrorAsResult:!g});await handleProgressEvents();if(!g){switch(N.status){case"canceled":throw new Error(_);case"failed":throw N.error}}}};return D}}i.buildCreatePoller=buildCreatePoller},91042:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.DEFAULT_RETRY_POLICY_COUNT=i.SDK_VERSION=void 0;i.SDK_VERSION="1.16.3";i.DEFAULT_RETRY_POLICY_COUNT=3},58151:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createPipelineFromOptions=createPipelineFromOptions;const a=s(15822);const l=s(91800);const c=s(42302);const d=s(85212);const p=s(56807);const A=s(46923);const u=s(59490);const h=s(23522);const g=s(5263);const y=s(33995);const b=s(68774);const C=s(96769);const B=s(1063);function createPipelineFromOptions(r){var i;const s=(0,l.createEmptyPipeline)();if(g.isNodeLike){if(r.tlsOptions){s.addPolicy((0,C.tlsPolicy)(r.tlsOptions))}s.addPolicy((0,y.proxyPolicy)(r.proxyOptions));s.addPolicy((0,A.decompressResponsePolicy)())}s.addPolicy((0,h.formDataPolicy)(),{beforePolicies:[p.multipartPolicyName]});s.addPolicy((0,d.userAgentPolicy)(r.userAgentOptions));s.addPolicy((0,b.setClientRequestIdPolicy)((i=r.telemetryOptions)===null||i===void 0?void 0:i.clientRequestIdHeaderName));s.addPolicy((0,p.multipartPolicy)(),{afterPhase:"Deserialize"});s.addPolicy((0,u.defaultRetryPolicy)(r.retryOptions),{phase:"Retry"});s.addPolicy((0,B.tracingPolicy)(Object.assign(Object.assign({},r.userAgentOptions),r.loggingOptions)),{afterPhase:"Retry"});if(g.isNodeLike){s.addPolicy((0,c.redirectPolicy)(r.redirectOptions),{afterPhase:"Retry"})}s.addPolicy((0,a.logPolicy)(r.loggingOptions),{afterPhase:"Sign"});return s}},75852:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createDefaultHttpClient=createDefaultHttpClient;const a=s(69103);function createDefaultHttpClient(){return(0,a.createNodeHttpClient)()}},94906:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createHttpHeaders=createHttpHeaders;function normalizeName(r){return r.toLowerCase()}function*headerIterator(r){for(const i of r.values()){yield[i.name,i.value]}}class HttpHeadersImpl{constructor(r){this._headersMap=new Map;if(r){for(const i of Object.keys(r)){this.set(i,r[i])}}}set(r,i){this._headersMap.set(normalizeName(r),{name:r,value:String(i).trim()})}get(r){var i;return(i=this._headersMap.get(normalizeName(r)))===null||i===void 0?void 0:i.value}has(r){return this._headersMap.has(normalizeName(r))}delete(r){this._headersMap.delete(normalizeName(r))}toJSON(r={}){const i={};if(r.preserveCase){for(const r of this._headersMap.values()){i[r.name]=r.value}}else{for(const[r,s]of this._headersMap){i[r]=s.value}}return i}toString(){return JSON.stringify(this.toJSON({preserveCase:true}))}[Symbol.iterator](){return headerIterator(this._headersMap)}}function createHttpHeaders(r){return new HttpHeadersImpl(r)}},94417:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createFileFromStream=i.createFile=i.auxiliaryAuthenticationHeaderPolicyName=i.auxiliaryAuthenticationHeaderPolicy=i.ndJsonPolicyName=i.ndJsonPolicy=i.bearerTokenAuthenticationPolicyName=i.bearerTokenAuthenticationPolicy=i.formDataPolicyName=i.formDataPolicy=i.tlsPolicyName=i.tlsPolicy=i.userAgentPolicyName=i.userAgentPolicy=i.defaultRetryPolicy=i.tracingPolicyName=i.tracingPolicy=i.retryPolicy=i.throttlingRetryPolicyName=i.throttlingRetryPolicy=i.systemErrorRetryPolicyName=i.systemErrorRetryPolicy=i.redirectPolicyName=i.redirectPolicy=i.getDefaultProxySettings=i.proxyPolicyName=i.proxyPolicy=i.multipartPolicyName=i.multipartPolicy=i.logPolicyName=i.logPolicy=i.setClientRequestIdPolicyName=i.setClientRequestIdPolicy=i.exponentialRetryPolicyName=i.exponentialRetryPolicy=i.decompressResponsePolicyName=i.decompressResponsePolicy=i.isRestError=i.RestError=i.createPipelineRequest=i.createHttpHeaders=i.createDefaultHttpClient=i.createPipelineFromOptions=i.createEmptyPipeline=void 0;var a=s(91800);Object.defineProperty(i,"createEmptyPipeline",{enumerable:true,get:function(){return a.createEmptyPipeline}});var l=s(58151);Object.defineProperty(i,"createPipelineFromOptions",{enumerable:true,get:function(){return l.createPipelineFromOptions}});var c=s(75852);Object.defineProperty(i,"createDefaultHttpClient",{enumerable:true,get:function(){return c.createDefaultHttpClient}});var d=s(94906);Object.defineProperty(i,"createHttpHeaders",{enumerable:true,get:function(){return d.createHttpHeaders}});var p=s(89383);Object.defineProperty(i,"createPipelineRequest",{enumerable:true,get:function(){return p.createPipelineRequest}});var A=s(20137);Object.defineProperty(i,"RestError",{enumerable:true,get:function(){return A.RestError}});Object.defineProperty(i,"isRestError",{enumerable:true,get:function(){return A.isRestError}});var u=s(46923);Object.defineProperty(i,"decompressResponsePolicy",{enumerable:true,get:function(){return u.decompressResponsePolicy}});Object.defineProperty(i,"decompressResponsePolicyName",{enumerable:true,get:function(){return u.decompressResponsePolicyName}});var h=s(65196);Object.defineProperty(i,"exponentialRetryPolicy",{enumerable:true,get:function(){return h.exponentialRetryPolicy}});Object.defineProperty(i,"exponentialRetryPolicyName",{enumerable:true,get:function(){return h.exponentialRetryPolicyName}});var g=s(68774);Object.defineProperty(i,"setClientRequestIdPolicy",{enumerable:true,get:function(){return g.setClientRequestIdPolicy}});Object.defineProperty(i,"setClientRequestIdPolicyName",{enumerable:true,get:function(){return g.setClientRequestIdPolicyName}});var y=s(15822);Object.defineProperty(i,"logPolicy",{enumerable:true,get:function(){return y.logPolicy}});Object.defineProperty(i,"logPolicyName",{enumerable:true,get:function(){return y.logPolicyName}});var b=s(56807);Object.defineProperty(i,"multipartPolicy",{enumerable:true,get:function(){return b.multipartPolicy}});Object.defineProperty(i,"multipartPolicyName",{enumerable:true,get:function(){return b.multipartPolicyName}});var C=s(33995);Object.defineProperty(i,"proxyPolicy",{enumerable:true,get:function(){return C.proxyPolicy}});Object.defineProperty(i,"proxyPolicyName",{enumerable:true,get:function(){return C.proxyPolicyName}});Object.defineProperty(i,"getDefaultProxySettings",{enumerable:true,get:function(){return C.getDefaultProxySettings}});var B=s(42302);Object.defineProperty(i,"redirectPolicy",{enumerable:true,get:function(){return B.redirectPolicy}});Object.defineProperty(i,"redirectPolicyName",{enumerable:true,get:function(){return B.redirectPolicyName}});var I=s(60772);Object.defineProperty(i,"systemErrorRetryPolicy",{enumerable:true,get:function(){return I.systemErrorRetryPolicy}});Object.defineProperty(i,"systemErrorRetryPolicyName",{enumerable:true,get:function(){return I.systemErrorRetryPolicyName}});var w=s(54610);Object.defineProperty(i,"throttlingRetryPolicy",{enumerable:true,get:function(){return w.throttlingRetryPolicy}});Object.defineProperty(i,"throttlingRetryPolicyName",{enumerable:true,get:function(){return w.throttlingRetryPolicyName}});var v=s(20139);Object.defineProperty(i,"retryPolicy",{enumerable:true,get:function(){return v.retryPolicy}});var S=s(1063);Object.defineProperty(i,"tracingPolicy",{enumerable:true,get:function(){return S.tracingPolicy}});Object.defineProperty(i,"tracingPolicyName",{enumerable:true,get:function(){return S.tracingPolicyName}});var Q=s(59490);Object.defineProperty(i,"defaultRetryPolicy",{enumerable:true,get:function(){return Q.defaultRetryPolicy}});var N=s(85212);Object.defineProperty(i,"userAgentPolicy",{enumerable:true,get:function(){return N.userAgentPolicy}});Object.defineProperty(i,"userAgentPolicyName",{enumerable:true,get:function(){return N.userAgentPolicyName}});var R=s(96769);Object.defineProperty(i,"tlsPolicy",{enumerable:true,get:function(){return R.tlsPolicy}});Object.defineProperty(i,"tlsPolicyName",{enumerable:true,get:function(){return R.tlsPolicyName}});var k=s(23522);Object.defineProperty(i,"formDataPolicy",{enumerable:true,get:function(){return k.formDataPolicy}});Object.defineProperty(i,"formDataPolicyName",{enumerable:true,get:function(){return k.formDataPolicyName}});var T=s(36080);Object.defineProperty(i,"bearerTokenAuthenticationPolicy",{enumerable:true,get:function(){return T.bearerTokenAuthenticationPolicy}});Object.defineProperty(i,"bearerTokenAuthenticationPolicyName",{enumerable:true,get:function(){return T.bearerTokenAuthenticationPolicyName}});var _=s(10865);Object.defineProperty(i,"ndJsonPolicy",{enumerable:true,get:function(){return _.ndJsonPolicy}});Object.defineProperty(i,"ndJsonPolicyName",{enumerable:true,get:function(){return _.ndJsonPolicyName}});var x=s(4841);Object.defineProperty(i,"auxiliaryAuthenticationHeaderPolicy",{enumerable:true,get:function(){return x.auxiliaryAuthenticationHeaderPolicy}});Object.defineProperty(i,"auxiliaryAuthenticationHeaderPolicyName",{enumerable:true,get:function(){return x.auxiliaryAuthenticationHeaderPolicyName}});var D=s(33397);Object.defineProperty(i,"createFile",{enumerable:true,get:function(){return D.createFile}});Object.defineProperty(i,"createFileFromStream",{enumerable:true,get:function(){return D.createFileFromStream}})},21028:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.logger=void 0;const a=s(44274);i.logger=(0,a.createClientLogger)("core-rest-pipeline")},69103:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getBodyLength=getBodyLength;i.createNodeHttpClient=createNodeHttpClient;const a=s(59826);const l=a.__importStar(s(88849));const c=a.__importStar(s(22286));const d=a.__importStar(s(65628));const p=s(84492);const A=s(97237);const u=s(94906);const h=s(20137);const g=s(21028);const y={};function isReadableStream(r){return r&&typeof r.pipe==="function"}function isStreamComplete(r){return new Promise((i=>{r.on("close",i);r.on("end",i);r.on("error",i)}))}function isArrayBuffer(r){return r&&typeof r.byteLength==="number"}class ReportTransform extends p.Transform{_transform(r,i,s){this.push(r);this.loadedBytes+=r.length;try{this.progressCallback({loadedBytes:this.loadedBytes});s()}catch(r){s(r)}}constructor(r){super();this.loadedBytes=0;this.progressCallback=r}}class NodeHttpClient{constructor(){this.cachedHttpsAgents=new WeakMap}async sendRequest(r){var i,s,a;const l=new AbortController;let c;if(r.abortSignal){if(r.abortSignal.aborted){throw new A.AbortError("The operation was aborted.")}c=r=>{if(r.type==="abort"){l.abort()}};r.abortSignal.addEventListener("abort",c)}if(r.timeout>0){setTimeout((()=>{l.abort()}),r.timeout)}const d=r.headers.get("Accept-Encoding");const p=(d===null||d===void 0?void 0:d.includes("gzip"))||(d===null||d===void 0?void 0:d.includes("deflate"));let u=typeof r.body==="function"?r.body():r.body;if(u&&!r.headers.has("Content-Length")){const i=getBodyLength(u);if(i!==null){r.headers.set("Content-Length",i)}}let h;try{if(u&&r.onUploadProgress){const i=r.onUploadProgress;const s=new ReportTransform(i);s.on("error",(r=>{g.logger.error("Error in upload progress",r)}));if(isReadableStream(u)){u.pipe(s)}else{s.end(u)}u=s}const c=await this.makeRequest(r,l,u);const d=getResponseHeaders(c);const A=(i=c.statusCode)!==null&&i!==void 0?i:0;const y={status:A,headers:d,request:r};if(r.method==="HEAD"){c.resume();return y}h=p?getDecodedResponseStream(c,d):c;const b=r.onDownloadProgress;if(b){const r=new ReportTransform(b);r.on("error",(r=>{g.logger.error("Error in download progress",r)}));h.pipe(r);h=r}if(((s=r.streamResponseStatusCodes)===null||s===void 0?void 0:s.has(Number.POSITIVE_INFINITY))||((a=r.streamResponseStatusCodes)===null||a===void 0?void 0:a.has(y.status))){y.readableStreamBody=h}else{y.bodyAsText=await streamToText(h)}return y}finally{if(r.abortSignal&&c){let i=Promise.resolve();if(isReadableStream(u)){i=isStreamComplete(u)}let s=Promise.resolve();if(isReadableStream(h)){s=isStreamComplete(h)}Promise.all([i,s]).then((()=>{var i;if(c){(i=r.abortSignal)===null||i===void 0?void 0:i.removeEventListener("abort",c)}})).catch((r=>{g.logger.warning("Error when cleaning up abortListener on httpRequest",r)}))}}}makeRequest(r,i,s){var a;const d=new URL(r.url);const p=d.protocol!=="https:";if(p&&!r.allowInsecureConnection){throw new Error(`Cannot connect to ${r.url} while allowInsecureConnection is false.`)}const u=(a=r.agent)!==null&&a!==void 0?a:this.getOrCreateAgent(r,p);const y={agent:u,hostname:d.hostname,path:`${d.pathname}${d.search}`,port:d.port,method:r.method,headers:r.headers.toJSON({preserveCase:true})};return new Promise(((a,d)=>{const u=p?l.request(y,a):c.request(y,a);u.once("error",(i=>{var s;d(new h.RestError(i.message,{code:(s=i.code)!==null&&s!==void 0?s:h.RestError.REQUEST_SEND_ERROR,request:r}))}));i.signal.addEventListener("abort",(()=>{const r=new A.AbortError("The operation was aborted.");u.destroy(r);d(r)}));if(s&&isReadableStream(s)){s.pipe(u)}else if(s){if(typeof s==="string"||Buffer.isBuffer(s)){u.end(s)}else if(isArrayBuffer(s)){u.end(ArrayBuffer.isView(s)?Buffer.from(s.buffer):Buffer.from(s))}else{g.logger.error("Unrecognized body type",s);d(new h.RestError("Unrecognized body type"))}}else{u.end()}}))}getOrCreateAgent(r,i){var s;const a=r.disableKeepAlive;if(i){if(a){return l.globalAgent}if(!this.cachedHttpAgent){this.cachedHttpAgent=new l.Agent({keepAlive:true})}return this.cachedHttpAgent}else{if(a&&!r.tlsSettings){return c.globalAgent}const i=(s=r.tlsSettings)!==null&&s!==void 0?s:y;let l=this.cachedHttpsAgents.get(i);if(l&&l.options.keepAlive===!a){return l}g.logger.info("No cached TLS Agent exist, creating a new Agent");l=new c.Agent(Object.assign({keepAlive:!a},i));this.cachedHttpsAgents.set(i,l);return l}}}function getResponseHeaders(r){const i=(0,u.createHttpHeaders)();for(const s of Object.keys(r.headers)){const a=r.headers[s];if(Array.isArray(a)){if(a.length>0){i.set(s,a[0])}}else if(a){i.set(s,a)}}return i}function getDecodedResponseStream(r,i){const s=i.get("Content-Encoding");if(s==="gzip"){const i=d.createGunzip();r.pipe(i);return i}else if(s==="deflate"){const i=d.createInflate();r.pipe(i);return i}return r}function streamToText(r){return new Promise(((i,s)=>{const a=[];r.on("data",(r=>{if(Buffer.isBuffer(r)){a.push(r)}else{a.push(Buffer.from(r))}}));r.on("end",(()=>{i(Buffer.concat(a).toString("utf8"))}));r.on("error",(r=>{if(r&&(r===null||r===void 0?void 0:r.name)==="AbortError"){s(r)}else{s(new h.RestError(`Error reading response as text: ${r.message}`,{code:h.RestError.PARSE_ERROR}))}}))}))}function getBodyLength(r){if(!r){return 0}else if(Buffer.isBuffer(r)){return r.length}else if(isReadableStream(r)){return null}else if(isArrayBuffer(r)){return r.byteLength}else if(typeof r==="string"){return Buffer.from(r).length}else{return null}}function createNodeHttpClient(){return new NodeHttpClient}},91800:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createEmptyPipeline=createEmptyPipeline;const s=new Set(["Deserialize","Serialize","Retry","Sign"]);class HttpPipeline{constructor(r){var i;this._policies=[];this._policies=(i=r===null||r===void 0?void 0:r.slice(0))!==null&&i!==void 0?i:[];this._orderedPolicies=undefined}addPolicy(r,i={}){if(i.phase&&i.afterPhase){throw new Error("Policies inside a phase cannot specify afterPhase.")}if(i.phase&&!s.has(i.phase)){throw new Error(`Invalid phase name: ${i.phase}`)}if(i.afterPhase&&!s.has(i.afterPhase)){throw new Error(`Invalid afterPhase name: ${i.afterPhase}`)}this._policies.push({policy:r,options:i});this._orderedPolicies=undefined}removePolicy(r){const i=[];this._policies=this._policies.filter((s=>{if(r.name&&s.policy.name===r.name||r.phase&&s.options.phase===r.phase){i.push(s.policy);return false}else{return true}}));this._orderedPolicies=undefined;return i}sendRequest(r,i){const s=this.getOrderedPolicies();const a=s.reduceRight(((r,i)=>s=>i.sendRequest(s,r)),(i=>r.sendRequest(i)));return a(i)}getOrderedPolicies(){if(!this._orderedPolicies){this._orderedPolicies=this.orderPolicies()}return this._orderedPolicies}clone(){return new HttpPipeline(this._policies)}static create(){return new HttpPipeline}orderPolicies(){const r=[];const i=new Map;function createPhase(r){return{name:r,policies:new Set,hasRun:false,hasAfterPolicies:false}}const s=createPhase("Serialize");const a=createPhase("None");const l=createPhase("Deserialize");const c=createPhase("Retry");const d=createPhase("Sign");const p=[s,a,l,c,d];function getPhase(r){if(r==="Retry"){return c}else if(r==="Serialize"){return s}else if(r==="Deserialize"){return l}else if(r==="Sign"){return d}else{return a}}for(const r of this._policies){const s=r.policy;const a=r.options;const l=s.name;if(i.has(l)){throw new Error("Duplicate policy names not allowed in pipeline")}const c={policy:s,dependsOn:new Set,dependants:new Set};if(a.afterPhase){c.afterPhase=getPhase(a.afterPhase);c.afterPhase.hasAfterPolicies=true}i.set(l,c);const d=getPhase(a.phase);d.policies.add(c)}for(const r of this._policies){const{policy:s,options:a}=r;const l=s.name;const c=i.get(l);if(!c){throw new Error(`Missing node for policy ${l}`)}if(a.afterPolicies){for(const r of a.afterPolicies){const s=i.get(r);if(s){c.dependsOn.add(s);s.dependants.add(c)}}}if(a.beforePolicies){for(const r of a.beforePolicies){const s=i.get(r);if(s){s.dependsOn.add(c);c.dependants.add(s)}}}}function walkPhase(s){s.hasRun=true;for(const a of s.policies){if(a.afterPhase&&(!a.afterPhase.hasRun||a.afterPhase.policies.size)){continue}if(a.dependsOn.size===0){r.push(a.policy);for(const r of a.dependants){r.dependsOn.delete(a)}i.delete(a.policy.name);s.policies.delete(a)}}}function walkPhases(){for(const r of p){walkPhase(r);if(r.policies.size>0&&r!==a){if(!a.hasRun){walkPhase(a)}return}if(r.hasAfterPolicies){walkPhase(a)}}}let A=0;while(i.size>0){A++;const i=r.length;walkPhases();if(r.length<=i&&A>1){throw new Error("Cannot satisfy policy dependencies due to requirements cycle.")}}return r}}function createEmptyPipeline(){return HttpPipeline.create()}},89383:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createPipelineRequest=createPipelineRequest;const a=s(94906);const l=s(5263);class PipelineRequestImpl{constructor(r){var i,s,c,d,p,A,u;this.url=r.url;this.body=r.body;this.headers=(i=r.headers)!==null&&i!==void 0?i:(0,a.createHttpHeaders)();this.method=(s=r.method)!==null&&s!==void 0?s:"GET";this.timeout=(c=r.timeout)!==null&&c!==void 0?c:0;this.multipartBody=r.multipartBody;this.formData=r.formData;this.disableKeepAlive=(d=r.disableKeepAlive)!==null&&d!==void 0?d:false;this.proxySettings=r.proxySettings;this.streamResponseStatusCodes=r.streamResponseStatusCodes;this.withCredentials=(p=r.withCredentials)!==null&&p!==void 0?p:false;this.abortSignal=r.abortSignal;this.tracingOptions=r.tracingOptions;this.onUploadProgress=r.onUploadProgress;this.onDownloadProgress=r.onDownloadProgress;this.requestId=r.requestId||(0,l.randomUUID)();this.allowInsecureConnection=(A=r.allowInsecureConnection)!==null&&A!==void 0?A:false;this.enableBrowserStreams=(u=r.enableBrowserStreams)!==null&&u!==void 0?u:false}}function createPipelineRequest(r){return new PipelineRequestImpl(r)}},4841:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.auxiliaryAuthenticationHeaderPolicyName=void 0;i.auxiliaryAuthenticationHeaderPolicy=auxiliaryAuthenticationHeaderPolicy;const a=s(51007);const l=s(21028);i.auxiliaryAuthenticationHeaderPolicyName="auxiliaryAuthenticationHeaderPolicy";const c="x-ms-authorization-auxiliary";async function sendAuthorizeRequest(r){var i,s;const{scopes:a,getAccessToken:l,request:c}=r;const d={abortSignal:c.abortSignal,tracingOptions:c.tracingOptions};return(s=(i=await l(a,d))===null||i===void 0?void 0:i.token)!==null&&s!==void 0?s:""}function auxiliaryAuthenticationHeaderPolicy(r){const{credentials:s,scopes:d}=r;const p=r.logger||l.logger;const A=new WeakMap;return{name:i.auxiliaryAuthenticationHeaderPolicyName,async sendRequest(r,l){if(!r.url.toLowerCase().startsWith("https://")){throw new Error("Bearer token authentication for auxiliary header is not permitted for non-TLS protected (non-https) URLs.")}if(!s||s.length===0){p.info(`${i.auxiliaryAuthenticationHeaderPolicyName} header will not be set due to empty credentials.`);return l(r)}const u=[];for(const i of s){let s=A.get(i);if(!s){s=(0,a.createTokenCycler)(i);A.set(i,s)}u.push(sendAuthorizeRequest({scopes:Array.isArray(d)?d:[d],request:r,getAccessToken:s,logger:p}))}const h=(await Promise.all(u)).filter((r=>Boolean(r)));if(h.length===0){p.warning(`None of the auxiliary tokens are valid. ${c} header will not be set.`);return l(r)}r.headers.set(c,h.map((r=>`Bearer ${r}`)).join(", "));return l(r)}}}},36080:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.bearerTokenAuthenticationPolicyName=void 0;i.bearerTokenAuthenticationPolicy=bearerTokenAuthenticationPolicy;const a=s(51007);const l=s(21028);i.bearerTokenAuthenticationPolicyName="bearerTokenAuthenticationPolicy";async function defaultAuthorizeRequest(r){const{scopes:i,getAccessToken:s,request:a}=r;const l={abortSignal:a.abortSignal,tracingOptions:a.tracingOptions};const c=await s(i,l);if(c){r.request.headers.set("Authorization",`Bearer ${c.token}`)}}function getChallenge(r){const i=r.headers.get("WWW-Authenticate");if(r.status===401&&i){return i}return}function bearerTokenAuthenticationPolicy(r){var s;const{credential:c,scopes:d,challengeCallbacks:p}=r;const A=r.logger||l.logger;const u=Object.assign({authorizeRequest:(s=p===null||p===void 0?void 0:p.authorizeRequest)!==null&&s!==void 0?s:defaultAuthorizeRequest,authorizeRequestOnChallenge:p===null||p===void 0?void 0:p.authorizeRequestOnChallenge},p);const h=c?(0,a.createTokenCycler)(c):()=>Promise.resolve(null);return{name:i.bearerTokenAuthenticationPolicyName,async sendRequest(r,i){if(!r.url.toLowerCase().startsWith("https://")){throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.")}await u.authorizeRequest({scopes:Array.isArray(d)?d:[d],request:r,getAccessToken:h,logger:A});let s;let a;try{s=await i(r)}catch(r){a=r;s=r.response}if(u.authorizeRequestOnChallenge&&(s===null||s===void 0?void 0:s.status)===401&&getChallenge(s)){const a=await u.authorizeRequestOnChallenge({scopes:Array.isArray(d)?d:[d],request:r,response:s,getAccessToken:h,logger:A});if(a){return i(r)}}if(a){throw a}else{return s}}}}},46923:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.decompressResponsePolicyName=void 0;i.decompressResponsePolicy=decompressResponsePolicy;i.decompressResponsePolicyName="decompressResponsePolicy";function decompressResponsePolicy(){return{name:i.decompressResponsePolicyName,async sendRequest(r,i){if(r.method!=="HEAD"){r.headers.set("Accept-Encoding","gzip,deflate")}return i(r)}}}},59490:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.defaultRetryPolicyName=void 0;i.defaultRetryPolicy=defaultRetryPolicy;const a=s(80930);const l=s(45835);const c=s(20139);const d=s(91042);i.defaultRetryPolicyName="defaultRetryPolicy";function defaultRetryPolicy(r={}){var s;return{name:i.defaultRetryPolicyName,sendRequest:(0,c.retryPolicy)([(0,l.throttlingRetryStrategy)(),(0,a.exponentialRetryStrategy)(r)],{maxRetries:(s=r.maxRetries)!==null&&s!==void 0?s:d.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}},65196:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.exponentialRetryPolicyName=void 0;i.exponentialRetryPolicy=exponentialRetryPolicy;const a=s(80930);const l=s(20139);const c=s(91042);i.exponentialRetryPolicyName="exponentialRetryPolicy";function exponentialRetryPolicy(r={}){var i;return(0,l.retryPolicy)([(0,a.exponentialRetryStrategy)(Object.assign(Object.assign({},r),{ignoreSystemErrors:true}))],{maxRetries:(i=r.maxRetries)!==null&&i!==void 0?i:c.DEFAULT_RETRY_POLICY_COUNT})}},23522:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.formDataPolicyName=void 0;i.formDataPolicy=formDataPolicy;const a=s(5263);const l=s(94906);i.formDataPolicyName="formDataPolicy";function formDataToFormDataMap(r){var i;const s={};for(const[a,l]of r.entries()){(i=s[a])!==null&&i!==void 0?i:s[a]=[];s[a].push(l)}return s}function formDataPolicy(){return{name:i.formDataPolicyName,async sendRequest(r,i){if(a.isNodeLike&&typeof FormData!=="undefined"&&r.body instanceof FormData){r.formData=formDataToFormDataMap(r.body);r.body=undefined}if(r.formData){const i=r.headers.get("Content-Type");if(i&&i.indexOf("application/x-www-form-urlencoded")!==-1){r.body=wwwFormUrlEncode(r.formData)}else{await prepareFormData(r.formData,r)}r.formData=undefined}return i(r)}}}function wwwFormUrlEncode(r){const i=new URLSearchParams;for(const[s,a]of Object.entries(r)){if(Array.isArray(a)){for(const r of a){i.append(s,r.toString())}}else{i.append(s,a.toString())}}return i.toString()}async function prepareFormData(r,i){const s=i.headers.get("Content-Type");if(s&&!s.startsWith("multipart/form-data")){return}i.headers.set("Content-Type",s!==null&&s!==void 0?s:"multipart/form-data");const c=[];for(const[i,s]of Object.entries(r)){for(const r of Array.isArray(s)?s:[s]){if(typeof r==="string"){c.push({headers:(0,l.createHttpHeaders)({"Content-Disposition":`form-data; name="${i}"`}),body:(0,a.stringToUint8Array)(r,"utf-8")})}else if(r===undefined||r===null||typeof r!=="object"){throw new Error(`Unexpected value for key ${i}: ${r}. Value should be serialized to string first.`)}else{const s=r.name||"blob";const a=(0,l.createHttpHeaders)();a.set("Content-Disposition",`form-data; name="${i}"; filename="${s}"`);a.set("Content-Type",r.type||"application/octet-stream");c.push({headers:a,body:r})}}}i.multipartBody={parts:c}}},15822:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.logPolicyName=void 0;i.logPolicy=logPolicy;const a=s(21028);const l=s(53209);i.logPolicyName="logPolicy";function logPolicy(r={}){var s;const c=(s=r.logger)!==null&&s!==void 0?s:a.logger.info;const d=new l.Sanitizer({additionalAllowedHeaderNames:r.additionalAllowedHeaderNames,additionalAllowedQueryParameters:r.additionalAllowedQueryParameters});return{name:i.logPolicyName,async sendRequest(r,i){if(!c.enabled){return i(r)}c(`Request: ${d.sanitize(r)}`);const s=await i(r);c(`Response status code: ${s.status}`);c(`Headers: ${d.sanitize(s.headers)}`);return s}}}},56807:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.multipartPolicyName=void 0;i.multipartPolicy=multipartPolicy;const a=s(5263);const l=s(23147);const c=s(48980);function generateBoundary(){return`----AzSDKFormBoundary${(0,a.randomUUID)()}`}function encodeHeaders(r){let i="";for(const[s,a]of r){i+=`${s}: ${a}\r\n`}return i}function getLength(r){if(r instanceof Uint8Array){return r.byteLength}else if((0,c.isBlob)(r)){return r.size===-1?undefined:r.size}else{return undefined}}function getTotalLength(r){let i=0;for(const s of r){const r=getLength(s);if(r===undefined){return undefined}else{i+=r}}return i}async function buildRequestBody(r,i,s){const c=[(0,a.stringToUint8Array)(`--${s}`,"utf-8"),...i.flatMap((r=>[(0,a.stringToUint8Array)("\r\n","utf-8"),(0,a.stringToUint8Array)(encodeHeaders(r.headers),"utf-8"),(0,a.stringToUint8Array)("\r\n","utf-8"),r.body,(0,a.stringToUint8Array)(`\r\n--${s}`,"utf-8")])),(0,a.stringToUint8Array)("--\r\n\r\n","utf-8")];const d=getTotalLength(c);if(d){r.headers.set("Content-Length",d)}r.body=await(0,l.concat)(c)}i.multipartPolicyName="multipartPolicy";const d=70;const p=new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);function assertValidBoundary(r){if(r.length>d){throw new Error(`Multipart boundary "${r}" exceeds maximum length of 70 characters`)}if(Array.from(r).some((r=>!p.has(r)))){throw new Error(`Multipart boundary "${r}" contains invalid characters`)}}function multipartPolicy(){return{name:i.multipartPolicyName,async sendRequest(r,i){var s;if(!r.multipartBody){return i(r)}if(r.body){throw new Error("multipartBody and regular body cannot be set at the same time")}let a=r.multipartBody.boundary;const l=(s=r.headers.get("Content-Type"))!==null&&s!==void 0?s:"multipart/mixed";const c=l.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!c){throw new Error(`Got multipart request body, but content-type header was not multipart: ${l}`)}const[,d,p]=c;if(p&&a&&p!==a){throw new Error(`Multipart boundary was specified as ${p} in the header, but got ${a} in the request body`)}a!==null&&a!==void 0?a:a=p;if(a){assertValidBoundary(a)}else{a=generateBoundary()}r.headers.set("Content-Type",`${d}; boundary=${a}`);await buildRequestBody(r,r.multipartBody.parts,a);r.multipartBody=undefined;return i(r)}}}},10865:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.ndJsonPolicyName=void 0;i.ndJsonPolicy=ndJsonPolicy;i.ndJsonPolicyName="ndJsonPolicy";function ndJsonPolicy(){return{name:i.ndJsonPolicyName,async sendRequest(r,i){if(typeof r.body==="string"&&r.body.startsWith("[")){const i=JSON.parse(r.body);if(Array.isArray(i)){r.body=i.map((r=>JSON.stringify(r)+"\n")).join("")}}return i(r)}}}},33995:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.globalNoProxyList=i.proxyPolicyName=void 0;i.loadNoProxy=loadNoProxy;i.getDefaultProxySettings=getDefaultProxySettings;i.proxyPolicy=proxyPolicy;const a=s(69535);const l=s(34560);const c=s(21028);const d="HTTPS_PROXY";const p="HTTP_PROXY";const A="ALL_PROXY";const u="NO_PROXY";i.proxyPolicyName="proxyPolicy";i.globalNoProxyList=[];let h=false;const g=new Map;function getEnvironmentValue(r){if(process.env[r]){return process.env[r]}else if(process.env[r.toLowerCase()]){return process.env[r.toLowerCase()]}return undefined}function loadEnvironmentProxyValue(){if(!process){return undefined}const r=getEnvironmentValue(d);const i=getEnvironmentValue(A);const s=getEnvironmentValue(p);return r||i||s}function isBypassed(r,i,s){if(i.length===0){return false}const a=new URL(r).hostname;if(s===null||s===void 0?void 0:s.has(a)){return s.get(a)}let l=false;for(const r of i){if(r[0]==="."){if(a.endsWith(r)){l=true}else{if(a.length===r.length-1&&a===r.slice(1)){l=true}}}else{if(a===r){l=true}}}s===null||s===void 0?void 0:s.set(a,l);return l}function loadNoProxy(){const r=getEnvironmentValue(u);h=true;if(r){return r.split(",").map((r=>r.trim())).filter((r=>r.length))}return[]}function getDefaultProxySettings(r){if(!r){r=loadEnvironmentProxyValue();if(!r){return undefined}}const i=new URL(r);const s=i.protocol?i.protocol+"//":"";return{host:s+i.hostname,port:Number.parseInt(i.port||"80"),username:i.username,password:i.password}}function getDefaultProxySettingsInternal(){const r=loadEnvironmentProxyValue();return r?new URL(r):undefined}function getUrlFromProxySettings(r){let i;try{i=new URL(r.host)}catch(i){throw new Error(`Expecting a valid host string in proxy settings, but found "${r.host}".`)}i.port=String(r.port);if(r.username){i.username=r.username}if(r.password){i.password=r.password}return i}function setProxyAgentOnRequest(r,i,s){if(r.agent){return}const d=new URL(r.url);const p=d.protocol!=="https:";if(r.tlsSettings){c.logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored.")}const A=r.headers.toJSON();if(p){if(!i.httpProxyAgent){i.httpProxyAgent=new l.HttpProxyAgent(s,{headers:A})}r.agent=i.httpProxyAgent}else{if(!i.httpsProxyAgent){i.httpsProxyAgent=new a.HttpsProxyAgent(s,{headers:A})}r.agent=i.httpsProxyAgent}}function proxyPolicy(r,s){if(!h){i.globalNoProxyList.push(...loadNoProxy())}const a=r?getUrlFromProxySettings(r):getDefaultProxySettingsInternal();const l={};return{name:i.proxyPolicyName,async sendRequest(r,c){var d;if(!r.proxySettings&&a&&!isBypassed(r.url,(d=s===null||s===void 0?void 0:s.customNoProxyList)!==null&&d!==void 0?d:i.globalNoProxyList,(s===null||s===void 0?void 0:s.customNoProxyList)?undefined:g)){setProxyAgentOnRequest(r,l,a)}else if(r.proxySettings){setProxyAgentOnRequest(r,l,getUrlFromProxySettings(r.proxySettings))}return c(r)}}}},42302:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.redirectPolicyName=void 0;i.redirectPolicy=redirectPolicy;i.redirectPolicyName="redirectPolicy";const s=["GET","HEAD"];function redirectPolicy(r={}){const{maxRetries:s=20}=r;return{name:i.redirectPolicyName,async sendRequest(r,i){const a=await i(r);return handleRedirect(i,a,s)}}}async function handleRedirect(r,i,a,l=0){const{request:c,status:d,headers:p}=i;const A=p.get("location");if(A&&(d===300||d===301&&s.includes(c.method)||d===302&&s.includes(c.method)||d===303&&c.method==="POST"||d===307)&&l{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.retryPolicy=retryPolicy;const a=s(47206);const l=s(44274);const c=s(97237);const d=s(91042);const p=(0,l.createClientLogger)("core-rest-pipeline retryPolicy");const A="retryPolicy";function retryPolicy(r,i={maxRetries:d.DEFAULT_RETRY_POLICY_COUNT}){const s=i.logger||p;return{name:A,async sendRequest(l,A){var u,h;let g;let y;let b=-1;e:while(true){b+=1;g=undefined;y=undefined;try{s.info(`Retry ${b}: Attempting to send request`,l.requestId);g=await A(l);s.info(`Retry ${b}: Received a response from request`,l.requestId)}catch(r){s.error(`Retry ${b}: Received an error from request`,l.requestId);y=r;if(!r||y.name!=="RestError"){throw r}g=y.response}if((u=l.abortSignal)===null||u===void 0?void 0:u.aborted){s.error(`Retry ${b}: Request aborted.`);const r=new c.AbortError;throw r}if(b>=((h=i.maxRetries)!==null&&h!==void 0?h:d.DEFAULT_RETRY_POLICY_COUNT)){s.info(`Retry ${b}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);if(y){throw y}else if(g){return g}else{throw new Error("Maximum retries reached with no response or error to throw")}}s.info(`Retry ${b}: Processing ${r.length} retry strategies.`);t:for(const i of r){const r=i.logger||p;r.info(`Retry ${b}: Processing retry strategy ${i.name}.`);const s=i.retry({retryCount:b,response:g,responseError:y});if(s.skipStrategy){r.info(`Retry ${b}: Skipped.`);continue t}const{errorToThrow:c,retryAfterInMs:d,redirectTo:A}=s;if(c){r.error(`Retry ${b}: Retry strategy ${i.name} throws error:`,c);throw c}if(d||d===0){r.info(`Retry ${b}: Retry strategy ${i.name} retries after ${d}`);await(0,a.delay)(d,undefined,{abortSignal:l.abortSignal});continue e}if(A){r.info(`Retry ${b}: Retry strategy ${i.name} redirects to ${A}`);l.url=A;continue e}}if(y){s.info(`None of the retry strategies could work with the received error. Throwing it.`);throw y}if(g){s.info(`None of the retry strategies could work with the received response. Returning it.`);return g}}}}}},68774:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.setClientRequestIdPolicyName=void 0;i.setClientRequestIdPolicy=setClientRequestIdPolicy;i.setClientRequestIdPolicyName="setClientRequestIdPolicy";function setClientRequestIdPolicy(r="x-ms-client-request-id"){return{name:i.setClientRequestIdPolicyName,async sendRequest(i,s){if(!i.headers.has(r)){i.headers.set(r,i.requestId)}return s(i)}}}},60772:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.systemErrorRetryPolicyName=void 0;i.systemErrorRetryPolicy=systemErrorRetryPolicy;const a=s(80930);const l=s(20139);const c=s(91042);i.systemErrorRetryPolicyName="systemErrorRetryPolicy";function systemErrorRetryPolicy(r={}){var s;return{name:i.systemErrorRetryPolicyName,sendRequest:(0,l.retryPolicy)([(0,a.exponentialRetryStrategy)(Object.assign(Object.assign({},r),{ignoreHttpStatusCodes:true}))],{maxRetries:(s=r.maxRetries)!==null&&s!==void 0?s:c.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}},54610:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.throttlingRetryPolicyName=void 0;i.throttlingRetryPolicy=throttlingRetryPolicy;const a=s(45835);const l=s(20139);const c=s(91042);i.throttlingRetryPolicyName="throttlingRetryPolicy";function throttlingRetryPolicy(r={}){var s;return{name:i.throttlingRetryPolicyName,sendRequest:(0,l.retryPolicy)([(0,a.throttlingRetryStrategy)()],{maxRetries:(s=r.maxRetries)!==null&&s!==void 0?s:c.DEFAULT_RETRY_POLICY_COUNT}).sendRequest}}},96769:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.tlsPolicyName=void 0;i.tlsPolicy=tlsPolicy;i.tlsPolicyName="tlsPolicy";function tlsPolicy(r){return{name:i.tlsPolicyName,sendRequest:async(i,s)=>{if(!i.tlsSettings){i.tlsSettings=r}return s(i)}}}},1063:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.tracingPolicyName=void 0;i.tracingPolicy=tracingPolicy;const a=s(71126);const l=s(91042);const c=s(16092);const d=s(21028);const p=s(5263);const A=s(20137);const u=s(53209);i.tracingPolicyName="tracingPolicy";function tracingPolicy(r={}){const s=(0,c.getUserAgentValue)(r.userAgentPrefix);const a=new u.Sanitizer({additionalAllowedQueryParameters:r.additionalAllowedQueryParameters});const l=tryCreateTracingClient();return{name:i.tracingPolicyName,async sendRequest(r,i){var c,d;if(!l||!((c=r.tracingOptions)===null||c===void 0?void 0:c.tracingContext)){return i(r)}const p=await s;const A={"http.url":a.sanitizeUrl(r.url),"http.method":r.method,"http.user_agent":p,requestId:r.requestId};if(p){A["http.user_agent"]=p}const{span:u,tracingContext:h}=(d=tryCreateSpan(l,r,A))!==null&&d!==void 0?d:{};if(!u||!h){return i(r)}try{const s=await l.withContext(h,i,r);tryProcessResponse(u,s);return s}catch(r){tryProcessError(u,r);throw r}}}}function tryCreateTracingClient(){try{return(0,a.createTracingClient)({namespace:"",packageName:"@azure/core-rest-pipeline",packageVersion:l.SDK_VERSION})}catch(r){d.logger.warning(`Error when creating the TracingClient: ${(0,p.getErrorMessage)(r)}`);return undefined}}function tryCreateSpan(r,i,s){try{const{span:a,updatedOptions:l}=r.startSpan(`HTTP ${i.method}`,{tracingOptions:i.tracingOptions},{spanKind:"client",spanAttributes:s});if(!a.isRecording()){a.end();return undefined}const c=r.createRequestHeaders(l.tracingOptions.tracingContext);for(const[r,s]of Object.entries(c)){i.headers.set(r,s)}return{span:a,tracingContext:l.tracingOptions.tracingContext}}catch(r){d.logger.warning(`Skipping creating a tracing span due to an error: ${(0,p.getErrorMessage)(r)}`);return undefined}}function tryProcessError(r,i){try{r.setStatus({status:"error",error:(0,p.isError)(i)?i:undefined});if((0,A.isRestError)(i)&&i.statusCode){r.setAttribute("http.status_code",i.statusCode)}r.end()}catch(r){d.logger.warning(`Skipping tracing span processing due to an error: ${(0,p.getErrorMessage)(r)}`)}}function tryProcessResponse(r,i){try{r.setAttribute("http.status_code",i.status);const s=i.headers.get("x-ms-request-id");if(s){r.setAttribute("serviceRequestId",s)}r.setStatus({status:"success"});r.end()}catch(r){d.logger.warning(`Skipping tracing span processing due to an error: ${(0,p.getErrorMessage)(r)}`)}}},85212:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.userAgentPolicyName=void 0;i.userAgentPolicy=userAgentPolicy;const a=s(16092);const l=(0,a.getUserAgentHeaderName)();i.userAgentPolicyName="userAgentPolicy";function userAgentPolicy(r={}){const s=(0,a.getUserAgentValue)(r.userAgentPrefix);return{name:i.userAgentPolicyName,async sendRequest(r,i){if(!r.headers.has(l)){r.headers.set(l,await s)}return i(r)}}}},20137:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.RestError=void 0;i.isRestError=isRestError;const a=s(5263);const l=s(60357);const c=s(53209);const d=new c.Sanitizer;class RestError extends Error{constructor(r,i={}){super(r);this.name="RestError";this.code=i.code;this.statusCode=i.statusCode;Object.defineProperty(this,"request",{value:i.request,enumerable:false});Object.defineProperty(this,"response",{value:i.response,enumerable:false});Object.setPrototypeOf(this,RestError.prototype)}[l.custom](){return`RestError: ${this.message} \n ${d.sanitize(Object.assign(Object.assign({},this),{request:this.request,response:this.response}))}`}}i.RestError=RestError;RestError.REQUEST_SEND_ERROR="REQUEST_SEND_ERROR";RestError.PARSE_ERROR="PARSE_ERROR";function isRestError(r){if(r instanceof RestError){return true}return(0,a.isError)(r)&&r.name==="RestError"}},80930:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.exponentialRetryStrategy=exponentialRetryStrategy;i.isExponentialRetryResponse=isExponentialRetryResponse;i.isSystemError=isSystemError;const a=s(5263);const l=s(45835);const c=1e3;const d=1e3*64;function exponentialRetryStrategy(r={}){var i,s;const p=(i=r.retryDelayInMs)!==null&&i!==void 0?i:c;const A=(s=r.maxRetryDelayInMs)!==null&&s!==void 0?s:d;let u=p;return{name:"exponentialRetryStrategy",retry({retryCount:i,response:s,responseError:c}){const d=isSystemError(c);const p=d&&r.ignoreSystemErrors;const h=isExponentialRetryResponse(s);const g=h&&r.ignoreHttpStatusCodes;const y=s&&((0,l.isThrottlingRetryResponse)(s)||!h);if(y||g||p){return{skipStrategy:true}}if(c&&!d&&!h){return{errorToThrow:c}}const b=u*Math.pow(2,i);const C=Math.min(A,b);u=C/2+(0,a.getRandomIntegerInclusive)(0,C/2);return{retryAfterInMs:u}}}}function isExponentialRetryResponse(r){return Boolean(r&&r.status!==undefined&&(r.status>=500||r.status===408)&&r.status!==501&&r.status!==505)}function isSystemError(r){if(!r){return false}return r.code==="ETIMEDOUT"||r.code==="ESOCKETTIMEDOUT"||r.code==="ECONNREFUSED"||r.code==="ECONNRESET"||r.code==="ENOENT"||r.code==="ENOTFOUND"}},45835:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isThrottlingRetryResponse=isThrottlingRetryResponse;i.throttlingRetryStrategy=throttlingRetryStrategy;const a=s(47206);const l="Retry-After";const c=["retry-after-ms","x-ms-retry-after-ms",l];function getRetryAfterInMs(r){if(!(r&&[429,503].includes(r.status)))return undefined;try{for(const i of c){const s=(0,a.parseHeaderValueAsNumber)(r,i);if(s===0||s){const r=i===l?1e3:1;return s*r}}const i=r.headers.get(l);if(!i)return;const s=Date.parse(i);const d=s-Date.now();return Number.isFinite(d)?Math.max(0,d):undefined}catch(r){return undefined}}function isThrottlingRetryResponse(r){return Number.isFinite(getRetryAfterInMs(r))}function throttlingRetryStrategy(){return{name:"throttlingRetryStrategy",retry({response:r}){const i=getRetryAfterInMs(r);if(!Number.isFinite(i)){return{skipStrategy:true}}return{retryAfterInMs:i}}}}},23147:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.concat=concat;const a=s(59826);const l=s(84492);const c=s(48980);const d=s(33397);function streamAsyncIterator(){return a.__asyncGenerator(this,arguments,(function*streamAsyncIterator_1(){const r=this.getReader();try{while(true){const{done:i,value:s}=yield a.__await(r.read());if(i){return yield a.__await(void 0)}yield yield a.__await(s)}}finally{r.releaseLock()}}))}function makeAsyncIterable(r){if(!r[Symbol.asyncIterator]){r[Symbol.asyncIterator]=streamAsyncIterator.bind(r)}if(!r.values){r.values=streamAsyncIterator.bind(r)}}function ensureNodeStream(r){if(r instanceof ReadableStream){makeAsyncIterable(r);return l.Readable.fromWeb(r)}else{return r}}function toStream(r){if(r instanceof Uint8Array){return l.Readable.from(Buffer.from(r))}else if((0,c.isBlob)(r)){return toStream((0,d.getRawContent)(r))}else{return ensureNodeStream(r)}}async function concat(r){return function(){const i=r.map((r=>typeof r==="function"?r():r)).map(toStream);return l.Readable.from(function(){return a.__asyncGenerator(this,arguments,(function*(){var r,s,l,c;for(const u of i){try{for(var d=true,p=(s=void 0,a.__asyncValues(u)),A;A=yield a.__await(p.next()),r=A.done,!r;d=true){c=A.value;d=false;const r=c;yield yield a.__await(r)}}catch(r){s={error:r}}finally{try{if(!d&&!r&&(l=p.return))yield a.__await(l.call(p))}finally{if(s)throw s.error}}}}))}())}}},33397:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getRawContent=getRawContent;i.createFileFromStream=createFileFromStream;i.createFile=createFile;const a=s(5263);const l=s(48980);const c={arrayBuffer:()=>{throw new Error("Not implemented")},slice:()=>{throw new Error("Not implemented")},text:()=>{throw new Error("Not implemented")}};const d=Symbol("rawContent");function hasRawContent(r){return typeof r[d]==="function"}function getRawContent(r){if(hasRawContent(r)){return r[d]()}else{return r.stream()}}function createFileFromStream(r,i,s={}){var a,p,A,u;return Object.assign(Object.assign({},c),{type:(a=s.type)!==null&&a!==void 0?a:"",lastModified:(p=s.lastModified)!==null&&p!==void 0?p:(new Date).getTime(),webkitRelativePath:(A=s.webkitRelativePath)!==null&&A!==void 0?A:"",size:(u=s.size)!==null&&u!==void 0?u:-1,name:i,stream:()=>{const i=r();if((0,l.isNodeReadableStream)(i)){throw new Error("Not supported: a Node stream was provided as input to createFileFromStream.")}return i},[d]:r})}function createFile(r,i,s={}){var l,p,A;if(a.isNodeLike){return Object.assign(Object.assign({},c),{type:(l=s.type)!==null&&l!==void 0?l:"",lastModified:(p=s.lastModified)!==null&&p!==void 0?p:(new Date).getTime(),webkitRelativePath:(A=s.webkitRelativePath)!==null&&A!==void 0?A:"",size:r.byteLength,name:i,arrayBuffer:async()=>r.buffer,stream:()=>new Blob([r]).stream(),[d]:()=>r})}else{return new File([r],i,s)}}},47206:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.delay=delay;i.parseHeaderValueAsNumber=parseHeaderValueAsNumber;const a=s(97237);const l="The operation was aborted.";function delay(r,i,s){return new Promise(((c,d)=>{let p=undefined;let A=undefined;const rejectOnAbort=()=>d(new a.AbortError((s===null||s===void 0?void 0:s.abortErrorMsg)?s===null||s===void 0?void 0:s.abortErrorMsg:l));const removeListeners=()=>{if((s===null||s===void 0?void 0:s.abortSignal)&&A){s.abortSignal.removeEventListener("abort",A)}};A=()=>{if(p){clearTimeout(p)}removeListeners();return rejectOnAbort()};if((s===null||s===void 0?void 0:s.abortSignal)&&s.abortSignal.aborted){return rejectOnAbort()}p=setTimeout((()=>{removeListeners();c(i)}),r);if(s===null||s===void 0?void 0:s.abortSignal){s.abortSignal.addEventListener("abort",A)}}))}function parseHeaderValueAsNumber(r,i){const s=r.headers.get(i);if(!s)return;const a=Number(s);if(Number.isNaN(a))return;return a}},60357:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.custom=void 0;const a=s(47261);i.custom=a.inspect.custom},53209:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Sanitizer=void 0;const a=s(5263);const l="REDACTED";const c=["x-ms-client-request-id","x-ms-return-client-request-id","x-ms-useragent","x-ms-correlation-request-id","x-ms-request-id","client-request-id","ms-cv","return-client-request-id","traceparent","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Origin","Accept","Accept-Encoding","Cache-Control","Connection","Content-Length","Content-Type","Date","ETag","Expires","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Last-Modified","Pragma","Request-Id","Retry-After","Server","Transfer-Encoding","User-Agent","WWW-Authenticate"];const d=["api-version"];class Sanitizer{constructor({additionalAllowedHeaderNames:r=[],additionalAllowedQueryParameters:i=[]}={}){r=c.concat(r);i=d.concat(i);this.allowedHeaderNames=new Set(r.map((r=>r.toLowerCase())));this.allowedQueryParameters=new Set(i.map((r=>r.toLowerCase())))}sanitize(r){const i=new Set;return JSON.stringify(r,((r,s)=>{if(s instanceof Error){return Object.assign(Object.assign({},s),{name:s.name,message:s.message})}if(r==="headers"){return this.sanitizeHeaders(s)}else if(r==="url"){return this.sanitizeUrl(s)}else if(r==="query"){return this.sanitizeQuery(s)}else if(r==="body"){return undefined}else if(r==="response"){return undefined}else if(r==="operationSpec"){return undefined}else if(Array.isArray(s)||(0,a.isObject)(s)){if(i.has(s)){return"[Circular]"}i.add(s)}return s}),2)}sanitizeUrl(r){if(typeof r!=="string"||r===null||r===""){return r}const i=new URL(r);if(!i.search){return r}for(const[r]of i.searchParams){if(!this.allowedQueryParameters.has(r.toLowerCase())){i.searchParams.set(r,l)}}return i.toString()}sanitizeHeaders(r){const i={};for(const s of Object.keys(r)){if(this.allowedHeaderNames.has(s.toLowerCase())){i[s]=r[s]}else{i[s]=l}}return i}sanitizeQuery(r){if(typeof r!=="object"||r===null){return r}const i={};for(const s of Object.keys(r)){if(this.allowedQueryParameters.has(s.toLowerCase())){i[s]=r[s]}else{i[s]=l}}return i}}i.Sanitizer=Sanitizer},51007:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.DEFAULT_CYCLER_OPTIONS=void 0;i.createTokenCycler=createTokenCycler;const a=s(47206);i.DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function beginRefresh(r,i,s){async function tryGetAccessToken(){if(Date.now()r.getToken(i,s);a=beginRefresh(tryGetAccessToken,d.retryIntervalInMs,(A=l===null||l===void 0?void 0:l.expiresOnTimestamp)!==null&&A!==void 0?A:Date.now()).then((r=>{a=null;l=r;c=s.tenantId;return l})).catch((r=>{a=null;l=null;c=undefined;throw r}))}return a}return async(r,i)=>{const s=Boolean(i.claims);const a=c!==i.tenantId;if(s){l=null}const d=a||s||p.mustRefresh;if(d){return refresh(r,i)}if(p.shouldRefresh){refresh(r,i)}return l}}},48980:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isNodeReadableStream=isNodeReadableStream;i.isWebReadableStream=isWebReadableStream;i.isReadableStream=isReadableStream;i.isBlob=isBlob;function isNodeReadableStream(r){return Boolean(r&&typeof r["pipe"]==="function")}function isWebReadableStream(r){return Boolean(r&&typeof r.getReader==="function"&&typeof r.tee==="function")}function isReadableStream(r){return isNodeReadableStream(r)||isWebReadableStream(r)}function isBlob(r){return typeof r.stream==="function"}},16092:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getUserAgentHeaderName=getUserAgentHeaderName;i.getUserAgentValue=getUserAgentValue;const a=s(1682);const l=s(91042);function getUserAgentString(r){const i=[];for(const[s,a]of r){const r=a?`${s}/${a}`:s;i.push(r)}return i.join(" ")}function getUserAgentHeaderName(){return(0,a.getHeaderName)()}async function getUserAgentValue(r){const i=new Map;i.set("core-rest-pipeline",l.SDK_VERSION);await(0,a.setPlatformSpecificData)(i);const s=getUserAgentString(i);const c=r?`${r} ${s}`:s;return c}},1682:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getHeaderName=getHeaderName;i.setPlatformSpecificData=setPlatformSpecificData;const a=s(59826);const l=a.__importStar(s(70612));const c=a.__importStar(s(97742));function getHeaderName(){return"User-Agent"}async function setPlatformSpecificData(r){if(c&&c.versions){const i=c.versions;if(i.bun){r.set("Bun",i.bun)}else if(i.deno){r.set("Deno",i.deno)}else if(i.node){r.set("Node",i.node)}}r.set("OS",`(${l.arch()}-${l.type()}-${l.release()})`)}},71126:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createTracingClient=i.useInstrumenter=void 0;var a=s(34930);Object.defineProperty(i,"useInstrumenter",{enumerable:true,get:function(){return a.useInstrumenter}});var l=s(17228);Object.defineProperty(i,"createTracingClient",{enumerable:true,get:function(){return l.createTracingClient}})},34930:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getInstrumenter=i.useInstrumenter=i.createDefaultInstrumenter=i.createDefaultTracingSpan=void 0;const a=s(81924);const l=s(32142);function createDefaultTracingSpan(){return{end:()=>{},isRecording:()=>false,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{}}}i.createDefaultTracingSpan=createDefaultTracingSpan;function createDefaultInstrumenter(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>undefined,startSpan:(r,i)=>({span:createDefaultTracingSpan(),tracingContext:(0,a.createTracingContext)({parentContext:i.tracingContext})}),withContext(r,i,...s){return i(...s)}}}i.createDefaultInstrumenter=createDefaultInstrumenter;function useInstrumenter(r){l.state.instrumenterImplementation=r}i.useInstrumenter=useInstrumenter;function getInstrumenter(){if(!l.state.instrumenterImplementation){l.state.instrumenterImplementation=createDefaultInstrumenter()}return l.state.instrumenterImplementation}i.getInstrumenter=getInstrumenter},32142:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.state=void 0;i.state={instrumenterImplementation:undefined}},17228:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createTracingClient=void 0;const a=s(34930);const l=s(81924);function createTracingClient(r){const{namespace:i,packageName:s,packageVersion:c}=r;function startSpan(r,d,p){var A;const u=(0,a.getInstrumenter)().startSpan(r,Object.assign(Object.assign({},p),{packageName:s,packageVersion:c,tracingContext:(A=d===null||d===void 0?void 0:d.tracingOptions)===null||A===void 0?void 0:A.tracingContext}));let h=u.tracingContext;const g=u.span;if(!h.getValue(l.knownContextKeys.namespace)){h=h.setValue(l.knownContextKeys.namespace,i)}g.setAttribute("az.namespace",h.getValue(l.knownContextKeys.namespace));const y=Object.assign({},d,{tracingOptions:Object.assign(Object.assign({},d===null||d===void 0?void 0:d.tracingOptions),{tracingContext:h})});return{span:g,updatedOptions:y}}async function withSpan(r,i,s,a){const{span:l,updatedOptions:c}=startSpan(r,i,a);try{const r=await withContext(c.tracingOptions.tracingContext,(()=>Promise.resolve(s(c,l))));l.setStatus({status:"success"});return r}catch(r){l.setStatus({status:"error",error:r});throw r}finally{l.end()}}function withContext(r,i,...s){return(0,a.getInstrumenter)().withContext(r,i,...s)}function parseTraceparentHeader(r){return(0,a.getInstrumenter)().parseTraceparentHeader(r)}function createRequestHeaders(r){return(0,a.getInstrumenter)().createRequestHeaders(r)}return{startSpan:startSpan,withSpan:withSpan,withContext:withContext,parseTraceparentHeader:parseTraceparentHeader,createRequestHeaders:createRequestHeaders}}i.createTracingClient=createTracingClient},81924:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.TracingContextImpl=i.createTracingContext=i.knownContextKeys=void 0;i.knownContextKeys={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function createTracingContext(r={}){let s=new TracingContextImpl(r.parentContext);if(r.span){s=s.setValue(i.knownContextKeys.span,r.span)}if(r.namespace){s=s.setValue(i.knownContextKeys.namespace,r.namespace)}return s}i.createTracingContext=createTracingContext;class TracingContextImpl{constructor(r){this._contextMap=r instanceof TracingContextImpl?new Map(r._contextMap):new Map}setValue(r,i){const s=new TracingContextImpl(this);s._contextMap.set(r,i);return s}getValue(r){return this._contextMap.get(r)}deleteValue(r){const i=new TracingContextImpl(this);i._contextMap.delete(r);return i}}i.TracingContextImpl=TracingContextImpl},98737:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.cancelablePromiseRace=cancelablePromiseRace;async function cancelablePromiseRace(r,i){var s,a;const l=new AbortController;function abortHandler(){l.abort()}(s=i===null||i===void 0?void 0:i.abortSignal)===null||s===void 0?void 0:s.addEventListener("abort",abortHandler);try{return await Promise.race(r.map((r=>r({abortSignal:l.signal}))))}finally{l.abort();(a=i===null||i===void 0?void 0:i.abortSignal)===null||a===void 0?void 0:a.removeEventListener("abort",abortHandler)}}},58645:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.uint8ArrayToString=uint8ArrayToString;i.stringToUint8Array=stringToUint8Array;function uint8ArrayToString(r,i){return Buffer.from(r).toString(i)}function stringToUint8Array(r,i){return Buffer.from(r,i)}},47841:(r,i)=>{"use strict";var s,a,l,c;Object.defineProperty(i,"__esModule",{value:true});i.isReactNative=i.isNodeRuntime=i.isNode=i.isNodeLike=i.isBun=i.isDeno=i.isWebWorker=i.isBrowser=void 0;i.isBrowser=typeof window!=="undefined"&&typeof window.document!=="undefined";i.isWebWorker=typeof self==="object"&&typeof(self===null||self===void 0?void 0:self.importScripts)==="function"&&(((s=self.constructor)===null||s===void 0?void 0:s.name)==="DedicatedWorkerGlobalScope"||((a=self.constructor)===null||a===void 0?void 0:a.name)==="ServiceWorkerGlobalScope"||((l=self.constructor)===null||l===void 0?void 0:l.name)==="SharedWorkerGlobalScope");i.isDeno=typeof Deno!=="undefined"&&typeof Deno.version!=="undefined"&&typeof Deno.version.deno!=="undefined";i.isBun=typeof Bun!=="undefined"&&typeof Bun.version!=="undefined";i.isNodeLike=typeof globalThis.process!=="undefined"&&Boolean(globalThis.process.version)&&Boolean((c=globalThis.process.versions)===null||c===void 0?void 0:c.node);i.isNode=i.isNodeLike;i.isNodeRuntime=i.isNodeLike&&!i.isBun&&!i.isDeno;i.isReactNative=typeof navigator!=="undefined"&&(navigator===null||navigator===void 0?void 0:navigator.product)==="ReactNative"},15710:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.createAbortablePromise=createAbortablePromise;const a=s(97237);function createAbortablePromise(r,i){const{cleanupBeforeAbort:s,abortSignal:l,abortErrorMsg:c}=i!==null&&i!==void 0?i:{};return new Promise(((i,d)=>{function rejectOnAbort(){d(new a.AbortError(c!==null&&c!==void 0?c:"The operation was aborted."))}function removeListeners(){l===null||l===void 0?void 0:l.removeEventListener("abort",onAbort)}function onAbort(){s===null||s===void 0?void 0:s();removeListeners();rejectOnAbort()}if(l===null||l===void 0?void 0:l.aborted){return rejectOnAbort()}try{r((r=>{removeListeners();i(r)}),(r=>{removeListeners();d(r)}))}catch(r){d(r)}l===null||l===void 0?void 0:l.addEventListener("abort",onAbort)}))}},51615:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.delay=delay;const a=s(15710);const l="The delay was aborted.";function delay(r,i){let s;const{abortSignal:c,abortErrorMsg:d}=i!==null&&i!==void 0?i:{};return(0,a.createAbortablePromise)((i=>{s=setTimeout(i,r)}),{cleanupBeforeAbort:()=>clearTimeout(s),abortSignal:c,abortErrorMsg:d!==null&&d!==void 0?d:l})}},43684:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isError=isError;i.getErrorMessage=getErrorMessage;const a=s(67968);function isError(r){if((0,a.isObject)(r)){const i=typeof r.name==="string";const s=typeof r.message==="string";return i&&s}return false}function getErrorMessage(r){if(isError(r)){return r.message}else{let i;try{if(typeof r==="object"&&r){i=JSON.stringify(r)}else{i=String(r)}}catch(r){i="[unable to stringify input]"}return`Unknown error ${i}`}}},5263:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.stringToUint8Array=i.uint8ArrayToString=i.isWebWorker=i.isReactNative=i.isDeno=i.isNodeRuntime=i.isNodeLike=i.isNode=i.isBun=i.isBrowser=i.randomUUID=i.objectHasProperty=i.isObjectWithProperties=i.isDefined=i.computeSha256Hmac=i.computeSha256Hash=i.getErrorMessage=i.isError=i.isObject=i.getRandomIntegerInclusive=i.createAbortablePromise=i.cancelablePromiseRace=i.delay=void 0;var a=s(51615);Object.defineProperty(i,"delay",{enumerable:true,get:function(){return a.delay}});var l=s(98737);Object.defineProperty(i,"cancelablePromiseRace",{enumerable:true,get:function(){return l.cancelablePromiseRace}});var c=s(15710);Object.defineProperty(i,"createAbortablePromise",{enumerable:true,get:function(){return c.createAbortablePromise}});var d=s(88655);Object.defineProperty(i,"getRandomIntegerInclusive",{enumerable:true,get:function(){return d.getRandomIntegerInclusive}});var p=s(67968);Object.defineProperty(i,"isObject",{enumerable:true,get:function(){return p.isObject}});var A=s(43684);Object.defineProperty(i,"isError",{enumerable:true,get:function(){return A.isError}});Object.defineProperty(i,"getErrorMessage",{enumerable:true,get:function(){return A.getErrorMessage}});var u=s(39300);Object.defineProperty(i,"computeSha256Hash",{enumerable:true,get:function(){return u.computeSha256Hash}});Object.defineProperty(i,"computeSha256Hmac",{enumerable:true,get:function(){return u.computeSha256Hmac}});var h=s(78194);Object.defineProperty(i,"isDefined",{enumerable:true,get:function(){return h.isDefined}});Object.defineProperty(i,"isObjectWithProperties",{enumerable:true,get:function(){return h.isObjectWithProperties}});Object.defineProperty(i,"objectHasProperty",{enumerable:true,get:function(){return h.objectHasProperty}});var g=s(98271);Object.defineProperty(i,"randomUUID",{enumerable:true,get:function(){return g.randomUUID}});var y=s(47841);Object.defineProperty(i,"isBrowser",{enumerable:true,get:function(){return y.isBrowser}});Object.defineProperty(i,"isBun",{enumerable:true,get:function(){return y.isBun}});Object.defineProperty(i,"isNode",{enumerable:true,get:function(){return y.isNode}});Object.defineProperty(i,"isNodeLike",{enumerable:true,get:function(){return y.isNodeLike}});Object.defineProperty(i,"isNodeRuntime",{enumerable:true,get:function(){return y.isNodeRuntime}});Object.defineProperty(i,"isDeno",{enumerable:true,get:function(){return y.isDeno}});Object.defineProperty(i,"isReactNative",{enumerable:true,get:function(){return y.isReactNative}});Object.defineProperty(i,"isWebWorker",{enumerable:true,get:function(){return y.isWebWorker}});var b=s(58645);Object.defineProperty(i,"uint8ArrayToString",{enumerable:true,get:function(){return b.uint8ArrayToString}});Object.defineProperty(i,"stringToUint8Array",{enumerable:true,get:function(){return b.stringToUint8Array}})},67968:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isObject=isObject;function isObject(r){return typeof r==="object"&&r!==null&&!Array.isArray(r)&&!(r instanceof RegExp)&&!(r instanceof Date)}},88655:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.getRandomIntegerInclusive=getRandomIntegerInclusive;function getRandomIntegerInclusive(r,i){r=Math.ceil(r);i=Math.floor(i);const s=Math.floor(Math.random()*(i-r+1));return s+r}},39300:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.computeSha256Hmac=computeSha256Hmac;i.computeSha256Hash=computeSha256Hash;const a=s(6113);async function computeSha256Hmac(r,i,s){const l=Buffer.from(r,"base64");return(0,a.createHmac)("sha256",l).update(i).digest(s)}async function computeSha256Hash(r,i){return(0,a.createHash)("sha256").update(r).digest(i)}},78194:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.isDefined=isDefined;i.isObjectWithProperties=isObjectWithProperties;i.objectHasProperty=objectHasProperty;function isDefined(r){return typeof r!=="undefined"&&r!==null}function isObjectWithProperties(r,i){if(!isDefined(r)||typeof r!=="object"){return false}for(const s of i){if(!objectHasProperty(r,s)){return false}}return true}function objectHasProperty(r,i){return isDefined(r)&&typeof r==="object"&&i in r}},98271:(r,i,s)=>{"use strict";var a;Object.defineProperty(i,"__esModule",{value:true});i.randomUUID=randomUUID;const l=s(6113);const c=typeof((a=globalThis===null||globalThis===void 0?void 0:globalThis.crypto)===null||a===void 0?void 0:a.randomUUID)==="function"?globalThis.crypto.randomUUID.bind(globalThis.crypto):l.randomUUID;function randomUUID(){return c()}},66256:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.XML_CHARKEY=i.XML_ATTRKEY=i.parseXML=i.stringifyXML=void 0;var a=s(28268);Object.defineProperty(i,"stringifyXML",{enumerable:true,get:function(){return a.stringifyXML}});Object.defineProperty(i,"parseXML",{enumerable:true,get:function(){return a.parseXML}});var l=s(69221);Object.defineProperty(i,"XML_ATTRKEY",{enumerable:true,get:function(){return l.XML_ATTRKEY}});Object.defineProperty(i,"XML_CHARKEY",{enumerable:true,get:function(){return l.XML_CHARKEY}})},69221:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.XML_CHARKEY=i.XML_ATTRKEY=void 0;i.XML_ATTRKEY="$";i.XML_CHARKEY="_"},28268:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.stringifyXML=stringifyXML;i.parseXML=parseXML;const a=s(93980);const l=s(69221);function getCommonOptions(r){var i;return{attributesGroupName:l.XML_ATTRKEY,textNodeName:(i=r.xmlCharKey)!==null&&i!==void 0?i:l.XML_CHARKEY,ignoreAttributes:false,suppressBooleanAttributes:false}}function getSerializerOptions(r={}){var i,s;return Object.assign(Object.assign({},getCommonOptions(r)),{attributeNamePrefix:"@_",format:true,suppressEmptyNode:true,indentBy:"",rootNodeName:(i=r.rootName)!==null&&i!==void 0?i:"root",cdataPropName:(s=r.cdataPropName)!==null&&s!==void 0?s:"__cdata"})}function getParserOptions(r={}){return Object.assign(Object.assign({},getCommonOptions(r)),{parseAttributeValue:false,parseTagValue:false,attributeNamePrefix:"",stopNodes:r.stopNodes,processEntities:true})}function stringifyXML(r,i={}){const s=getSerializerOptions(i);const l=new a.XMLBuilder(s);const c={[s.rootNodeName]:r};const d=l.build(c);return`${d}`.replace(/\n/g,"")}async function parseXML(r,i={}){if(!r){throw new Error("Document is empty")}const s=a.XMLValidator.validate(r);if(s!==true){throw s}const l=new a.XMLParser(getParserOptions(i));const c=l.parse(r);if(c["?xml"]){delete c["?xml"]}if(!i.includeRoot){for(const r of Object.keys(c)){const i=c[r];return typeof i==="object"?Object.assign({},i):i}}return c}},43487:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});const a=s(62577);const l=typeof process!=="undefined"&&process.env&&process.env.DEBUG||undefined;let c;let d=[];let p=[];const A=[];if(l){enable(l)}const u=Object.assign((r=>createDebugger(r)),{enable:enable,enabled:enabled,disable:disable,log:a.log});function enable(r){c=r;d=[];p=[];const i=/\*/g;const s=r.split(",").map((r=>r.trim().replace(i,".*?")));for(const r of s){if(r.startsWith("-")){p.push(new RegExp(`^${r.substr(1)}$`))}else{d.push(new RegExp(`^${r}$`))}}for(const r of A){r.enabled=enabled(r.namespace)}}function enabled(r){if(r.endsWith("*")){return true}for(const i of p){if(i.test(r)){return false}}for(const i of d){if(i.test(r)){return true}}return false}function disable(){const r=c||"";enable("");return r}function createDebugger(r){const i=Object.assign(debug,{enabled:enabled(r),destroy:destroy,log:u.log,namespace:r,extend:extend});function debug(...s){if(!i.enabled){return}if(s.length>0){s[0]=`${r} ${s[0]}`}i.log(...s)}A.push(i);return i}function destroy(){const r=A.indexOf(this);if(r>=0){A.splice(r,1);return true}return false}function extend(r){const i=createDebugger(`${this.namespace}:${r}`);i.log=this.log;return i}i["default"]=u},44274:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.AzureLogger=void 0;i.setLogLevel=setLogLevel;i.getLogLevel=getLogLevel;i.createClientLogger=createClientLogger;const a=s(59826);const l=a.__importDefault(s(43487));const c=new Set;const d=typeof process!=="undefined"&&process.env&&process.env.AZURE_LOG_LEVEL||undefined;let p;i.AzureLogger=(0,l.default)("azure");i.AzureLogger.log=(...r)=>{l.default.log(...r)};const A=["verbose","info","warning","error"];if(d){if(isAzureLogLevel(d)){setLogLevel(d)}else{console.error(`AZURE_LOG_LEVEL set to unknown log level '${d}'; logging is not enabled. Acceptable values: ${A.join(", ")}.`)}}function setLogLevel(r){if(r&&!isAzureLogLevel(r)){throw new Error(`Unknown log level '${r}'. Acceptable values: ${A.join(",")}`)}p=r;const i=[];for(const r of c){if(shouldEnable(r)){i.push(r.namespace)}}l.default.enable(i.join(","))}function getLogLevel(){return p}const u={verbose:400,info:300,warning:200,error:100};function createClientLogger(r){const s=i.AzureLogger.extend(r);patchLogMethod(i.AzureLogger,s);return{error:createLogger(s,"error"),warning:createLogger(s,"warning"),info:createLogger(s,"info"),verbose:createLogger(s,"verbose")}}function patchLogMethod(r,i){i.log=(...i)=>{r.log(...i)}}function createLogger(r,i){const s=Object.assign(r.extend(i),{level:i});patchLogMethod(r,s);if(shouldEnable(s)){const r=l.default.disable();l.default.enable(r+","+s.namespace)}c.add(s);return s}function shouldEnable(r){return Boolean(p&&u[r.level]<=u[p])}function isAzureLogLevel(r){return A.includes(r)}},62577:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.log=log;const a=s(59826);const l=s(70612);const c=a.__importDefault(s(47261));const d=a.__importStar(s(97742));function log(r,...i){d.stderr.write(`${c.default.format(r,...i)}${l.EOL}`)}},6351:(r,i,s)=>{"use strict";const a=s(84492).Writable;const l=s(47261).inherits;const c=s(52811);const d=s(39202);const p=s(22451);const A=45;const u=Buffer.from("-");const h=Buffer.from("\r\n");const EMPTY_FN=function(){};function Dicer(r){if(!(this instanceof Dicer)){return new Dicer(r)}a.call(this,r);if(!r||!r.headerFirst&&typeof r.boundary!=="string"){throw new TypeError("Boundary required")}if(typeof r.boundary==="string"){this.setBoundary(r.boundary)}else{this._bparser=undefined}this._headerFirst=r.headerFirst;this._dashes=0;this._parts=0;this._finished=false;this._realFinish=false;this._isPreamble=true;this._justMatched=false;this._firstWrite=true;this._inHeader=true;this._part=undefined;this._cb=undefined;this._ignoreData=false;this._partOpts={highWaterMark:r.partHwm};this._pause=false;const i=this;this._hparser=new p(r);this._hparser.on("header",(function(r){i._inHeader=false;i._part.emit("header",r)}))}l(Dicer,a);Dicer.prototype.emit=function(r){if(r==="finish"&&!this._realFinish){if(!this._finished){const r=this;process.nextTick((function(){r.emit("error",new Error("Unexpected end of multipart data"));if(r._part&&!r._ignoreData){const i=r._isPreamble?"Preamble":"Part";r._part.emit("error",new Error(i+" terminated early due to unexpected end of multipart data"));r._part.push(null);process.nextTick((function(){r._realFinish=true;r.emit("finish");r._realFinish=false}));return}r._realFinish=true;r.emit("finish");r._realFinish=false}))}}else{a.prototype.emit.apply(this,arguments)}};Dicer.prototype._write=function(r,i,s){if(!this._hparser&&!this._bparser){return s()}if(this._headerFirst&&this._isPreamble){if(!this._part){this._part=new d(this._partOpts);if(this.listenerCount("preamble")!==0){this.emit("preamble",this._part)}else{this._ignore()}}const i=this._hparser.push(r);if(!this._inHeader&&i!==undefined&&i{"use strict";const a=s(15673).EventEmitter;const l=s(47261).inherits;const c=s(9617);const d=s(52811);const p=Buffer.from("\r\n\r\n");const A=/\r\n/g;const u=/^([^:]+):[ \t]?([\x00-\xFF]+)?$/;function HeaderParser(r){a.call(this);r=r||{};const i=this;this.nread=0;this.maxed=false;this.npairs=0;this.maxHeaderPairs=c(r,"maxHeaderPairs",2e3);this.maxHeaderSize=c(r,"maxHeaderSize",80*1024);this.buffer="";this.header={};this.finished=false;this.ss=new d(p);this.ss.on("info",(function(r,s,a,l){if(s&&!i.maxed){if(i.nread+l-a>=i.maxHeaderSize){l=i.maxHeaderSize-i.nread+a;i.nread=i.maxHeaderSize;i.maxed=true}else{i.nread+=l-a}i.buffer+=s.toString("binary",a,l)}if(r){i._finish()}}))}l(HeaderParser,a);HeaderParser.prototype.push=function(r){const i=this.ss.push(r);if(this.finished){return i}};HeaderParser.prototype.reset=function(){this.finished=false;this.buffer="";this.header={};this.ss.reset()};HeaderParser.prototype._finish=function(){if(this.buffer){this._parseHeader()}this.ss.matches=this.ss.maxMatches;const r=this.header;this.header={};this.buffer="";this.finished=true;this.nread=this.npairs=0;this.maxed=false;this.emit("header",r)};HeaderParser.prototype._parseHeader=function(){if(this.npairs===this.maxHeaderPairs){return}const r=this.buffer.split(A);const i=r.length;let s,a;for(var l=0;l{"use strict";const a=s(47261).inherits;const l=s(84492).Readable;function PartStream(r){l.call(this,r)}a(PartStream,l);PartStream.prototype._read=function(r){};r.exports=PartStream},52811:(r,i,s)=>{"use strict";const a=s(15673).EventEmitter;const l=s(47261).inherits;function SBMH(r){if(typeof r==="string"){r=Buffer.from(r)}if(!Buffer.isBuffer(r)){throw new TypeError("The needle has to be a String or a Buffer.")}const i=r.length;if(i===0){throw new Error("The needle cannot be an empty String/Buffer.")}if(i>256){throw new Error("The needle cannot have a length bigger than 256.")}this.maxMatches=Infinity;this.matches=0;this._occ=new Array(256).fill(i);this._lookbehind_size=0;this._needle=r;this._bufpos=0;this._lookbehind=Buffer.alloc(i);for(var s=0;s=0){this.emit("info",false,this._lookbehind,0,this._lookbehind_size);this._lookbehind_size=0}else{const s=this._lookbehind_size+c;if(s>0){this.emit("info",false,this._lookbehind,0,s)}this._lookbehind.copy(this._lookbehind,0,s,this._lookbehind_size-s);this._lookbehind_size-=s;r.copy(this._lookbehind,this._lookbehind_size);this._lookbehind_size+=i;this._bufpos=i;return i}}c+=(c>=0)*this._bufpos;if(r.indexOf(s,c)!==-1){c=r.indexOf(s,c);++this.matches;if(c>0){this.emit("info",true,r,this._bufpos,c)}else{this.emit("info",true)}return this._bufpos=c+a}else{c=i-a}while(c0){this.emit("info",false,r,this._bufpos,c{"use strict";const a=s(84492).Writable;const{inherits:l}=s(47261);const c=s(6351);const d=s(69577);const p=s(3030);const A=s(29233);function Busboy(r){if(!(this instanceof Busboy)){return new Busboy(r)}if(typeof r!=="object"){throw new TypeError("Busboy expected an options-Object.")}if(typeof r.headers!=="object"){throw new TypeError("Busboy expected an options-Object with headers-attribute.")}if(typeof r.headers["content-type"]!=="string"){throw new TypeError("Missing Content-Type-header.")}const{headers:i,...s}=r;this.opts={autoDestroy:false,...s};a.call(this,this.opts);this._done=false;this._parser=this.getParserByHeaders(i);this._finished=false}l(Busboy,a);Busboy.prototype.emit=function(r){if(r==="finish"){if(!this._done){this._parser?.end();return}else if(this._finished){return}this._finished=true}a.prototype.emit.apply(this,arguments)};Busboy.prototype.getParserByHeaders=function(r){const i=A(r["content-type"]);const s={defCharset:this.opts.defCharset,fileHwm:this.opts.fileHwm,headers:r,highWaterMark:this.opts.highWaterMark,isPartAFile:this.opts.isPartAFile,limits:this.opts.limits,parsedConType:i,preservePath:this.opts.preservePath};if(d.detect.test(i[0])){return new d(this,s)}if(p.detect.test(i[0])){return new p(this,s)}throw new Error("Unsupported Content-Type.")};Busboy.prototype._write=function(r,i,s){this._parser.write(r,s)};r.exports=Busboy;r.exports["default"]=Busboy;r.exports.Busboy=Busboy;r.exports.Dicer=c},69577:(r,i,s)=>{"use strict";const{Readable:a}=s(84492);const{inherits:l}=s(47261);const c=s(6351);const d=s(29233);const p=s(41322);const A=s(32556);const u=s(9617);const h=/^boundary$/i;const g=/^form-data$/i;const y=/^charset$/i;const b=/^filename$/i;const C=/^name$/i;Multipart.detect=/^multipart\/form-data/i;function Multipart(r,i){let s;let a;const l=this;let B;const I=i.limits;const w=i.isPartAFile||((r,i,s)=>i==="application/octet-stream"||s!==undefined);const v=i.parsedConType||[];const S=i.defCharset||"utf8";const Q=i.preservePath;const N={highWaterMark:i.fileHwm};for(s=0,a=v.length;sx){l.parser.removeListener("part",onPart);l.parser.on("part",skipPart);r.hitPartsLimit=true;r.emit("partsLimit");return skipPart(i)}if(U){const r=U;r.emit("end");r.removeAllListeners("end")}i.on("header",(function(c){let u;let h;let B;let I;let v;let x;let D=0;if(c["content-type"]){B=d(c["content-type"][0]);if(B[0]){u=B[0].toLowerCase();for(s=0,a=B.length;sk){const a=k-D+r.length;if(a>0){s.push(r.slice(0,a))}s.truncated=true;s.bytesRead=k;i.removeAllListeners("data");s.emit("limit");return}else if(!s.push(r)){l._pause=true}s.bytesRead=D};H=function(){M=undefined;s.push(null)}}else{if(L===_){if(!r.hitFieldsLimit){r.hitFieldsLimit=true;r.emit("fieldsLimit")}return skipPart(i)}++L;++F;let s="";let a=false;U=i;P=function(r){if((D+=r.length)>R){const l=R-(D-r.length);s+=r.toString("binary",0,l);a=true;i.removeAllListeners("data")}else{s+=r.toString("binary")}};H=function(){U=undefined;if(s.length){s=p(s,"binary",I)}r.emit("field",h,s,false,a,v,u);--F;checkFinished()}}i._readableState.sync=false;i.on("data",P);i.on("end",H)})).on("error",(function(r){if(M){M.emit("error",r)}}))})).on("error",(function(i){r.emit("error",i)})).on("finish",(function(){H=true;checkFinished()}))}Multipart.prototype.write=function(r,i){const s=this.parser.write(r);if(s&&!this._pause){i()}else{this._needDrain=!s;this._cb=i}};Multipart.prototype.end=function(){const r=this;if(r.parser.writable){r.parser.end()}else if(!r._boy._done){process.nextTick((function(){r._boy._done=true;r._boy.emit("finish")}))}};function skipPart(r){r.resume()}function FileStream(r){a.call(this,r);this.bytesRead=0;this.truncated=false}l(FileStream,a);FileStream.prototype._read=function(r){};r.exports=Multipart},3030:(r,i,s)=>{"use strict";const a=s(68870);const l=s(41322);const c=s(9617);const d=/^charset$/i;UrlEncoded.detect=/^application\/x-www-form-urlencoded/i;function UrlEncoded(r,i){const s=i.limits;const l=i.parsedConType;this.boy=r;this.fieldSizeLimit=c(s,"fieldSize",1*1024*1024);this.fieldNameSizeLimit=c(s,"fieldNameSize",100);this.fieldsLimit=c(s,"fields",Infinity);let p;for(var A=0,u=l.length;Ad){this._key+=this.decoder.write(r.toString("binary",d,s))}this._state="val";this._hitLimit=false;this._checkingBytes=true;this._val="";this._bytesVal=0;this._valTrunc=false;this.decoder.reset();d=s+1}else if(a!==undefined){++this._fields;let s;const c=this._keyTrunc;if(a>d){s=this._key+=this.decoder.write(r.toString("binary",d,a))}else{s=this._key}this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();if(s.length){this.boy.emit("field",l(s,"binary",this.charset),"",c,false)}d=a+1;if(this._fields===this.fieldsLimit){return i()}}else if(this._hitLimit){if(c>d){this._key+=this.decoder.write(r.toString("binary",d,c))}d=c;if((this._bytesKey=this._key.length)===this.fieldNameSizeLimit){this._checkingBytes=false;this._keyTrunc=true}}else{if(dd){this._val+=this.decoder.write(r.toString("binary",d,a))}this.boy.emit("field",l(this._key,"binary",this.charset),l(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc);this._state="key";this._hitLimit=false;this._checkingBytes=true;this._key="";this._bytesKey=0;this._keyTrunc=false;this.decoder.reset();d=a+1;if(this._fields===this.fieldsLimit){return i()}}else if(this._hitLimit){if(c>d){this._val+=this.decoder.write(r.toString("binary",d,c))}d=c;if(this._val===""&&this.fieldSizeLimit===0||(this._bytesVal=this._val.length)===this.fieldSizeLimit){this._checkingBytes=false;this._valTrunc=true}}else{if(d0){this.boy.emit("field",l(this._key,"binary",this.charset),"",this._keyTrunc,false)}else if(this._state==="val"){this.boy.emit("field",l(this._key,"binary",this.charset),l(this._val,"binary",this.charset),this._keyTrunc,this._valTrunc)}this.boy._done=true;this.boy.emit("finish")};r.exports=UrlEncoded},68870:r=>{"use strict";const i=/\+/g;const s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];function Decoder(){this.buffer=undefined}Decoder.prototype.write=function(r){r=r.replace(i," ");let a="";let l=0;let c=0;const d=r.length;for(;lc){a+=r.substring(c,l);c=l}this.buffer="";++c}}if(c{"use strict";r.exports=function basename(r){if(typeof r!=="string"){return""}for(var i=r.length-1;i>=0;--i){switch(r.charCodeAt(i)){case 47:case 92:r=r.slice(i+1);return r===".."||r==="."?"":r}}return r===".."||r==="."?"":r}},41322:function(r){"use strict";const i=new TextDecoder("utf-8");const s=new Map([["utf-8",i],["utf8",i]]);function getDecoder(r){let i;while(true){switch(r){case"utf-8":case"utf8":return a.utf8;case"latin1":case"ascii":case"us-ascii":case"iso-8859-1":case"iso8859-1":case"iso88591":case"iso_8859-1":case"windows-1252":case"iso_8859-1:1987":case"cp1252":case"x-cp1252":return a.latin1;case"utf16le":case"utf-16le":case"ucs2":case"ucs-2":return a.utf16le;case"base64":return a.base64;default:if(i===undefined){i=true;r=r.toLowerCase();continue}return a.other.bind(r)}}}const a={utf8:(r,i)=>{if(r.length===0){return""}if(typeof r==="string"){r=Buffer.from(r,i)}return r.utf8Slice(0,r.length)},latin1:(r,i)=>{if(r.length===0){return""}if(typeof r==="string"){return r}return r.latin1Slice(0,r.length)},utf16le:(r,i)=>{if(r.length===0){return""}if(typeof r==="string"){r=Buffer.from(r,i)}return r.ucs2Slice(0,r.length)},base64:(r,i)=>{if(r.length===0){return""}if(typeof r==="string"){r=Buffer.from(r,i)}return r.base64Slice(0,r.length)},other:(r,i)=>{if(r.length===0){return""}if(typeof r==="string"){r=Buffer.from(r,i)}if(s.has(this.toString())){try{return s.get(this).decode(r)}catch{}}return typeof r==="string"?r:r.toString()}};function decodeText(r,i,s){if(r){return getDecoder(s)(r,i)}return r}r.exports=decodeText},9617:r=>{"use strict";r.exports=function getLimit(r,i,s){if(!r||r[i]===undefined||r[i]===null){return s}if(typeof r[i]!=="number"||isNaN(r[i])){throw new TypeError("Limit "+i+" is not a valid number")}return r[i]}},29233:(r,i,s)=>{"use strict";const a=s(41322);const l=/%[a-fA-F0-9][a-fA-F0-9]/g;const c={"%00":"\0","%01":"","%02":"","%03":"","%04":"","%05":"","%06":"","%07":"","%08":"\b","%09":"\t","%0a":"\n","%0A":"\n","%0b":"\v","%0B":"\v","%0c":"\f","%0C":"\f","%0d":"\r","%0D":"\r","%0e":"","%0E":"","%0f":"","%0F":"","%10":"","%11":"","%12":"","%13":"","%14":"","%15":"","%16":"","%17":"","%18":"","%19":"","%1a":"","%1A":"","%1b":"","%1B":"","%1c":"","%1C":"","%1d":"","%1D":"","%1e":"","%1E":"","%1f":"","%1F":"","%20":" ","%21":"!","%22":'"',"%23":"#","%24":"$","%25":"%","%26":"&","%27":"'","%28":"(","%29":")","%2a":"*","%2A":"*","%2b":"+","%2B":"+","%2c":",","%2C":",","%2d":"-","%2D":"-","%2e":".","%2E":".","%2f":"/","%2F":"/","%30":"0","%31":"1","%32":"2","%33":"3","%34":"4","%35":"5","%36":"6","%37":"7","%38":"8","%39":"9","%3a":":","%3A":":","%3b":";","%3B":";","%3c":"<","%3C":"<","%3d":"=","%3D":"=","%3e":">","%3E":">","%3f":"?","%3F":"?","%40":"@","%41":"A","%42":"B","%43":"C","%44":"D","%45":"E","%46":"F","%47":"G","%48":"H","%49":"I","%4a":"J","%4A":"J","%4b":"K","%4B":"K","%4c":"L","%4C":"L","%4d":"M","%4D":"M","%4e":"N","%4E":"N","%4f":"O","%4F":"O","%50":"P","%51":"Q","%52":"R","%53":"S","%54":"T","%55":"U","%56":"V","%57":"W","%58":"X","%59":"Y","%5a":"Z","%5A":"Z","%5b":"[","%5B":"[","%5c":"\\","%5C":"\\","%5d":"]","%5D":"]","%5e":"^","%5E":"^","%5f":"_","%5F":"_","%60":"`","%61":"a","%62":"b","%63":"c","%64":"d","%65":"e","%66":"f","%67":"g","%68":"h","%69":"i","%6a":"j","%6A":"j","%6b":"k","%6B":"k","%6c":"l","%6C":"l","%6d":"m","%6D":"m","%6e":"n","%6E":"n","%6f":"o","%6F":"o","%70":"p","%71":"q","%72":"r","%73":"s","%74":"t","%75":"u","%76":"v","%77":"w","%78":"x","%79":"y","%7a":"z","%7A":"z","%7b":"{","%7B":"{","%7c":"|","%7C":"|","%7d":"}","%7D":"}","%7e":"~","%7E":"~","%7f":"","%7F":"","%80":"€","%81":"","%82":"‚","%83":"ƒ","%84":"„","%85":"…","%86":"†","%87":"‡","%88":"ˆ","%89":"‰","%8a":"Š","%8A":"Š","%8b":"‹","%8B":"‹","%8c":"Œ","%8C":"Œ","%8d":"","%8D":"","%8e":"Ž","%8E":"Ž","%8f":"","%8F":"","%90":"","%91":"‘","%92":"’","%93":"“","%94":"”","%95":"•","%96":"–","%97":"—","%98":"˜","%99":"™","%9a":"š","%9A":"š","%9b":"›","%9B":"›","%9c":"œ","%9C":"œ","%9d":"","%9D":"","%9e":"ž","%9E":"ž","%9f":"Ÿ","%9F":"Ÿ","%a0":" ","%A0":" ","%a1":"¡","%A1":"¡","%a2":"¢","%A2":"¢","%a3":"£","%A3":"£","%a4":"¤","%A4":"¤","%a5":"¥","%A5":"¥","%a6":"¦","%A6":"¦","%a7":"§","%A7":"§","%a8":"¨","%A8":"¨","%a9":"©","%A9":"©","%aa":"ª","%Aa":"ª","%aA":"ª","%AA":"ª","%ab":"«","%Ab":"«","%aB":"«","%AB":"«","%ac":"¬","%Ac":"¬","%aC":"¬","%AC":"¬","%ad":"­","%Ad":"­","%aD":"­","%AD":"­","%ae":"®","%Ae":"®","%aE":"®","%AE":"®","%af":"¯","%Af":"¯","%aF":"¯","%AF":"¯","%b0":"°","%B0":"°","%b1":"±","%B1":"±","%b2":"²","%B2":"²","%b3":"³","%B3":"³","%b4":"´","%B4":"´","%b5":"µ","%B5":"µ","%b6":"¶","%B6":"¶","%b7":"·","%B7":"·","%b8":"¸","%B8":"¸","%b9":"¹","%B9":"¹","%ba":"º","%Ba":"º","%bA":"º","%BA":"º","%bb":"»","%Bb":"»","%bB":"»","%BB":"»","%bc":"¼","%Bc":"¼","%bC":"¼","%BC":"¼","%bd":"½","%Bd":"½","%bD":"½","%BD":"½","%be":"¾","%Be":"¾","%bE":"¾","%BE":"¾","%bf":"¿","%Bf":"¿","%bF":"¿","%BF":"¿","%c0":"À","%C0":"À","%c1":"Á","%C1":"Á","%c2":"Â","%C2":"Â","%c3":"Ã","%C3":"Ã","%c4":"Ä","%C4":"Ä","%c5":"Å","%C5":"Å","%c6":"Æ","%C6":"Æ","%c7":"Ç","%C7":"Ç","%c8":"È","%C8":"È","%c9":"É","%C9":"É","%ca":"Ê","%Ca":"Ê","%cA":"Ê","%CA":"Ê","%cb":"Ë","%Cb":"Ë","%cB":"Ë","%CB":"Ë","%cc":"Ì","%Cc":"Ì","%cC":"Ì","%CC":"Ì","%cd":"Í","%Cd":"Í","%cD":"Í","%CD":"Í","%ce":"Î","%Ce":"Î","%cE":"Î","%CE":"Î","%cf":"Ï","%Cf":"Ï","%cF":"Ï","%CF":"Ï","%d0":"Ð","%D0":"Ð","%d1":"Ñ","%D1":"Ñ","%d2":"Ò","%D2":"Ò","%d3":"Ó","%D3":"Ó","%d4":"Ô","%D4":"Ô","%d5":"Õ","%D5":"Õ","%d6":"Ö","%D6":"Ö","%d7":"×","%D7":"×","%d8":"Ø","%D8":"Ø","%d9":"Ù","%D9":"Ù","%da":"Ú","%Da":"Ú","%dA":"Ú","%DA":"Ú","%db":"Û","%Db":"Û","%dB":"Û","%DB":"Û","%dc":"Ü","%Dc":"Ü","%dC":"Ü","%DC":"Ü","%dd":"Ý","%Dd":"Ý","%dD":"Ý","%DD":"Ý","%de":"Þ","%De":"Þ","%dE":"Þ","%DE":"Þ","%df":"ß","%Df":"ß","%dF":"ß","%DF":"ß","%e0":"à","%E0":"à","%e1":"á","%E1":"á","%e2":"â","%E2":"â","%e3":"ã","%E3":"ã","%e4":"ä","%E4":"ä","%e5":"å","%E5":"å","%e6":"æ","%E6":"æ","%e7":"ç","%E7":"ç","%e8":"è","%E8":"è","%e9":"é","%E9":"é","%ea":"ê","%Ea":"ê","%eA":"ê","%EA":"ê","%eb":"ë","%Eb":"ë","%eB":"ë","%EB":"ë","%ec":"ì","%Ec":"ì","%eC":"ì","%EC":"ì","%ed":"í","%Ed":"í","%eD":"í","%ED":"í","%ee":"î","%Ee":"î","%eE":"î","%EE":"î","%ef":"ï","%Ef":"ï","%eF":"ï","%EF":"ï","%f0":"ð","%F0":"ð","%f1":"ñ","%F1":"ñ","%f2":"ò","%F2":"ò","%f3":"ó","%F3":"ó","%f4":"ô","%F4":"ô","%f5":"õ","%F5":"õ","%f6":"ö","%F6":"ö","%f7":"÷","%F7":"÷","%f8":"ø","%F8":"ø","%f9":"ù","%F9":"ù","%fa":"ú","%Fa":"ú","%fA":"ú","%FA":"ú","%fb":"û","%Fb":"û","%fB":"û","%FB":"û","%fc":"ü","%Fc":"ü","%fC":"ü","%FC":"ü","%fd":"ý","%Fd":"ý","%fD":"ý","%FD":"ý","%fe":"þ","%Fe":"þ","%fE":"þ","%FE":"þ","%ff":"ÿ","%Ff":"ÿ","%fF":"ÿ","%FF":"ÿ"};function encodedReplacer(r){return c[r]}const d=0;const p=1;const A=2;const u=3;function parseParams(r){const i=[];let s=d;let c="";let h=false;let g=false;let y=0;let b="";const C=r.length;for(var B=0;B{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Glob=void 0;const a=s(81893);const l=s(41041);const c=s(68198);const d=s(46606);const p=s(73979);const A=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class Glob{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(r,i){if(!i)throw new TypeError("glob options required");this.withFileTypes=!!i.withFileTypes;this.signal=i.signal;this.follow=!!i.follow;this.dot=!!i.dot;this.dotRelative=!!i.dotRelative;this.nodir=!!i.nodir;this.mark=!!i.mark;if(!i.cwd){this.cwd=""}else if(i.cwd instanceof URL||i.cwd.startsWith("file://")){i.cwd=(0,l.fileURLToPath)(i.cwd)}this.cwd=i.cwd||"";this.root=i.root;this.magicalBraces=!!i.magicalBraces;this.nobrace=!!i.nobrace;this.noext=!!i.noext;this.realpath=!!i.realpath;this.absolute=i.absolute;this.includeChildMatches=i.includeChildMatches!==false;this.noglobstar=!!i.noglobstar;this.matchBase=!!i.matchBase;this.maxDepth=typeof i.maxDepth==="number"?i.maxDepth:Infinity;this.stat=!!i.stat;this.ignore=i.ignore;if(this.withFileTypes&&this.absolute!==undefined){throw new Error("cannot set absolute and withFileTypes:true")}if(typeof r==="string"){r=[r]}this.windowsPathsNoEscape=!!i.windowsPathsNoEscape||i.allowWindowsEscape===false;if(this.windowsPathsNoEscape){r=r.map((r=>r.replace(/\\/g,"/")))}if(this.matchBase){if(i.noglobstar){throw new TypeError("base matching requires globstar")}r=r.map((r=>r.includes("/")?r:`./**/${r}`))}this.pattern=r;this.platform=i.platform||A;this.opts={...i,platform:this.platform};if(i.scurry){this.scurry=i.scurry;if(i.nocase!==undefined&&i.nocase!==i.scurry.nocase){throw new Error("nocase option contradicts provided scurry option")}}else{const r=i.platform==="win32"?c.PathScurryWin32:i.platform==="darwin"?c.PathScurryDarwin:i.platform?c.PathScurryPosix:c.PathScurry;this.scurry=new r(this.cwd,{nocase:i.nocase,fs:i.fs})}this.nocase=this.scurry.nocase;const s=this.platform==="darwin"||this.platform==="win32";const p={...i,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:true,noext:this.noext,nonegate:true,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug};const u=this.pattern.map((r=>new a.Minimatch(r,p)));const[h,g]=u.reduce(((r,i)=>{r[0].push(...i.set);r[1].push(...i.globParts);return r}),[[],[]]);this.patterns=h.map(((r,i)=>{const s=g[i];if(!s)throw new Error("invalid pattern object");return new d.Pattern(r,s,0,this.platform)}))}async walk(){return[...await new p.GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==Infinity?this.maxDepth+this.scurry.cwd.depth():Infinity,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new p.GlobWalker(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==Infinity?this.maxDepth+this.scurry.cwd.depth():Infinity,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new p.GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==Infinity?this.maxDepth+this.scurry.cwd.depth():Infinity,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new p.GlobStream(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==Infinity?this.maxDepth+this.scurry.cwd.depth():Infinity,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}}i.Glob=Glob},70539:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.hasMagic=void 0;const a=s(81893);const hasMagic=(r,i={})=>{if(!Array.isArray(r)){r=[r]}for(const s of r){if(new a.Minimatch(s,i).hasMagic())return true}return false};i.hasMagic=hasMagic},65255:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Ignore=void 0;const a=s(81893);const l=s(46606);const c=typeof process==="object"&&process&&typeof process.platform==="string"?process.platform:"linux";class Ignore{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(r,{nobrace:i,nocase:s,noext:a,noglobstar:l,platform:d=c}){this.relative=[];this.absolute=[];this.relativeChildren=[];this.absoluteChildren=[];this.platform=d;this.mmopts={dot:true,nobrace:i,nocase:s,noext:a,noglobstar:l,optimizationLevel:2,platform:d,nocomment:true,nonegate:true};for(const i of r)this.add(i)}add(r){const i=new a.Minimatch(r,this.mmopts);for(let r=0;r{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.glob=i.sync=i.iterate=i.iterateSync=i.stream=i.streamSync=i.Ignore=i.hasMagic=i.Glob=i.unescape=i.escape=void 0;i.globStreamSync=globStreamSync;i.globStream=globStream;i.globSync=globSync;i.globIterateSync=globIterateSync;i.globIterate=globIterate;const a=s(81893);const l=s(46217);const c=s(70539);var d=s(81893);Object.defineProperty(i,"escape",{enumerable:true,get:function(){return d.escape}});Object.defineProperty(i,"unescape",{enumerable:true,get:function(){return d.unescape}});var p=s(46217);Object.defineProperty(i,"Glob",{enumerable:true,get:function(){return p.Glob}});var A=s(70539);Object.defineProperty(i,"hasMagic",{enumerable:true,get:function(){return A.hasMagic}});var u=s(65255);Object.defineProperty(i,"Ignore",{enumerable:true,get:function(){return u.Ignore}});function globStreamSync(r,i={}){return new l.Glob(r,i).streamSync()}function globStream(r,i={}){return new l.Glob(r,i).stream()}function globSync(r,i={}){return new l.Glob(r,i).walkSync()}async function glob_(r,i={}){return new l.Glob(r,i).walk()}function globIterateSync(r,i={}){return new l.Glob(r,i).iterateSync()}function globIterate(r,i={}){return new l.Glob(r,i).iterate()}i.streamSync=globStreamSync;i.stream=Object.assign(globStream,{sync:globStreamSync});i.iterateSync=globIterateSync;i.iterate=Object.assign(globIterate,{sync:globIterateSync});i.sync=Object.assign(globSync,{stream:globStreamSync,iterate:globIterateSync});i.glob=Object.assign(glob_,{glob:glob_,globSync:globSync,sync:i.sync,globStream:globStream,stream:i.stream,globStreamSync:globStreamSync,streamSync:i.streamSync,globIterate:globIterate,iterate:i.iterate,globIterateSync:globIterateSync,iterateSync:i.iterateSync,Glob:l.Glob,hasMagic:c.hasMagic,escape:a.escape,unescape:a.unescape});i.glob.glob=i.glob},46606:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Pattern=void 0;const a=s(81893);const isPatternList=r=>r.length>=1;const isGlobList=r=>r.length>=1;class Pattern{#m;#g;#y;length;#E;#b;#C;#B;#I;#w;#v=true;constructor(r,i,s,a){if(!isPatternList(r)){throw new TypeError("empty pattern list")}if(!isGlobList(i)){throw new TypeError("empty glob list")}if(i.length!==r.length){throw new TypeError("mismatched pattern list and glob list lengths")}this.length=r.length;if(s<0||s>=this.length){throw new TypeError("index out of range")}this.#m=r;this.#g=i;this.#y=s;this.#E=a;if(this.#y===0){if(this.isUNC()){const[r,i,s,a,...l]=this.#m;const[c,d,p,A,...u]=this.#g;if(l[0]===""){l.shift();u.shift()}const h=[r,i,s,a,""].join("/");const g=[c,d,p,A,""].join("/");this.#m=[h,...l];this.#g=[g,...u];this.length=this.#m.length}else if(this.isDrive()||this.isAbsolute()){const[r,...i]=this.#m;const[s,...a]=this.#g;if(i[0]===""){i.shift();a.shift()}const l=r+"/";const c=s+"/";this.#m=[l,...i];this.#g=[c,...a];this.length=this.#m.length}}}pattern(){return this.#m[this.#y]}isString(){return typeof this.#m[this.#y]==="string"}isGlobstar(){return this.#m[this.#y]===a.GLOBSTAR}isRegExp(){return this.#m[this.#y]instanceof RegExp}globString(){return this.#C=this.#C||(this.#y===0?this.isAbsolute()?this.#g[0]+this.#g.slice(1).join("/"):this.#g.join("/"):this.#g.slice(this.#y).join("/"))}hasMore(){return this.length>this.#y+1}rest(){if(this.#b!==undefined)return this.#b;if(!this.hasMore())return this.#b=null;this.#b=new Pattern(this.#m,this.#g,this.#y+1,this.#E);this.#b.#w=this.#w;this.#b.#I=this.#I;this.#b.#B=this.#B;return this.#b}isUNC(){const r=this.#m;return this.#I!==undefined?this.#I:this.#I=this.#E==="win32"&&this.#y===0&&r[0]===""&&r[1]===""&&typeof r[2]==="string"&&!!r[2]&&typeof r[3]==="string"&&!!r[3]}isDrive(){const r=this.#m;return this.#B!==undefined?this.#B:this.#B=this.#E==="win32"&&this.#y===0&&this.length>1&&typeof r[0]==="string"&&/^[a-z]:$/i.test(r[0])}isAbsolute(){const r=this.#m;return this.#w!==undefined?this.#w:this.#w=r[0]===""&&r.length>1||this.isDrive()||this.isUNC()}root(){const r=this.#m[0];return typeof r==="string"&&this.isAbsolute()&&this.#y===0?r:""}checkFollowGlobstar(){return!(this.#y===0||!this.isGlobstar()||!this.#v)}markFollowGlobstar(){if(this.#y===0||!this.isGlobstar()||!this.#v)return false;this.#v=false;return true}}i.Pattern=Pattern},78770:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.Processor=i.SubWalks=i.MatchRecord=i.HasWalkedCache=void 0;const a=s(81893);class HasWalkedCache{store;constructor(r=new Map){this.store=r}copy(){return new HasWalkedCache(new Map(this.store))}hasWalked(r,i){return this.store.get(r.fullpath())?.has(i.globString())}storeWalked(r,i){const s=r.fullpath();const a=this.store.get(s);if(a)a.add(i.globString());else this.store.set(s,new Set([i.globString()]))}}i.HasWalkedCache=HasWalkedCache;class MatchRecord{store=new Map;add(r,i,s){const a=(i?2:0)|(s?1:0);const l=this.store.get(r);this.store.set(r,l===undefined?a:a&l)}entries(){return[...this.store.entries()].map((([r,i])=>[r,!!(i&2),!!(i&1)]))}}i.MatchRecord=MatchRecord;class SubWalks{store=new Map;add(r,i){if(!r.canReaddir()){return}const s=this.store.get(r);if(s){if(!s.find((r=>r.globString()===i.globString()))){s.push(i)}}else this.store.set(r,[i])}get(r){const i=this.store.get(r);if(!i){throw new Error("attempting to walk unknown path")}return i}entries(){return this.keys().map((r=>[r,this.store.get(r)]))}keys(){return[...this.store.keys()].filter((r=>r.canReaddir()))}}i.SubWalks=SubWalks;class Processor{hasWalkedCache;matches=new MatchRecord;subwalks=new SubWalks;patterns;follow;dot;opts;constructor(r,i){this.opts=r;this.follow=!!r.follow;this.dot=!!r.dot;this.hasWalkedCache=i?i.copy():new HasWalkedCache}processPatterns(r,i){this.patterns=i;const s=i.map((i=>[r,i]));for(let[r,i]of s){this.hasWalkedCache.storeWalked(r,i);const s=i.root();const l=i.isAbsolute()&&this.opts.absolute!==false;if(s){r=r.resolve(s==="/"&&this.opts.root!==undefined?this.opts.root:s);const a=i.rest();if(!a){this.matches.add(r,true,false);continue}else{i=a}}if(r.isENOENT())continue;let c;let d;let p=false;while(typeof(c=i.pattern())==="string"&&(d=i.rest())){const s=r.resolve(c);r=s;i=d;p=true}c=i.pattern();d=i.rest();if(p){if(this.hasWalkedCache.hasWalked(r,i))continue;this.hasWalkedCache.storeWalked(r,i)}if(typeof c==="string"){const i=c===".."||c===""||c===".";this.matches.add(r.resolve(c),l,i);continue}else if(c===a.GLOBSTAR){if(!r.isSymbolicLink()||this.follow||i.checkFollowGlobstar()){this.subwalks.add(r,i)}const s=d?.pattern();const a=d?.rest();if(!d||(s===""||s===".")&&!a){this.matches.add(r,l,s===""||s===".")}else{if(s===".."){const i=r.parent||r;if(!a)this.matches.add(i,l,true);else if(!this.hasWalkedCache.hasWalked(i,a)){this.subwalks.add(i,a)}}}}else if(c instanceof RegExp){this.subwalks.add(r,i)}}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new Processor(this.opts,this.hasWalkedCache)}filterEntries(r,i){const s=this.subwalks.get(r);const l=this.child();for(const r of i){for(const i of s){const s=i.isAbsolute();const c=i.pattern();const d=i.rest();if(c===a.GLOBSTAR){l.testGlobstar(r,i,d,s)}else if(c instanceof RegExp){l.testRegExp(r,c,d,s)}else{l.testString(r,c,d,s)}}}return l}testGlobstar(r,i,s,a){if(this.dot||!r.name.startsWith(".")){if(!i.hasMore()){this.matches.add(r,a,false)}if(r.canReaddir()){if(this.follow||!r.isSymbolicLink()){this.subwalks.add(r,i)}else if(r.isSymbolicLink()){if(s&&i.checkFollowGlobstar()){this.subwalks.add(r,s)}else if(i.markFollowGlobstar()){this.subwalks.add(r,i)}}}}if(s){const i=s.pattern();if(typeof i==="string"&&i!==".."&&i!==""&&i!=="."){this.testString(r,i,s.rest(),a)}else if(i===".."){const i=r.parent||r;this.subwalks.add(i,s)}else if(i instanceof RegExp){this.testRegExp(r,i,s.rest(),a)}}}testRegExp(r,i,s,a){if(!i.test(r.name))return;if(!s){this.matches.add(r,a,false)}else{this.subwalks.add(r,s)}}testString(r,i,s,a){if(!r.isNamed(i))return;if(!s){this.matches.add(r,a,false)}else{this.subwalks.add(r,s)}}}i.Processor=Processor},73979:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.GlobStream=i.GlobWalker=i.GlobUtil=void 0;const a=s(48797);const l=s(65255);const c=s(78770);const makeIgnore=(r,i)=>typeof r==="string"?new l.Ignore([r],i):Array.isArray(r)?new l.Ignore(r,i):r;class GlobUtil{path;patterns;opts;seen=new Set;paused=false;aborted=false;#S=[];#Q;#N;signal;maxDepth;includeChildMatches;constructor(r,i,s){this.patterns=r;this.path=i;this.opts=s;this.#N=!s.posix&&s.platform==="win32"?"\\":"/";this.includeChildMatches=s.includeChildMatches!==false;if(s.ignore||!this.includeChildMatches){this.#Q=makeIgnore(s.ignore??[],s);if(!this.includeChildMatches&&typeof this.#Q.add!=="function"){const r="cannot ignore child matches, ignore lacks add() method.";throw new Error(r)}}this.maxDepth=s.maxDepth||Infinity;if(s.signal){this.signal=s.signal;this.signal.addEventListener("abort",(()=>{this.#S.length=0}))}}#R(r){return this.seen.has(r)||!!this.#Q?.ignored?.(r)}#k(r){return!!this.#Q?.childrenIgnored?.(r)}pause(){this.paused=true}resume(){if(this.signal?.aborted)return;this.paused=false;let r=undefined;while(!this.paused&&(r=this.#S.shift())){r()}}onResume(r){if(this.signal?.aborted)return;if(!this.paused){r()}else{this.#S.push(r)}}async matchCheck(r,i){if(i&&this.opts.nodir)return undefined;let s;if(this.opts.realpath){s=r.realpathCached()||await r.realpath();if(!s)return undefined;r=s}const a=r.isUnknown()||this.opts.stat;const l=a?await r.lstat():r;if(this.opts.follow&&this.opts.nodir&&l?.isSymbolicLink()){const r=await l.realpath();if(r&&(r.isUnknown()||this.opts.stat)){await r.lstat()}}return this.matchCheckTest(l,i)}matchCheckTest(r,i){return r&&(this.maxDepth===Infinity||r.depth()<=this.maxDepth)&&(!i||r.canReaddir())&&(!this.opts.nodir||!r.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!r.isSymbolicLink()||!r.realpathCached()?.isDirectory())&&!this.#R(r)?r:undefined}matchCheckSync(r,i){if(i&&this.opts.nodir)return undefined;let s;if(this.opts.realpath){s=r.realpathCached()||r.realpathSync();if(!s)return undefined;r=s}const a=r.isUnknown()||this.opts.stat;const l=a?r.lstatSync():r;if(this.opts.follow&&this.opts.nodir&&l?.isSymbolicLink()){const r=l.realpathSync();if(r&&(r?.isUnknown()||this.opts.stat)){r.lstatSync()}}return this.matchCheckTest(l,i)}matchFinish(r,i){if(this.#R(r))return;if(!this.includeChildMatches&&this.#Q?.add){const i=`${r.relativePosix()}/**`;this.#Q.add(i)}const s=this.opts.absolute===undefined?i:this.opts.absolute;this.seen.add(r);const a=this.opts.mark&&r.isDirectory()?this.#N:"";if(this.opts.withFileTypes){this.matchEmit(r)}else if(s){const i=this.opts.posix?r.fullpathPosix():r.fullpath();this.matchEmit(i+a)}else{const i=this.opts.posix?r.relativePosix():r.relative();const s=this.opts.dotRelative&&!i.startsWith(".."+this.#N)?"."+this.#N:"";this.matchEmit(!i?"."+a:s+i+a)}}async match(r,i,s){const a=await this.matchCheck(r,s);if(a)this.matchFinish(a,i)}matchSync(r,i,s){const a=this.matchCheckSync(r,s);if(a)this.matchFinish(a,i)}walkCB(r,i,s){if(this.signal?.aborted)s();this.walkCB2(r,i,new c.Processor(this.opts),s)}walkCB2(r,i,s,a){if(this.#k(r))return a();if(this.signal?.aborted)a();if(this.paused){this.onResume((()=>this.walkCB2(r,i,s,a)));return}s.processPatterns(r,i);let l=1;const next=()=>{if(--l===0)a()};for(const[r,i,a]of s.matches.entries()){if(this.#R(r))continue;l++;this.match(r,i,a).then((()=>next()))}for(const r of s.subwalkTargets()){if(this.maxDepth!==Infinity&&r.depth()>=this.maxDepth){continue}l++;const i=r.readdirCached();if(r.calledReaddir())this.walkCB3(r,i,s,next);else{r.readdirCB(((i,a)=>this.walkCB3(r,a,s,next)),true)}}next()}walkCB3(r,i,s,a){s=s.filterEntries(r,i);let l=1;const next=()=>{if(--l===0)a()};for(const[r,i,a]of s.matches.entries()){if(this.#R(r))continue;l++;this.match(r,i,a).then((()=>next()))}for(const[r,i]of s.subwalks.entries()){l++;this.walkCB2(r,i,s.child(),next)}next()}walkCBSync(r,i,s){if(this.signal?.aborted)s();this.walkCB2Sync(r,i,new c.Processor(this.opts),s)}walkCB2Sync(r,i,s,a){if(this.#k(r))return a();if(this.signal?.aborted)a();if(this.paused){this.onResume((()=>this.walkCB2Sync(r,i,s,a)));return}s.processPatterns(r,i);let l=1;const next=()=>{if(--l===0)a()};for(const[r,i,a]of s.matches.entries()){if(this.#R(r))continue;this.matchSync(r,i,a)}for(const r of s.subwalkTargets()){if(this.maxDepth!==Infinity&&r.depth()>=this.maxDepth){continue}l++;const i=r.readdirSync();this.walkCB3Sync(r,i,s,next)}next()}walkCB3Sync(r,i,s,a){s=s.filterEntries(r,i);let l=1;const next=()=>{if(--l===0)a()};for(const[r,i,a]of s.matches.entries()){if(this.#R(r))continue;this.matchSync(r,i,a)}for(const[r,i]of s.subwalks.entries()){l++;this.walkCB2Sync(r,i,s.child(),next)}next()}}i.GlobUtil=GlobUtil;class GlobWalker extends GlobUtil{matches=new Set;constructor(r,i,s){super(r,i,s)}matchEmit(r){this.matches.add(r)}async walk(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown()){await this.path.lstat()}await new Promise(((r,i)=>{this.walkCB(this.path,this.patterns,(()=>{if(this.signal?.aborted){i(this.signal.reason)}else{r(this.matches)}}))}));return this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;if(this.path.isUnknown()){this.path.lstatSync()}this.walkCBSync(this.path,this.patterns,(()=>{if(this.signal?.aborted)throw this.signal.reason}));return this.matches}}i.GlobWalker=GlobWalker;class GlobStream extends GlobUtil{results;constructor(r,i,s){super(r,i,s);this.results=new a.Minipass({signal:this.signal,objectMode:true});this.results.on("drain",(()=>this.resume()));this.results.on("resume",(()=>this.resume()))}matchEmit(r){this.results.write(r);if(!this.results.flowing)this.pause()}stream(){const r=this.path;if(r.isUnknown()){r.lstat().then((()=>{this.walkCB(r,this.patterns,(()=>this.results.end()))}))}else{this.walkCB(r,this.patterns,(()=>this.results.end()))}return this.results}streamSync(){if(this.path.isUnknown()){this.path.lstatSync()}this.walkCBSync(this.path,this.patterns,(()=>this.results.end()));return this.results}}i.GlobStream=GlobStream},78843:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.LRUCache=void 0;const s=typeof performance==="object"&&performance&&typeof performance.now==="function"?performance:Date;const a=new Set;const l=typeof process==="object"&&!!process?process:{};const emitWarning=(r,i,s,a)=>{typeof l.emitWarning==="function"?l.emitWarning(r,i,s,a):console.error(`[${s}] ${i}: ${r}`)};let c=globalThis.AbortController;let d=globalThis.AbortSignal;if(typeof c==="undefined"){d=class AbortSignal{onabort;_onabort=[];reason;aborted=false;addEventListener(r,i){this._onabort.push(i)}};c=class AbortController{constructor(){warnACPolyfill()}signal=new d;abort(r){if(this.signal.aborted)return;this.signal.reason=r;this.signal.aborted=true;for(const i of this.signal._onabort){i(r)}this.signal.onabort?.(r)}};let r=l.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1";const warnACPolyfill=()=>{if(!r)return;r=false;emitWarning("AbortController is not defined. If using lru-cache in "+"node 14, load an AbortController polyfill from the "+"`node-abort-controller` package. A minimal polyfill is "+"provided for use by LRUCache.fetch(), but it should not be "+"relied upon in other contexts (eg, passing it to other APIs that "+"use AbortController/AbortSignal might have undesirable effects). "+"You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",warnACPolyfill)}}const shouldWarn=r=>!a.has(r);const p=Symbol("type");const isPosInt=r=>r&&r===Math.floor(r)&&r>0&&isFinite(r);const getUintArray=r=>!isPosInt(r)?null:r<=Math.pow(2,8)?Uint8Array:r<=Math.pow(2,16)?Uint16Array:r<=Math.pow(2,32)?Uint32Array:r<=Number.MAX_SAFE_INTEGER?ZeroArray:null;class ZeroArray extends Array{constructor(r){super(r);this.fill(0)}}class Stack{heap;length;static#T=false;static create(r){const i=getUintArray(r);if(!i)return[];Stack.#T=true;const s=new Stack(r,i);Stack.#T=false;return s}constructor(r,i){if(!Stack.#T){throw new TypeError("instantiate Stack using Stack.create(n)")}this.heap=new i(r);this.length=0}push(r){this.heap[this.length++]=r}pop(){return this.heap[--this.length]}}class LRUCache{#_;#x;#D;#P;#O;#L;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#F;#M;#U;#H;#q;#G;#j;#z;#V;#W;#Y;#J;#$;#K;#X;#Z;#ee;static unsafeExposeInternals(r){return{starts:r.#$,ttls:r.#K,sizes:r.#J,keyMap:r.#U,keyList:r.#H,valList:r.#q,next:r.#G,prev:r.#j,get head(){return r.#z},get tail(){return r.#V},free:r.#W,isBackgroundFetch:i=>r.#te(i),backgroundFetch:(i,s,a,l)=>r.#re(i,s,a,l),moveToTail:i=>r.#ie(i),indexes:i=>r.#ne(i),rindexes:i=>r.#se(i),isStale:i=>r.#ae(i)}}get max(){return this.#_}get maxSize(){return this.#x}get calculatedSize(){return this.#M}get size(){return this.#F}get fetchMethod(){return this.#O}get memoMethod(){return this.#L}get dispose(){return this.#D}get disposeAfter(){return this.#P}constructor(r){const{max:i=0,ttl:s,ttlResolution:l=1,ttlAutopurge:c,updateAgeOnGet:d,updateAgeOnHas:p,allowStale:A,dispose:u,disposeAfter:h,noDisposeOnSet:g,noUpdateTTL:y,maxSize:b=0,maxEntrySize:C=0,sizeCalculation:B,fetchMethod:I,memoMethod:w,noDeleteOnFetchRejection:v,noDeleteOnStaleGet:S,allowStaleOnFetchRejection:Q,allowStaleOnFetchAbort:N,ignoreFetchAbort:R}=r;if(i!==0&&!isPosInt(i)){throw new TypeError("max option must be a nonnegative integer")}const k=i?getUintArray(i):Array;if(!k){throw new Error("invalid max value: "+i)}this.#_=i;this.#x=b;this.maxEntrySize=C||this.#x;this.sizeCalculation=B;if(this.sizeCalculation){if(!this.#x&&!this.maxEntrySize){throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize")}if(typeof this.sizeCalculation!=="function"){throw new TypeError("sizeCalculation set to non-function")}}if(w!==undefined&&typeof w!=="function"){throw new TypeError("memoMethod must be a function if defined")}this.#L=w;if(I!==undefined&&typeof I!=="function"){throw new TypeError("fetchMethod must be a function if specified")}this.#O=I;this.#Z=!!I;this.#U=new Map;this.#H=new Array(i).fill(undefined);this.#q=new Array(i).fill(undefined);this.#G=new k(i);this.#j=new k(i);this.#z=0;this.#V=0;this.#W=Stack.create(i);this.#F=0;this.#M=0;if(typeof u==="function"){this.#D=u}if(typeof h==="function"){this.#P=h;this.#Y=[]}else{this.#P=undefined;this.#Y=undefined}this.#X=!!this.#D;this.#ee=!!this.#P;this.noDisposeOnSet=!!g;this.noUpdateTTL=!!y;this.noDeleteOnFetchRejection=!!v;this.allowStaleOnFetchRejection=!!Q;this.allowStaleOnFetchAbort=!!N;this.ignoreFetchAbort=!!R;if(this.maxEntrySize!==0){if(this.#x!==0){if(!isPosInt(this.#x)){throw new TypeError("maxSize must be a positive integer if specified")}}if(!isPosInt(this.maxEntrySize)){throw new TypeError("maxEntrySize must be a positive integer if specified")}this.#oe()}this.allowStale=!!A;this.noDeleteOnStaleGet=!!S;this.updateAgeOnGet=!!d;this.updateAgeOnHas=!!p;this.ttlResolution=isPosInt(l)||l===0?l:1;this.ttlAutopurge=!!c;this.ttl=s||0;if(this.ttl){if(!isPosInt(this.ttl)){throw new TypeError("ttl must be a positive integer if specified")}this.#le()}if(this.#_===0&&this.ttl===0&&this.#x===0){throw new TypeError("At least one of max, maxSize, or ttl is required")}if(!this.ttlAutopurge&&!this.#_&&!this.#x){const r="LRU_CACHE_UNBOUNDED";if(shouldWarn(r)){a.add(r);const i="TTL caching without ttlAutopurge, max, or maxSize can "+"result in unbounded memory consumption.";emitWarning(i,"UnboundedCacheWarning",r,LRUCache)}}}getRemainingTTL(r){return this.#U.has(r)?Infinity:0}#le(){const r=new ZeroArray(this.#_);const i=new ZeroArray(this.#_);this.#K=r;this.#$=i;this.#ce=(a,l,c=s.now())=>{i[a]=l!==0?c:0;r[a]=l;if(l!==0&&this.ttlAutopurge){const r=setTimeout((()=>{if(this.#ae(a)){this.#de(this.#H[a],"expire")}}),l+1);if(r.unref){r.unref()}}};this.#pe=a=>{i[a]=r[a]!==0?s.now():0};this.#Ae=(s,l)=>{if(r[l]){const c=r[l];const d=i[l];if(!c||!d)return;s.ttl=c;s.start=d;s.now=a||getNow();const p=s.now-d;s.remainingTTL=c-p}};let a=0;const getNow=()=>{const r=s.now();if(this.ttlResolution>0){a=r;const i=setTimeout((()=>a=0),this.ttlResolution);if(i.unref){i.unref()}}return r};this.getRemainingTTL=s=>{const l=this.#U.get(s);if(l===undefined){return 0}const c=r[l];const d=i[l];if(!c||!d){return Infinity}const p=(a||getNow())-d;return c-p};this.#ae=s=>{const l=i[s];const c=r[s];return!!c&&!!l&&(a||getNow())-l>c}}#pe=()=>{};#Ae=()=>{};#ce=()=>{};#ae=()=>false;#oe(){const r=new ZeroArray(this.#_);this.#M=0;this.#J=r;this.#ue=i=>{this.#M-=r[i];r[i]=0};this.#fe=(r,i,s,a)=>{if(this.#te(i)){return 0}if(!isPosInt(s)){if(a){if(typeof a!=="function"){throw new TypeError("sizeCalculation must be a function")}s=a(i,r);if(!isPosInt(s)){throw new TypeError("sizeCalculation return invalid (expect positive integer)")}}else{throw new TypeError("invalid size value (must be positive integer). "+"When maxSize or maxEntrySize is used, sizeCalculation "+"or size must be set.")}}return s};this.#he=(i,s,a)=>{r[i]=s;if(this.#x){const s=this.#x-r[i];while(this.#M>s){this.#me(true)}}this.#M+=r[i];if(a){a.entrySize=s;a.totalCalculatedSize=this.#M}}}#ue=r=>{};#he=(r,i,s)=>{};#fe=(r,i,s,a)=>{if(s||a){throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache")}return 0};*#ne({allowStale:r=this.allowStale}={}){if(this.#F){for(let i=this.#V;true;){if(!this.#ge(i)){break}if(r||!this.#ae(i)){yield i}if(i===this.#z){break}else{i=this.#j[i]}}}}*#se({allowStale:r=this.allowStale}={}){if(this.#F){for(let i=this.#z;true;){if(!this.#ge(i)){break}if(r||!this.#ae(i)){yield i}if(i===this.#V){break}else{i=this.#G[i]}}}}#ge(r){return r!==undefined&&this.#U.get(this.#H[r])===r}*entries(){for(const r of this.#ne()){if(this.#q[r]!==undefined&&this.#H[r]!==undefined&&!this.#te(this.#q[r])){yield[this.#H[r],this.#q[r]]}}}*rentries(){for(const r of this.#se()){if(this.#q[r]!==undefined&&this.#H[r]!==undefined&&!this.#te(this.#q[r])){yield[this.#H[r],this.#q[r]]}}}*keys(){for(const r of this.#ne()){const i=this.#H[r];if(i!==undefined&&!this.#te(this.#q[r])){yield i}}}*rkeys(){for(const r of this.#se()){const i=this.#H[r];if(i!==undefined&&!this.#te(this.#q[r])){yield i}}}*values(){for(const r of this.#ne()){const i=this.#q[r];if(i!==undefined&&!this.#te(this.#q[r])){yield this.#q[r]}}}*rvalues(){for(const r of this.#se()){const i=this.#q[r];if(i!==undefined&&!this.#te(this.#q[r])){yield this.#q[r]}}}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(r,i={}){for(const s of this.#ne()){const a=this.#q[s];const l=this.#te(a)?a.__staleWhileFetching:a;if(l===undefined)continue;if(r(l,this.#H[s],this)){return this.get(this.#H[s],i)}}}forEach(r,i=this){for(const s of this.#ne()){const a=this.#q[s];const l=this.#te(a)?a.__staleWhileFetching:a;if(l===undefined)continue;r.call(i,l,this.#H[s],this)}}rforEach(r,i=this){for(const s of this.#se()){const a=this.#q[s];const l=this.#te(a)?a.__staleWhileFetching:a;if(l===undefined)continue;r.call(i,l,this.#H[s],this)}}purgeStale(){let r=false;for(const i of this.#se({allowStale:true})){if(this.#ae(i)){this.#de(this.#H[i],"expire");r=true}}return r}info(r){const i=this.#U.get(r);if(i===undefined)return undefined;const a=this.#q[i];const l=this.#te(a)?a.__staleWhileFetching:a;if(l===undefined)return undefined;const c={value:l};if(this.#K&&this.#$){const r=this.#K[i];const a=this.#$[i];if(r&&a){const i=r-(s.now()-a);c.ttl=i;c.start=Date.now()}}if(this.#J){c.size=this.#J[i]}return c}dump(){const r=[];for(const i of this.#ne({allowStale:true})){const a=this.#H[i];const l=this.#q[i];const c=this.#te(l)?l.__staleWhileFetching:l;if(c===undefined||a===undefined)continue;const d={value:c};if(this.#K&&this.#$){d.ttl=this.#K[i];const r=s.now()-this.#$[i];d.start=Math.floor(Date.now()-r)}if(this.#J){d.size=this.#J[i]}r.unshift([a,d])}return r}load(r){this.clear();for(const[i,a]of r){if(a.start){const r=Date.now()-a.start;a.start=s.now()-r}this.set(i,a.value,a)}}set(r,i,s={}){if(i===undefined){this.delete(r);return this}const{ttl:a=this.ttl,start:l,noDisposeOnSet:c=this.noDisposeOnSet,sizeCalculation:d=this.sizeCalculation,status:p}=s;let{noUpdateTTL:A=this.noUpdateTTL}=s;const u=this.#fe(r,i,s.size||0,d);if(this.maxEntrySize&&u>this.maxEntrySize){if(p){p.set="miss";p.maxEntrySizeExceeded=true}this.#de(r,"set");return this}let h=this.#F===0?undefined:this.#U.get(r);if(h===undefined){h=this.#F===0?this.#V:this.#W.length!==0?this.#W.pop():this.#F===this.#_?this.#me(false):this.#F;this.#H[h]=r;this.#q[h]=i;this.#U.set(r,h);this.#G[this.#V]=h;this.#j[h]=this.#V;this.#V=h;this.#F++;this.#he(h,u,p);if(p)p.set="add";A=false}else{this.#ie(h);const s=this.#q[h];if(i!==s){if(this.#Z&&this.#te(s)){s.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:i}=s;if(i!==undefined&&!c){if(this.#X){this.#D?.(i,r,"set")}if(this.#ee){this.#Y?.push([i,r,"set"])}}}else if(!c){if(this.#X){this.#D?.(s,r,"set")}if(this.#ee){this.#Y?.push([s,r,"set"])}}this.#ue(h);this.#he(h,u,p);this.#q[h]=i;if(p){p.set="replace";const r=s&&this.#te(s)?s.__staleWhileFetching:s;if(r!==undefined)p.oldValue=r}}else if(p){p.set="update"}}if(a!==0&&!this.#K){this.#le()}if(this.#K){if(!A){this.#ce(h,a,l)}if(p)this.#Ae(p,h)}if(!c&&this.#ee&&this.#Y){const r=this.#Y;let i;while(i=r?.shift()){this.#P?.(...i)}}return this}pop(){try{while(this.#F){const r=this.#q[this.#z];this.#me(true);if(this.#te(r)){if(r.__staleWhileFetching){return r.__staleWhileFetching}}else if(r!==undefined){return r}}}finally{if(this.#ee&&this.#Y){const r=this.#Y;let i;while(i=r?.shift()){this.#P?.(...i)}}}}#me(r){const i=this.#z;const s=this.#H[i];const a=this.#q[i];if(this.#Z&&this.#te(a)){a.__abortController.abort(new Error("evicted"))}else if(this.#X||this.#ee){if(this.#X){this.#D?.(a,s,"evict")}if(this.#ee){this.#Y?.push([a,s,"evict"])}}this.#ue(i);if(r){this.#H[i]=undefined;this.#q[i]=undefined;this.#W.push(i)}if(this.#F===1){this.#z=this.#V=0;this.#W.length=0}else{this.#z=this.#G[i]}this.#U.delete(s);this.#F--;return i}has(r,i={}){const{updateAgeOnHas:s=this.updateAgeOnHas,status:a}=i;const l=this.#U.get(r);if(l!==undefined){const r=this.#q[l];if(this.#te(r)&&r.__staleWhileFetching===undefined){return false}if(!this.#ae(l)){if(s){this.#pe(l)}if(a){a.has="hit";this.#Ae(a,l)}return true}else if(a){a.has="stale";this.#Ae(a,l)}}else if(a){a.has="miss"}return false}peek(r,i={}){const{allowStale:s=this.allowStale}=i;const a=this.#U.get(r);if(a===undefined||!s&&this.#ae(a)){return}const l=this.#q[a];return this.#te(l)?l.__staleWhileFetching:l}#re(r,i,s,a){const l=i===undefined?undefined:this.#q[i];if(this.#te(l)){return l}const d=new c;const{signal:p}=s;p?.addEventListener("abort",(()=>d.abort(p.reason)),{signal:d.signal});const A={signal:d.signal,options:s,context:a};const cb=(a,l=false)=>{const{aborted:c}=d.signal;const p=s.ignoreFetchAbort&&a!==undefined;if(s.status){if(c&&!l){s.status.fetchAborted=true;s.status.fetchError=d.signal.reason;if(p)s.status.fetchAbortIgnored=true}else{s.status.fetchResolved=true}}if(c&&!p&&!l){return fetchFail(d.signal.reason)}const h=u;if(this.#q[i]===u){if(a===undefined){if(h.__staleWhileFetching){this.#q[i]=h.__staleWhileFetching}else{this.#de(r,"fetch")}}else{if(s.status)s.status.fetchUpdated=true;this.set(r,a,A.options)}}return a};const eb=r=>{if(s.status){s.status.fetchRejected=true;s.status.fetchError=r}return fetchFail(r)};const fetchFail=a=>{const{aborted:l}=d.signal;const c=l&&s.allowStaleOnFetchAbort;const p=c||s.allowStaleOnFetchRejection;const A=p||s.noDeleteOnFetchRejection;const h=u;if(this.#q[i]===u){const s=!A||h.__staleWhileFetching===undefined;if(s){this.#de(r,"fetch")}else if(!c){this.#q[i]=h.__staleWhileFetching}}if(p){if(s.status&&h.__staleWhileFetching!==undefined){s.status.returnedStale=true}return h.__staleWhileFetching}else if(h.__returned===h){throw a}};const pcall=(i,a)=>{const c=this.#O?.(r,l,A);if(c&&c instanceof Promise){c.then((r=>i(r===undefined?undefined:r)),a)}d.signal.addEventListener("abort",(()=>{if(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort){i(undefined);if(s.allowStaleOnFetchAbort){i=r=>cb(r,true)}}}))};if(s.status)s.status.fetchDispatched=true;const u=new Promise(pcall).then(cb,eb);const h=Object.assign(u,{__abortController:d,__staleWhileFetching:l,__returned:undefined});if(i===undefined){this.set(r,h,{...A.options,status:undefined});i=this.#U.get(r)}else{this.#q[i]=h}return h}#te(r){if(!this.#Z)return false;const i=r;return!!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof c}async fetch(r,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:l=this.noDeleteOnStaleGet,ttl:c=this.ttl,noDisposeOnSet:d=this.noDisposeOnSet,size:p=0,sizeCalculation:A=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:h=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:g=this.allowStaleOnFetchRejection,ignoreFetchAbort:y=this.ignoreFetchAbort,allowStaleOnFetchAbort:b=this.allowStaleOnFetchAbort,context:C,forceRefresh:B=false,status:I,signal:w}=i;if(!this.#Z){if(I)I.fetch="get";return this.get(r,{allowStale:s,updateAgeOnGet:a,noDeleteOnStaleGet:l,status:I})}const v={allowStale:s,updateAgeOnGet:a,noDeleteOnStaleGet:l,ttl:c,noDisposeOnSet:d,size:p,sizeCalculation:A,noUpdateTTL:u,noDeleteOnFetchRejection:h,allowStaleOnFetchRejection:g,allowStaleOnFetchAbort:b,ignoreFetchAbort:y,status:I,signal:w};let S=this.#U.get(r);if(S===undefined){if(I)I.fetch="miss";const i=this.#re(r,S,v,C);return i.__returned=i}else{const i=this.#q[S];if(this.#te(i)){const r=s&&i.__staleWhileFetching!==undefined;if(I){I.fetch="inflight";if(r)I.returnedStale=true}return r?i.__staleWhileFetching:i.__returned=i}const l=this.#ae(S);if(!B&&!l){if(I)I.fetch="hit";this.#ie(S);if(a){this.#pe(S)}if(I)this.#Ae(I,S);return i}const c=this.#re(r,S,v,C);const d=c.__staleWhileFetching!==undefined;const p=d&&s;if(I){I.fetch=l?"stale":"refresh";if(p&&l)I.returnedStale=true}return p?c.__staleWhileFetching:c.__returned=c}}async forceFetch(r,i={}){const s=await this.fetch(r,i);if(s===undefined)throw new Error("fetch() returned undefined");return s}memo(r,i={}){const s=this.#L;if(!s){throw new Error("no memoMethod provided to constructor")}const{context:a,forceRefresh:l,...c}=i;const d=this.get(r,c);if(!l&&d!==undefined)return d;const p=s(r,d,{options:c,context:a});this.set(r,p,c);return p}get(r,i={}){const{allowStale:s=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:l=this.noDeleteOnStaleGet,status:c}=i;const d=this.#U.get(r);if(d!==undefined){const i=this.#q[d];const p=this.#te(i);if(c)this.#Ae(c,d);if(this.#ae(d)){if(c)c.get="stale";if(!p){if(!l){this.#de(r,"expire")}if(c&&s)c.returnedStale=true;return s?i:undefined}else{if(c&&s&&i.__staleWhileFetching!==undefined){c.returnedStale=true}return s?i.__staleWhileFetching:undefined}}else{if(c)c.get="hit";if(p){return i.__staleWhileFetching}this.#ie(d);if(a){this.#pe(d)}return i}}else if(c){c.get="miss"}}#ye(r,i){this.#j[i]=r;this.#G[r]=i}#ie(r){if(r!==this.#V){if(r===this.#z){this.#z=this.#G[r]}else{this.#ye(this.#j[r],this.#G[r])}this.#ye(this.#V,r);this.#V=r}}delete(r){return this.#de(r,"delete")}#de(r,i){let s=false;if(this.#F!==0){const a=this.#U.get(r);if(a!==undefined){s=true;if(this.#F===1){this.#Ee(i)}else{this.#ue(a);const s=this.#q[a];if(this.#te(s)){s.__abortController.abort(new Error("deleted"))}else if(this.#X||this.#ee){if(this.#X){this.#D?.(s,r,i)}if(this.#ee){this.#Y?.push([s,r,i])}}this.#U.delete(r);this.#H[a]=undefined;this.#q[a]=undefined;if(a===this.#V){this.#V=this.#j[a]}else if(a===this.#z){this.#z=this.#G[a]}else{const r=this.#j[a];this.#G[r]=this.#G[a];const i=this.#G[a];this.#j[i]=this.#j[a]}this.#F--;this.#W.push(a)}}}if(this.#ee&&this.#Y?.length){const r=this.#Y;let i;while(i=r?.shift()){this.#P?.(...i)}}return s}clear(){return this.#Ee("delete")}#Ee(r){for(const i of this.#se({allowStale:true})){const s=this.#q[i];if(this.#te(s)){s.__abortController.abort(new Error("deleted"))}else{const a=this.#H[i];if(this.#X){this.#D?.(s,a,r)}if(this.#ee){this.#Y?.push([s,a,r])}}}this.#U.clear();this.#q.fill(undefined);this.#H.fill(undefined);if(this.#K&&this.#$){this.#K.fill(0);this.#$.fill(0)}if(this.#J){this.#J.fill(0)}this.#z=0;this.#V=0;this.#W.length=0;this.#M=0;this.#F=0;if(this.#ee&&this.#Y){const r=this.#Y;let i;while(i=r?.shift()){this.#P?.(...i)}}}}i.LRUCache=LRUCache},65521:(r,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.assertValidPattern=void 0;const s=1024*64;const assertValidPattern=r=>{if(typeof r!=="string"){throw new TypeError("invalid pattern")}if(r.length>s){throw new TypeError("pattern is too long")}};i.assertValidPattern=assertValidPattern},76809:(r,i,s)=>{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.AST=void 0;const a=s(24919);const l=s(86151);const c=new Set(["!","?","+","*","@"]);const isExtglobType=r=>c.has(r);const d="(?!(?:^|/)\\.\\.?(?:$|/))";const p="(?!\\.)";const A=new Set(["[","."]);const u=new Set(["..","."]);const h=new Set("().*{}+?[]^$\\!");const regExpEscape=r=>r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");const g="[^/]";const y=g+"*?";const b=g+"+?";class AST{type;#be;#Ce;#Be=false;#Ie=[];#we;#ve;#Se;#Qe=false;#Ne;#Re;#ke=false;constructor(r,i,s={}){this.type=r;if(r)this.#Ce=true;this.#we=i;this.#be=this.#we?this.#we.#be:this;this.#Ne=this.#be===this?s:this.#be.#Ne;this.#Se=this.#be===this?[]:this.#be.#Se;if(r==="!"&&!this.#be.#Qe)this.#Se.push(this);this.#ve=this.#we?this.#we.#Ie.length:0}get hasMagic(){if(this.#Ce!==undefined)return this.#Ce;for(const r of this.#Ie){if(typeof r==="string")continue;if(r.type||r.hasMagic)return this.#Ce=true}return this.#Ce}toString(){if(this.#Re!==undefined)return this.#Re;if(!this.type){return this.#Re=this.#Ie.map((r=>String(r))).join("")}else{return this.#Re=this.type+"("+this.#Ie.map((r=>String(r))).join("|")+")"}}#Te(){if(this!==this.#be)throw new Error("should only call on root");if(this.#Qe)return this;this.toString();this.#Qe=true;let r;while(r=this.#Se.pop()){if(r.type!=="!")continue;let i=r;let s=i.#we;while(s){for(let a=i.#ve+1;!s.type&&atypeof r==="string"?r:r.toJSON())):[this.type,...this.#Ie.map((r=>r.toJSON()))];if(this.isStart()&&!this.type)r.unshift([]);if(this.isEnd()&&(this===this.#be||this.#be.#Qe&&this.#we?.type==="!")){r.push({})}return r}isStart(){if(this.#be===this)return true;if(!this.#we?.isStart())return false;if(this.#ve===0)return true;const r=this.#we;for(let i=0;i{const[a,l,c,d]=typeof i==="string"?AST.#xe(i,this.#Ce,s):i.toRegExpSource(r);this.#Ce=this.#Ce||c;this.#Be=this.#Be||d;return a})).join("");let c="";if(this.isStart()){if(typeof this.#Ie[0]==="string"){const s=this.#Ie.length===1&&u.has(this.#Ie[0]);if(!s){const s=A;const l=i&&s.has(a.charAt(0))||a.startsWith("\\.")&&s.has(a.charAt(2))||a.startsWith("\\.\\.")&&s.has(a.charAt(4));const u=!i&&!r&&s.has(a.charAt(0));c=l?d:u?p:""}}}let h="";if(this.isEnd()&&this.#be.#Qe&&this.#we?.type==="!"){h="(?:$|\\/)"}const g=c+a+h;return[g,(0,l.unescape)(a),this.#Ce=!!this.#Ce,this.#Be]}const s=this.type==="*"||this.type==="+";const a=this.type==="!"?"(?:(?!(?:":"(?:";let c=this.#De(i);if(this.isStart()&&this.isEnd()&&!c&&this.type!=="!"){const r=this.toString();this.#Ie=[r];this.type=null;this.#Ce=undefined;return[r,(0,l.unescape)(this.toString()),false,false]}let h=!s||r||i||!p?"":this.#De(true);if(h===c){h=""}if(h){c=`(?:${c})(?:${h})*?`}let g="";if(this.type==="!"&&this.#ke){g=(this.isStart()&&!i?p:"")+b}else{const s=this.type==="!"?"))"+(this.isStart()&&!i&&!r?p:"")+y+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&h?")":this.type==="*"&&h?`)?`:`)${this.type}`;g=a+c+s}return[g,(0,l.unescape)(c),this.#Ce=!!this.#Ce,this.#Be]}#De(r){return this.#Ie.map((i=>{if(typeof i==="string"){throw new Error("string type in extglob ast??")}const[s,a,l,c]=i.toRegExpSource(r);this.#Be=this.#Be||c;return s})).filter((r=>!(this.isStart()&&this.isEnd())||!!r)).join("|")}static#xe(r,i,s=false){let c=false;let d="";let p=false;for(let l=0;l{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.parseClass=void 0;const s={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",true],"[:alpha:]":["\\p{L}\\p{Nl}",true],"[:ascii:]":["\\x"+"00-\\x"+"7f",false],"[:blank:]":["\\p{Zs}\\t",true],"[:cntrl:]":["\\p{Cc}",true],"[:digit:]":["\\p{Nd}",true],"[:graph:]":["\\p{Z}\\p{C}",true,true],"[:lower:]":["\\p{Ll}",true],"[:print:]":["\\p{C}",true],"[:punct:]":["\\p{P}",true],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",true],"[:upper:]":["\\p{Lu}",true],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",true],"[:xdigit:]":["A-Fa-f0-9",false]};const braceEscape=r=>r.replace(/[[\]\\-]/g,"\\$&");const regexpEscape=r=>r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");const rangesToString=r=>r.join("");const parseClass=(r,i)=>{const a=i;if(r.charAt(a)!=="["){throw new Error("not in a brace expression")}const l=[];const c=[];let d=a+1;let p=false;let A=false;let u=false;let h=false;let g=a;let y="";e:while(dy){l.push(braceEscape(y)+"-"+braceEscape(i))}else if(i===y){l.push(braceEscape(i))}y="";d++;continue}if(r.startsWith("-]",d+1)){l.push(braceEscape(i+"-"));d+=2;continue}if(r.startsWith("-",d+1)){y=i;d+=2;continue}l.push(braceEscape(i));d++}if(g{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.escape=void 0;const escape=(r,{windowsPathsNoEscape:i=false}={})=>i?r.replace(/[?*()[\]]/g,"[$&]"):r.replace(/[?*()[\]\\]/g,"\\$&");i.escape=escape},81893:function(r,i,s){"use strict";var a=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.unescape=i.escape=i.AST=i.Minimatch=i.match=i.makeRe=i.braceExpand=i.defaults=i.filter=i.GLOBSTAR=i.sep=i.minimatch=void 0;const l=a(s(88012));const c=s(65521);const d=s(76809);const p=s(81705);const A=s(86151);const minimatch=(r,i,s={})=>{(0,c.assertValidPattern)(i);if(!s.nocomment&&i.charAt(0)==="#"){return false}return new Minimatch(i,s).match(r)};i.minimatch=minimatch;const u=/^\*+([^+@!?\*\[\(]*)$/;const starDotExtTest=r=>i=>!i.startsWith(".")&&i.endsWith(r);const starDotExtTestDot=r=>i=>i.endsWith(r);const starDotExtTestNocase=r=>{r=r.toLowerCase();return i=>!i.startsWith(".")&&i.toLowerCase().endsWith(r)};const starDotExtTestNocaseDot=r=>{r=r.toLowerCase();return i=>i.toLowerCase().endsWith(r)};const h=/^\*+\.\*+$/;const starDotStarTest=r=>!r.startsWith(".")&&r.includes(".");const starDotStarTestDot=r=>r!=="."&&r!==".."&&r.includes(".");const g=/^\.\*+$/;const dotStarTest=r=>r!=="."&&r!==".."&&r.startsWith(".");const y=/^\*+$/;const starTest=r=>r.length!==0&&!r.startsWith(".");const starTestDot=r=>r.length!==0&&r!=="."&&r!=="..";const b=/^\?+([^+@!?\*\[\(]*)?$/;const qmarksTestNocase=([r,i=""])=>{const s=qmarksTestNoExt([r]);if(!i)return s;i=i.toLowerCase();return r=>s(r)&&r.toLowerCase().endsWith(i)};const qmarksTestNocaseDot=([r,i=""])=>{const s=qmarksTestNoExtDot([r]);if(!i)return s;i=i.toLowerCase();return r=>s(r)&&r.toLowerCase().endsWith(i)};const qmarksTestDot=([r,i=""])=>{const s=qmarksTestNoExtDot([r]);return!i?s:r=>s(r)&&r.endsWith(i)};const qmarksTest=([r,i=""])=>{const s=qmarksTestNoExt([r]);return!i?s:r=>s(r)&&r.endsWith(i)};const qmarksTestNoExt=([r])=>{const i=r.length;return r=>r.length===i&&!r.startsWith(".")};const qmarksTestNoExtDot=([r])=>{const i=r.length;return r=>r.length===i&&r!=="."&&r!==".."};const C=typeof process==="object"&&process?typeof process.env==="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";const B={win32:{sep:"\\"},posix:{sep:"/"}};i.sep=C==="win32"?B.win32.sep:B.posix.sep;i.minimatch.sep=i.sep;i.GLOBSTAR=Symbol("globstar **");i.minimatch.GLOBSTAR=i.GLOBSTAR;const I="[^/]";const w=I+"*?";const v="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?";const S="(?:(?!(?:\\/|^)\\.).)*?";const filter=(r,s={})=>a=>(0,i.minimatch)(a,r,s);i.filter=filter;i.minimatch.filter=i.filter;const ext=(r,i={})=>Object.assign({},r,i);const defaults=r=>{if(!r||typeof r!=="object"||!Object.keys(r).length){return i.minimatch}const s=i.minimatch;const m=(i,a,l={})=>s(i,a,ext(r,l));return Object.assign(m,{Minimatch:class Minimatch extends s.Minimatch{constructor(i,s={}){super(i,ext(r,s))}static defaults(i){return s.defaults(ext(r,i)).Minimatch}},AST:class AST extends s.AST{constructor(i,s,a={}){super(i,s,ext(r,a))}static fromGlob(i,a={}){return s.AST.fromGlob(i,ext(r,a))}},unescape:(i,a={})=>s.unescape(i,ext(r,a)),escape:(i,a={})=>s.escape(i,ext(r,a)),filter:(i,a={})=>s.filter(i,ext(r,a)),defaults:i=>s.defaults(ext(r,i)),makeRe:(i,a={})=>s.makeRe(i,ext(r,a)),braceExpand:(i,a={})=>s.braceExpand(i,ext(r,a)),match:(i,a,l={})=>s.match(i,a,ext(r,l)),sep:s.sep,GLOBSTAR:i.GLOBSTAR})};i.defaults=defaults;i.minimatch.defaults=i.defaults;const braceExpand=(r,i={})=>{(0,c.assertValidPattern)(r);if(i.nobrace||!/\{(?:(?!\{).)*\}/.test(r)){return[r]}return(0,l.default)(r)};i.braceExpand=braceExpand;i.minimatch.braceExpand=i.braceExpand;const makeRe=(r,i={})=>new Minimatch(r,i).makeRe();i.makeRe=makeRe;i.minimatch.makeRe=i.makeRe;const match=(r,i,s={})=>{const a=new Minimatch(i,s);r=r.filter((r=>a.match(r)));if(a.options.nonull&&!r.length){r.push(i)}return r};i.match=match;i.minimatch.match=i.match;const Q=/[?*]|[+@!]\(.*?\)|\[|\]/;const regExpEscape=r=>r.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&");class Minimatch{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(r,i={}){(0,c.assertValidPattern)(r);i=i||{};this.options=i;this.pattern=r;this.platform=i.platform||C;this.isWindows=this.platform==="win32";this.windowsPathsNoEscape=!!i.windowsPathsNoEscape||i.allowWindowsEscape===false;if(this.windowsPathsNoEscape){this.pattern=this.pattern.replace(/\\/g,"/")}this.preserveMultipleSlashes=!!i.preserveMultipleSlashes;this.regexp=null;this.negate=false;this.nonegate=!!i.nonegate;this.comment=false;this.empty=false;this.partial=!!i.partial;this.nocase=!!this.options.nocase;this.windowsNoMagicRoot=i.windowsNoMagicRoot!==undefined?i.windowsNoMagicRoot:!!(this.isWindows&&this.nocase);this.globSet=[];this.globParts=[];this.set=[];this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1){return true}for(const r of this.set){for(const i of r){if(typeof i!=="string")return true}}return false}debug(...r){}make(){const r=this.pattern;const i=this.options;if(!i.nocomment&&r.charAt(0)==="#"){this.comment=true;return}if(!r){this.empty=true;return}this.parseNegate();this.globSet=[...new Set(this.braceExpand())];if(i.debug){this.debug=(...r)=>console.error(...r)}this.debug(this.pattern,this.globSet);const s=this.globSet.map((r=>this.slashSplit(r)));this.globParts=this.preprocess(s);this.debug(this.pattern,this.globParts);let a=this.globParts.map(((r,i,s)=>{if(this.isWindows&&this.windowsNoMagicRoot){const i=r[0]===""&&r[1]===""&&(r[2]==="?"||!Q.test(r[2]))&&!Q.test(r[3]);const s=/^[a-z]:/i.test(r[0]);if(i){return[...r.slice(0,4),...r.slice(4).map((r=>this.parse(r)))]}else if(s){return[r[0],...r.slice(1).map((r=>this.parse(r)))]}}return r.map((r=>this.parse(r)))}));this.debug(this.pattern,a);this.set=a.filter((r=>r.indexOf(false)===-1));if(this.isWindows){for(let r=0;r=2){r=this.firstPhasePreProcess(r);r=this.secondPhasePreProcess(r)}else if(i>=1){r=this.levelOneOptimize(r)}else{r=this.adjascentGlobstarOptimize(r)}return r}adjascentGlobstarOptimize(r){return r.map((r=>{let i=-1;while(-1!==(i=r.indexOf("**",i+1))){let s=i;while(r[s+1]==="**"){s++}if(s!==i){r.splice(i,s-i)}}return r}))}levelOneOptimize(r){return r.map((r=>{r=r.reduce(((r,i)=>{const s=r[r.length-1];if(i==="**"&&s==="**"){return r}if(i===".."){if(s&&s!==".."&&s!=="."&&s!=="**"){r.pop();return r}}r.push(i);return r}),[]);return r.length===0?[""]:r}))}levelTwoFileOptimize(r){if(!Array.isArray(r)){r=this.slashSplit(r)}let i=false;do{i=false;if(!this.preserveMultipleSlashes){for(let s=1;sa){s.splice(a+1,l-a)}let c=s[a+1];const d=s[a+2];const p=s[a+3];if(c!=="..")continue;if(!d||d==="."||d===".."||!p||p==="."||p===".."){continue}i=true;s.splice(a,1);const A=s.slice(0);A[a]="**";r.push(A);a--}if(!this.preserveMultipleSlashes){for(let r=1;rr.length))}partsMatch(r,i,s=false){let a=0;let l=0;let c=[];let d="";while(ad){s=s.slice(p)}else if(d>p){r=r.slice(d)}}}}const{optimizationLevel:c=1}=this.options;if(c>=2){r=this.levelTwoFileOptimize(r)}this.debug("matchOne",this,{file:r,pattern:s});this.debug("matchOne",r.length,s.length);for(var d=0,p=0,A=r.length,u=s.length;d>> no match, partial?",r,y,s,b);if(y===A){return true}}return false}let c;if(typeof h==="string"){c=g===h;this.debug("string match",h,g,c)}else{c=h.test(g);this.debug("pattern match",h,g,c)}if(!c)return false}if(d===A&&p===u){return true}else if(d===A){return a}else if(p===u){return d===A-1&&r[d]===""}else{throw new Error("wtf?")}}braceExpand(){return(0,i.braceExpand)(this.pattern,this.options)}parse(r){(0,c.assertValidPattern)(r);const s=this.options;if(r==="**")return i.GLOBSTAR;if(r==="")return"";let a;let l=null;if(a=r.match(y)){l=s.dot?starTestDot:starTest}else if(a=r.match(u)){l=(s.nocase?s.dot?starDotExtTestNocaseDot:starDotExtTestNocase:s.dot?starDotExtTestDot:starDotExtTest)(a[1])}else if(a=r.match(b)){l=(s.nocase?s.dot?qmarksTestNocaseDot:qmarksTestNocase:s.dot?qmarksTestDot:qmarksTest)(a)}else if(a=r.match(h)){l=s.dot?starDotStarTestDot:starDotStarTest}else if(a=r.match(g)){l=dotStarTest}const p=d.AST.fromGlob(r,this.options).toMMPattern();if(l&&typeof p==="object"){Reflect.defineProperty(p,"test",{value:l})}return p}makeRe(){if(this.regexp||this.regexp===false)return this.regexp;const r=this.set;if(!r.length){this.regexp=false;return this.regexp}const s=this.options;const a=s.noglobstar?w:s.dot?v:S;const l=new Set(s.nocase?["i"]:[]);let c=r.map((r=>{const s=r.map((r=>{if(r instanceof RegExp){for(const i of r.flags.split(""))l.add(i)}return typeof r==="string"?regExpEscape(r):r===i.GLOBSTAR?i.GLOBSTAR:r._src}));s.forEach(((r,l)=>{const c=s[l+1];const d=s[l-1];if(r!==i.GLOBSTAR||d===i.GLOBSTAR){return}if(d===undefined){if(c!==undefined&&c!==i.GLOBSTAR){s[l+1]="(?:\\/|"+a+"\\/)?"+c}else{s[l]=a}}else if(c===undefined){s[l-1]=d+"(?:\\/|"+a+")?"}else if(c!==i.GLOBSTAR){s[l-1]=d+"(?:\\/|\\/"+a+"\\/)"+c;s[l+1]=i.GLOBSTAR}}));return s.filter((r=>r!==i.GLOBSTAR)).join("/")})).join("|");const[d,p]=r.length>1?["(?:",")"]:["",""];c="^"+d+c+p+"$";if(this.negate)c="^(?!"+c+").+$";try{this.regexp=new RegExp(c,[...l].join(""))}catch(r){this.regexp=false}return this.regexp}slashSplit(r){if(this.preserveMultipleSlashes){return r.split("/")}else if(this.isWindows&&/^\/\/[^\/]+/.test(r)){return["",...r.split(/\/+/)]}else{return r.split(/\/+/)}}match(r,i=this.partial){this.debug("match",r,this.pattern);if(this.comment){return false}if(this.empty){return r===""}if(r==="/"&&i){return true}const s=this.options;if(this.isWindows){r=r.split("\\").join("/")}const a=this.slashSplit(r);this.debug(this.pattern,"split",a);const l=this.set;this.debug(this.pattern,"set",l);let c=a[a.length-1];if(!c){for(let r=a.length-2;!c&&r>=0;r--){c=a[r]}}for(let r=0;r{"use strict";Object.defineProperty(i,"__esModule",{value:true});i.unescape=void 0;const unescape=(r,{windowsPathsNoEscape:i=false}={})=>i?r.replace(/\[([^\/\\])\]/g,"$1"):r.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");i.unescape=unescape},48797:function(r,i,s){"use strict";var a=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:true});i.Minipass=i.isWritable=i.isReadable=i.isStream=void 0;const l=typeof process==="object"&&process?process:{stdout:null,stderr:null};const c=s(15673);const d=a(s(84492));const p=s(76915);const isStream=r=>!!r&&typeof r==="object"&&(r instanceof Minipass||r instanceof d.default||(0,i.isReadable)(r)||(0,i.isWritable)(r));i.isStream=isStream;const isReadable=r=>!!r&&typeof r==="object"&&r instanceof c.EventEmitter&&typeof r.pipe==="function"&&r.pipe!==d.default.Writable.prototype.pipe;i.isReadable=isReadable;const isWritable=r=>!!r&&typeof r==="object"&&r instanceof c.EventEmitter&&typeof r.write==="function"&&typeof r.end==="function";i.isWritable=isWritable;const A=Symbol("EOF");const u=Symbol("maybeEmitEnd");const h=Symbol("emittedEnd");const g=Symbol("emittingEnd");const y=Symbol("emittedError");const b=Symbol("closed");const C=Symbol("read");const B=Symbol("flush");const I=Symbol("flushChunk");const w=Symbol("encoding");const v=Symbol("decoder");const S=Symbol("flowing");const Q=Symbol("paused");const N=Symbol("resume");const R=Symbol("buffer");const k=Symbol("pipes");const T=Symbol("bufferLength");const _=Symbol("bufferPush");const x=Symbol("bufferShift");const D=Symbol("objectMode");const P=Symbol("destroyed");const O=Symbol("error");const L=Symbol("emitData");const F=Symbol("emitEnd");const M=Symbol("emitEnd2");const U=Symbol("async");const H=Symbol("abort");const q=Symbol("aborted");const G=Symbol("signal");const j=Symbol("dataListeners");const z=Symbol("discarded");const defer=r=>Promise.resolve().then(r);const nodefer=r=>r();const isEndish=r=>r==="end"||r==="finish"||r==="prefinish";const isArrayBufferLike=r=>r instanceof ArrayBuffer||!!r&&typeof r==="object"&&r.constructor&&r.constructor.name==="ArrayBuffer"&&r.byteLength>=0;const isArrayBufferView=r=>!Buffer.isBuffer(r)&&ArrayBuffer.isView(r);class Pipe{src;dest;opts;ondrain;constructor(r,i,s){this.src=r;this.dest=i;this.opts=s;this.ondrain=()=>r[N]();this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(r){}end(){this.unpipe();if(this.opts.end)this.dest.end()}}class PipeProxyErrors extends Pipe{unpipe(){this.src.removeListener("error",this.proxyErrors);super.unpipe()}constructor(r,i,s){super(r,i,s);this.proxyErrors=r=>i.emit("error",r);r.on("error",this.proxyErrors)}}const isObjectModeOptions=r=>!!r.objectMode;const isEncodingOptions=r=>!r.objectMode&&!!r.encoding&&r.encoding!=="buffer";class Minipass extends c.EventEmitter{[S]=false;[Q]=false;[k]=[];[R]=[];[D];[w];[U];[v];[A]=false;[h]=false;[g]=false;[b]=false;[y]=null;[T]=0;[P]=false;[G];[q]=false;[j]=0;[z]=false;writable=true;readable=true;constructor(...r){const i=r[0]||{};super();if(i.objectMode&&typeof i.encoding==="string"){throw new TypeError("Encoding and objectMode may not be used together")}if(isObjectModeOptions(i)){this[D]=true;this[w]=null}else if(isEncodingOptions(i)){this[w]=i.encoding;this[D]=false}else{this[D]=false;this[w]=null}this[U]=!!i.async;this[v]=this[w]?new p.StringDecoder(this[w]):null;if(i&&i.debugExposeBuffer===true){Object.defineProperty(this,"buffer",{get:()=>this[R]})}if(i&&i.debugExposePipes===true){Object.defineProperty(this,"pipes",{get:()=>this[k]})}const{signal:s}=i;if(s){this[G]=s;if(s.aborted){this[H]()}else{s.addEventListener("abort",(()=>this[H]()))}}}get bufferLength(){return this[T]}get encoding(){return this[w]}set encoding(r){throw new Error("Encoding must be set at instantiation time")}setEncoding(r){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[D]}set objectMode(r){throw new Error("objectMode must be set at instantiation time")}get["async"](){return this[U]}set["async"](r){this[U]=this[U]||!!r}[H](){this[q]=true;this.emit("abort",this[G]?.reason);this.destroy(this[G]?.reason)}get aborted(){return this[q]}set aborted(r){}write(r,i,s){if(this[q])return false;if(this[A])throw new Error("write after end");if(this[P]){this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"}));return true}if(typeof i==="function"){s=i;i="utf8"}if(!i)i="utf8";const a=this[U]?defer:nodefer;if(!this[D]&&!Buffer.isBuffer(r)){if(isArrayBufferView(r)){r=Buffer.from(r.buffer,r.byteOffset,r.byteLength)}else if(isArrayBufferLike(r)){r=Buffer.from(r)}else if(typeof r!=="string"){throw new Error("Non-contiguous data written to non-objectMode stream")}}if(this[D]){if(this[S]&&this[T]!==0)this[B](true);if(this[S])this.emit("data",r);else this[_](r);if(this[T]!==0)this.emit("readable");if(s)a(s);return this[S]}if(!r.length){if(this[T]!==0)this.emit("readable");if(s)a(s);return this[S]}if(typeof r==="string"&&!(i===this[w]&&!this[v]?.lastNeed)){r=Buffer.from(r,i)}if(Buffer.isBuffer(r)&&this[w]){r=this[v].write(r)}if(this[S]&&this[T]!==0)this[B](true);if(this[S])this.emit("data",r);else this[_](r);if(this[T]!==0)this.emit("readable");if(s)a(s);return this[S]}read(r){if(this[P])return null;this[z]=false;if(this[T]===0||r===0||r&&r>this[T]){this[u]();return null}if(this[D])r=null;if(this[R].length>1&&!this[D]){this[R]=[this[w]?this[R].join(""):Buffer.concat(this[R],this[T])]}const i=this[C](r||null,this[R][0]);this[u]();return i}[C](r,i){if(this[D])this[x]();else{const s=i;if(r===s.length||r===null)this[x]();else if(typeof s==="string"){this[R][0]=s.slice(r);i=s.slice(0,r);this[T]-=r}else{this[R][0]=s.subarray(r);i=s.subarray(0,r);this[T]-=r}}this.emit("data",i);if(!this[R].length&&!this[A])this.emit("drain");return i}end(r,i,s){if(typeof r==="function"){s=r;r=undefined}if(typeof i==="function"){s=i;i="utf8"}if(r!==undefined)this.write(r,i);if(s)this.once("end",s);this[A]=true;this.writable=false;if(this[S]||!this[Q])this[u]();return this}[N](){if(this[P])return;if(!this[j]&&!this[k].length){this[z]=true}this[Q]=false;this[S]=true;this.emit("resume");if(this[R].length)this[B]();else if(this[A])this[u]();else this.emit("drain")}resume(){return this[N]()}pause(){this[S]=false;this[Q]=true;this[z]=false}get destroyed(){return this[P]}get flowing(){return this[S]}get paused(){return this[Q]}[_](r){if(this[D])this[T]+=1;else this[T]+=r.length;this[R].push(r)}[x](){if(this[D])this[T]-=1;else this[T]-=this[R][0].length;return this[R].shift()}[B](r=false){do{}while(this[I](this[x]())&&this[R].length);if(!r&&!this[R].length&&!this[A])this.emit("drain")}[I](r){this.emit("data",r);return this[S]}pipe(r,i){if(this[P])return r;this[z]=false;const s=this[h];i=i||{};if(r===l.stdout||r===l.stderr)i.end=false;else i.end=i.end!==false;i.proxyErrors=!!i.proxyErrors;if(s){if(i.end)r.end()}else{this[k].push(!i.proxyErrors?new Pipe(this,r,i):new PipeProxyErrors(this,r,i));if(this[U])defer((()=>this[N]()));else this[N]()}return r}unpipe(r){const i=this[k].find((i=>i.dest===r));if(i){if(this[k].length===1){if(this[S]&&this[j]===0){this[S]=false}this[k]=[]}else this[k].splice(this[k].indexOf(i),1);i.unpipe()}}addListener(r,i){return this.on(r,i)}on(r,i){const s=super.on(r,i);if(r==="data"){this[z]=false;this[j]++;if(!this[k].length&&!this[S]){this[N]()}}else if(r==="readable"&&this[T]!==0){super.emit("readable")}else if(isEndish(r)&&this[h]){super.emit(r);this.removeAllListeners(r)}else if(r==="error"&&this[y]){const r=i;if(this[U])defer((()=>r.call(this,this[y])));else r.call(this,this[y])}return s}removeListener(r,i){return this.off(r,i)}off(r,i){const s=super.off(r,i);if(r==="data"){this[j]=this.listeners("data").length;if(this[j]===0&&!this[z]&&!this[k].length){this[S]=false}}return s}removeAllListeners(r){const i=super.removeAllListeners(r);if(r==="data"||r===undefined){this[j]=0;if(!this[z]&&!this[k].length){this[S]=false}}return i}get emittedEnd(){return this[h]}[u](){if(!this[g]&&!this[h]&&!this[P]&&this[R].length===0&&this[A]){this[g]=true;this.emit("end");this.emit("prefinish");this.emit("finish");if(this[b])this.emit("close");this[g]=false}}emit(r,...i){const s=i[0];if(r!=="error"&&r!=="close"&&r!==P&&this[P]){return false}else if(r==="data"){return!this[D]&&!s?false:this[U]?(defer((()=>this[L](s))),true):this[L](s)}else if(r==="end"){return this[F]()}else if(r==="close"){this[b]=true;if(!this[h]&&!this[P])return false;const r=super.emit("close");this.removeAllListeners("close");return r}else if(r==="error"){this[y]=s;super.emit(O,s);const r=!this[G]||this.listeners("error").length?super.emit("error",s):false;this[u]();return r}else if(r==="resume"){const r=super.emit("resume");this[u]();return r}else if(r==="finish"||r==="prefinish"){const i=super.emit(r);this.removeAllListeners(r);return i}const a=super.emit(r,...i);this[u]();return a}[L](r){for(const i of this[k]){if(i.dest.write(r)===false)this.pause()}const i=this[z]?false:super.emit("data",r);this[u]();return i}[F](){if(this[h])return false;this[h]=true;this.readable=false;return this[U]?(defer((()=>this[M]())),true):this[M]()}[M](){if(this[v]){const r=this[v].end();if(r){for(const i of this[k]){i.dest.write(r)}if(!this[z])super.emit("data",r)}}for(const r of this[k]){r.end()}const r=super.emit("end");this.removeAllListeners("end");return r}async collect(){const r=Object.assign([],{dataLength:0});if(!this[D])r.dataLength=0;const i=this.promise();this.on("data",(i=>{r.push(i);if(!this[D])r.dataLength+=i.length}));await i;return r}async concat(){if(this[D]){throw new Error("cannot concat in objectMode")}const r=await this.collect();return this[w]?r.join(""):Buffer.concat(r,r.dataLength)}async promise(){return new Promise(((r,i)=>{this.on(P,(()=>i(new Error("stream destroyed"))));this.on("error",(r=>i(r)));this.on("end",(()=>r()))}))}[Symbol.asyncIterator](){this[z]=false;let r=false;const stop=async()=>{this.pause();r=true;return{value:undefined,done:true}};const next=()=>{if(r)return stop();const i=this.read();if(i!==null)return Promise.resolve({done:false,value:i});if(this[A])return stop();let s;let a;const onerr=r=>{this.off("data",ondata);this.off("end",onend);this.off(P,ondestroy);stop();a(r)};const ondata=r=>{this.off("error",onerr);this.off("end",onend);this.off(P,ondestroy);this.pause();s({value:r,done:!!this[A]})};const onend=()=>{this.off("error",onerr);this.off("data",ondata);this.off(P,ondestroy);stop();s({done:true,value:undefined})};const ondestroy=()=>onerr(new Error("stream destroyed"));return new Promise(((r,i)=>{a=i;s=r;this.once(P,ondestroy);this.once("error",onerr);this.once("end",onend);this.once("data",ondata)}))};return{next:next,throw:stop,return:stop,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[z]=false;let r=false;const stop=()=>{this.pause();this.off(O,stop);this.off(P,stop);this.off("end",stop);r=true;return{done:true,value:undefined}};const next=()=>{if(r)return stop();const i=this.read();return i===null?stop():{done:false,value:i}};this.once("end",stop);this.once(O,stop);this.once(P,stop);return{next:next,throw:stop,return:stop,[Symbol.iterator](){return this}}}destroy(r){if(this[P]){if(r)this.emit("error",r);else this.emit(P);return this}this[P]=true;this[z]=true;this[R].length=0;this[T]=0;const i=this;if(typeof i.close==="function"&&!this[b])i.close();if(r)this.emit("error",r);else this.emit(P);return this}static get isStream(){return i.isStream}}i.Minipass=Minipass},68198:function(r,i,s){"use strict";var a=this&&this.__createBinding||(Object.create?function(r,i,s,a){if(a===undefined)a=s;var l=Object.getOwnPropertyDescriptor(i,s);if(!l||("get"in l?!i.__esModule:l.writable||l.configurable)){l={enumerable:true,get:function(){return i[s]}}}Object.defineProperty(r,a,l)}:function(r,i,s,a){if(a===undefined)a=s;r[a]=i[s]});var l=this&&this.__setModuleDefault||(Object.create?function(r,i){Object.defineProperty(r,"default",{enumerable:true,value:i})}:function(r,i){r["default"]=i});var c=this&&this.__importStar||function(r){if(r&&r.__esModule)return r;var i={};if(r!=null)for(var s in r)if(s!=="default"&&Object.prototype.hasOwnProperty.call(r,s))a(i,r,s);l(i,r);return i};Object.defineProperty(i,"__esModule",{value:true});i.PathScurry=i.Path=i.PathScurryDarwin=i.PathScurryPosix=i.PathScurryWin32=i.PathScurryBase=i.PathPosix=i.PathWin32=i.PathBase=i.ChildrenCache=i.ResolveCache=void 0;const d=s(78843);const p=s(49411);const A=s(41041);const u=s(57147);const h=c(s(87561));const g=u.realpathSync.native;const y=s(93977);const b=s(48797);const C={lstatSync:u.lstatSync,readdir:u.readdir,readdirSync:u.readdirSync,readlinkSync:u.readlinkSync,realpathSync:g,promises:{lstat:y.lstat,readdir:y.readdir,readlink:y.readlink,realpath:y.realpath}};const fsFromOption=r=>!r||r===C||r===h?C:{...C,...r,promises:{...C.promises,...r.promises||{}}};const B=/^\\\\\?\\([a-z]:)\\?$/i;const uncToDrive=r=>r.replace(/\//g,"\\").replace(B,"$1\\");const I=/[\\\/]/;const w=0;const v=1;const S=2;const Q=4;const N=6;const R=8;const k=10;const T=12;const _=15;const x=~_;const D=16;const P=32;const O=64;const L=128;const F=256;const M=512;const U=O|L|M;const H=1023;const entToType=r=>r.isFile()?R:r.isDirectory()?Q:r.isSymbolicLink()?k:r.isCharacterDevice()?S:r.isBlockDevice()?N:r.isSocket()?T:r.isFIFO()?v:w;const q=new Map;const normalize=r=>{const i=q.get(r);if(i)return i;const s=r.normalize("NFKD");q.set(r,s);return s};const G=new Map;const normalizeNocase=r=>{const i=G.get(r);if(i)return i;const s=normalize(r.toLowerCase());G.set(r,s);return s};class ResolveCache extends d.LRUCache{constructor(){super({max:256})}}i.ResolveCache=ResolveCache;class ChildrenCache extends d.LRUCache{constructor(r=16*1024){super({maxSize:r,sizeCalculation:r=>r.length+1})}}i.ChildrenCache=ChildrenCache;const j=Symbol("PathScurry setAsCwd");class PathBase{name;root;roots;parent;nocase;isCWD=false;#Pe;#Oe;get dev(){return this.#Oe}#Le;get mode(){return this.#Le}#Fe;get nlink(){return this.#Fe}#Me;get uid(){return this.#Me}#Ue;get gid(){return this.#Ue}#He;get rdev(){return this.#He}#qe;get blksize(){return this.#qe}#Ge;get ino(){return this.#Ge}#F;get size(){return this.#F}#je;get blocks(){return this.#je}#ze;get atimeMs(){return this.#ze}#Ve;get mtimeMs(){return this.#Ve}#We;get ctimeMs(){return this.#We}#Ye;get birthtimeMs(){return this.#Ye}#Je;get atime(){return this.#Je}#$e;get mtime(){return this.#$e}#Ke;get ctime(){return this.#Ke}#Xe;get birthtime(){return this.#Xe}#Ze;#et;#tt;#rt;#it;#nt;#st;#at;#ot;#lt;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(r,i=w,s,a,l,c,d){this.name=r;this.#Ze=l?normalizeNocase(r):normalize(r);this.#st=i&H;this.nocase=l;this.roots=a;this.root=s||this;this.#at=c;this.#tt=d.fullpath;this.#it=d.relative;this.#nt=d.relativePosix;this.parent=d.parent;if(this.parent){this.#Pe=this.parent.#Pe}else{this.#Pe=fsFromOption(d.fs)}}depth(){if(this.#et!==undefined)return this.#et;if(!this.parent)return this.#et=0;return this.#et=this.parent.depth()+1}childrenCache(){return this.#at}resolve(r){if(!r){return this}const i=this.getRootString(r);const s=r.substring(i.length);const a=s.split(this.splitSep);const l=i?this.getRoot(i).#ct(a):this.#ct(a);return l}#ct(r){let i=this;for(const s of r){i=i.child(s)}return i}children(){const r=this.#at.get(this);if(r){return r}const i=Object.assign([],{provisional:0});this.#at.set(this,i);this.#st&=~D;return i}child(r,i){if(r===""||r==="."){return this}if(r===".."){return this.parent||this}const s=this.children();const a=this.nocase?normalizeNocase(r):normalize(r);for(const r of s){if(r.#Ze===a){return r}}const l=this.parent?this.sep:"";const c=this.#tt?this.#tt+l+r:undefined;const d=this.newChild(r,w,{...i,parent:this,fullpath:c});if(!this.canReaddir()){d.#st|=L}s.push(d);return d}relative(){if(this.isCWD)return"";if(this.#it!==undefined){return this.#it}const r=this.name;const i=this.parent;if(!i){return this.#it=this.name}const s=i.relative();return s+(!s||!i.parent?"":this.sep)+r}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(this.#nt!==undefined)return this.#nt;const r=this.name;const i=this.parent;if(!i){return this.#nt=this.fullpathPosix()}const s=i.relativePosix();return s+(!s||!i.parent?"":"/")+r}fullpath(){if(this.#tt!==undefined){return this.#tt}const r=this.name;const i=this.parent;if(!i){return this.#tt=this.name}const s=i.fullpath();const a=s+(!i.parent?"":this.sep)+r;return this.#tt=a}fullpathPosix(){if(this.#rt!==undefined)return this.#rt;if(this.sep==="/")return this.#rt=this.fullpath();if(!this.parent){const r=this.fullpath().replace(/\\/g,"/");if(/^[a-z]:\//i.test(r)){return this.#rt=`//?/${r}`}else{return this.#rt=r}}const r=this.parent;const i=r.fullpathPosix();const s=i+(!i||!r.parent?"":"/")+this.name;return this.#rt=s}isUnknown(){return(this.#st&_)===w}isType(r){return this[`is${r}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(this.#st&_)===R}isDirectory(){return(this.#st&_)===Q}isCharacterDevice(){return(this.#st&_)===S}isBlockDevice(){return(this.#st&_)===N}isFIFO(){return(this.#st&_)===v}isSocket(){return(this.#st&_)===T}isSymbolicLink(){return(this.#st&k)===k}lstatCached(){return this.#st&P?this:undefined}readlinkCached(){return this.#ot}realpathCached(){return this.#lt}readdirCached(){const r=this.children();return r.slice(0,r.provisional)}canReadlink(){if(this.#ot)return true;if(!this.parent)return false;const r=this.#st&_;return!(r!==w&&r!==k||this.#st&F||this.#st&L)}calledReaddir(){return!!(this.#st&D)}isENOENT(){return!!(this.#st&L)}isNamed(r){return!this.nocase?this.#Ze===normalize(r):this.#Ze===normalizeNocase(r)}async readlink(){const r=this.#ot;if(r){return r}if(!this.canReadlink()){return undefined}if(!this.parent){return undefined}try{const r=await this.#Pe.promises.readlink(this.fullpath());const i=(await this.parent.realpath())?.resolve(r);if(i){return this.#ot=i}}catch(r){this.#dt(r.code);return undefined}}readlinkSync(){const r=this.#ot;if(r){return r}if(!this.canReadlink()){return undefined}if(!this.parent){return undefined}try{const r=this.#Pe.readlinkSync(this.fullpath());const i=this.parent.realpathSync()?.resolve(r);if(i){return this.#ot=i}}catch(r){this.#dt(r.code);return undefined}}#pt(r){this.#st|=D;for(let i=r.provisional;ii(null,r)))}readdirCB(r,i=false){if(!this.canReaddir()){if(i)r(null,[]);else queueMicrotask((()=>r(null,[])));return}const s=this.children();if(this.calledReaddir()){const a=s.slice(0,s.provisional);if(i)r(null,a);else queueMicrotask((()=>r(null,a)));return}this.#It.push(r);if(this.#wt){return}this.#wt=true;const a=this.fullpath();this.#Pe.readdir(a,{withFileTypes:true},((r,i)=>{if(r){this.#mt(r.code);s.provisional=0}else{for(const r of i){this.#yt(r,s)}this.#pt(s)}this.#vt(s.slice(0,s.provisional));return}))}#St;async readdir(){if(!this.canReaddir()){return[]}const r=this.children();if(this.calledReaddir()){return r.slice(0,r.provisional)}const i=this.fullpath();if(this.#St){await this.#St}else{let resolve=()=>{};this.#St=new Promise((r=>resolve=r));try{for(const s of await this.#Pe.promises.readdir(i,{withFileTypes:true})){this.#yt(s,r)}this.#pt(r)}catch(i){this.#mt(i.code);r.provisional=0}this.#St=undefined;resolve()}return r.slice(0,r.provisional)}readdirSync(){if(!this.canReaddir()){return[]}const r=this.children();if(this.calledReaddir()){return r.slice(0,r.provisional)}const i=this.fullpath();try{for(const s of this.#Pe.readdirSync(i,{withFileTypes:true})){this.#yt(s,r)}this.#pt(r)}catch(i){this.#mt(i.code);r.provisional=0}return r.slice(0,r.provisional)}canReaddir(){if(this.#st&U)return false;const r=_&this.#st;if(!(r===w||r===Q||r===k)){return false}return true}shouldWalk(r,i){return(this.#st&Q)===Q&&!(this.#st&U)&&!r.has(this)&&(!i||i(this))}async realpath(){if(this.#lt)return this.#lt;if((M|F|L)&this.#st)return undefined;try{const r=await this.#Pe.promises.realpath(this.fullpath());return this.#lt=this.resolve(r)}catch(r){this.#ft()}}realpathSync(){if(this.#lt)return this.#lt;if((M|F|L)&this.#st)return undefined;try{const r=this.#Pe.realpathSync(this.fullpath());return this.#lt=this.resolve(r)}catch(r){this.#ft()}}[j](r){if(r===this)return;r.isCWD=false;this.isCWD=true;const i=new Set([]);let s=[];let a=this;while(a&&a.parent){i.add(a);a.#it=s.join(this.sep);a.#nt=s.join("/");a=a.parent;s.push("..")}a=r;while(a&&a.parent&&!i.has(a)){a.#it=undefined;a.#nt=undefined;a=a.parent}}}i.PathBase=PathBase;class PathWin32 extends PathBase{sep="\\";splitSep=I;constructor(r,i=w,s,a,l,c,d){super(r,i,s,a,l,c,d)}newChild(r,i=w,s={}){return new PathWin32(r,i,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(r){return p.win32.parse(r).root}getRoot(r){r=uncToDrive(r.toUpperCase());if(r===this.root.name){return this.root}for(const[i,s]of Object.entries(this.roots)){if(this.sameRoot(r,i)){return this.roots[r]=s}}return this.roots[r]=new PathScurryWin32(r,this).root}sameRoot(r,i=this.root.name){r=r.toUpperCase().replace(/\//g,"\\").replace(B,"$1\\");return r===i}}i.PathWin32=PathWin32;class PathPosix extends PathBase{splitSep="/";sep="/";constructor(r,i=w,s,a,l,c,d){super(r,i,s,a,l,c,d)}getRootString(r){return r.startsWith("/")?"/":""}getRoot(r){return this.root}newChild(r,i=w,s={}){return new PathPosix(r,i,this.root,this.roots,this.nocase,this.childrenCache(),s)}}i.PathPosix=PathPosix;class PathScurryBase{root;rootPath;roots;cwd;#Qt;#Nt;#at;nocase;#Pe;constructor(r=process.cwd(),i,s,{nocase:a,childrenCacheSize:l=16*1024,fs:c=C}={}){this.#Pe=fsFromOption(c);if(r instanceof URL||r.startsWith("file://")){r=(0,A.fileURLToPath)(r)}const d=i.resolve(r);this.roots=Object.create(null);this.rootPath=this.parseRootPath(d);this.#Qt=new ResolveCache;this.#Nt=new ResolveCache;this.#at=new ChildrenCache(l);const p=d.substring(this.rootPath.length).split(s);if(p.length===1&&!p[0]){p.pop()}if(a===undefined){throw new TypeError("must provide nocase setting to PathScurryBase ctor")}this.nocase=a;this.root=this.newRoot(this.#Pe);this.roots[this.rootPath]=this.root;let u=this.root;let h=p.length-1;const g=i.sep;let y=this.rootPath;let b=false;for(const r of p){const i=h--;u=u.child(r,{relative:new Array(i).fill("..").join(g),relativePosix:new Array(i).fill("..").join("/"),fullpath:y+=(b?"":g)+r});b=true}this.cwd=u}depth(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.depth()}childrenCache(){return this.#at}resolve(...r){let i="";for(let s=r.length-1;s>=0;s--){const a=r[s];if(!a||a===".")continue;i=i?`${a}/${i}`:a;if(this.isAbsolute(a)){break}}const s=this.#Qt.get(i);if(s!==undefined){return s}const a=this.cwd.resolve(i).fullpath();this.#Qt.set(i,a);return a}resolvePosix(...r){let i="";for(let s=r.length-1;s>=0;s--){const a=r[s];if(!a||a===".")continue;i=i?`${a}/${i}`:a;if(this.isAbsolute(a)){break}}const s=this.#Nt.get(i);if(s!==undefined){return s}const a=this.cwd.resolve(i).fullpathPosix();this.#Nt.set(i,a);return a}relative(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.relative()}relativePosix(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.relativePosix()}basename(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.name}dirname(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return(r.parent||r).fullpath()}async readdir(r=this.cwd,i={withFileTypes:true}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s}=i;if(!r.canReaddir()){return[]}else{const i=await r.readdir();return s?i:i.map((r=>r.name))}}readdirSync(r=this.cwd,i={withFileTypes:true}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true}=i;if(!r.canReaddir()){return[]}else if(s){return r.readdirSync()}else{return r.readdirSync().map((r=>r.name))}}async lstat(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.lstat()}lstatSync(r=this.cwd){if(typeof r==="string"){r=this.cwd.resolve(r)}return r.lstatSync()}async readlink(r=this.cwd,{withFileTypes:i}={withFileTypes:false}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r.withFileTypes;r=this.cwd}const s=await r.readlink();return i?s:s?.fullpath()}readlinkSync(r=this.cwd,{withFileTypes:i}={withFileTypes:false}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r.withFileTypes;r=this.cwd}const s=r.readlinkSync();return i?s:s?.fullpath()}async realpath(r=this.cwd,{withFileTypes:i}={withFileTypes:false}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r.withFileTypes;r=this.cwd}const s=await r.realpath();return i?s:s?.fullpath()}realpathSync(r=this.cwd,{withFileTypes:i}={withFileTypes:false}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r.withFileTypes;r=this.cwd}const s=r.realpathSync();return i?s:s?.fullpath()}async walk(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true,follow:a=false,filter:l,walkFilter:c}=i;const d=[];if(!l||l(r)){d.push(s?r:r.fullpath())}const p=new Set;const walk=(r,i)=>{p.add(r);r.readdirCB(((r,A)=>{if(r){return i(r)}let u=A.length;if(!u)return i();const next=()=>{if(--u===0){i()}};for(const r of A){if(!l||l(r)){d.push(s?r:r.fullpath())}if(a&&r.isSymbolicLink()){r.realpath().then((r=>r?.isUnknown()?r.lstat():r)).then((r=>r?.shouldWalk(p,c)?walk(r,next):next()))}else{if(r.shouldWalk(p,c)){walk(r,next)}else{next()}}}}),true)};const A=r;return new Promise(((r,i)=>{walk(A,(s=>{if(s)return i(s);r(d)}))}))}walkSync(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true,follow:a=false,filter:l,walkFilter:c}=i;const d=[];if(!l||l(r)){d.push(s?r:r.fullpath())}const p=new Set([r]);for(const r of p){const i=r.readdirSync();for(const r of i){if(!l||l(r)){d.push(s?r:r.fullpath())}let i=r;if(r.isSymbolicLink()){if(!(a&&(i=r.realpathSync())))continue;if(i.isUnknown())i.lstatSync()}if(i.shouldWalk(p,c)){p.add(i)}}}return d}[Symbol.asyncIterator](){return this.iterate()}iterate(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}return this.stream(r,i)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true,follow:a=false,filter:l,walkFilter:c}=i;if(!l||l(r)){yield s?r:r.fullpath()}const d=new Set([r]);for(const r of d){const i=r.readdirSync();for(const r of i){if(!l||l(r)){yield s?r:r.fullpath()}let i=r;if(r.isSymbolicLink()){if(!(a&&(i=r.realpathSync())))continue;if(i.isUnknown())i.lstatSync()}if(i.shouldWalk(d,c)){d.add(i)}}}}stream(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true,follow:a=false,filter:l,walkFilter:c}=i;const d=new b.Minipass({objectMode:true});if(!l||l(r)){d.write(s?r:r.fullpath())}const p=new Set;const A=[r];let u=0;const process=()=>{let r=false;while(!r){const i=A.shift();if(!i){if(u===0)d.end();return}u++;p.add(i);const onReaddir=(i,g,y=false)=>{if(i)return d.emit("error",i);if(a&&!y){const r=[];for(const i of g){if(i.isSymbolicLink()){r.push(i.realpath().then((r=>r?.isUnknown()?r.lstat():r)))}}if(r.length){Promise.all(r).then((()=>onReaddir(null,g,true)));return}}for(const i of g){if(i&&(!l||l(i))){if(!d.write(s?i:i.fullpath())){r=true}}}u--;for(const r of g){const i=r.realpathCached()||r;if(i.shouldWalk(p,c)){A.push(i)}}if(r&&!d.flowing){d.once("drain",process)}else if(!h){process()}};let h=true;i.readdirCB(onReaddir,true);h=false}};process();return d}streamSync(r=this.cwd,i={}){if(typeof r==="string"){r=this.cwd.resolve(r)}else if(!(r instanceof PathBase)){i=r;r=this.cwd}const{withFileTypes:s=true,follow:a=false,filter:l,walkFilter:c}=i;const d=new b.Minipass({objectMode:true});const p=new Set;if(!l||l(r)){d.write(s?r:r.fullpath())}const A=[r];let u=0;const process=()=>{let r=false;while(!r){const i=A.shift();if(!i){if(u===0)d.end();return}u++;p.add(i);const h=i.readdirSync();for(const i of h){if(!l||l(i)){if(!d.write(s?i:i.fullpath())){r=true}}}u--;for(const r of h){let i=r;if(r.isSymbolicLink()){if(!(a&&(i=r.realpathSync())))continue;if(i.isUnknown())i.lstatSync()}if(i.shouldWalk(p,c)){A.push(i)}}}if(r&&!d.flowing)d.once("drain",process)};process();return d}chdir(r=this.cwd){const i=this.cwd;this.cwd=typeof r==="string"?this.cwd.resolve(r):r;this.cwd[j](i)}}i.PathScurryBase=PathScurryBase;class PathScurryWin32 extends PathScurryBase{sep="\\";constructor(r=process.cwd(),i={}){const{nocase:s=true}=i;super(r,p.win32,"\\",{...i,nocase:s});this.nocase=s;for(let r=this.cwd;r;r=r.parent){r.nocase=this.nocase}}parseRootPath(r){return p.win32.parse(r).root.toUpperCase()}newRoot(r){return new PathWin32(this.rootPath,Q,undefined,this.roots,this.nocase,this.childrenCache(),{fs:r})}isAbsolute(r){return r.startsWith("/")||r.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(r)}}i.PathScurryWin32=PathScurryWin32;class PathScurryPosix extends PathScurryBase{sep="/";constructor(r=process.cwd(),i={}){const{nocase:s=false}=i;super(r,p.posix,"/",{...i,nocase:s});this.nocase=s}parseRootPath(r){return"/"}newRoot(r){return new PathPosix(this.rootPath,Q,undefined,this.roots,this.nocase,this.childrenCache(),{fs:r})}isAbsolute(r){return r.startsWith("/")}}i.PathScurryPosix=PathScurryPosix;class PathScurryDarwin extends PathScurryPosix{constructor(r=process.cwd(),i={}){const{nocase:s=true}=i;super(r,{...i,nocase:s})}}i.PathScurryDarwin=PathScurryDarwin;i.Path=process.platform==="win32"?PathWin32:PathPosix;i.PathScurry=process.platform==="win32"?PathScurryWin32:process.platform==="darwin"?PathScurryDarwin:PathScurryPosix},94637:r=>{"use strict";function getDefaultExportFromCjs(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r["default"]:r}const i=new Int32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function ensureBuffer(r){if(Buffer.isBuffer(r)){return r}if(typeof r==="number"){return Buffer.alloc(r)}else if(typeof r==="string"){return Buffer.from(r)}else{throw new Error("input must be buffer, number, or string, received "+typeof r)}}function bufferizeInt(r){const i=ensureBuffer(4);i.writeInt32BE(r,0);return i}function _crc32(r,s){r=ensureBuffer(r);if(Buffer.isBuffer(s)){s=s.readUInt32BE(0)}let a=~~s^-1;for(var l=0;l>>8}return a^-1}function crc32(){return bufferizeInt(_crc32.apply(null,arguments))}crc32.signed=function(){return _crc32.apply(null,arguments)};crc32.unsigned=function(){return _crc32.apply(null,arguments)>>>0};var s=crc32;const a=getDefaultExportFromCjs(s);r.exports=a},66843:r=>{"use strict";r.exports=JSON.parse('{"name":"@actions/artifact","version":"2.1.9","preview":true,"description":"Actions artifact lib","keywords":["github","actions","artifact"],"homepage":"https://github.com/actions/toolkit/tree/main/packages/artifact","license":"MIT","main":"lib/artifact.js","types":"lib/artifact.d.ts","directories":{"lib":"lib","test":"__tests__"},"files":["lib","!.DS_Store"],"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/actions/toolkit.git","directory":"packages/artifact"},"scripts":{"audit-moderate":"npm install && npm audit --json --audit-level=moderate > audit.json","test":"cd ../../ && npm run test ./packages/artifact","bootstrap":"cd ../../ && npm run bootstrap","tsc-run":"tsc","tsc":"npm run bootstrap && npm run tsc-run","gen:docs":"typedoc --plugin typedoc-plugin-markdown --out docs/generated src/artifact.ts --githubPages false --readme none"},"bugs":{"url":"https://github.com/actions/toolkit/issues"},"dependencies":{"@actions/core":"^1.10.0","@actions/github":"^5.1.1","@actions/http-client":"^2.1.0","@azure/storage-blob":"^12.15.0","@octokit/core":"^3.5.1","@octokit/plugin-request-log":"^1.0.4","@octokit/plugin-retry":"^3.0.9","@octokit/request-error":"^5.0.0","@protobuf-ts/plugin":"^2.2.3-alpha.1","archiver":"^7.0.1","crypto":"^1.0.1","jwt-decode":"^3.1.2","twirp-ts":"^2.5.0","unzip-stream":"^0.3.1"},"devDependencies":{"@types/archiver":"^5.3.2","@types/unzip-stream":"^0.3.4","typedoc":"^0.25.4","typedoc-plugin-markdown":"^3.17.1","typescript":"^5.2.2"}}')},64524:r=>{"use strict";r.exports=JSON.parse('[[[0,44],"disallowed_STD3_valid"],[[45,46],"valid"],[[47,47],"disallowed_STD3_valid"],[[48,57],"valid"],[[58,64],"disallowed_STD3_valid"],[[65,65],"mapped",[97]],[[66,66],"mapped",[98]],[[67,67],"mapped",[99]],[[68,68],"mapped",[100]],[[69,69],"mapped",[101]],[[70,70],"mapped",[102]],[[71,71],"mapped",[103]],[[72,72],"mapped",[104]],[[73,73],"mapped",[105]],[[74,74],"mapped",[106]],[[75,75],"mapped",[107]],[[76,76],"mapped",[108]],[[77,77],"mapped",[109]],[[78,78],"mapped",[110]],[[79,79],"mapped",[111]],[[80,80],"mapped",[112]],[[81,81],"mapped",[113]],[[82,82],"mapped",[114]],[[83,83],"mapped",[115]],[[84,84],"mapped",[116]],[[85,85],"mapped",[117]],[[86,86],"mapped",[118]],[[87,87],"mapped",[119]],[[88,88],"mapped",[120]],[[89,89],"mapped",[121]],[[90,90],"mapped",[122]],[[91,96],"disallowed_STD3_valid"],[[97,122],"valid"],[[123,127],"disallowed_STD3_valid"],[[128,159],"disallowed"],[[160,160],"disallowed_STD3_mapped",[32]],[[161,167],"valid",[],"NV8"],[[168,168],"disallowed_STD3_mapped",[32,776]],[[169,169],"valid",[],"NV8"],[[170,170],"mapped",[97]],[[171,172],"valid",[],"NV8"],[[173,173],"ignored"],[[174,174],"valid",[],"NV8"],[[175,175],"disallowed_STD3_mapped",[32,772]],[[176,177],"valid",[],"NV8"],[[178,178],"mapped",[50]],[[179,179],"mapped",[51]],[[180,180],"disallowed_STD3_mapped",[32,769]],[[181,181],"mapped",[956]],[[182,182],"valid",[],"NV8"],[[183,183],"valid"],[[184,184],"disallowed_STD3_mapped",[32,807]],[[185,185],"mapped",[49]],[[186,186],"mapped",[111]],[[187,187],"valid",[],"NV8"],[[188,188],"mapped",[49,8260,52]],[[189,189],"mapped",[49,8260,50]],[[190,190],"mapped",[51,8260,52]],[[191,191],"valid",[],"NV8"],[[192,192],"mapped",[224]],[[193,193],"mapped",[225]],[[194,194],"mapped",[226]],[[195,195],"mapped",[227]],[[196,196],"mapped",[228]],[[197,197],"mapped",[229]],[[198,198],"mapped",[230]],[[199,199],"mapped",[231]],[[200,200],"mapped",[232]],[[201,201],"mapped",[233]],[[202,202],"mapped",[234]],[[203,203],"mapped",[235]],[[204,204],"mapped",[236]],[[205,205],"mapped",[237]],[[206,206],"mapped",[238]],[[207,207],"mapped",[239]],[[208,208],"mapped",[240]],[[209,209],"mapped",[241]],[[210,210],"mapped",[242]],[[211,211],"mapped",[243]],[[212,212],"mapped",[244]],[[213,213],"mapped",[245]],[[214,214],"mapped",[246]],[[215,215],"valid",[],"NV8"],[[216,216],"mapped",[248]],[[217,217],"mapped",[249]],[[218,218],"mapped",[250]],[[219,219],"mapped",[251]],[[220,220],"mapped",[252]],[[221,221],"mapped",[253]],[[222,222],"mapped",[254]],[[223,223],"deviation",[115,115]],[[224,246],"valid"],[[247,247],"valid",[],"NV8"],[[248,255],"valid"],[[256,256],"mapped",[257]],[[257,257],"valid"],[[258,258],"mapped",[259]],[[259,259],"valid"],[[260,260],"mapped",[261]],[[261,261],"valid"],[[262,262],"mapped",[263]],[[263,263],"valid"],[[264,264],"mapped",[265]],[[265,265],"valid"],[[266,266],"mapped",[267]],[[267,267],"valid"],[[268,268],"mapped",[269]],[[269,269],"valid"],[[270,270],"mapped",[271]],[[271,271],"valid"],[[272,272],"mapped",[273]],[[273,273],"valid"],[[274,274],"mapped",[275]],[[275,275],"valid"],[[276,276],"mapped",[277]],[[277,277],"valid"],[[278,278],"mapped",[279]],[[279,279],"valid"],[[280,280],"mapped",[281]],[[281,281],"valid"],[[282,282],"mapped",[283]],[[283,283],"valid"],[[284,284],"mapped",[285]],[[285,285],"valid"],[[286,286],"mapped",[287]],[[287,287],"valid"],[[288,288],"mapped",[289]],[[289,289],"valid"],[[290,290],"mapped",[291]],[[291,291],"valid"],[[292,292],"mapped",[293]],[[293,293],"valid"],[[294,294],"mapped",[295]],[[295,295],"valid"],[[296,296],"mapped",[297]],[[297,297],"valid"],[[298,298],"mapped",[299]],[[299,299],"valid"],[[300,300],"mapped",[301]],[[301,301],"valid"],[[302,302],"mapped",[303]],[[303,303],"valid"],[[304,304],"mapped",[105,775]],[[305,305],"valid"],[[306,307],"mapped",[105,106]],[[308,308],"mapped",[309]],[[309,309],"valid"],[[310,310],"mapped",[311]],[[311,312],"valid"],[[313,313],"mapped",[314]],[[314,314],"valid"],[[315,315],"mapped",[316]],[[316,316],"valid"],[[317,317],"mapped",[318]],[[318,318],"valid"],[[319,320],"mapped",[108,183]],[[321,321],"mapped",[322]],[[322,322],"valid"],[[323,323],"mapped",[324]],[[324,324],"valid"],[[325,325],"mapped",[326]],[[326,326],"valid"],[[327,327],"mapped",[328]],[[328,328],"valid"],[[329,329],"mapped",[700,110]],[[330,330],"mapped",[331]],[[331,331],"valid"],[[332,332],"mapped",[333]],[[333,333],"valid"],[[334,334],"mapped",[335]],[[335,335],"valid"],[[336,336],"mapped",[337]],[[337,337],"valid"],[[338,338],"mapped",[339]],[[339,339],"valid"],[[340,340],"mapped",[341]],[[341,341],"valid"],[[342,342],"mapped",[343]],[[343,343],"valid"],[[344,344],"mapped",[345]],[[345,345],"valid"],[[346,346],"mapped",[347]],[[347,347],"valid"],[[348,348],"mapped",[349]],[[349,349],"valid"],[[350,350],"mapped",[351]],[[351,351],"valid"],[[352,352],"mapped",[353]],[[353,353],"valid"],[[354,354],"mapped",[355]],[[355,355],"valid"],[[356,356],"mapped",[357]],[[357,357],"valid"],[[358,358],"mapped",[359]],[[359,359],"valid"],[[360,360],"mapped",[361]],[[361,361],"valid"],[[362,362],"mapped",[363]],[[363,363],"valid"],[[364,364],"mapped",[365]],[[365,365],"valid"],[[366,366],"mapped",[367]],[[367,367],"valid"],[[368,368],"mapped",[369]],[[369,369],"valid"],[[370,370],"mapped",[371]],[[371,371],"valid"],[[372,372],"mapped",[373]],[[373,373],"valid"],[[374,374],"mapped",[375]],[[375,375],"valid"],[[376,376],"mapped",[255]],[[377,377],"mapped",[378]],[[378,378],"valid"],[[379,379],"mapped",[380]],[[380,380],"valid"],[[381,381],"mapped",[382]],[[382,382],"valid"],[[383,383],"mapped",[115]],[[384,384],"valid"],[[385,385],"mapped",[595]],[[386,386],"mapped",[387]],[[387,387],"valid"],[[388,388],"mapped",[389]],[[389,389],"valid"],[[390,390],"mapped",[596]],[[391,391],"mapped",[392]],[[392,392],"valid"],[[393,393],"mapped",[598]],[[394,394],"mapped",[599]],[[395,395],"mapped",[396]],[[396,397],"valid"],[[398,398],"mapped",[477]],[[399,399],"mapped",[601]],[[400,400],"mapped",[603]],[[401,401],"mapped",[402]],[[402,402],"valid"],[[403,403],"mapped",[608]],[[404,404],"mapped",[611]],[[405,405],"valid"],[[406,406],"mapped",[617]],[[407,407],"mapped",[616]],[[408,408],"mapped",[409]],[[409,411],"valid"],[[412,412],"mapped",[623]],[[413,413],"mapped",[626]],[[414,414],"valid"],[[415,415],"mapped",[629]],[[416,416],"mapped",[417]],[[417,417],"valid"],[[418,418],"mapped",[419]],[[419,419],"valid"],[[420,420],"mapped",[421]],[[421,421],"valid"],[[422,422],"mapped",[640]],[[423,423],"mapped",[424]],[[424,424],"valid"],[[425,425],"mapped",[643]],[[426,427],"valid"],[[428,428],"mapped",[429]],[[429,429],"valid"],[[430,430],"mapped",[648]],[[431,431],"mapped",[432]],[[432,432],"valid"],[[433,433],"mapped",[650]],[[434,434],"mapped",[651]],[[435,435],"mapped",[436]],[[436,436],"valid"],[[437,437],"mapped",[438]],[[438,438],"valid"],[[439,439],"mapped",[658]],[[440,440],"mapped",[441]],[[441,443],"valid"],[[444,444],"mapped",[445]],[[445,451],"valid"],[[452,454],"mapped",[100,382]],[[455,457],"mapped",[108,106]],[[458,460],"mapped",[110,106]],[[461,461],"mapped",[462]],[[462,462],"valid"],[[463,463],"mapped",[464]],[[464,464],"valid"],[[465,465],"mapped",[466]],[[466,466],"valid"],[[467,467],"mapped",[468]],[[468,468],"valid"],[[469,469],"mapped",[470]],[[470,470],"valid"],[[471,471],"mapped",[472]],[[472,472],"valid"],[[473,473],"mapped",[474]],[[474,474],"valid"],[[475,475],"mapped",[476]],[[476,477],"valid"],[[478,478],"mapped",[479]],[[479,479],"valid"],[[480,480],"mapped",[481]],[[481,481],"valid"],[[482,482],"mapped",[483]],[[483,483],"valid"],[[484,484],"mapped",[485]],[[485,485],"valid"],[[486,486],"mapped",[487]],[[487,487],"valid"],[[488,488],"mapped",[489]],[[489,489],"valid"],[[490,490],"mapped",[491]],[[491,491],"valid"],[[492,492],"mapped",[493]],[[493,493],"valid"],[[494,494],"mapped",[495]],[[495,496],"valid"],[[497,499],"mapped",[100,122]],[[500,500],"mapped",[501]],[[501,501],"valid"],[[502,502],"mapped",[405]],[[503,503],"mapped",[447]],[[504,504],"mapped",[505]],[[505,505],"valid"],[[506,506],"mapped",[507]],[[507,507],"valid"],[[508,508],"mapped",[509]],[[509,509],"valid"],[[510,510],"mapped",[511]],[[511,511],"valid"],[[512,512],"mapped",[513]],[[513,513],"valid"],[[514,514],"mapped",[515]],[[515,515],"valid"],[[516,516],"mapped",[517]],[[517,517],"valid"],[[518,518],"mapped",[519]],[[519,519],"valid"],[[520,520],"mapped",[521]],[[521,521],"valid"],[[522,522],"mapped",[523]],[[523,523],"valid"],[[524,524],"mapped",[525]],[[525,525],"valid"],[[526,526],"mapped",[527]],[[527,527],"valid"],[[528,528],"mapped",[529]],[[529,529],"valid"],[[530,530],"mapped",[531]],[[531,531],"valid"],[[532,532],"mapped",[533]],[[533,533],"valid"],[[534,534],"mapped",[535]],[[535,535],"valid"],[[536,536],"mapped",[537]],[[537,537],"valid"],[[538,538],"mapped",[539]],[[539,539],"valid"],[[540,540],"mapped",[541]],[[541,541],"valid"],[[542,542],"mapped",[543]],[[543,543],"valid"],[[544,544],"mapped",[414]],[[545,545],"valid"],[[546,546],"mapped",[547]],[[547,547],"valid"],[[548,548],"mapped",[549]],[[549,549],"valid"],[[550,550],"mapped",[551]],[[551,551],"valid"],[[552,552],"mapped",[553]],[[553,553],"valid"],[[554,554],"mapped",[555]],[[555,555],"valid"],[[556,556],"mapped",[557]],[[557,557],"valid"],[[558,558],"mapped",[559]],[[559,559],"valid"],[[560,560],"mapped",[561]],[[561,561],"valid"],[[562,562],"mapped",[563]],[[563,563],"valid"],[[564,566],"valid"],[[567,569],"valid"],[[570,570],"mapped",[11365]],[[571,571],"mapped",[572]],[[572,572],"valid"],[[573,573],"mapped",[410]],[[574,574],"mapped",[11366]],[[575,576],"valid"],[[577,577],"mapped",[578]],[[578,578],"valid"],[[579,579],"mapped",[384]],[[580,580],"mapped",[649]],[[581,581],"mapped",[652]],[[582,582],"mapped",[583]],[[583,583],"valid"],[[584,584],"mapped",[585]],[[585,585],"valid"],[[586,586],"mapped",[587]],[[587,587],"valid"],[[588,588],"mapped",[589]],[[589,589],"valid"],[[590,590],"mapped",[591]],[[591,591],"valid"],[[592,680],"valid"],[[681,685],"valid"],[[686,687],"valid"],[[688,688],"mapped",[104]],[[689,689],"mapped",[614]],[[690,690],"mapped",[106]],[[691,691],"mapped",[114]],[[692,692],"mapped",[633]],[[693,693],"mapped",[635]],[[694,694],"mapped",[641]],[[695,695],"mapped",[119]],[[696,696],"mapped",[121]],[[697,705],"valid"],[[706,709],"valid",[],"NV8"],[[710,721],"valid"],[[722,727],"valid",[],"NV8"],[[728,728],"disallowed_STD3_mapped",[32,774]],[[729,729],"disallowed_STD3_mapped",[32,775]],[[730,730],"disallowed_STD3_mapped",[32,778]],[[731,731],"disallowed_STD3_mapped",[32,808]],[[732,732],"disallowed_STD3_mapped",[32,771]],[[733,733],"disallowed_STD3_mapped",[32,779]],[[734,734],"valid",[],"NV8"],[[735,735],"valid",[],"NV8"],[[736,736],"mapped",[611]],[[737,737],"mapped",[108]],[[738,738],"mapped",[115]],[[739,739],"mapped",[120]],[[740,740],"mapped",[661]],[[741,745],"valid",[],"NV8"],[[746,747],"valid",[],"NV8"],[[748,748],"valid"],[[749,749],"valid",[],"NV8"],[[750,750],"valid"],[[751,767],"valid",[],"NV8"],[[768,831],"valid"],[[832,832],"mapped",[768]],[[833,833],"mapped",[769]],[[834,834],"valid"],[[835,835],"mapped",[787]],[[836,836],"mapped",[776,769]],[[837,837],"mapped",[953]],[[838,846],"valid"],[[847,847],"ignored"],[[848,855],"valid"],[[856,860],"valid"],[[861,863],"valid"],[[864,865],"valid"],[[866,866],"valid"],[[867,879],"valid"],[[880,880],"mapped",[881]],[[881,881],"valid"],[[882,882],"mapped",[883]],[[883,883],"valid"],[[884,884],"mapped",[697]],[[885,885],"valid"],[[886,886],"mapped",[887]],[[887,887],"valid"],[[888,889],"disallowed"],[[890,890],"disallowed_STD3_mapped",[32,953]],[[891,893],"valid"],[[894,894],"disallowed_STD3_mapped",[59]],[[895,895],"mapped",[1011]],[[896,899],"disallowed"],[[900,900],"disallowed_STD3_mapped",[32,769]],[[901,901],"disallowed_STD3_mapped",[32,776,769]],[[902,902],"mapped",[940]],[[903,903],"mapped",[183]],[[904,904],"mapped",[941]],[[905,905],"mapped",[942]],[[906,906],"mapped",[943]],[[907,907],"disallowed"],[[908,908],"mapped",[972]],[[909,909],"disallowed"],[[910,910],"mapped",[973]],[[911,911],"mapped",[974]],[[912,912],"valid"],[[913,913],"mapped",[945]],[[914,914],"mapped",[946]],[[915,915],"mapped",[947]],[[916,916],"mapped",[948]],[[917,917],"mapped",[949]],[[918,918],"mapped",[950]],[[919,919],"mapped",[951]],[[920,920],"mapped",[952]],[[921,921],"mapped",[953]],[[922,922],"mapped",[954]],[[923,923],"mapped",[955]],[[924,924],"mapped",[956]],[[925,925],"mapped",[957]],[[926,926],"mapped",[958]],[[927,927],"mapped",[959]],[[928,928],"mapped",[960]],[[929,929],"mapped",[961]],[[930,930],"disallowed"],[[931,931],"mapped",[963]],[[932,932],"mapped",[964]],[[933,933],"mapped",[965]],[[934,934],"mapped",[966]],[[935,935],"mapped",[967]],[[936,936],"mapped",[968]],[[937,937],"mapped",[969]],[[938,938],"mapped",[970]],[[939,939],"mapped",[971]],[[940,961],"valid"],[[962,962],"deviation",[963]],[[963,974],"valid"],[[975,975],"mapped",[983]],[[976,976],"mapped",[946]],[[977,977],"mapped",[952]],[[978,978],"mapped",[965]],[[979,979],"mapped",[973]],[[980,980],"mapped",[971]],[[981,981],"mapped",[966]],[[982,982],"mapped",[960]],[[983,983],"valid"],[[984,984],"mapped",[985]],[[985,985],"valid"],[[986,986],"mapped",[987]],[[987,987],"valid"],[[988,988],"mapped",[989]],[[989,989],"valid"],[[990,990],"mapped",[991]],[[991,991],"valid"],[[992,992],"mapped",[993]],[[993,993],"valid"],[[994,994],"mapped",[995]],[[995,995],"valid"],[[996,996],"mapped",[997]],[[997,997],"valid"],[[998,998],"mapped",[999]],[[999,999],"valid"],[[1000,1000],"mapped",[1001]],[[1001,1001],"valid"],[[1002,1002],"mapped",[1003]],[[1003,1003],"valid"],[[1004,1004],"mapped",[1005]],[[1005,1005],"valid"],[[1006,1006],"mapped",[1007]],[[1007,1007],"valid"],[[1008,1008],"mapped",[954]],[[1009,1009],"mapped",[961]],[[1010,1010],"mapped",[963]],[[1011,1011],"valid"],[[1012,1012],"mapped",[952]],[[1013,1013],"mapped",[949]],[[1014,1014],"valid",[],"NV8"],[[1015,1015],"mapped",[1016]],[[1016,1016],"valid"],[[1017,1017],"mapped",[963]],[[1018,1018],"mapped",[1019]],[[1019,1019],"valid"],[[1020,1020],"valid"],[[1021,1021],"mapped",[891]],[[1022,1022],"mapped",[892]],[[1023,1023],"mapped",[893]],[[1024,1024],"mapped",[1104]],[[1025,1025],"mapped",[1105]],[[1026,1026],"mapped",[1106]],[[1027,1027],"mapped",[1107]],[[1028,1028],"mapped",[1108]],[[1029,1029],"mapped",[1109]],[[1030,1030],"mapped",[1110]],[[1031,1031],"mapped",[1111]],[[1032,1032],"mapped",[1112]],[[1033,1033],"mapped",[1113]],[[1034,1034],"mapped",[1114]],[[1035,1035],"mapped",[1115]],[[1036,1036],"mapped",[1116]],[[1037,1037],"mapped",[1117]],[[1038,1038],"mapped",[1118]],[[1039,1039],"mapped",[1119]],[[1040,1040],"mapped",[1072]],[[1041,1041],"mapped",[1073]],[[1042,1042],"mapped",[1074]],[[1043,1043],"mapped",[1075]],[[1044,1044],"mapped",[1076]],[[1045,1045],"mapped",[1077]],[[1046,1046],"mapped",[1078]],[[1047,1047],"mapped",[1079]],[[1048,1048],"mapped",[1080]],[[1049,1049],"mapped",[1081]],[[1050,1050],"mapped",[1082]],[[1051,1051],"mapped",[1083]],[[1052,1052],"mapped",[1084]],[[1053,1053],"mapped",[1085]],[[1054,1054],"mapped",[1086]],[[1055,1055],"mapped",[1087]],[[1056,1056],"mapped",[1088]],[[1057,1057],"mapped",[1089]],[[1058,1058],"mapped",[1090]],[[1059,1059],"mapped",[1091]],[[1060,1060],"mapped",[1092]],[[1061,1061],"mapped",[1093]],[[1062,1062],"mapped",[1094]],[[1063,1063],"mapped",[1095]],[[1064,1064],"mapped",[1096]],[[1065,1065],"mapped",[1097]],[[1066,1066],"mapped",[1098]],[[1067,1067],"mapped",[1099]],[[1068,1068],"mapped",[1100]],[[1069,1069],"mapped",[1101]],[[1070,1070],"mapped",[1102]],[[1071,1071],"mapped",[1103]],[[1072,1103],"valid"],[[1104,1104],"valid"],[[1105,1116],"valid"],[[1117,1117],"valid"],[[1118,1119],"valid"],[[1120,1120],"mapped",[1121]],[[1121,1121],"valid"],[[1122,1122],"mapped",[1123]],[[1123,1123],"valid"],[[1124,1124],"mapped",[1125]],[[1125,1125],"valid"],[[1126,1126],"mapped",[1127]],[[1127,1127],"valid"],[[1128,1128],"mapped",[1129]],[[1129,1129],"valid"],[[1130,1130],"mapped",[1131]],[[1131,1131],"valid"],[[1132,1132],"mapped",[1133]],[[1133,1133],"valid"],[[1134,1134],"mapped",[1135]],[[1135,1135],"valid"],[[1136,1136],"mapped",[1137]],[[1137,1137],"valid"],[[1138,1138],"mapped",[1139]],[[1139,1139],"valid"],[[1140,1140],"mapped",[1141]],[[1141,1141],"valid"],[[1142,1142],"mapped",[1143]],[[1143,1143],"valid"],[[1144,1144],"mapped",[1145]],[[1145,1145],"valid"],[[1146,1146],"mapped",[1147]],[[1147,1147],"valid"],[[1148,1148],"mapped",[1149]],[[1149,1149],"valid"],[[1150,1150],"mapped",[1151]],[[1151,1151],"valid"],[[1152,1152],"mapped",[1153]],[[1153,1153],"valid"],[[1154,1154],"valid",[],"NV8"],[[1155,1158],"valid"],[[1159,1159],"valid"],[[1160,1161],"valid",[],"NV8"],[[1162,1162],"mapped",[1163]],[[1163,1163],"valid"],[[1164,1164],"mapped",[1165]],[[1165,1165],"valid"],[[1166,1166],"mapped",[1167]],[[1167,1167],"valid"],[[1168,1168],"mapped",[1169]],[[1169,1169],"valid"],[[1170,1170],"mapped",[1171]],[[1171,1171],"valid"],[[1172,1172],"mapped",[1173]],[[1173,1173],"valid"],[[1174,1174],"mapped",[1175]],[[1175,1175],"valid"],[[1176,1176],"mapped",[1177]],[[1177,1177],"valid"],[[1178,1178],"mapped",[1179]],[[1179,1179],"valid"],[[1180,1180],"mapped",[1181]],[[1181,1181],"valid"],[[1182,1182],"mapped",[1183]],[[1183,1183],"valid"],[[1184,1184],"mapped",[1185]],[[1185,1185],"valid"],[[1186,1186],"mapped",[1187]],[[1187,1187],"valid"],[[1188,1188],"mapped",[1189]],[[1189,1189],"valid"],[[1190,1190],"mapped",[1191]],[[1191,1191],"valid"],[[1192,1192],"mapped",[1193]],[[1193,1193],"valid"],[[1194,1194],"mapped",[1195]],[[1195,1195],"valid"],[[1196,1196],"mapped",[1197]],[[1197,1197],"valid"],[[1198,1198],"mapped",[1199]],[[1199,1199],"valid"],[[1200,1200],"mapped",[1201]],[[1201,1201],"valid"],[[1202,1202],"mapped",[1203]],[[1203,1203],"valid"],[[1204,1204],"mapped",[1205]],[[1205,1205],"valid"],[[1206,1206],"mapped",[1207]],[[1207,1207],"valid"],[[1208,1208],"mapped",[1209]],[[1209,1209],"valid"],[[1210,1210],"mapped",[1211]],[[1211,1211],"valid"],[[1212,1212],"mapped",[1213]],[[1213,1213],"valid"],[[1214,1214],"mapped",[1215]],[[1215,1215],"valid"],[[1216,1216],"disallowed"],[[1217,1217],"mapped",[1218]],[[1218,1218],"valid"],[[1219,1219],"mapped",[1220]],[[1220,1220],"valid"],[[1221,1221],"mapped",[1222]],[[1222,1222],"valid"],[[1223,1223],"mapped",[1224]],[[1224,1224],"valid"],[[1225,1225],"mapped",[1226]],[[1226,1226],"valid"],[[1227,1227],"mapped",[1228]],[[1228,1228],"valid"],[[1229,1229],"mapped",[1230]],[[1230,1230],"valid"],[[1231,1231],"valid"],[[1232,1232],"mapped",[1233]],[[1233,1233],"valid"],[[1234,1234],"mapped",[1235]],[[1235,1235],"valid"],[[1236,1236],"mapped",[1237]],[[1237,1237],"valid"],[[1238,1238],"mapped",[1239]],[[1239,1239],"valid"],[[1240,1240],"mapped",[1241]],[[1241,1241],"valid"],[[1242,1242],"mapped",[1243]],[[1243,1243],"valid"],[[1244,1244],"mapped",[1245]],[[1245,1245],"valid"],[[1246,1246],"mapped",[1247]],[[1247,1247],"valid"],[[1248,1248],"mapped",[1249]],[[1249,1249],"valid"],[[1250,1250],"mapped",[1251]],[[1251,1251],"valid"],[[1252,1252],"mapped",[1253]],[[1253,1253],"valid"],[[1254,1254],"mapped",[1255]],[[1255,1255],"valid"],[[1256,1256],"mapped",[1257]],[[1257,1257],"valid"],[[1258,1258],"mapped",[1259]],[[1259,1259],"valid"],[[1260,1260],"mapped",[1261]],[[1261,1261],"valid"],[[1262,1262],"mapped",[1263]],[[1263,1263],"valid"],[[1264,1264],"mapped",[1265]],[[1265,1265],"valid"],[[1266,1266],"mapped",[1267]],[[1267,1267],"valid"],[[1268,1268],"mapped",[1269]],[[1269,1269],"valid"],[[1270,1270],"mapped",[1271]],[[1271,1271],"valid"],[[1272,1272],"mapped",[1273]],[[1273,1273],"valid"],[[1274,1274],"mapped",[1275]],[[1275,1275],"valid"],[[1276,1276],"mapped",[1277]],[[1277,1277],"valid"],[[1278,1278],"mapped",[1279]],[[1279,1279],"valid"],[[1280,1280],"mapped",[1281]],[[1281,1281],"valid"],[[1282,1282],"mapped",[1283]],[[1283,1283],"valid"],[[1284,1284],"mapped",[1285]],[[1285,1285],"valid"],[[1286,1286],"mapped",[1287]],[[1287,1287],"valid"],[[1288,1288],"mapped",[1289]],[[1289,1289],"valid"],[[1290,1290],"mapped",[1291]],[[1291,1291],"valid"],[[1292,1292],"mapped",[1293]],[[1293,1293],"valid"],[[1294,1294],"mapped",[1295]],[[1295,1295],"valid"],[[1296,1296],"mapped",[1297]],[[1297,1297],"valid"],[[1298,1298],"mapped",[1299]],[[1299,1299],"valid"],[[1300,1300],"mapped",[1301]],[[1301,1301],"valid"],[[1302,1302],"mapped",[1303]],[[1303,1303],"valid"],[[1304,1304],"mapped",[1305]],[[1305,1305],"valid"],[[1306,1306],"mapped",[1307]],[[1307,1307],"valid"],[[1308,1308],"mapped",[1309]],[[1309,1309],"valid"],[[1310,1310],"mapped",[1311]],[[1311,1311],"valid"],[[1312,1312],"mapped",[1313]],[[1313,1313],"valid"],[[1314,1314],"mapped",[1315]],[[1315,1315],"valid"],[[1316,1316],"mapped",[1317]],[[1317,1317],"valid"],[[1318,1318],"mapped",[1319]],[[1319,1319],"valid"],[[1320,1320],"mapped",[1321]],[[1321,1321],"valid"],[[1322,1322],"mapped",[1323]],[[1323,1323],"valid"],[[1324,1324],"mapped",[1325]],[[1325,1325],"valid"],[[1326,1326],"mapped",[1327]],[[1327,1327],"valid"],[[1328,1328],"disallowed"],[[1329,1329],"mapped",[1377]],[[1330,1330],"mapped",[1378]],[[1331,1331],"mapped",[1379]],[[1332,1332],"mapped",[1380]],[[1333,1333],"mapped",[1381]],[[1334,1334],"mapped",[1382]],[[1335,1335],"mapped",[1383]],[[1336,1336],"mapped",[1384]],[[1337,1337],"mapped",[1385]],[[1338,1338],"mapped",[1386]],[[1339,1339],"mapped",[1387]],[[1340,1340],"mapped",[1388]],[[1341,1341],"mapped",[1389]],[[1342,1342],"mapped",[1390]],[[1343,1343],"mapped",[1391]],[[1344,1344],"mapped",[1392]],[[1345,1345],"mapped",[1393]],[[1346,1346],"mapped",[1394]],[[1347,1347],"mapped",[1395]],[[1348,1348],"mapped",[1396]],[[1349,1349],"mapped",[1397]],[[1350,1350],"mapped",[1398]],[[1351,1351],"mapped",[1399]],[[1352,1352],"mapped",[1400]],[[1353,1353],"mapped",[1401]],[[1354,1354],"mapped",[1402]],[[1355,1355],"mapped",[1403]],[[1356,1356],"mapped",[1404]],[[1357,1357],"mapped",[1405]],[[1358,1358],"mapped",[1406]],[[1359,1359],"mapped",[1407]],[[1360,1360],"mapped",[1408]],[[1361,1361],"mapped",[1409]],[[1362,1362],"mapped",[1410]],[[1363,1363],"mapped",[1411]],[[1364,1364],"mapped",[1412]],[[1365,1365],"mapped",[1413]],[[1366,1366],"mapped",[1414]],[[1367,1368],"disallowed"],[[1369,1369],"valid"],[[1370,1375],"valid",[],"NV8"],[[1376,1376],"disallowed"],[[1377,1414],"valid"],[[1415,1415],"mapped",[1381,1410]],[[1416,1416],"disallowed"],[[1417,1417],"valid",[],"NV8"],[[1418,1418],"valid",[],"NV8"],[[1419,1420],"disallowed"],[[1421,1422],"valid",[],"NV8"],[[1423,1423],"valid",[],"NV8"],[[1424,1424],"disallowed"],[[1425,1441],"valid"],[[1442,1442],"valid"],[[1443,1455],"valid"],[[1456,1465],"valid"],[[1466,1466],"valid"],[[1467,1469],"valid"],[[1470,1470],"valid",[],"NV8"],[[1471,1471],"valid"],[[1472,1472],"valid",[],"NV8"],[[1473,1474],"valid"],[[1475,1475],"valid",[],"NV8"],[[1476,1476],"valid"],[[1477,1477],"valid"],[[1478,1478],"valid",[],"NV8"],[[1479,1479],"valid"],[[1480,1487],"disallowed"],[[1488,1514],"valid"],[[1515,1519],"disallowed"],[[1520,1524],"valid"],[[1525,1535],"disallowed"],[[1536,1539],"disallowed"],[[1540,1540],"disallowed"],[[1541,1541],"disallowed"],[[1542,1546],"valid",[],"NV8"],[[1547,1547],"valid",[],"NV8"],[[1548,1548],"valid",[],"NV8"],[[1549,1551],"valid",[],"NV8"],[[1552,1557],"valid"],[[1558,1562],"valid"],[[1563,1563],"valid",[],"NV8"],[[1564,1564],"disallowed"],[[1565,1565],"disallowed"],[[1566,1566],"valid",[],"NV8"],[[1567,1567],"valid",[],"NV8"],[[1568,1568],"valid"],[[1569,1594],"valid"],[[1595,1599],"valid"],[[1600,1600],"valid",[],"NV8"],[[1601,1618],"valid"],[[1619,1621],"valid"],[[1622,1624],"valid"],[[1625,1630],"valid"],[[1631,1631],"valid"],[[1632,1641],"valid"],[[1642,1645],"valid",[],"NV8"],[[1646,1647],"valid"],[[1648,1652],"valid"],[[1653,1653],"mapped",[1575,1652]],[[1654,1654],"mapped",[1608,1652]],[[1655,1655],"mapped",[1735,1652]],[[1656,1656],"mapped",[1610,1652]],[[1657,1719],"valid"],[[1720,1721],"valid"],[[1722,1726],"valid"],[[1727,1727],"valid"],[[1728,1742],"valid"],[[1743,1743],"valid"],[[1744,1747],"valid"],[[1748,1748],"valid",[],"NV8"],[[1749,1756],"valid"],[[1757,1757],"disallowed"],[[1758,1758],"valid",[],"NV8"],[[1759,1768],"valid"],[[1769,1769],"valid",[],"NV8"],[[1770,1773],"valid"],[[1774,1775],"valid"],[[1776,1785],"valid"],[[1786,1790],"valid"],[[1791,1791],"valid"],[[1792,1805],"valid",[],"NV8"],[[1806,1806],"disallowed"],[[1807,1807],"disallowed"],[[1808,1836],"valid"],[[1837,1839],"valid"],[[1840,1866],"valid"],[[1867,1868],"disallowed"],[[1869,1871],"valid"],[[1872,1901],"valid"],[[1902,1919],"valid"],[[1920,1968],"valid"],[[1969,1969],"valid"],[[1970,1983],"disallowed"],[[1984,2037],"valid"],[[2038,2042],"valid",[],"NV8"],[[2043,2047],"disallowed"],[[2048,2093],"valid"],[[2094,2095],"disallowed"],[[2096,2110],"valid",[],"NV8"],[[2111,2111],"disallowed"],[[2112,2139],"valid"],[[2140,2141],"disallowed"],[[2142,2142],"valid",[],"NV8"],[[2143,2207],"disallowed"],[[2208,2208],"valid"],[[2209,2209],"valid"],[[2210,2220],"valid"],[[2221,2226],"valid"],[[2227,2228],"valid"],[[2229,2274],"disallowed"],[[2275,2275],"valid"],[[2276,2302],"valid"],[[2303,2303],"valid"],[[2304,2304],"valid"],[[2305,2307],"valid"],[[2308,2308],"valid"],[[2309,2361],"valid"],[[2362,2363],"valid"],[[2364,2381],"valid"],[[2382,2382],"valid"],[[2383,2383],"valid"],[[2384,2388],"valid"],[[2389,2389],"valid"],[[2390,2391],"valid"],[[2392,2392],"mapped",[2325,2364]],[[2393,2393],"mapped",[2326,2364]],[[2394,2394],"mapped",[2327,2364]],[[2395,2395],"mapped",[2332,2364]],[[2396,2396],"mapped",[2337,2364]],[[2397,2397],"mapped",[2338,2364]],[[2398,2398],"mapped",[2347,2364]],[[2399,2399],"mapped",[2351,2364]],[[2400,2403],"valid"],[[2404,2405],"valid",[],"NV8"],[[2406,2415],"valid"],[[2416,2416],"valid",[],"NV8"],[[2417,2418],"valid"],[[2419,2423],"valid"],[[2424,2424],"valid"],[[2425,2426],"valid"],[[2427,2428],"valid"],[[2429,2429],"valid"],[[2430,2431],"valid"],[[2432,2432],"valid"],[[2433,2435],"valid"],[[2436,2436],"disallowed"],[[2437,2444],"valid"],[[2445,2446],"disallowed"],[[2447,2448],"valid"],[[2449,2450],"disallowed"],[[2451,2472],"valid"],[[2473,2473],"disallowed"],[[2474,2480],"valid"],[[2481,2481],"disallowed"],[[2482,2482],"valid"],[[2483,2485],"disallowed"],[[2486,2489],"valid"],[[2490,2491],"disallowed"],[[2492,2492],"valid"],[[2493,2493],"valid"],[[2494,2500],"valid"],[[2501,2502],"disallowed"],[[2503,2504],"valid"],[[2505,2506],"disallowed"],[[2507,2509],"valid"],[[2510,2510],"valid"],[[2511,2518],"disallowed"],[[2519,2519],"valid"],[[2520,2523],"disallowed"],[[2524,2524],"mapped",[2465,2492]],[[2525,2525],"mapped",[2466,2492]],[[2526,2526],"disallowed"],[[2527,2527],"mapped",[2479,2492]],[[2528,2531],"valid"],[[2532,2533],"disallowed"],[[2534,2545],"valid"],[[2546,2554],"valid",[],"NV8"],[[2555,2555],"valid",[],"NV8"],[[2556,2560],"disallowed"],[[2561,2561],"valid"],[[2562,2562],"valid"],[[2563,2563],"valid"],[[2564,2564],"disallowed"],[[2565,2570],"valid"],[[2571,2574],"disallowed"],[[2575,2576],"valid"],[[2577,2578],"disallowed"],[[2579,2600],"valid"],[[2601,2601],"disallowed"],[[2602,2608],"valid"],[[2609,2609],"disallowed"],[[2610,2610],"valid"],[[2611,2611],"mapped",[2610,2620]],[[2612,2612],"disallowed"],[[2613,2613],"valid"],[[2614,2614],"mapped",[2616,2620]],[[2615,2615],"disallowed"],[[2616,2617],"valid"],[[2618,2619],"disallowed"],[[2620,2620],"valid"],[[2621,2621],"disallowed"],[[2622,2626],"valid"],[[2627,2630],"disallowed"],[[2631,2632],"valid"],[[2633,2634],"disallowed"],[[2635,2637],"valid"],[[2638,2640],"disallowed"],[[2641,2641],"valid"],[[2642,2648],"disallowed"],[[2649,2649],"mapped",[2582,2620]],[[2650,2650],"mapped",[2583,2620]],[[2651,2651],"mapped",[2588,2620]],[[2652,2652],"valid"],[[2653,2653],"disallowed"],[[2654,2654],"mapped",[2603,2620]],[[2655,2661],"disallowed"],[[2662,2676],"valid"],[[2677,2677],"valid"],[[2678,2688],"disallowed"],[[2689,2691],"valid"],[[2692,2692],"disallowed"],[[2693,2699],"valid"],[[2700,2700],"valid"],[[2701,2701],"valid"],[[2702,2702],"disallowed"],[[2703,2705],"valid"],[[2706,2706],"disallowed"],[[2707,2728],"valid"],[[2729,2729],"disallowed"],[[2730,2736],"valid"],[[2737,2737],"disallowed"],[[2738,2739],"valid"],[[2740,2740],"disallowed"],[[2741,2745],"valid"],[[2746,2747],"disallowed"],[[2748,2757],"valid"],[[2758,2758],"disallowed"],[[2759,2761],"valid"],[[2762,2762],"disallowed"],[[2763,2765],"valid"],[[2766,2767],"disallowed"],[[2768,2768],"valid"],[[2769,2783],"disallowed"],[[2784,2784],"valid"],[[2785,2787],"valid"],[[2788,2789],"disallowed"],[[2790,2799],"valid"],[[2800,2800],"valid",[],"NV8"],[[2801,2801],"valid",[],"NV8"],[[2802,2808],"disallowed"],[[2809,2809],"valid"],[[2810,2816],"disallowed"],[[2817,2819],"valid"],[[2820,2820],"disallowed"],[[2821,2828],"valid"],[[2829,2830],"disallowed"],[[2831,2832],"valid"],[[2833,2834],"disallowed"],[[2835,2856],"valid"],[[2857,2857],"disallowed"],[[2858,2864],"valid"],[[2865,2865],"disallowed"],[[2866,2867],"valid"],[[2868,2868],"disallowed"],[[2869,2869],"valid"],[[2870,2873],"valid"],[[2874,2875],"disallowed"],[[2876,2883],"valid"],[[2884,2884],"valid"],[[2885,2886],"disallowed"],[[2887,2888],"valid"],[[2889,2890],"disallowed"],[[2891,2893],"valid"],[[2894,2901],"disallowed"],[[2902,2903],"valid"],[[2904,2907],"disallowed"],[[2908,2908],"mapped",[2849,2876]],[[2909,2909],"mapped",[2850,2876]],[[2910,2910],"disallowed"],[[2911,2913],"valid"],[[2914,2915],"valid"],[[2916,2917],"disallowed"],[[2918,2927],"valid"],[[2928,2928],"valid",[],"NV8"],[[2929,2929],"valid"],[[2930,2935],"valid",[],"NV8"],[[2936,2945],"disallowed"],[[2946,2947],"valid"],[[2948,2948],"disallowed"],[[2949,2954],"valid"],[[2955,2957],"disallowed"],[[2958,2960],"valid"],[[2961,2961],"disallowed"],[[2962,2965],"valid"],[[2966,2968],"disallowed"],[[2969,2970],"valid"],[[2971,2971],"disallowed"],[[2972,2972],"valid"],[[2973,2973],"disallowed"],[[2974,2975],"valid"],[[2976,2978],"disallowed"],[[2979,2980],"valid"],[[2981,2983],"disallowed"],[[2984,2986],"valid"],[[2987,2989],"disallowed"],[[2990,2997],"valid"],[[2998,2998],"valid"],[[2999,3001],"valid"],[[3002,3005],"disallowed"],[[3006,3010],"valid"],[[3011,3013],"disallowed"],[[3014,3016],"valid"],[[3017,3017],"disallowed"],[[3018,3021],"valid"],[[3022,3023],"disallowed"],[[3024,3024],"valid"],[[3025,3030],"disallowed"],[[3031,3031],"valid"],[[3032,3045],"disallowed"],[[3046,3046],"valid"],[[3047,3055],"valid"],[[3056,3058],"valid",[],"NV8"],[[3059,3066],"valid",[],"NV8"],[[3067,3071],"disallowed"],[[3072,3072],"valid"],[[3073,3075],"valid"],[[3076,3076],"disallowed"],[[3077,3084],"valid"],[[3085,3085],"disallowed"],[[3086,3088],"valid"],[[3089,3089],"disallowed"],[[3090,3112],"valid"],[[3113,3113],"disallowed"],[[3114,3123],"valid"],[[3124,3124],"valid"],[[3125,3129],"valid"],[[3130,3132],"disallowed"],[[3133,3133],"valid"],[[3134,3140],"valid"],[[3141,3141],"disallowed"],[[3142,3144],"valid"],[[3145,3145],"disallowed"],[[3146,3149],"valid"],[[3150,3156],"disallowed"],[[3157,3158],"valid"],[[3159,3159],"disallowed"],[[3160,3161],"valid"],[[3162,3162],"valid"],[[3163,3167],"disallowed"],[[3168,3169],"valid"],[[3170,3171],"valid"],[[3172,3173],"disallowed"],[[3174,3183],"valid"],[[3184,3191],"disallowed"],[[3192,3199],"valid",[],"NV8"],[[3200,3200],"disallowed"],[[3201,3201],"valid"],[[3202,3203],"valid"],[[3204,3204],"disallowed"],[[3205,3212],"valid"],[[3213,3213],"disallowed"],[[3214,3216],"valid"],[[3217,3217],"disallowed"],[[3218,3240],"valid"],[[3241,3241],"disallowed"],[[3242,3251],"valid"],[[3252,3252],"disallowed"],[[3253,3257],"valid"],[[3258,3259],"disallowed"],[[3260,3261],"valid"],[[3262,3268],"valid"],[[3269,3269],"disallowed"],[[3270,3272],"valid"],[[3273,3273],"disallowed"],[[3274,3277],"valid"],[[3278,3284],"disallowed"],[[3285,3286],"valid"],[[3287,3293],"disallowed"],[[3294,3294],"valid"],[[3295,3295],"disallowed"],[[3296,3297],"valid"],[[3298,3299],"valid"],[[3300,3301],"disallowed"],[[3302,3311],"valid"],[[3312,3312],"disallowed"],[[3313,3314],"valid"],[[3315,3328],"disallowed"],[[3329,3329],"valid"],[[3330,3331],"valid"],[[3332,3332],"disallowed"],[[3333,3340],"valid"],[[3341,3341],"disallowed"],[[3342,3344],"valid"],[[3345,3345],"disallowed"],[[3346,3368],"valid"],[[3369,3369],"valid"],[[3370,3385],"valid"],[[3386,3386],"valid"],[[3387,3388],"disallowed"],[[3389,3389],"valid"],[[3390,3395],"valid"],[[3396,3396],"valid"],[[3397,3397],"disallowed"],[[3398,3400],"valid"],[[3401,3401],"disallowed"],[[3402,3405],"valid"],[[3406,3406],"valid"],[[3407,3414],"disallowed"],[[3415,3415],"valid"],[[3416,3422],"disallowed"],[[3423,3423],"valid"],[[3424,3425],"valid"],[[3426,3427],"valid"],[[3428,3429],"disallowed"],[[3430,3439],"valid"],[[3440,3445],"valid",[],"NV8"],[[3446,3448],"disallowed"],[[3449,3449],"valid",[],"NV8"],[[3450,3455],"valid"],[[3456,3457],"disallowed"],[[3458,3459],"valid"],[[3460,3460],"disallowed"],[[3461,3478],"valid"],[[3479,3481],"disallowed"],[[3482,3505],"valid"],[[3506,3506],"disallowed"],[[3507,3515],"valid"],[[3516,3516],"disallowed"],[[3517,3517],"valid"],[[3518,3519],"disallowed"],[[3520,3526],"valid"],[[3527,3529],"disallowed"],[[3530,3530],"valid"],[[3531,3534],"disallowed"],[[3535,3540],"valid"],[[3541,3541],"disallowed"],[[3542,3542],"valid"],[[3543,3543],"disallowed"],[[3544,3551],"valid"],[[3552,3557],"disallowed"],[[3558,3567],"valid"],[[3568,3569],"disallowed"],[[3570,3571],"valid"],[[3572,3572],"valid",[],"NV8"],[[3573,3584],"disallowed"],[[3585,3634],"valid"],[[3635,3635],"mapped",[3661,3634]],[[3636,3642],"valid"],[[3643,3646],"disallowed"],[[3647,3647],"valid",[],"NV8"],[[3648,3662],"valid"],[[3663,3663],"valid",[],"NV8"],[[3664,3673],"valid"],[[3674,3675],"valid",[],"NV8"],[[3676,3712],"disallowed"],[[3713,3714],"valid"],[[3715,3715],"disallowed"],[[3716,3716],"valid"],[[3717,3718],"disallowed"],[[3719,3720],"valid"],[[3721,3721],"disallowed"],[[3722,3722],"valid"],[[3723,3724],"disallowed"],[[3725,3725],"valid"],[[3726,3731],"disallowed"],[[3732,3735],"valid"],[[3736,3736],"disallowed"],[[3737,3743],"valid"],[[3744,3744],"disallowed"],[[3745,3747],"valid"],[[3748,3748],"disallowed"],[[3749,3749],"valid"],[[3750,3750],"disallowed"],[[3751,3751],"valid"],[[3752,3753],"disallowed"],[[3754,3755],"valid"],[[3756,3756],"disallowed"],[[3757,3762],"valid"],[[3763,3763],"mapped",[3789,3762]],[[3764,3769],"valid"],[[3770,3770],"disallowed"],[[3771,3773],"valid"],[[3774,3775],"disallowed"],[[3776,3780],"valid"],[[3781,3781],"disallowed"],[[3782,3782],"valid"],[[3783,3783],"disallowed"],[[3784,3789],"valid"],[[3790,3791],"disallowed"],[[3792,3801],"valid"],[[3802,3803],"disallowed"],[[3804,3804],"mapped",[3755,3737]],[[3805,3805],"mapped",[3755,3745]],[[3806,3807],"valid"],[[3808,3839],"disallowed"],[[3840,3840],"valid"],[[3841,3850],"valid",[],"NV8"],[[3851,3851],"valid"],[[3852,3852],"mapped",[3851]],[[3853,3863],"valid",[],"NV8"],[[3864,3865],"valid"],[[3866,3871],"valid",[],"NV8"],[[3872,3881],"valid"],[[3882,3892],"valid",[],"NV8"],[[3893,3893],"valid"],[[3894,3894],"valid",[],"NV8"],[[3895,3895],"valid"],[[3896,3896],"valid",[],"NV8"],[[3897,3897],"valid"],[[3898,3901],"valid",[],"NV8"],[[3902,3906],"valid"],[[3907,3907],"mapped",[3906,4023]],[[3908,3911],"valid"],[[3912,3912],"disallowed"],[[3913,3916],"valid"],[[3917,3917],"mapped",[3916,4023]],[[3918,3921],"valid"],[[3922,3922],"mapped",[3921,4023]],[[3923,3926],"valid"],[[3927,3927],"mapped",[3926,4023]],[[3928,3931],"valid"],[[3932,3932],"mapped",[3931,4023]],[[3933,3944],"valid"],[[3945,3945],"mapped",[3904,4021]],[[3946,3946],"valid"],[[3947,3948],"valid"],[[3949,3952],"disallowed"],[[3953,3954],"valid"],[[3955,3955],"mapped",[3953,3954]],[[3956,3956],"valid"],[[3957,3957],"mapped",[3953,3956]],[[3958,3958],"mapped",[4018,3968]],[[3959,3959],"mapped",[4018,3953,3968]],[[3960,3960],"mapped",[4019,3968]],[[3961,3961],"mapped",[4019,3953,3968]],[[3962,3968],"valid"],[[3969,3969],"mapped",[3953,3968]],[[3970,3972],"valid"],[[3973,3973],"valid",[],"NV8"],[[3974,3979],"valid"],[[3980,3983],"valid"],[[3984,3986],"valid"],[[3987,3987],"mapped",[3986,4023]],[[3988,3989],"valid"],[[3990,3990],"valid"],[[3991,3991],"valid"],[[3992,3992],"disallowed"],[[3993,3996],"valid"],[[3997,3997],"mapped",[3996,4023]],[[3998,4001],"valid"],[[4002,4002],"mapped",[4001,4023]],[[4003,4006],"valid"],[[4007,4007],"mapped",[4006,4023]],[[4008,4011],"valid"],[[4012,4012],"mapped",[4011,4023]],[[4013,4013],"valid"],[[4014,4016],"valid"],[[4017,4023],"valid"],[[4024,4024],"valid"],[[4025,4025],"mapped",[3984,4021]],[[4026,4028],"valid"],[[4029,4029],"disallowed"],[[4030,4037],"valid",[],"NV8"],[[4038,4038],"valid"],[[4039,4044],"valid",[],"NV8"],[[4045,4045],"disallowed"],[[4046,4046],"valid",[],"NV8"],[[4047,4047],"valid",[],"NV8"],[[4048,4049],"valid",[],"NV8"],[[4050,4052],"valid",[],"NV8"],[[4053,4056],"valid",[],"NV8"],[[4057,4058],"valid",[],"NV8"],[[4059,4095],"disallowed"],[[4096,4129],"valid"],[[4130,4130],"valid"],[[4131,4135],"valid"],[[4136,4136],"valid"],[[4137,4138],"valid"],[[4139,4139],"valid"],[[4140,4146],"valid"],[[4147,4149],"valid"],[[4150,4153],"valid"],[[4154,4159],"valid"],[[4160,4169],"valid"],[[4170,4175],"valid",[],"NV8"],[[4176,4185],"valid"],[[4186,4249],"valid"],[[4250,4253],"valid"],[[4254,4255],"valid",[],"NV8"],[[4256,4293],"disallowed"],[[4294,4294],"disallowed"],[[4295,4295],"mapped",[11559]],[[4296,4300],"disallowed"],[[4301,4301],"mapped",[11565]],[[4302,4303],"disallowed"],[[4304,4342],"valid"],[[4343,4344],"valid"],[[4345,4346],"valid"],[[4347,4347],"valid",[],"NV8"],[[4348,4348],"mapped",[4316]],[[4349,4351],"valid"],[[4352,4441],"valid",[],"NV8"],[[4442,4446],"valid",[],"NV8"],[[4447,4448],"disallowed"],[[4449,4514],"valid",[],"NV8"],[[4515,4519],"valid",[],"NV8"],[[4520,4601],"valid",[],"NV8"],[[4602,4607],"valid",[],"NV8"],[[4608,4614],"valid"],[[4615,4615],"valid"],[[4616,4678],"valid"],[[4679,4679],"valid"],[[4680,4680],"valid"],[[4681,4681],"disallowed"],[[4682,4685],"valid"],[[4686,4687],"disallowed"],[[4688,4694],"valid"],[[4695,4695],"disallowed"],[[4696,4696],"valid"],[[4697,4697],"disallowed"],[[4698,4701],"valid"],[[4702,4703],"disallowed"],[[4704,4742],"valid"],[[4743,4743],"valid"],[[4744,4744],"valid"],[[4745,4745],"disallowed"],[[4746,4749],"valid"],[[4750,4751],"disallowed"],[[4752,4782],"valid"],[[4783,4783],"valid"],[[4784,4784],"valid"],[[4785,4785],"disallowed"],[[4786,4789],"valid"],[[4790,4791],"disallowed"],[[4792,4798],"valid"],[[4799,4799],"disallowed"],[[4800,4800],"valid"],[[4801,4801],"disallowed"],[[4802,4805],"valid"],[[4806,4807],"disallowed"],[[4808,4814],"valid"],[[4815,4815],"valid"],[[4816,4822],"valid"],[[4823,4823],"disallowed"],[[4824,4846],"valid"],[[4847,4847],"valid"],[[4848,4878],"valid"],[[4879,4879],"valid"],[[4880,4880],"valid"],[[4881,4881],"disallowed"],[[4882,4885],"valid"],[[4886,4887],"disallowed"],[[4888,4894],"valid"],[[4895,4895],"valid"],[[4896,4934],"valid"],[[4935,4935],"valid"],[[4936,4954],"valid"],[[4955,4956],"disallowed"],[[4957,4958],"valid"],[[4959,4959],"valid"],[[4960,4960],"valid",[],"NV8"],[[4961,4988],"valid",[],"NV8"],[[4989,4991],"disallowed"],[[4992,5007],"valid"],[[5008,5017],"valid",[],"NV8"],[[5018,5023],"disallowed"],[[5024,5108],"valid"],[[5109,5109],"valid"],[[5110,5111],"disallowed"],[[5112,5112],"mapped",[5104]],[[5113,5113],"mapped",[5105]],[[5114,5114],"mapped",[5106]],[[5115,5115],"mapped",[5107]],[[5116,5116],"mapped",[5108]],[[5117,5117],"mapped",[5109]],[[5118,5119],"disallowed"],[[5120,5120],"valid",[],"NV8"],[[5121,5740],"valid"],[[5741,5742],"valid",[],"NV8"],[[5743,5750],"valid"],[[5751,5759],"valid"],[[5760,5760],"disallowed"],[[5761,5786],"valid"],[[5787,5788],"valid",[],"NV8"],[[5789,5791],"disallowed"],[[5792,5866],"valid"],[[5867,5872],"valid",[],"NV8"],[[5873,5880],"valid"],[[5881,5887],"disallowed"],[[5888,5900],"valid"],[[5901,5901],"disallowed"],[[5902,5908],"valid"],[[5909,5919],"disallowed"],[[5920,5940],"valid"],[[5941,5942],"valid",[],"NV8"],[[5943,5951],"disallowed"],[[5952,5971],"valid"],[[5972,5983],"disallowed"],[[5984,5996],"valid"],[[5997,5997],"disallowed"],[[5998,6000],"valid"],[[6001,6001],"disallowed"],[[6002,6003],"valid"],[[6004,6015],"disallowed"],[[6016,6067],"valid"],[[6068,6069],"disallowed"],[[6070,6099],"valid"],[[6100,6102],"valid",[],"NV8"],[[6103,6103],"valid"],[[6104,6107],"valid",[],"NV8"],[[6108,6108],"valid"],[[6109,6109],"valid"],[[6110,6111],"disallowed"],[[6112,6121],"valid"],[[6122,6127],"disallowed"],[[6128,6137],"valid",[],"NV8"],[[6138,6143],"disallowed"],[[6144,6149],"valid",[],"NV8"],[[6150,6150],"disallowed"],[[6151,6154],"valid",[],"NV8"],[[6155,6157],"ignored"],[[6158,6158],"disallowed"],[[6159,6159],"disallowed"],[[6160,6169],"valid"],[[6170,6175],"disallowed"],[[6176,6263],"valid"],[[6264,6271],"disallowed"],[[6272,6313],"valid"],[[6314,6314],"valid"],[[6315,6319],"disallowed"],[[6320,6389],"valid"],[[6390,6399],"disallowed"],[[6400,6428],"valid"],[[6429,6430],"valid"],[[6431,6431],"disallowed"],[[6432,6443],"valid"],[[6444,6447],"disallowed"],[[6448,6459],"valid"],[[6460,6463],"disallowed"],[[6464,6464],"valid",[],"NV8"],[[6465,6467],"disallowed"],[[6468,6469],"valid",[],"NV8"],[[6470,6509],"valid"],[[6510,6511],"disallowed"],[[6512,6516],"valid"],[[6517,6527],"disallowed"],[[6528,6569],"valid"],[[6570,6571],"valid"],[[6572,6575],"disallowed"],[[6576,6601],"valid"],[[6602,6607],"disallowed"],[[6608,6617],"valid"],[[6618,6618],"valid",[],"XV8"],[[6619,6621],"disallowed"],[[6622,6623],"valid",[],"NV8"],[[6624,6655],"valid",[],"NV8"],[[6656,6683],"valid"],[[6684,6685],"disallowed"],[[6686,6687],"valid",[],"NV8"],[[6688,6750],"valid"],[[6751,6751],"disallowed"],[[6752,6780],"valid"],[[6781,6782],"disallowed"],[[6783,6793],"valid"],[[6794,6799],"disallowed"],[[6800,6809],"valid"],[[6810,6815],"disallowed"],[[6816,6822],"valid",[],"NV8"],[[6823,6823],"valid"],[[6824,6829],"valid",[],"NV8"],[[6830,6831],"disallowed"],[[6832,6845],"valid"],[[6846,6846],"valid",[],"NV8"],[[6847,6911],"disallowed"],[[6912,6987],"valid"],[[6988,6991],"disallowed"],[[6992,7001],"valid"],[[7002,7018],"valid",[],"NV8"],[[7019,7027],"valid"],[[7028,7036],"valid",[],"NV8"],[[7037,7039],"disallowed"],[[7040,7082],"valid"],[[7083,7085],"valid"],[[7086,7097],"valid"],[[7098,7103],"valid"],[[7104,7155],"valid"],[[7156,7163],"disallowed"],[[7164,7167],"valid",[],"NV8"],[[7168,7223],"valid"],[[7224,7226],"disallowed"],[[7227,7231],"valid",[],"NV8"],[[7232,7241],"valid"],[[7242,7244],"disallowed"],[[7245,7293],"valid"],[[7294,7295],"valid",[],"NV8"],[[7296,7359],"disallowed"],[[7360,7367],"valid",[],"NV8"],[[7368,7375],"disallowed"],[[7376,7378],"valid"],[[7379,7379],"valid",[],"NV8"],[[7380,7410],"valid"],[[7411,7414],"valid"],[[7415,7415],"disallowed"],[[7416,7417],"valid"],[[7418,7423],"disallowed"],[[7424,7467],"valid"],[[7468,7468],"mapped",[97]],[[7469,7469],"mapped",[230]],[[7470,7470],"mapped",[98]],[[7471,7471],"valid"],[[7472,7472],"mapped",[100]],[[7473,7473],"mapped",[101]],[[7474,7474],"mapped",[477]],[[7475,7475],"mapped",[103]],[[7476,7476],"mapped",[104]],[[7477,7477],"mapped",[105]],[[7478,7478],"mapped",[106]],[[7479,7479],"mapped",[107]],[[7480,7480],"mapped",[108]],[[7481,7481],"mapped",[109]],[[7482,7482],"mapped",[110]],[[7483,7483],"valid"],[[7484,7484],"mapped",[111]],[[7485,7485],"mapped",[547]],[[7486,7486],"mapped",[112]],[[7487,7487],"mapped",[114]],[[7488,7488],"mapped",[116]],[[7489,7489],"mapped",[117]],[[7490,7490],"mapped",[119]],[[7491,7491],"mapped",[97]],[[7492,7492],"mapped",[592]],[[7493,7493],"mapped",[593]],[[7494,7494],"mapped",[7426]],[[7495,7495],"mapped",[98]],[[7496,7496],"mapped",[100]],[[7497,7497],"mapped",[101]],[[7498,7498],"mapped",[601]],[[7499,7499],"mapped",[603]],[[7500,7500],"mapped",[604]],[[7501,7501],"mapped",[103]],[[7502,7502],"valid"],[[7503,7503],"mapped",[107]],[[7504,7504],"mapped",[109]],[[7505,7505],"mapped",[331]],[[7506,7506],"mapped",[111]],[[7507,7507],"mapped",[596]],[[7508,7508],"mapped",[7446]],[[7509,7509],"mapped",[7447]],[[7510,7510],"mapped",[112]],[[7511,7511],"mapped",[116]],[[7512,7512],"mapped",[117]],[[7513,7513],"mapped",[7453]],[[7514,7514],"mapped",[623]],[[7515,7515],"mapped",[118]],[[7516,7516],"mapped",[7461]],[[7517,7517],"mapped",[946]],[[7518,7518],"mapped",[947]],[[7519,7519],"mapped",[948]],[[7520,7520],"mapped",[966]],[[7521,7521],"mapped",[967]],[[7522,7522],"mapped",[105]],[[7523,7523],"mapped",[114]],[[7524,7524],"mapped",[117]],[[7525,7525],"mapped",[118]],[[7526,7526],"mapped",[946]],[[7527,7527],"mapped",[947]],[[7528,7528],"mapped",[961]],[[7529,7529],"mapped",[966]],[[7530,7530],"mapped",[967]],[[7531,7531],"valid"],[[7532,7543],"valid"],[[7544,7544],"mapped",[1085]],[[7545,7578],"valid"],[[7579,7579],"mapped",[594]],[[7580,7580],"mapped",[99]],[[7581,7581],"mapped",[597]],[[7582,7582],"mapped",[240]],[[7583,7583],"mapped",[604]],[[7584,7584],"mapped",[102]],[[7585,7585],"mapped",[607]],[[7586,7586],"mapped",[609]],[[7587,7587],"mapped",[613]],[[7588,7588],"mapped",[616]],[[7589,7589],"mapped",[617]],[[7590,7590],"mapped",[618]],[[7591,7591],"mapped",[7547]],[[7592,7592],"mapped",[669]],[[7593,7593],"mapped",[621]],[[7594,7594],"mapped",[7557]],[[7595,7595],"mapped",[671]],[[7596,7596],"mapped",[625]],[[7597,7597],"mapped",[624]],[[7598,7598],"mapped",[626]],[[7599,7599],"mapped",[627]],[[7600,7600],"mapped",[628]],[[7601,7601],"mapped",[629]],[[7602,7602],"mapped",[632]],[[7603,7603],"mapped",[642]],[[7604,7604],"mapped",[643]],[[7605,7605],"mapped",[427]],[[7606,7606],"mapped",[649]],[[7607,7607],"mapped",[650]],[[7608,7608],"mapped",[7452]],[[7609,7609],"mapped",[651]],[[7610,7610],"mapped",[652]],[[7611,7611],"mapped",[122]],[[7612,7612],"mapped",[656]],[[7613,7613],"mapped",[657]],[[7614,7614],"mapped",[658]],[[7615,7615],"mapped",[952]],[[7616,7619],"valid"],[[7620,7626],"valid"],[[7627,7654],"valid"],[[7655,7669],"valid"],[[7670,7675],"disallowed"],[[7676,7676],"valid"],[[7677,7677],"valid"],[[7678,7679],"valid"],[[7680,7680],"mapped",[7681]],[[7681,7681],"valid"],[[7682,7682],"mapped",[7683]],[[7683,7683],"valid"],[[7684,7684],"mapped",[7685]],[[7685,7685],"valid"],[[7686,7686],"mapped",[7687]],[[7687,7687],"valid"],[[7688,7688],"mapped",[7689]],[[7689,7689],"valid"],[[7690,7690],"mapped",[7691]],[[7691,7691],"valid"],[[7692,7692],"mapped",[7693]],[[7693,7693],"valid"],[[7694,7694],"mapped",[7695]],[[7695,7695],"valid"],[[7696,7696],"mapped",[7697]],[[7697,7697],"valid"],[[7698,7698],"mapped",[7699]],[[7699,7699],"valid"],[[7700,7700],"mapped",[7701]],[[7701,7701],"valid"],[[7702,7702],"mapped",[7703]],[[7703,7703],"valid"],[[7704,7704],"mapped",[7705]],[[7705,7705],"valid"],[[7706,7706],"mapped",[7707]],[[7707,7707],"valid"],[[7708,7708],"mapped",[7709]],[[7709,7709],"valid"],[[7710,7710],"mapped",[7711]],[[7711,7711],"valid"],[[7712,7712],"mapped",[7713]],[[7713,7713],"valid"],[[7714,7714],"mapped",[7715]],[[7715,7715],"valid"],[[7716,7716],"mapped",[7717]],[[7717,7717],"valid"],[[7718,7718],"mapped",[7719]],[[7719,7719],"valid"],[[7720,7720],"mapped",[7721]],[[7721,7721],"valid"],[[7722,7722],"mapped",[7723]],[[7723,7723],"valid"],[[7724,7724],"mapped",[7725]],[[7725,7725],"valid"],[[7726,7726],"mapped",[7727]],[[7727,7727],"valid"],[[7728,7728],"mapped",[7729]],[[7729,7729],"valid"],[[7730,7730],"mapped",[7731]],[[7731,7731],"valid"],[[7732,7732],"mapped",[7733]],[[7733,7733],"valid"],[[7734,7734],"mapped",[7735]],[[7735,7735],"valid"],[[7736,7736],"mapped",[7737]],[[7737,7737],"valid"],[[7738,7738],"mapped",[7739]],[[7739,7739],"valid"],[[7740,7740],"mapped",[7741]],[[7741,7741],"valid"],[[7742,7742],"mapped",[7743]],[[7743,7743],"valid"],[[7744,7744],"mapped",[7745]],[[7745,7745],"valid"],[[7746,7746],"mapped",[7747]],[[7747,7747],"valid"],[[7748,7748],"mapped",[7749]],[[7749,7749],"valid"],[[7750,7750],"mapped",[7751]],[[7751,7751],"valid"],[[7752,7752],"mapped",[7753]],[[7753,7753],"valid"],[[7754,7754],"mapped",[7755]],[[7755,7755],"valid"],[[7756,7756],"mapped",[7757]],[[7757,7757],"valid"],[[7758,7758],"mapped",[7759]],[[7759,7759],"valid"],[[7760,7760],"mapped",[7761]],[[7761,7761],"valid"],[[7762,7762],"mapped",[7763]],[[7763,7763],"valid"],[[7764,7764],"mapped",[7765]],[[7765,7765],"valid"],[[7766,7766],"mapped",[7767]],[[7767,7767],"valid"],[[7768,7768],"mapped",[7769]],[[7769,7769],"valid"],[[7770,7770],"mapped",[7771]],[[7771,7771],"valid"],[[7772,7772],"mapped",[7773]],[[7773,7773],"valid"],[[7774,7774],"mapped",[7775]],[[7775,7775],"valid"],[[7776,7776],"mapped",[7777]],[[7777,7777],"valid"],[[7778,7778],"mapped",[7779]],[[7779,7779],"valid"],[[7780,7780],"mapped",[7781]],[[7781,7781],"valid"],[[7782,7782],"mapped",[7783]],[[7783,7783],"valid"],[[7784,7784],"mapped",[7785]],[[7785,7785],"valid"],[[7786,7786],"mapped",[7787]],[[7787,7787],"valid"],[[7788,7788],"mapped",[7789]],[[7789,7789],"valid"],[[7790,7790],"mapped",[7791]],[[7791,7791],"valid"],[[7792,7792],"mapped",[7793]],[[7793,7793],"valid"],[[7794,7794],"mapped",[7795]],[[7795,7795],"valid"],[[7796,7796],"mapped",[7797]],[[7797,7797],"valid"],[[7798,7798],"mapped",[7799]],[[7799,7799],"valid"],[[7800,7800],"mapped",[7801]],[[7801,7801],"valid"],[[7802,7802],"mapped",[7803]],[[7803,7803],"valid"],[[7804,7804],"mapped",[7805]],[[7805,7805],"valid"],[[7806,7806],"mapped",[7807]],[[7807,7807],"valid"],[[7808,7808],"mapped",[7809]],[[7809,7809],"valid"],[[7810,7810],"mapped",[7811]],[[7811,7811],"valid"],[[7812,7812],"mapped",[7813]],[[7813,7813],"valid"],[[7814,7814],"mapped",[7815]],[[7815,7815],"valid"],[[7816,7816],"mapped",[7817]],[[7817,7817],"valid"],[[7818,7818],"mapped",[7819]],[[7819,7819],"valid"],[[7820,7820],"mapped",[7821]],[[7821,7821],"valid"],[[7822,7822],"mapped",[7823]],[[7823,7823],"valid"],[[7824,7824],"mapped",[7825]],[[7825,7825],"valid"],[[7826,7826],"mapped",[7827]],[[7827,7827],"valid"],[[7828,7828],"mapped",[7829]],[[7829,7833],"valid"],[[7834,7834],"mapped",[97,702]],[[7835,7835],"mapped",[7777]],[[7836,7837],"valid"],[[7838,7838],"mapped",[115,115]],[[7839,7839],"valid"],[[7840,7840],"mapped",[7841]],[[7841,7841],"valid"],[[7842,7842],"mapped",[7843]],[[7843,7843],"valid"],[[7844,7844],"mapped",[7845]],[[7845,7845],"valid"],[[7846,7846],"mapped",[7847]],[[7847,7847],"valid"],[[7848,7848],"mapped",[7849]],[[7849,7849],"valid"],[[7850,7850],"mapped",[7851]],[[7851,7851],"valid"],[[7852,7852],"mapped",[7853]],[[7853,7853],"valid"],[[7854,7854],"mapped",[7855]],[[7855,7855],"valid"],[[7856,7856],"mapped",[7857]],[[7857,7857],"valid"],[[7858,7858],"mapped",[7859]],[[7859,7859],"valid"],[[7860,7860],"mapped",[7861]],[[7861,7861],"valid"],[[7862,7862],"mapped",[7863]],[[7863,7863],"valid"],[[7864,7864],"mapped",[7865]],[[7865,7865],"valid"],[[7866,7866],"mapped",[7867]],[[7867,7867],"valid"],[[7868,7868],"mapped",[7869]],[[7869,7869],"valid"],[[7870,7870],"mapped",[7871]],[[7871,7871],"valid"],[[7872,7872],"mapped",[7873]],[[7873,7873],"valid"],[[7874,7874],"mapped",[7875]],[[7875,7875],"valid"],[[7876,7876],"mapped",[7877]],[[7877,7877],"valid"],[[7878,7878],"mapped",[7879]],[[7879,7879],"valid"],[[7880,7880],"mapped",[7881]],[[7881,7881],"valid"],[[7882,7882],"mapped",[7883]],[[7883,7883],"valid"],[[7884,7884],"mapped",[7885]],[[7885,7885],"valid"],[[7886,7886],"mapped",[7887]],[[7887,7887],"valid"],[[7888,7888],"mapped",[7889]],[[7889,7889],"valid"],[[7890,7890],"mapped",[7891]],[[7891,7891],"valid"],[[7892,7892],"mapped",[7893]],[[7893,7893],"valid"],[[7894,7894],"mapped",[7895]],[[7895,7895],"valid"],[[7896,7896],"mapped",[7897]],[[7897,7897],"valid"],[[7898,7898],"mapped",[7899]],[[7899,7899],"valid"],[[7900,7900],"mapped",[7901]],[[7901,7901],"valid"],[[7902,7902],"mapped",[7903]],[[7903,7903],"valid"],[[7904,7904],"mapped",[7905]],[[7905,7905],"valid"],[[7906,7906],"mapped",[7907]],[[7907,7907],"valid"],[[7908,7908],"mapped",[7909]],[[7909,7909],"valid"],[[7910,7910],"mapped",[7911]],[[7911,7911],"valid"],[[7912,7912],"mapped",[7913]],[[7913,7913],"valid"],[[7914,7914],"mapped",[7915]],[[7915,7915],"valid"],[[7916,7916],"mapped",[7917]],[[7917,7917],"valid"],[[7918,7918],"mapped",[7919]],[[7919,7919],"valid"],[[7920,7920],"mapped",[7921]],[[7921,7921],"valid"],[[7922,7922],"mapped",[7923]],[[7923,7923],"valid"],[[7924,7924],"mapped",[7925]],[[7925,7925],"valid"],[[7926,7926],"mapped",[7927]],[[7927,7927],"valid"],[[7928,7928],"mapped",[7929]],[[7929,7929],"valid"],[[7930,7930],"mapped",[7931]],[[7931,7931],"valid"],[[7932,7932],"mapped",[7933]],[[7933,7933],"valid"],[[7934,7934],"mapped",[7935]],[[7935,7935],"valid"],[[7936,7943],"valid"],[[7944,7944],"mapped",[7936]],[[7945,7945],"mapped",[7937]],[[7946,7946],"mapped",[7938]],[[7947,7947],"mapped",[7939]],[[7948,7948],"mapped",[7940]],[[7949,7949],"mapped",[7941]],[[7950,7950],"mapped",[7942]],[[7951,7951],"mapped",[7943]],[[7952,7957],"valid"],[[7958,7959],"disallowed"],[[7960,7960],"mapped",[7952]],[[7961,7961],"mapped",[7953]],[[7962,7962],"mapped",[7954]],[[7963,7963],"mapped",[7955]],[[7964,7964],"mapped",[7956]],[[7965,7965],"mapped",[7957]],[[7966,7967],"disallowed"],[[7968,7975],"valid"],[[7976,7976],"mapped",[7968]],[[7977,7977],"mapped",[7969]],[[7978,7978],"mapped",[7970]],[[7979,7979],"mapped",[7971]],[[7980,7980],"mapped",[7972]],[[7981,7981],"mapped",[7973]],[[7982,7982],"mapped",[7974]],[[7983,7983],"mapped",[7975]],[[7984,7991],"valid"],[[7992,7992],"mapped",[7984]],[[7993,7993],"mapped",[7985]],[[7994,7994],"mapped",[7986]],[[7995,7995],"mapped",[7987]],[[7996,7996],"mapped",[7988]],[[7997,7997],"mapped",[7989]],[[7998,7998],"mapped",[7990]],[[7999,7999],"mapped",[7991]],[[8000,8005],"valid"],[[8006,8007],"disallowed"],[[8008,8008],"mapped",[8000]],[[8009,8009],"mapped",[8001]],[[8010,8010],"mapped",[8002]],[[8011,8011],"mapped",[8003]],[[8012,8012],"mapped",[8004]],[[8013,8013],"mapped",[8005]],[[8014,8015],"disallowed"],[[8016,8023],"valid"],[[8024,8024],"disallowed"],[[8025,8025],"mapped",[8017]],[[8026,8026],"disallowed"],[[8027,8027],"mapped",[8019]],[[8028,8028],"disallowed"],[[8029,8029],"mapped",[8021]],[[8030,8030],"disallowed"],[[8031,8031],"mapped",[8023]],[[8032,8039],"valid"],[[8040,8040],"mapped",[8032]],[[8041,8041],"mapped",[8033]],[[8042,8042],"mapped",[8034]],[[8043,8043],"mapped",[8035]],[[8044,8044],"mapped",[8036]],[[8045,8045],"mapped",[8037]],[[8046,8046],"mapped",[8038]],[[8047,8047],"mapped",[8039]],[[8048,8048],"valid"],[[8049,8049],"mapped",[940]],[[8050,8050],"valid"],[[8051,8051],"mapped",[941]],[[8052,8052],"valid"],[[8053,8053],"mapped",[942]],[[8054,8054],"valid"],[[8055,8055],"mapped",[943]],[[8056,8056],"valid"],[[8057,8057],"mapped",[972]],[[8058,8058],"valid"],[[8059,8059],"mapped",[973]],[[8060,8060],"valid"],[[8061,8061],"mapped",[974]],[[8062,8063],"disallowed"],[[8064,8064],"mapped",[7936,953]],[[8065,8065],"mapped",[7937,953]],[[8066,8066],"mapped",[7938,953]],[[8067,8067],"mapped",[7939,953]],[[8068,8068],"mapped",[7940,953]],[[8069,8069],"mapped",[7941,953]],[[8070,8070],"mapped",[7942,953]],[[8071,8071],"mapped",[7943,953]],[[8072,8072],"mapped",[7936,953]],[[8073,8073],"mapped",[7937,953]],[[8074,8074],"mapped",[7938,953]],[[8075,8075],"mapped",[7939,953]],[[8076,8076],"mapped",[7940,953]],[[8077,8077],"mapped",[7941,953]],[[8078,8078],"mapped",[7942,953]],[[8079,8079],"mapped",[7943,953]],[[8080,8080],"mapped",[7968,953]],[[8081,8081],"mapped",[7969,953]],[[8082,8082],"mapped",[7970,953]],[[8083,8083],"mapped",[7971,953]],[[8084,8084],"mapped",[7972,953]],[[8085,8085],"mapped",[7973,953]],[[8086,8086],"mapped",[7974,953]],[[8087,8087],"mapped",[7975,953]],[[8088,8088],"mapped",[7968,953]],[[8089,8089],"mapped",[7969,953]],[[8090,8090],"mapped",[7970,953]],[[8091,8091],"mapped",[7971,953]],[[8092,8092],"mapped",[7972,953]],[[8093,8093],"mapped",[7973,953]],[[8094,8094],"mapped",[7974,953]],[[8095,8095],"mapped",[7975,953]],[[8096,8096],"mapped",[8032,953]],[[8097,8097],"mapped",[8033,953]],[[8098,8098],"mapped",[8034,953]],[[8099,8099],"mapped",[8035,953]],[[8100,8100],"mapped",[8036,953]],[[8101,8101],"mapped",[8037,953]],[[8102,8102],"mapped",[8038,953]],[[8103,8103],"mapped",[8039,953]],[[8104,8104],"mapped",[8032,953]],[[8105,8105],"mapped",[8033,953]],[[8106,8106],"mapped",[8034,953]],[[8107,8107],"mapped",[8035,953]],[[8108,8108],"mapped",[8036,953]],[[8109,8109],"mapped",[8037,953]],[[8110,8110],"mapped",[8038,953]],[[8111,8111],"mapped",[8039,953]],[[8112,8113],"valid"],[[8114,8114],"mapped",[8048,953]],[[8115,8115],"mapped",[945,953]],[[8116,8116],"mapped",[940,953]],[[8117,8117],"disallowed"],[[8118,8118],"valid"],[[8119,8119],"mapped",[8118,953]],[[8120,8120],"mapped",[8112]],[[8121,8121],"mapped",[8113]],[[8122,8122],"mapped",[8048]],[[8123,8123],"mapped",[940]],[[8124,8124],"mapped",[945,953]],[[8125,8125],"disallowed_STD3_mapped",[32,787]],[[8126,8126],"mapped",[953]],[[8127,8127],"disallowed_STD3_mapped",[32,787]],[[8128,8128],"disallowed_STD3_mapped",[32,834]],[[8129,8129],"disallowed_STD3_mapped",[32,776,834]],[[8130,8130],"mapped",[8052,953]],[[8131,8131],"mapped",[951,953]],[[8132,8132],"mapped",[942,953]],[[8133,8133],"disallowed"],[[8134,8134],"valid"],[[8135,8135],"mapped",[8134,953]],[[8136,8136],"mapped",[8050]],[[8137,8137],"mapped",[941]],[[8138,8138],"mapped",[8052]],[[8139,8139],"mapped",[942]],[[8140,8140],"mapped",[951,953]],[[8141,8141],"disallowed_STD3_mapped",[32,787,768]],[[8142,8142],"disallowed_STD3_mapped",[32,787,769]],[[8143,8143],"disallowed_STD3_mapped",[32,787,834]],[[8144,8146],"valid"],[[8147,8147],"mapped",[912]],[[8148,8149],"disallowed"],[[8150,8151],"valid"],[[8152,8152],"mapped",[8144]],[[8153,8153],"mapped",[8145]],[[8154,8154],"mapped",[8054]],[[8155,8155],"mapped",[943]],[[8156,8156],"disallowed"],[[8157,8157],"disallowed_STD3_mapped",[32,788,768]],[[8158,8158],"disallowed_STD3_mapped",[32,788,769]],[[8159,8159],"disallowed_STD3_mapped",[32,788,834]],[[8160,8162],"valid"],[[8163,8163],"mapped",[944]],[[8164,8167],"valid"],[[8168,8168],"mapped",[8160]],[[8169,8169],"mapped",[8161]],[[8170,8170],"mapped",[8058]],[[8171,8171],"mapped",[973]],[[8172,8172],"mapped",[8165]],[[8173,8173],"disallowed_STD3_mapped",[32,776,768]],[[8174,8174],"disallowed_STD3_mapped",[32,776,769]],[[8175,8175],"disallowed_STD3_mapped",[96]],[[8176,8177],"disallowed"],[[8178,8178],"mapped",[8060,953]],[[8179,8179],"mapped",[969,953]],[[8180,8180],"mapped",[974,953]],[[8181,8181],"disallowed"],[[8182,8182],"valid"],[[8183,8183],"mapped",[8182,953]],[[8184,8184],"mapped",[8056]],[[8185,8185],"mapped",[972]],[[8186,8186],"mapped",[8060]],[[8187,8187],"mapped",[974]],[[8188,8188],"mapped",[969,953]],[[8189,8189],"disallowed_STD3_mapped",[32,769]],[[8190,8190],"disallowed_STD3_mapped",[32,788]],[[8191,8191],"disallowed"],[[8192,8202],"disallowed_STD3_mapped",[32]],[[8203,8203],"ignored"],[[8204,8205],"deviation",[]],[[8206,8207],"disallowed"],[[8208,8208],"valid",[],"NV8"],[[8209,8209],"mapped",[8208]],[[8210,8214],"valid",[],"NV8"],[[8215,8215],"disallowed_STD3_mapped",[32,819]],[[8216,8227],"valid",[],"NV8"],[[8228,8230],"disallowed"],[[8231,8231],"valid",[],"NV8"],[[8232,8238],"disallowed"],[[8239,8239],"disallowed_STD3_mapped",[32]],[[8240,8242],"valid",[],"NV8"],[[8243,8243],"mapped",[8242,8242]],[[8244,8244],"mapped",[8242,8242,8242]],[[8245,8245],"valid",[],"NV8"],[[8246,8246],"mapped",[8245,8245]],[[8247,8247],"mapped",[8245,8245,8245]],[[8248,8251],"valid",[],"NV8"],[[8252,8252],"disallowed_STD3_mapped",[33,33]],[[8253,8253],"valid",[],"NV8"],[[8254,8254],"disallowed_STD3_mapped",[32,773]],[[8255,8262],"valid",[],"NV8"],[[8263,8263],"disallowed_STD3_mapped",[63,63]],[[8264,8264],"disallowed_STD3_mapped",[63,33]],[[8265,8265],"disallowed_STD3_mapped",[33,63]],[[8266,8269],"valid",[],"NV8"],[[8270,8274],"valid",[],"NV8"],[[8275,8276],"valid",[],"NV8"],[[8277,8278],"valid",[],"NV8"],[[8279,8279],"mapped",[8242,8242,8242,8242]],[[8280,8286],"valid",[],"NV8"],[[8287,8287],"disallowed_STD3_mapped",[32]],[[8288,8288],"ignored"],[[8289,8291],"disallowed"],[[8292,8292],"ignored"],[[8293,8293],"disallowed"],[[8294,8297],"disallowed"],[[8298,8303],"disallowed"],[[8304,8304],"mapped",[48]],[[8305,8305],"mapped",[105]],[[8306,8307],"disallowed"],[[8308,8308],"mapped",[52]],[[8309,8309],"mapped",[53]],[[8310,8310],"mapped",[54]],[[8311,8311],"mapped",[55]],[[8312,8312],"mapped",[56]],[[8313,8313],"mapped",[57]],[[8314,8314],"disallowed_STD3_mapped",[43]],[[8315,8315],"mapped",[8722]],[[8316,8316],"disallowed_STD3_mapped",[61]],[[8317,8317],"disallowed_STD3_mapped",[40]],[[8318,8318],"disallowed_STD3_mapped",[41]],[[8319,8319],"mapped",[110]],[[8320,8320],"mapped",[48]],[[8321,8321],"mapped",[49]],[[8322,8322],"mapped",[50]],[[8323,8323],"mapped",[51]],[[8324,8324],"mapped",[52]],[[8325,8325],"mapped",[53]],[[8326,8326],"mapped",[54]],[[8327,8327],"mapped",[55]],[[8328,8328],"mapped",[56]],[[8329,8329],"mapped",[57]],[[8330,8330],"disallowed_STD3_mapped",[43]],[[8331,8331],"mapped",[8722]],[[8332,8332],"disallowed_STD3_mapped",[61]],[[8333,8333],"disallowed_STD3_mapped",[40]],[[8334,8334],"disallowed_STD3_mapped",[41]],[[8335,8335],"disallowed"],[[8336,8336],"mapped",[97]],[[8337,8337],"mapped",[101]],[[8338,8338],"mapped",[111]],[[8339,8339],"mapped",[120]],[[8340,8340],"mapped",[601]],[[8341,8341],"mapped",[104]],[[8342,8342],"mapped",[107]],[[8343,8343],"mapped",[108]],[[8344,8344],"mapped",[109]],[[8345,8345],"mapped",[110]],[[8346,8346],"mapped",[112]],[[8347,8347],"mapped",[115]],[[8348,8348],"mapped",[116]],[[8349,8351],"disallowed"],[[8352,8359],"valid",[],"NV8"],[[8360,8360],"mapped",[114,115]],[[8361,8362],"valid",[],"NV8"],[[8363,8363],"valid",[],"NV8"],[[8364,8364],"valid",[],"NV8"],[[8365,8367],"valid",[],"NV8"],[[8368,8369],"valid",[],"NV8"],[[8370,8373],"valid",[],"NV8"],[[8374,8376],"valid",[],"NV8"],[[8377,8377],"valid",[],"NV8"],[[8378,8378],"valid",[],"NV8"],[[8379,8381],"valid",[],"NV8"],[[8382,8382],"valid",[],"NV8"],[[8383,8399],"disallowed"],[[8400,8417],"valid",[],"NV8"],[[8418,8419],"valid",[],"NV8"],[[8420,8426],"valid",[],"NV8"],[[8427,8427],"valid",[],"NV8"],[[8428,8431],"valid",[],"NV8"],[[8432,8432],"valid",[],"NV8"],[[8433,8447],"disallowed"],[[8448,8448],"disallowed_STD3_mapped",[97,47,99]],[[8449,8449],"disallowed_STD3_mapped",[97,47,115]],[[8450,8450],"mapped",[99]],[[8451,8451],"mapped",[176,99]],[[8452,8452],"valid",[],"NV8"],[[8453,8453],"disallowed_STD3_mapped",[99,47,111]],[[8454,8454],"disallowed_STD3_mapped",[99,47,117]],[[8455,8455],"mapped",[603]],[[8456,8456],"valid",[],"NV8"],[[8457,8457],"mapped",[176,102]],[[8458,8458],"mapped",[103]],[[8459,8462],"mapped",[104]],[[8463,8463],"mapped",[295]],[[8464,8465],"mapped",[105]],[[8466,8467],"mapped",[108]],[[8468,8468],"valid",[],"NV8"],[[8469,8469],"mapped",[110]],[[8470,8470],"mapped",[110,111]],[[8471,8472],"valid",[],"NV8"],[[8473,8473],"mapped",[112]],[[8474,8474],"mapped",[113]],[[8475,8477],"mapped",[114]],[[8478,8479],"valid",[],"NV8"],[[8480,8480],"mapped",[115,109]],[[8481,8481],"mapped",[116,101,108]],[[8482,8482],"mapped",[116,109]],[[8483,8483],"valid",[],"NV8"],[[8484,8484],"mapped",[122]],[[8485,8485],"valid",[],"NV8"],[[8486,8486],"mapped",[969]],[[8487,8487],"valid",[],"NV8"],[[8488,8488],"mapped",[122]],[[8489,8489],"valid",[],"NV8"],[[8490,8490],"mapped",[107]],[[8491,8491],"mapped",[229]],[[8492,8492],"mapped",[98]],[[8493,8493],"mapped",[99]],[[8494,8494],"valid",[],"NV8"],[[8495,8496],"mapped",[101]],[[8497,8497],"mapped",[102]],[[8498,8498],"disallowed"],[[8499,8499],"mapped",[109]],[[8500,8500],"mapped",[111]],[[8501,8501],"mapped",[1488]],[[8502,8502],"mapped",[1489]],[[8503,8503],"mapped",[1490]],[[8504,8504],"mapped",[1491]],[[8505,8505],"mapped",[105]],[[8506,8506],"valid",[],"NV8"],[[8507,8507],"mapped",[102,97,120]],[[8508,8508],"mapped",[960]],[[8509,8510],"mapped",[947]],[[8511,8511],"mapped",[960]],[[8512,8512],"mapped",[8721]],[[8513,8516],"valid",[],"NV8"],[[8517,8518],"mapped",[100]],[[8519,8519],"mapped",[101]],[[8520,8520],"mapped",[105]],[[8521,8521],"mapped",[106]],[[8522,8523],"valid",[],"NV8"],[[8524,8524],"valid",[],"NV8"],[[8525,8525],"valid",[],"NV8"],[[8526,8526],"valid"],[[8527,8527],"valid",[],"NV8"],[[8528,8528],"mapped",[49,8260,55]],[[8529,8529],"mapped",[49,8260,57]],[[8530,8530],"mapped",[49,8260,49,48]],[[8531,8531],"mapped",[49,8260,51]],[[8532,8532],"mapped",[50,8260,51]],[[8533,8533],"mapped",[49,8260,53]],[[8534,8534],"mapped",[50,8260,53]],[[8535,8535],"mapped",[51,8260,53]],[[8536,8536],"mapped",[52,8260,53]],[[8537,8537],"mapped",[49,8260,54]],[[8538,8538],"mapped",[53,8260,54]],[[8539,8539],"mapped",[49,8260,56]],[[8540,8540],"mapped",[51,8260,56]],[[8541,8541],"mapped",[53,8260,56]],[[8542,8542],"mapped",[55,8260,56]],[[8543,8543],"mapped",[49,8260]],[[8544,8544],"mapped",[105]],[[8545,8545],"mapped",[105,105]],[[8546,8546],"mapped",[105,105,105]],[[8547,8547],"mapped",[105,118]],[[8548,8548],"mapped",[118]],[[8549,8549],"mapped",[118,105]],[[8550,8550],"mapped",[118,105,105]],[[8551,8551],"mapped",[118,105,105,105]],[[8552,8552],"mapped",[105,120]],[[8553,8553],"mapped",[120]],[[8554,8554],"mapped",[120,105]],[[8555,8555],"mapped",[120,105,105]],[[8556,8556],"mapped",[108]],[[8557,8557],"mapped",[99]],[[8558,8558],"mapped",[100]],[[8559,8559],"mapped",[109]],[[8560,8560],"mapped",[105]],[[8561,8561],"mapped",[105,105]],[[8562,8562],"mapped",[105,105,105]],[[8563,8563],"mapped",[105,118]],[[8564,8564],"mapped",[118]],[[8565,8565],"mapped",[118,105]],[[8566,8566],"mapped",[118,105,105]],[[8567,8567],"mapped",[118,105,105,105]],[[8568,8568],"mapped",[105,120]],[[8569,8569],"mapped",[120]],[[8570,8570],"mapped",[120,105]],[[8571,8571],"mapped",[120,105,105]],[[8572,8572],"mapped",[108]],[[8573,8573],"mapped",[99]],[[8574,8574],"mapped",[100]],[[8575,8575],"mapped",[109]],[[8576,8578],"valid",[],"NV8"],[[8579,8579],"disallowed"],[[8580,8580],"valid"],[[8581,8584],"valid",[],"NV8"],[[8585,8585],"mapped",[48,8260,51]],[[8586,8587],"valid",[],"NV8"],[[8588,8591],"disallowed"],[[8592,8682],"valid",[],"NV8"],[[8683,8691],"valid",[],"NV8"],[[8692,8703],"valid",[],"NV8"],[[8704,8747],"valid",[],"NV8"],[[8748,8748],"mapped",[8747,8747]],[[8749,8749],"mapped",[8747,8747,8747]],[[8750,8750],"valid",[],"NV8"],[[8751,8751],"mapped",[8750,8750]],[[8752,8752],"mapped",[8750,8750,8750]],[[8753,8799],"valid",[],"NV8"],[[8800,8800],"disallowed_STD3_valid"],[[8801,8813],"valid",[],"NV8"],[[8814,8815],"disallowed_STD3_valid"],[[8816,8945],"valid",[],"NV8"],[[8946,8959],"valid",[],"NV8"],[[8960,8960],"valid",[],"NV8"],[[8961,8961],"valid",[],"NV8"],[[8962,9000],"valid",[],"NV8"],[[9001,9001],"mapped",[12296]],[[9002,9002],"mapped",[12297]],[[9003,9082],"valid",[],"NV8"],[[9083,9083],"valid",[],"NV8"],[[9084,9084],"valid",[],"NV8"],[[9085,9114],"valid",[],"NV8"],[[9115,9166],"valid",[],"NV8"],[[9167,9168],"valid",[],"NV8"],[[9169,9179],"valid",[],"NV8"],[[9180,9191],"valid",[],"NV8"],[[9192,9192],"valid",[],"NV8"],[[9193,9203],"valid",[],"NV8"],[[9204,9210],"valid",[],"NV8"],[[9211,9215],"disallowed"],[[9216,9252],"valid",[],"NV8"],[[9253,9254],"valid",[],"NV8"],[[9255,9279],"disallowed"],[[9280,9290],"valid",[],"NV8"],[[9291,9311],"disallowed"],[[9312,9312],"mapped",[49]],[[9313,9313],"mapped",[50]],[[9314,9314],"mapped",[51]],[[9315,9315],"mapped",[52]],[[9316,9316],"mapped",[53]],[[9317,9317],"mapped",[54]],[[9318,9318],"mapped",[55]],[[9319,9319],"mapped",[56]],[[9320,9320],"mapped",[57]],[[9321,9321],"mapped",[49,48]],[[9322,9322],"mapped",[49,49]],[[9323,9323],"mapped",[49,50]],[[9324,9324],"mapped",[49,51]],[[9325,9325],"mapped",[49,52]],[[9326,9326],"mapped",[49,53]],[[9327,9327],"mapped",[49,54]],[[9328,9328],"mapped",[49,55]],[[9329,9329],"mapped",[49,56]],[[9330,9330],"mapped",[49,57]],[[9331,9331],"mapped",[50,48]],[[9332,9332],"disallowed_STD3_mapped",[40,49,41]],[[9333,9333],"disallowed_STD3_mapped",[40,50,41]],[[9334,9334],"disallowed_STD3_mapped",[40,51,41]],[[9335,9335],"disallowed_STD3_mapped",[40,52,41]],[[9336,9336],"disallowed_STD3_mapped",[40,53,41]],[[9337,9337],"disallowed_STD3_mapped",[40,54,41]],[[9338,9338],"disallowed_STD3_mapped",[40,55,41]],[[9339,9339],"disallowed_STD3_mapped",[40,56,41]],[[9340,9340],"disallowed_STD3_mapped",[40,57,41]],[[9341,9341],"disallowed_STD3_mapped",[40,49,48,41]],[[9342,9342],"disallowed_STD3_mapped",[40,49,49,41]],[[9343,9343],"disallowed_STD3_mapped",[40,49,50,41]],[[9344,9344],"disallowed_STD3_mapped",[40,49,51,41]],[[9345,9345],"disallowed_STD3_mapped",[40,49,52,41]],[[9346,9346],"disallowed_STD3_mapped",[40,49,53,41]],[[9347,9347],"disallowed_STD3_mapped",[40,49,54,41]],[[9348,9348],"disallowed_STD3_mapped",[40,49,55,41]],[[9349,9349],"disallowed_STD3_mapped",[40,49,56,41]],[[9350,9350],"disallowed_STD3_mapped",[40,49,57,41]],[[9351,9351],"disallowed_STD3_mapped",[40,50,48,41]],[[9352,9371],"disallowed"],[[9372,9372],"disallowed_STD3_mapped",[40,97,41]],[[9373,9373],"disallowed_STD3_mapped",[40,98,41]],[[9374,9374],"disallowed_STD3_mapped",[40,99,41]],[[9375,9375],"disallowed_STD3_mapped",[40,100,41]],[[9376,9376],"disallowed_STD3_mapped",[40,101,41]],[[9377,9377],"disallowed_STD3_mapped",[40,102,41]],[[9378,9378],"disallowed_STD3_mapped",[40,103,41]],[[9379,9379],"disallowed_STD3_mapped",[40,104,41]],[[9380,9380],"disallowed_STD3_mapped",[40,105,41]],[[9381,9381],"disallowed_STD3_mapped",[40,106,41]],[[9382,9382],"disallowed_STD3_mapped",[40,107,41]],[[9383,9383],"disallowed_STD3_mapped",[40,108,41]],[[9384,9384],"disallowed_STD3_mapped",[40,109,41]],[[9385,9385],"disallowed_STD3_mapped",[40,110,41]],[[9386,9386],"disallowed_STD3_mapped",[40,111,41]],[[9387,9387],"disallowed_STD3_mapped",[40,112,41]],[[9388,9388],"disallowed_STD3_mapped",[40,113,41]],[[9389,9389],"disallowed_STD3_mapped",[40,114,41]],[[9390,9390],"disallowed_STD3_mapped",[40,115,41]],[[9391,9391],"disallowed_STD3_mapped",[40,116,41]],[[9392,9392],"disallowed_STD3_mapped",[40,117,41]],[[9393,9393],"disallowed_STD3_mapped",[40,118,41]],[[9394,9394],"disallowed_STD3_mapped",[40,119,41]],[[9395,9395],"disallowed_STD3_mapped",[40,120,41]],[[9396,9396],"disallowed_STD3_mapped",[40,121,41]],[[9397,9397],"disallowed_STD3_mapped",[40,122,41]],[[9398,9398],"mapped",[97]],[[9399,9399],"mapped",[98]],[[9400,9400],"mapped",[99]],[[9401,9401],"mapped",[100]],[[9402,9402],"mapped",[101]],[[9403,9403],"mapped",[102]],[[9404,9404],"mapped",[103]],[[9405,9405],"mapped",[104]],[[9406,9406],"mapped",[105]],[[9407,9407],"mapped",[106]],[[9408,9408],"mapped",[107]],[[9409,9409],"mapped",[108]],[[9410,9410],"mapped",[109]],[[9411,9411],"mapped",[110]],[[9412,9412],"mapped",[111]],[[9413,9413],"mapped",[112]],[[9414,9414],"mapped",[113]],[[9415,9415],"mapped",[114]],[[9416,9416],"mapped",[115]],[[9417,9417],"mapped",[116]],[[9418,9418],"mapped",[117]],[[9419,9419],"mapped",[118]],[[9420,9420],"mapped",[119]],[[9421,9421],"mapped",[120]],[[9422,9422],"mapped",[121]],[[9423,9423],"mapped",[122]],[[9424,9424],"mapped",[97]],[[9425,9425],"mapped",[98]],[[9426,9426],"mapped",[99]],[[9427,9427],"mapped",[100]],[[9428,9428],"mapped",[101]],[[9429,9429],"mapped",[102]],[[9430,9430],"mapped",[103]],[[9431,9431],"mapped",[104]],[[9432,9432],"mapped",[105]],[[9433,9433],"mapped",[106]],[[9434,9434],"mapped",[107]],[[9435,9435],"mapped",[108]],[[9436,9436],"mapped",[109]],[[9437,9437],"mapped",[110]],[[9438,9438],"mapped",[111]],[[9439,9439],"mapped",[112]],[[9440,9440],"mapped",[113]],[[9441,9441],"mapped",[114]],[[9442,9442],"mapped",[115]],[[9443,9443],"mapped",[116]],[[9444,9444],"mapped",[117]],[[9445,9445],"mapped",[118]],[[9446,9446],"mapped",[119]],[[9447,9447],"mapped",[120]],[[9448,9448],"mapped",[121]],[[9449,9449],"mapped",[122]],[[9450,9450],"mapped",[48]],[[9451,9470],"valid",[],"NV8"],[[9471,9471],"valid",[],"NV8"],[[9472,9621],"valid",[],"NV8"],[[9622,9631],"valid",[],"NV8"],[[9632,9711],"valid",[],"NV8"],[[9712,9719],"valid",[],"NV8"],[[9720,9727],"valid",[],"NV8"],[[9728,9747],"valid",[],"NV8"],[[9748,9749],"valid",[],"NV8"],[[9750,9751],"valid",[],"NV8"],[[9752,9752],"valid",[],"NV8"],[[9753,9753],"valid",[],"NV8"],[[9754,9839],"valid",[],"NV8"],[[9840,9841],"valid",[],"NV8"],[[9842,9853],"valid",[],"NV8"],[[9854,9855],"valid",[],"NV8"],[[9856,9865],"valid",[],"NV8"],[[9866,9873],"valid",[],"NV8"],[[9874,9884],"valid",[],"NV8"],[[9885,9885],"valid",[],"NV8"],[[9886,9887],"valid",[],"NV8"],[[9888,9889],"valid",[],"NV8"],[[9890,9905],"valid",[],"NV8"],[[9906,9906],"valid",[],"NV8"],[[9907,9916],"valid",[],"NV8"],[[9917,9919],"valid",[],"NV8"],[[9920,9923],"valid",[],"NV8"],[[9924,9933],"valid",[],"NV8"],[[9934,9934],"valid",[],"NV8"],[[9935,9953],"valid",[],"NV8"],[[9954,9954],"valid",[],"NV8"],[[9955,9955],"valid",[],"NV8"],[[9956,9959],"valid",[],"NV8"],[[9960,9983],"valid",[],"NV8"],[[9984,9984],"valid",[],"NV8"],[[9985,9988],"valid",[],"NV8"],[[9989,9989],"valid",[],"NV8"],[[9990,9993],"valid",[],"NV8"],[[9994,9995],"valid",[],"NV8"],[[9996,10023],"valid",[],"NV8"],[[10024,10024],"valid",[],"NV8"],[[10025,10059],"valid",[],"NV8"],[[10060,10060],"valid",[],"NV8"],[[10061,10061],"valid",[],"NV8"],[[10062,10062],"valid",[],"NV8"],[[10063,10066],"valid",[],"NV8"],[[10067,10069],"valid",[],"NV8"],[[10070,10070],"valid",[],"NV8"],[[10071,10071],"valid",[],"NV8"],[[10072,10078],"valid",[],"NV8"],[[10079,10080],"valid",[],"NV8"],[[10081,10087],"valid",[],"NV8"],[[10088,10101],"valid",[],"NV8"],[[10102,10132],"valid",[],"NV8"],[[10133,10135],"valid",[],"NV8"],[[10136,10159],"valid",[],"NV8"],[[10160,10160],"valid",[],"NV8"],[[10161,10174],"valid",[],"NV8"],[[10175,10175],"valid",[],"NV8"],[[10176,10182],"valid",[],"NV8"],[[10183,10186],"valid",[],"NV8"],[[10187,10187],"valid",[],"NV8"],[[10188,10188],"valid",[],"NV8"],[[10189,10189],"valid",[],"NV8"],[[10190,10191],"valid",[],"NV8"],[[10192,10219],"valid",[],"NV8"],[[10220,10223],"valid",[],"NV8"],[[10224,10239],"valid",[],"NV8"],[[10240,10495],"valid",[],"NV8"],[[10496,10763],"valid",[],"NV8"],[[10764,10764],"mapped",[8747,8747,8747,8747]],[[10765,10867],"valid",[],"NV8"],[[10868,10868],"disallowed_STD3_mapped",[58,58,61]],[[10869,10869],"disallowed_STD3_mapped",[61,61]],[[10870,10870],"disallowed_STD3_mapped",[61,61,61]],[[10871,10971],"valid",[],"NV8"],[[10972,10972],"mapped",[10973,824]],[[10973,11007],"valid",[],"NV8"],[[11008,11021],"valid",[],"NV8"],[[11022,11027],"valid",[],"NV8"],[[11028,11034],"valid",[],"NV8"],[[11035,11039],"valid",[],"NV8"],[[11040,11043],"valid",[],"NV8"],[[11044,11084],"valid",[],"NV8"],[[11085,11087],"valid",[],"NV8"],[[11088,11092],"valid",[],"NV8"],[[11093,11097],"valid",[],"NV8"],[[11098,11123],"valid",[],"NV8"],[[11124,11125],"disallowed"],[[11126,11157],"valid",[],"NV8"],[[11158,11159],"disallowed"],[[11160,11193],"valid",[],"NV8"],[[11194,11196],"disallowed"],[[11197,11208],"valid",[],"NV8"],[[11209,11209],"disallowed"],[[11210,11217],"valid",[],"NV8"],[[11218,11243],"disallowed"],[[11244,11247],"valid",[],"NV8"],[[11248,11263],"disallowed"],[[11264,11264],"mapped",[11312]],[[11265,11265],"mapped",[11313]],[[11266,11266],"mapped",[11314]],[[11267,11267],"mapped",[11315]],[[11268,11268],"mapped",[11316]],[[11269,11269],"mapped",[11317]],[[11270,11270],"mapped",[11318]],[[11271,11271],"mapped",[11319]],[[11272,11272],"mapped",[11320]],[[11273,11273],"mapped",[11321]],[[11274,11274],"mapped",[11322]],[[11275,11275],"mapped",[11323]],[[11276,11276],"mapped",[11324]],[[11277,11277],"mapped",[11325]],[[11278,11278],"mapped",[11326]],[[11279,11279],"mapped",[11327]],[[11280,11280],"mapped",[11328]],[[11281,11281],"mapped",[11329]],[[11282,11282],"mapped",[11330]],[[11283,11283],"mapped",[11331]],[[11284,11284],"mapped",[11332]],[[11285,11285],"mapped",[11333]],[[11286,11286],"mapped",[11334]],[[11287,11287],"mapped",[11335]],[[11288,11288],"mapped",[11336]],[[11289,11289],"mapped",[11337]],[[11290,11290],"mapped",[11338]],[[11291,11291],"mapped",[11339]],[[11292,11292],"mapped",[11340]],[[11293,11293],"mapped",[11341]],[[11294,11294],"mapped",[11342]],[[11295,11295],"mapped",[11343]],[[11296,11296],"mapped",[11344]],[[11297,11297],"mapped",[11345]],[[11298,11298],"mapped",[11346]],[[11299,11299],"mapped",[11347]],[[11300,11300],"mapped",[11348]],[[11301,11301],"mapped",[11349]],[[11302,11302],"mapped",[11350]],[[11303,11303],"mapped",[11351]],[[11304,11304],"mapped",[11352]],[[11305,11305],"mapped",[11353]],[[11306,11306],"mapped",[11354]],[[11307,11307],"mapped",[11355]],[[11308,11308],"mapped",[11356]],[[11309,11309],"mapped",[11357]],[[11310,11310],"mapped",[11358]],[[11311,11311],"disallowed"],[[11312,11358],"valid"],[[11359,11359],"disallowed"],[[11360,11360],"mapped",[11361]],[[11361,11361],"valid"],[[11362,11362],"mapped",[619]],[[11363,11363],"mapped",[7549]],[[11364,11364],"mapped",[637]],[[11365,11366],"valid"],[[11367,11367],"mapped",[11368]],[[11368,11368],"valid"],[[11369,11369],"mapped",[11370]],[[11370,11370],"valid"],[[11371,11371],"mapped",[11372]],[[11372,11372],"valid"],[[11373,11373],"mapped",[593]],[[11374,11374],"mapped",[625]],[[11375,11375],"mapped",[592]],[[11376,11376],"mapped",[594]],[[11377,11377],"valid"],[[11378,11378],"mapped",[11379]],[[11379,11379],"valid"],[[11380,11380],"valid"],[[11381,11381],"mapped",[11382]],[[11382,11383],"valid"],[[11384,11387],"valid"],[[11388,11388],"mapped",[106]],[[11389,11389],"mapped",[118]],[[11390,11390],"mapped",[575]],[[11391,11391],"mapped",[576]],[[11392,11392],"mapped",[11393]],[[11393,11393],"valid"],[[11394,11394],"mapped",[11395]],[[11395,11395],"valid"],[[11396,11396],"mapped",[11397]],[[11397,11397],"valid"],[[11398,11398],"mapped",[11399]],[[11399,11399],"valid"],[[11400,11400],"mapped",[11401]],[[11401,11401],"valid"],[[11402,11402],"mapped",[11403]],[[11403,11403],"valid"],[[11404,11404],"mapped",[11405]],[[11405,11405],"valid"],[[11406,11406],"mapped",[11407]],[[11407,11407],"valid"],[[11408,11408],"mapped",[11409]],[[11409,11409],"valid"],[[11410,11410],"mapped",[11411]],[[11411,11411],"valid"],[[11412,11412],"mapped",[11413]],[[11413,11413],"valid"],[[11414,11414],"mapped",[11415]],[[11415,11415],"valid"],[[11416,11416],"mapped",[11417]],[[11417,11417],"valid"],[[11418,11418],"mapped",[11419]],[[11419,11419],"valid"],[[11420,11420],"mapped",[11421]],[[11421,11421],"valid"],[[11422,11422],"mapped",[11423]],[[11423,11423],"valid"],[[11424,11424],"mapped",[11425]],[[11425,11425],"valid"],[[11426,11426],"mapped",[11427]],[[11427,11427],"valid"],[[11428,11428],"mapped",[11429]],[[11429,11429],"valid"],[[11430,11430],"mapped",[11431]],[[11431,11431],"valid"],[[11432,11432],"mapped",[11433]],[[11433,11433],"valid"],[[11434,11434],"mapped",[11435]],[[11435,11435],"valid"],[[11436,11436],"mapped",[11437]],[[11437,11437],"valid"],[[11438,11438],"mapped",[11439]],[[11439,11439],"valid"],[[11440,11440],"mapped",[11441]],[[11441,11441],"valid"],[[11442,11442],"mapped",[11443]],[[11443,11443],"valid"],[[11444,11444],"mapped",[11445]],[[11445,11445],"valid"],[[11446,11446],"mapped",[11447]],[[11447,11447],"valid"],[[11448,11448],"mapped",[11449]],[[11449,11449],"valid"],[[11450,11450],"mapped",[11451]],[[11451,11451],"valid"],[[11452,11452],"mapped",[11453]],[[11453,11453],"valid"],[[11454,11454],"mapped",[11455]],[[11455,11455],"valid"],[[11456,11456],"mapped",[11457]],[[11457,11457],"valid"],[[11458,11458],"mapped",[11459]],[[11459,11459],"valid"],[[11460,11460],"mapped",[11461]],[[11461,11461],"valid"],[[11462,11462],"mapped",[11463]],[[11463,11463],"valid"],[[11464,11464],"mapped",[11465]],[[11465,11465],"valid"],[[11466,11466],"mapped",[11467]],[[11467,11467],"valid"],[[11468,11468],"mapped",[11469]],[[11469,11469],"valid"],[[11470,11470],"mapped",[11471]],[[11471,11471],"valid"],[[11472,11472],"mapped",[11473]],[[11473,11473],"valid"],[[11474,11474],"mapped",[11475]],[[11475,11475],"valid"],[[11476,11476],"mapped",[11477]],[[11477,11477],"valid"],[[11478,11478],"mapped",[11479]],[[11479,11479],"valid"],[[11480,11480],"mapped",[11481]],[[11481,11481],"valid"],[[11482,11482],"mapped",[11483]],[[11483,11483],"valid"],[[11484,11484],"mapped",[11485]],[[11485,11485],"valid"],[[11486,11486],"mapped",[11487]],[[11487,11487],"valid"],[[11488,11488],"mapped",[11489]],[[11489,11489],"valid"],[[11490,11490],"mapped",[11491]],[[11491,11492],"valid"],[[11493,11498],"valid",[],"NV8"],[[11499,11499],"mapped",[11500]],[[11500,11500],"valid"],[[11501,11501],"mapped",[11502]],[[11502,11505],"valid"],[[11506,11506],"mapped",[11507]],[[11507,11507],"valid"],[[11508,11512],"disallowed"],[[11513,11519],"valid",[],"NV8"],[[11520,11557],"valid"],[[11558,11558],"disallowed"],[[11559,11559],"valid"],[[11560,11564],"disallowed"],[[11565,11565],"valid"],[[11566,11567],"disallowed"],[[11568,11621],"valid"],[[11622,11623],"valid"],[[11624,11630],"disallowed"],[[11631,11631],"mapped",[11617]],[[11632,11632],"valid",[],"NV8"],[[11633,11646],"disallowed"],[[11647,11647],"valid"],[[11648,11670],"valid"],[[11671,11679],"disallowed"],[[11680,11686],"valid"],[[11687,11687],"disallowed"],[[11688,11694],"valid"],[[11695,11695],"disallowed"],[[11696,11702],"valid"],[[11703,11703],"disallowed"],[[11704,11710],"valid"],[[11711,11711],"disallowed"],[[11712,11718],"valid"],[[11719,11719],"disallowed"],[[11720,11726],"valid"],[[11727,11727],"disallowed"],[[11728,11734],"valid"],[[11735,11735],"disallowed"],[[11736,11742],"valid"],[[11743,11743],"disallowed"],[[11744,11775],"valid"],[[11776,11799],"valid",[],"NV8"],[[11800,11803],"valid",[],"NV8"],[[11804,11805],"valid",[],"NV8"],[[11806,11822],"valid",[],"NV8"],[[11823,11823],"valid"],[[11824,11824],"valid",[],"NV8"],[[11825,11825],"valid",[],"NV8"],[[11826,11835],"valid",[],"NV8"],[[11836,11842],"valid",[],"NV8"],[[11843,11903],"disallowed"],[[11904,11929],"valid",[],"NV8"],[[11930,11930],"disallowed"],[[11931,11934],"valid",[],"NV8"],[[11935,11935],"mapped",[27597]],[[11936,12018],"valid",[],"NV8"],[[12019,12019],"mapped",[40863]],[[12020,12031],"disallowed"],[[12032,12032],"mapped",[19968]],[[12033,12033],"mapped",[20008]],[[12034,12034],"mapped",[20022]],[[12035,12035],"mapped",[20031]],[[12036,12036],"mapped",[20057]],[[12037,12037],"mapped",[20101]],[[12038,12038],"mapped",[20108]],[[12039,12039],"mapped",[20128]],[[12040,12040],"mapped",[20154]],[[12041,12041],"mapped",[20799]],[[12042,12042],"mapped",[20837]],[[12043,12043],"mapped",[20843]],[[12044,12044],"mapped",[20866]],[[12045,12045],"mapped",[20886]],[[12046,12046],"mapped",[20907]],[[12047,12047],"mapped",[20960]],[[12048,12048],"mapped",[20981]],[[12049,12049],"mapped",[20992]],[[12050,12050],"mapped",[21147]],[[12051,12051],"mapped",[21241]],[[12052,12052],"mapped",[21269]],[[12053,12053],"mapped",[21274]],[[12054,12054],"mapped",[21304]],[[12055,12055],"mapped",[21313]],[[12056,12056],"mapped",[21340]],[[12057,12057],"mapped",[21353]],[[12058,12058],"mapped",[21378]],[[12059,12059],"mapped",[21430]],[[12060,12060],"mapped",[21448]],[[12061,12061],"mapped",[21475]],[[12062,12062],"mapped",[22231]],[[12063,12063],"mapped",[22303]],[[12064,12064],"mapped",[22763]],[[12065,12065],"mapped",[22786]],[[12066,12066],"mapped",[22794]],[[12067,12067],"mapped",[22805]],[[12068,12068],"mapped",[22823]],[[12069,12069],"mapped",[22899]],[[12070,12070],"mapped",[23376]],[[12071,12071],"mapped",[23424]],[[12072,12072],"mapped",[23544]],[[12073,12073],"mapped",[23567]],[[12074,12074],"mapped",[23586]],[[12075,12075],"mapped",[23608]],[[12076,12076],"mapped",[23662]],[[12077,12077],"mapped",[23665]],[[12078,12078],"mapped",[24027]],[[12079,12079],"mapped",[24037]],[[12080,12080],"mapped",[24049]],[[12081,12081],"mapped",[24062]],[[12082,12082],"mapped",[24178]],[[12083,12083],"mapped",[24186]],[[12084,12084],"mapped",[24191]],[[12085,12085],"mapped",[24308]],[[12086,12086],"mapped",[24318]],[[12087,12087],"mapped",[24331]],[[12088,12088],"mapped",[24339]],[[12089,12089],"mapped",[24400]],[[12090,12090],"mapped",[24417]],[[12091,12091],"mapped",[24435]],[[12092,12092],"mapped",[24515]],[[12093,12093],"mapped",[25096]],[[12094,12094],"mapped",[25142]],[[12095,12095],"mapped",[25163]],[[12096,12096],"mapped",[25903]],[[12097,12097],"mapped",[25908]],[[12098,12098],"mapped",[25991]],[[12099,12099],"mapped",[26007]],[[12100,12100],"mapped",[26020]],[[12101,12101],"mapped",[26041]],[[12102,12102],"mapped",[26080]],[[12103,12103],"mapped",[26085]],[[12104,12104],"mapped",[26352]],[[12105,12105],"mapped",[26376]],[[12106,12106],"mapped",[26408]],[[12107,12107],"mapped",[27424]],[[12108,12108],"mapped",[27490]],[[12109,12109],"mapped",[27513]],[[12110,12110],"mapped",[27571]],[[12111,12111],"mapped",[27595]],[[12112,12112],"mapped",[27604]],[[12113,12113],"mapped",[27611]],[[12114,12114],"mapped",[27663]],[[12115,12115],"mapped",[27668]],[[12116,12116],"mapped",[27700]],[[12117,12117],"mapped",[28779]],[[12118,12118],"mapped",[29226]],[[12119,12119],"mapped",[29238]],[[12120,12120],"mapped",[29243]],[[12121,12121],"mapped",[29247]],[[12122,12122],"mapped",[29255]],[[12123,12123],"mapped",[29273]],[[12124,12124],"mapped",[29275]],[[12125,12125],"mapped",[29356]],[[12126,12126],"mapped",[29572]],[[12127,12127],"mapped",[29577]],[[12128,12128],"mapped",[29916]],[[12129,12129],"mapped",[29926]],[[12130,12130],"mapped",[29976]],[[12131,12131],"mapped",[29983]],[[12132,12132],"mapped",[29992]],[[12133,12133],"mapped",[30000]],[[12134,12134],"mapped",[30091]],[[12135,12135],"mapped",[30098]],[[12136,12136],"mapped",[30326]],[[12137,12137],"mapped",[30333]],[[12138,12138],"mapped",[30382]],[[12139,12139],"mapped",[30399]],[[12140,12140],"mapped",[30446]],[[12141,12141],"mapped",[30683]],[[12142,12142],"mapped",[30690]],[[12143,12143],"mapped",[30707]],[[12144,12144],"mapped",[31034]],[[12145,12145],"mapped",[31160]],[[12146,12146],"mapped",[31166]],[[12147,12147],"mapped",[31348]],[[12148,12148],"mapped",[31435]],[[12149,12149],"mapped",[31481]],[[12150,12150],"mapped",[31859]],[[12151,12151],"mapped",[31992]],[[12152,12152],"mapped",[32566]],[[12153,12153],"mapped",[32593]],[[12154,12154],"mapped",[32650]],[[12155,12155],"mapped",[32701]],[[12156,12156],"mapped",[32769]],[[12157,12157],"mapped",[32780]],[[12158,12158],"mapped",[32786]],[[12159,12159],"mapped",[32819]],[[12160,12160],"mapped",[32895]],[[12161,12161],"mapped",[32905]],[[12162,12162],"mapped",[33251]],[[12163,12163],"mapped",[33258]],[[12164,12164],"mapped",[33267]],[[12165,12165],"mapped",[33276]],[[12166,12166],"mapped",[33292]],[[12167,12167],"mapped",[33307]],[[12168,12168],"mapped",[33311]],[[12169,12169],"mapped",[33390]],[[12170,12170],"mapped",[33394]],[[12171,12171],"mapped",[33400]],[[12172,12172],"mapped",[34381]],[[12173,12173],"mapped",[34411]],[[12174,12174],"mapped",[34880]],[[12175,12175],"mapped",[34892]],[[12176,12176],"mapped",[34915]],[[12177,12177],"mapped",[35198]],[[12178,12178],"mapped",[35211]],[[12179,12179],"mapped",[35282]],[[12180,12180],"mapped",[35328]],[[12181,12181],"mapped",[35895]],[[12182,12182],"mapped",[35910]],[[12183,12183],"mapped",[35925]],[[12184,12184],"mapped",[35960]],[[12185,12185],"mapped",[35997]],[[12186,12186],"mapped",[36196]],[[12187,12187],"mapped",[36208]],[[12188,12188],"mapped",[36275]],[[12189,12189],"mapped",[36523]],[[12190,12190],"mapped",[36554]],[[12191,12191],"mapped",[36763]],[[12192,12192],"mapped",[36784]],[[12193,12193],"mapped",[36789]],[[12194,12194],"mapped",[37009]],[[12195,12195],"mapped",[37193]],[[12196,12196],"mapped",[37318]],[[12197,12197],"mapped",[37324]],[[12198,12198],"mapped",[37329]],[[12199,12199],"mapped",[38263]],[[12200,12200],"mapped",[38272]],[[12201,12201],"mapped",[38428]],[[12202,12202],"mapped",[38582]],[[12203,12203],"mapped",[38585]],[[12204,12204],"mapped",[38632]],[[12205,12205],"mapped",[38737]],[[12206,12206],"mapped",[38750]],[[12207,12207],"mapped",[38754]],[[12208,12208],"mapped",[38761]],[[12209,12209],"mapped",[38859]],[[12210,12210],"mapped",[38893]],[[12211,12211],"mapped",[38899]],[[12212,12212],"mapped",[38913]],[[12213,12213],"mapped",[39080]],[[12214,12214],"mapped",[39131]],[[12215,12215],"mapped",[39135]],[[12216,12216],"mapped",[39318]],[[12217,12217],"mapped",[39321]],[[12218,12218],"mapped",[39340]],[[12219,12219],"mapped",[39592]],[[12220,12220],"mapped",[39640]],[[12221,12221],"mapped",[39647]],[[12222,12222],"mapped",[39717]],[[12223,12223],"mapped",[39727]],[[12224,12224],"mapped",[39730]],[[12225,12225],"mapped",[39740]],[[12226,12226],"mapped",[39770]],[[12227,12227],"mapped",[40165]],[[12228,12228],"mapped",[40565]],[[12229,12229],"mapped",[40575]],[[12230,12230],"mapped",[40613]],[[12231,12231],"mapped",[40635]],[[12232,12232],"mapped",[40643]],[[12233,12233],"mapped",[40653]],[[12234,12234],"mapped",[40657]],[[12235,12235],"mapped",[40697]],[[12236,12236],"mapped",[40701]],[[12237,12237],"mapped",[40718]],[[12238,12238],"mapped",[40723]],[[12239,12239],"mapped",[40736]],[[12240,12240],"mapped",[40763]],[[12241,12241],"mapped",[40778]],[[12242,12242],"mapped",[40786]],[[12243,12243],"mapped",[40845]],[[12244,12244],"mapped",[40860]],[[12245,12245],"mapped",[40864]],[[12246,12271],"disallowed"],[[12272,12283],"disallowed"],[[12284,12287],"disallowed"],[[12288,12288],"disallowed_STD3_mapped",[32]],[[12289,12289],"valid",[],"NV8"],[[12290,12290],"mapped",[46]],[[12291,12292],"valid",[],"NV8"],[[12293,12295],"valid"],[[12296,12329],"valid",[],"NV8"],[[12330,12333],"valid"],[[12334,12341],"valid",[],"NV8"],[[12342,12342],"mapped",[12306]],[[12343,12343],"valid",[],"NV8"],[[12344,12344],"mapped",[21313]],[[12345,12345],"mapped",[21316]],[[12346,12346],"mapped",[21317]],[[12347,12347],"valid",[],"NV8"],[[12348,12348],"valid"],[[12349,12349],"valid",[],"NV8"],[[12350,12350],"valid",[],"NV8"],[[12351,12351],"valid",[],"NV8"],[[12352,12352],"disallowed"],[[12353,12436],"valid"],[[12437,12438],"valid"],[[12439,12440],"disallowed"],[[12441,12442],"valid"],[[12443,12443],"disallowed_STD3_mapped",[32,12441]],[[12444,12444],"disallowed_STD3_mapped",[32,12442]],[[12445,12446],"valid"],[[12447,12447],"mapped",[12424,12426]],[[12448,12448],"valid",[],"NV8"],[[12449,12542],"valid"],[[12543,12543],"mapped",[12467,12488]],[[12544,12548],"disallowed"],[[12549,12588],"valid"],[[12589,12589],"valid"],[[12590,12592],"disallowed"],[[12593,12593],"mapped",[4352]],[[12594,12594],"mapped",[4353]],[[12595,12595],"mapped",[4522]],[[12596,12596],"mapped",[4354]],[[12597,12597],"mapped",[4524]],[[12598,12598],"mapped",[4525]],[[12599,12599],"mapped",[4355]],[[12600,12600],"mapped",[4356]],[[12601,12601],"mapped",[4357]],[[12602,12602],"mapped",[4528]],[[12603,12603],"mapped",[4529]],[[12604,12604],"mapped",[4530]],[[12605,12605],"mapped",[4531]],[[12606,12606],"mapped",[4532]],[[12607,12607],"mapped",[4533]],[[12608,12608],"mapped",[4378]],[[12609,12609],"mapped",[4358]],[[12610,12610],"mapped",[4359]],[[12611,12611],"mapped",[4360]],[[12612,12612],"mapped",[4385]],[[12613,12613],"mapped",[4361]],[[12614,12614],"mapped",[4362]],[[12615,12615],"mapped",[4363]],[[12616,12616],"mapped",[4364]],[[12617,12617],"mapped",[4365]],[[12618,12618],"mapped",[4366]],[[12619,12619],"mapped",[4367]],[[12620,12620],"mapped",[4368]],[[12621,12621],"mapped",[4369]],[[12622,12622],"mapped",[4370]],[[12623,12623],"mapped",[4449]],[[12624,12624],"mapped",[4450]],[[12625,12625],"mapped",[4451]],[[12626,12626],"mapped",[4452]],[[12627,12627],"mapped",[4453]],[[12628,12628],"mapped",[4454]],[[12629,12629],"mapped",[4455]],[[12630,12630],"mapped",[4456]],[[12631,12631],"mapped",[4457]],[[12632,12632],"mapped",[4458]],[[12633,12633],"mapped",[4459]],[[12634,12634],"mapped",[4460]],[[12635,12635],"mapped",[4461]],[[12636,12636],"mapped",[4462]],[[12637,12637],"mapped",[4463]],[[12638,12638],"mapped",[4464]],[[12639,12639],"mapped",[4465]],[[12640,12640],"mapped",[4466]],[[12641,12641],"mapped",[4467]],[[12642,12642],"mapped",[4468]],[[12643,12643],"mapped",[4469]],[[12644,12644],"disallowed"],[[12645,12645],"mapped",[4372]],[[12646,12646],"mapped",[4373]],[[12647,12647],"mapped",[4551]],[[12648,12648],"mapped",[4552]],[[12649,12649],"mapped",[4556]],[[12650,12650],"mapped",[4558]],[[12651,12651],"mapped",[4563]],[[12652,12652],"mapped",[4567]],[[12653,12653],"mapped",[4569]],[[12654,12654],"mapped",[4380]],[[12655,12655],"mapped",[4573]],[[12656,12656],"mapped",[4575]],[[12657,12657],"mapped",[4381]],[[12658,12658],"mapped",[4382]],[[12659,12659],"mapped",[4384]],[[12660,12660],"mapped",[4386]],[[12661,12661],"mapped",[4387]],[[12662,12662],"mapped",[4391]],[[12663,12663],"mapped",[4393]],[[12664,12664],"mapped",[4395]],[[12665,12665],"mapped",[4396]],[[12666,12666],"mapped",[4397]],[[12667,12667],"mapped",[4398]],[[12668,12668],"mapped",[4399]],[[12669,12669],"mapped",[4402]],[[12670,12670],"mapped",[4406]],[[12671,12671],"mapped",[4416]],[[12672,12672],"mapped",[4423]],[[12673,12673],"mapped",[4428]],[[12674,12674],"mapped",[4593]],[[12675,12675],"mapped",[4594]],[[12676,12676],"mapped",[4439]],[[12677,12677],"mapped",[4440]],[[12678,12678],"mapped",[4441]],[[12679,12679],"mapped",[4484]],[[12680,12680],"mapped",[4485]],[[12681,12681],"mapped",[4488]],[[12682,12682],"mapped",[4497]],[[12683,12683],"mapped",[4498]],[[12684,12684],"mapped",[4500]],[[12685,12685],"mapped",[4510]],[[12686,12686],"mapped",[4513]],[[12687,12687],"disallowed"],[[12688,12689],"valid",[],"NV8"],[[12690,12690],"mapped",[19968]],[[12691,12691],"mapped",[20108]],[[12692,12692],"mapped",[19977]],[[12693,12693],"mapped",[22235]],[[12694,12694],"mapped",[19978]],[[12695,12695],"mapped",[20013]],[[12696,12696],"mapped",[19979]],[[12697,12697],"mapped",[30002]],[[12698,12698],"mapped",[20057]],[[12699,12699],"mapped",[19993]],[[12700,12700],"mapped",[19969]],[[12701,12701],"mapped",[22825]],[[12702,12702],"mapped",[22320]],[[12703,12703],"mapped",[20154]],[[12704,12727],"valid"],[[12728,12730],"valid"],[[12731,12735],"disallowed"],[[12736,12751],"valid",[],"NV8"],[[12752,12771],"valid",[],"NV8"],[[12772,12783],"disallowed"],[[12784,12799],"valid"],[[12800,12800],"disallowed_STD3_mapped",[40,4352,41]],[[12801,12801],"disallowed_STD3_mapped",[40,4354,41]],[[12802,12802],"disallowed_STD3_mapped",[40,4355,41]],[[12803,12803],"disallowed_STD3_mapped",[40,4357,41]],[[12804,12804],"disallowed_STD3_mapped",[40,4358,41]],[[12805,12805],"disallowed_STD3_mapped",[40,4359,41]],[[12806,12806],"disallowed_STD3_mapped",[40,4361,41]],[[12807,12807],"disallowed_STD3_mapped",[40,4363,41]],[[12808,12808],"disallowed_STD3_mapped",[40,4364,41]],[[12809,12809],"disallowed_STD3_mapped",[40,4366,41]],[[12810,12810],"disallowed_STD3_mapped",[40,4367,41]],[[12811,12811],"disallowed_STD3_mapped",[40,4368,41]],[[12812,12812],"disallowed_STD3_mapped",[40,4369,41]],[[12813,12813],"disallowed_STD3_mapped",[40,4370,41]],[[12814,12814],"disallowed_STD3_mapped",[40,44032,41]],[[12815,12815],"disallowed_STD3_mapped",[40,45208,41]],[[12816,12816],"disallowed_STD3_mapped",[40,45796,41]],[[12817,12817],"disallowed_STD3_mapped",[40,46972,41]],[[12818,12818],"disallowed_STD3_mapped",[40,47560,41]],[[12819,12819],"disallowed_STD3_mapped",[40,48148,41]],[[12820,12820],"disallowed_STD3_mapped",[40,49324,41]],[[12821,12821],"disallowed_STD3_mapped",[40,50500,41]],[[12822,12822],"disallowed_STD3_mapped",[40,51088,41]],[[12823,12823],"disallowed_STD3_mapped",[40,52264,41]],[[12824,12824],"disallowed_STD3_mapped",[40,52852,41]],[[12825,12825],"disallowed_STD3_mapped",[40,53440,41]],[[12826,12826],"disallowed_STD3_mapped",[40,54028,41]],[[12827,12827],"disallowed_STD3_mapped",[40,54616,41]],[[12828,12828],"disallowed_STD3_mapped",[40,51452,41]],[[12829,12829],"disallowed_STD3_mapped",[40,50724,51204,41]],[[12830,12830],"disallowed_STD3_mapped",[40,50724,54980,41]],[[12831,12831],"disallowed"],[[12832,12832],"disallowed_STD3_mapped",[40,19968,41]],[[12833,12833],"disallowed_STD3_mapped",[40,20108,41]],[[12834,12834],"disallowed_STD3_mapped",[40,19977,41]],[[12835,12835],"disallowed_STD3_mapped",[40,22235,41]],[[12836,12836],"disallowed_STD3_mapped",[40,20116,41]],[[12837,12837],"disallowed_STD3_mapped",[40,20845,41]],[[12838,12838],"disallowed_STD3_mapped",[40,19971,41]],[[12839,12839],"disallowed_STD3_mapped",[40,20843,41]],[[12840,12840],"disallowed_STD3_mapped",[40,20061,41]],[[12841,12841],"disallowed_STD3_mapped",[40,21313,41]],[[12842,12842],"disallowed_STD3_mapped",[40,26376,41]],[[12843,12843],"disallowed_STD3_mapped",[40,28779,41]],[[12844,12844],"disallowed_STD3_mapped",[40,27700,41]],[[12845,12845],"disallowed_STD3_mapped",[40,26408,41]],[[12846,12846],"disallowed_STD3_mapped",[40,37329,41]],[[12847,12847],"disallowed_STD3_mapped",[40,22303,41]],[[12848,12848],"disallowed_STD3_mapped",[40,26085,41]],[[12849,12849],"disallowed_STD3_mapped",[40,26666,41]],[[12850,12850],"disallowed_STD3_mapped",[40,26377,41]],[[12851,12851],"disallowed_STD3_mapped",[40,31038,41]],[[12852,12852],"disallowed_STD3_mapped",[40,21517,41]],[[12853,12853],"disallowed_STD3_mapped",[40,29305,41]],[[12854,12854],"disallowed_STD3_mapped",[40,36001,41]],[[12855,12855],"disallowed_STD3_mapped",[40,31069,41]],[[12856,12856],"disallowed_STD3_mapped",[40,21172,41]],[[12857,12857],"disallowed_STD3_mapped",[40,20195,41]],[[12858,12858],"disallowed_STD3_mapped",[40,21628,41]],[[12859,12859],"disallowed_STD3_mapped",[40,23398,41]],[[12860,12860],"disallowed_STD3_mapped",[40,30435,41]],[[12861,12861],"disallowed_STD3_mapped",[40,20225,41]],[[12862,12862],"disallowed_STD3_mapped",[40,36039,41]],[[12863,12863],"disallowed_STD3_mapped",[40,21332,41]],[[12864,12864],"disallowed_STD3_mapped",[40,31085,41]],[[12865,12865],"disallowed_STD3_mapped",[40,20241,41]],[[12866,12866],"disallowed_STD3_mapped",[40,33258,41]],[[12867,12867],"disallowed_STD3_mapped",[40,33267,41]],[[12868,12868],"mapped",[21839]],[[12869,12869],"mapped",[24188]],[[12870,12870],"mapped",[25991]],[[12871,12871],"mapped",[31631]],[[12872,12879],"valid",[],"NV8"],[[12880,12880],"mapped",[112,116,101]],[[12881,12881],"mapped",[50,49]],[[12882,12882],"mapped",[50,50]],[[12883,12883],"mapped",[50,51]],[[12884,12884],"mapped",[50,52]],[[12885,12885],"mapped",[50,53]],[[12886,12886],"mapped",[50,54]],[[12887,12887],"mapped",[50,55]],[[12888,12888],"mapped",[50,56]],[[12889,12889],"mapped",[50,57]],[[12890,12890],"mapped",[51,48]],[[12891,12891],"mapped",[51,49]],[[12892,12892],"mapped",[51,50]],[[12893,12893],"mapped",[51,51]],[[12894,12894],"mapped",[51,52]],[[12895,12895],"mapped",[51,53]],[[12896,12896],"mapped",[4352]],[[12897,12897],"mapped",[4354]],[[12898,12898],"mapped",[4355]],[[12899,12899],"mapped",[4357]],[[12900,12900],"mapped",[4358]],[[12901,12901],"mapped",[4359]],[[12902,12902],"mapped",[4361]],[[12903,12903],"mapped",[4363]],[[12904,12904],"mapped",[4364]],[[12905,12905],"mapped",[4366]],[[12906,12906],"mapped",[4367]],[[12907,12907],"mapped",[4368]],[[12908,12908],"mapped",[4369]],[[12909,12909],"mapped",[4370]],[[12910,12910],"mapped",[44032]],[[12911,12911],"mapped",[45208]],[[12912,12912],"mapped",[45796]],[[12913,12913],"mapped",[46972]],[[12914,12914],"mapped",[47560]],[[12915,12915],"mapped",[48148]],[[12916,12916],"mapped",[49324]],[[12917,12917],"mapped",[50500]],[[12918,12918],"mapped",[51088]],[[12919,12919],"mapped",[52264]],[[12920,12920],"mapped",[52852]],[[12921,12921],"mapped",[53440]],[[12922,12922],"mapped",[54028]],[[12923,12923],"mapped",[54616]],[[12924,12924],"mapped",[52280,44256]],[[12925,12925],"mapped",[51452,51032]],[[12926,12926],"mapped",[50864]],[[12927,12927],"valid",[],"NV8"],[[12928,12928],"mapped",[19968]],[[12929,12929],"mapped",[20108]],[[12930,12930],"mapped",[19977]],[[12931,12931],"mapped",[22235]],[[12932,12932],"mapped",[20116]],[[12933,12933],"mapped",[20845]],[[12934,12934],"mapped",[19971]],[[12935,12935],"mapped",[20843]],[[12936,12936],"mapped",[20061]],[[12937,12937],"mapped",[21313]],[[12938,12938],"mapped",[26376]],[[12939,12939],"mapped",[28779]],[[12940,12940],"mapped",[27700]],[[12941,12941],"mapped",[26408]],[[12942,12942],"mapped",[37329]],[[12943,12943],"mapped",[22303]],[[12944,12944],"mapped",[26085]],[[12945,12945],"mapped",[26666]],[[12946,12946],"mapped",[26377]],[[12947,12947],"mapped",[31038]],[[12948,12948],"mapped",[21517]],[[12949,12949],"mapped",[29305]],[[12950,12950],"mapped",[36001]],[[12951,12951],"mapped",[31069]],[[12952,12952],"mapped",[21172]],[[12953,12953],"mapped",[31192]],[[12954,12954],"mapped",[30007]],[[12955,12955],"mapped",[22899]],[[12956,12956],"mapped",[36969]],[[12957,12957],"mapped",[20778]],[[12958,12958],"mapped",[21360]],[[12959,12959],"mapped",[27880]],[[12960,12960],"mapped",[38917]],[[12961,12961],"mapped",[20241]],[[12962,12962],"mapped",[20889]],[[12963,12963],"mapped",[27491]],[[12964,12964],"mapped",[19978]],[[12965,12965],"mapped",[20013]],[[12966,12966],"mapped",[19979]],[[12967,12967],"mapped",[24038]],[[12968,12968],"mapped",[21491]],[[12969,12969],"mapped",[21307]],[[12970,12970],"mapped",[23447]],[[12971,12971],"mapped",[23398]],[[12972,12972],"mapped",[30435]],[[12973,12973],"mapped",[20225]],[[12974,12974],"mapped",[36039]],[[12975,12975],"mapped",[21332]],[[12976,12976],"mapped",[22812]],[[12977,12977],"mapped",[51,54]],[[12978,12978],"mapped",[51,55]],[[12979,12979],"mapped",[51,56]],[[12980,12980],"mapped",[51,57]],[[12981,12981],"mapped",[52,48]],[[12982,12982],"mapped",[52,49]],[[12983,12983],"mapped",[52,50]],[[12984,12984],"mapped",[52,51]],[[12985,12985],"mapped",[52,52]],[[12986,12986],"mapped",[52,53]],[[12987,12987],"mapped",[52,54]],[[12988,12988],"mapped",[52,55]],[[12989,12989],"mapped",[52,56]],[[12990,12990],"mapped",[52,57]],[[12991,12991],"mapped",[53,48]],[[12992,12992],"mapped",[49,26376]],[[12993,12993],"mapped",[50,26376]],[[12994,12994],"mapped",[51,26376]],[[12995,12995],"mapped",[52,26376]],[[12996,12996],"mapped",[53,26376]],[[12997,12997],"mapped",[54,26376]],[[12998,12998],"mapped",[55,26376]],[[12999,12999],"mapped",[56,26376]],[[13000,13000],"mapped",[57,26376]],[[13001,13001],"mapped",[49,48,26376]],[[13002,13002],"mapped",[49,49,26376]],[[13003,13003],"mapped",[49,50,26376]],[[13004,13004],"mapped",[104,103]],[[13005,13005],"mapped",[101,114,103]],[[13006,13006],"mapped",[101,118]],[[13007,13007],"mapped",[108,116,100]],[[13008,13008],"mapped",[12450]],[[13009,13009],"mapped",[12452]],[[13010,13010],"mapped",[12454]],[[13011,13011],"mapped",[12456]],[[13012,13012],"mapped",[12458]],[[13013,13013],"mapped",[12459]],[[13014,13014],"mapped",[12461]],[[13015,13015],"mapped",[12463]],[[13016,13016],"mapped",[12465]],[[13017,13017],"mapped",[12467]],[[13018,13018],"mapped",[12469]],[[13019,13019],"mapped",[12471]],[[13020,13020],"mapped",[12473]],[[13021,13021],"mapped",[12475]],[[13022,13022],"mapped",[12477]],[[13023,13023],"mapped",[12479]],[[13024,13024],"mapped",[12481]],[[13025,13025],"mapped",[12484]],[[13026,13026],"mapped",[12486]],[[13027,13027],"mapped",[12488]],[[13028,13028],"mapped",[12490]],[[13029,13029],"mapped",[12491]],[[13030,13030],"mapped",[12492]],[[13031,13031],"mapped",[12493]],[[13032,13032],"mapped",[12494]],[[13033,13033],"mapped",[12495]],[[13034,13034],"mapped",[12498]],[[13035,13035],"mapped",[12501]],[[13036,13036],"mapped",[12504]],[[13037,13037],"mapped",[12507]],[[13038,13038],"mapped",[12510]],[[13039,13039],"mapped",[12511]],[[13040,13040],"mapped",[12512]],[[13041,13041],"mapped",[12513]],[[13042,13042],"mapped",[12514]],[[13043,13043],"mapped",[12516]],[[13044,13044],"mapped",[12518]],[[13045,13045],"mapped",[12520]],[[13046,13046],"mapped",[12521]],[[13047,13047],"mapped",[12522]],[[13048,13048],"mapped",[12523]],[[13049,13049],"mapped",[12524]],[[13050,13050],"mapped",[12525]],[[13051,13051],"mapped",[12527]],[[13052,13052],"mapped",[12528]],[[13053,13053],"mapped",[12529]],[[13054,13054],"mapped",[12530]],[[13055,13055],"disallowed"],[[13056,13056],"mapped",[12450,12497,12540,12488]],[[13057,13057],"mapped",[12450,12523,12501,12449]],[[13058,13058],"mapped",[12450,12531,12506,12450]],[[13059,13059],"mapped",[12450,12540,12523]],[[13060,13060],"mapped",[12452,12491,12531,12464]],[[13061,13061],"mapped",[12452,12531,12481]],[[13062,13062],"mapped",[12454,12457,12531]],[[13063,13063],"mapped",[12456,12473,12463,12540,12489]],[[13064,13064],"mapped",[12456,12540,12459,12540]],[[13065,13065],"mapped",[12458,12531,12473]],[[13066,13066],"mapped",[12458,12540,12512]],[[13067,13067],"mapped",[12459,12452,12522]],[[13068,13068],"mapped",[12459,12521,12483,12488]],[[13069,13069],"mapped",[12459,12525,12522,12540]],[[13070,13070],"mapped",[12460,12525,12531]],[[13071,13071],"mapped",[12460,12531,12510]],[[13072,13072],"mapped",[12462,12460]],[[13073,13073],"mapped",[12462,12491,12540]],[[13074,13074],"mapped",[12461,12517,12522,12540]],[[13075,13075],"mapped",[12462,12523,12480,12540]],[[13076,13076],"mapped",[12461,12525]],[[13077,13077],"mapped",[12461,12525,12464,12521,12512]],[[13078,13078],"mapped",[12461,12525,12513,12540,12488,12523]],[[13079,13079],"mapped",[12461,12525,12527,12483,12488]],[[13080,13080],"mapped",[12464,12521,12512]],[[13081,13081],"mapped",[12464,12521,12512,12488,12531]],[[13082,13082],"mapped",[12463,12523,12476,12452,12525]],[[13083,13083],"mapped",[12463,12525,12540,12493]],[[13084,13084],"mapped",[12465,12540,12473]],[[13085,13085],"mapped",[12467,12523,12490]],[[13086,13086],"mapped",[12467,12540,12509]],[[13087,13087],"mapped",[12469,12452,12463,12523]],[[13088,13088],"mapped",[12469,12531,12481,12540,12512]],[[13089,13089],"mapped",[12471,12522,12531,12464]],[[13090,13090],"mapped",[12475,12531,12481]],[[13091,13091],"mapped",[12475,12531,12488]],[[13092,13092],"mapped",[12480,12540,12473]],[[13093,13093],"mapped",[12487,12471]],[[13094,13094],"mapped",[12489,12523]],[[13095,13095],"mapped",[12488,12531]],[[13096,13096],"mapped",[12490,12494]],[[13097,13097],"mapped",[12494,12483,12488]],[[13098,13098],"mapped",[12495,12452,12484]],[[13099,13099],"mapped",[12497,12540,12475,12531,12488]],[[13100,13100],"mapped",[12497,12540,12484]],[[13101,13101],"mapped",[12496,12540,12524,12523]],[[13102,13102],"mapped",[12500,12450,12473,12488,12523]],[[13103,13103],"mapped",[12500,12463,12523]],[[13104,13104],"mapped",[12500,12467]],[[13105,13105],"mapped",[12499,12523]],[[13106,13106],"mapped",[12501,12449,12521,12483,12489]],[[13107,13107],"mapped",[12501,12451,12540,12488]],[[13108,13108],"mapped",[12502,12483,12471,12455,12523]],[[13109,13109],"mapped",[12501,12521,12531]],[[13110,13110],"mapped",[12504,12463,12479,12540,12523]],[[13111,13111],"mapped",[12506,12477]],[[13112,13112],"mapped",[12506,12491,12498]],[[13113,13113],"mapped",[12504,12523,12484]],[[13114,13114],"mapped",[12506,12531,12473]],[[13115,13115],"mapped",[12506,12540,12472]],[[13116,13116],"mapped",[12505,12540,12479]],[[13117,13117],"mapped",[12509,12452,12531,12488]],[[13118,13118],"mapped",[12508,12523,12488]],[[13119,13119],"mapped",[12507,12531]],[[13120,13120],"mapped",[12509,12531,12489]],[[13121,13121],"mapped",[12507,12540,12523]],[[13122,13122],"mapped",[12507,12540,12531]],[[13123,13123],"mapped",[12510,12452,12463,12525]],[[13124,13124],"mapped",[12510,12452,12523]],[[13125,13125],"mapped",[12510,12483,12495]],[[13126,13126],"mapped",[12510,12523,12463]],[[13127,13127],"mapped",[12510,12531,12471,12519,12531]],[[13128,13128],"mapped",[12511,12463,12525,12531]],[[13129,13129],"mapped",[12511,12522]],[[13130,13130],"mapped",[12511,12522,12496,12540,12523]],[[13131,13131],"mapped",[12513,12460]],[[13132,13132],"mapped",[12513,12460,12488,12531]],[[13133,13133],"mapped",[12513,12540,12488,12523]],[[13134,13134],"mapped",[12516,12540,12489]],[[13135,13135],"mapped",[12516,12540,12523]],[[13136,13136],"mapped",[12518,12450,12531]],[[13137,13137],"mapped",[12522,12483,12488,12523]],[[13138,13138],"mapped",[12522,12521]],[[13139,13139],"mapped",[12523,12500,12540]],[[13140,13140],"mapped",[12523,12540,12502,12523]],[[13141,13141],"mapped",[12524,12512]],[[13142,13142],"mapped",[12524,12531,12488,12466,12531]],[[13143,13143],"mapped",[12527,12483,12488]],[[13144,13144],"mapped",[48,28857]],[[13145,13145],"mapped",[49,28857]],[[13146,13146],"mapped",[50,28857]],[[13147,13147],"mapped",[51,28857]],[[13148,13148],"mapped",[52,28857]],[[13149,13149],"mapped",[53,28857]],[[13150,13150],"mapped",[54,28857]],[[13151,13151],"mapped",[55,28857]],[[13152,13152],"mapped",[56,28857]],[[13153,13153],"mapped",[57,28857]],[[13154,13154],"mapped",[49,48,28857]],[[13155,13155],"mapped",[49,49,28857]],[[13156,13156],"mapped",[49,50,28857]],[[13157,13157],"mapped",[49,51,28857]],[[13158,13158],"mapped",[49,52,28857]],[[13159,13159],"mapped",[49,53,28857]],[[13160,13160],"mapped",[49,54,28857]],[[13161,13161],"mapped",[49,55,28857]],[[13162,13162],"mapped",[49,56,28857]],[[13163,13163],"mapped",[49,57,28857]],[[13164,13164],"mapped",[50,48,28857]],[[13165,13165],"mapped",[50,49,28857]],[[13166,13166],"mapped",[50,50,28857]],[[13167,13167],"mapped",[50,51,28857]],[[13168,13168],"mapped",[50,52,28857]],[[13169,13169],"mapped",[104,112,97]],[[13170,13170],"mapped",[100,97]],[[13171,13171],"mapped",[97,117]],[[13172,13172],"mapped",[98,97,114]],[[13173,13173],"mapped",[111,118]],[[13174,13174],"mapped",[112,99]],[[13175,13175],"mapped",[100,109]],[[13176,13176],"mapped",[100,109,50]],[[13177,13177],"mapped",[100,109,51]],[[13178,13178],"mapped",[105,117]],[[13179,13179],"mapped",[24179,25104]],[[13180,13180],"mapped",[26157,21644]],[[13181,13181],"mapped",[22823,27491]],[[13182,13182],"mapped",[26126,27835]],[[13183,13183],"mapped",[26666,24335,20250,31038]],[[13184,13184],"mapped",[112,97]],[[13185,13185],"mapped",[110,97]],[[13186,13186],"mapped",[956,97]],[[13187,13187],"mapped",[109,97]],[[13188,13188],"mapped",[107,97]],[[13189,13189],"mapped",[107,98]],[[13190,13190],"mapped",[109,98]],[[13191,13191],"mapped",[103,98]],[[13192,13192],"mapped",[99,97,108]],[[13193,13193],"mapped",[107,99,97,108]],[[13194,13194],"mapped",[112,102]],[[13195,13195],"mapped",[110,102]],[[13196,13196],"mapped",[956,102]],[[13197,13197],"mapped",[956,103]],[[13198,13198],"mapped",[109,103]],[[13199,13199],"mapped",[107,103]],[[13200,13200],"mapped",[104,122]],[[13201,13201],"mapped",[107,104,122]],[[13202,13202],"mapped",[109,104,122]],[[13203,13203],"mapped",[103,104,122]],[[13204,13204],"mapped",[116,104,122]],[[13205,13205],"mapped",[956,108]],[[13206,13206],"mapped",[109,108]],[[13207,13207],"mapped",[100,108]],[[13208,13208],"mapped",[107,108]],[[13209,13209],"mapped",[102,109]],[[13210,13210],"mapped",[110,109]],[[13211,13211],"mapped",[956,109]],[[13212,13212],"mapped",[109,109]],[[13213,13213],"mapped",[99,109]],[[13214,13214],"mapped",[107,109]],[[13215,13215],"mapped",[109,109,50]],[[13216,13216],"mapped",[99,109,50]],[[13217,13217],"mapped",[109,50]],[[13218,13218],"mapped",[107,109,50]],[[13219,13219],"mapped",[109,109,51]],[[13220,13220],"mapped",[99,109,51]],[[13221,13221],"mapped",[109,51]],[[13222,13222],"mapped",[107,109,51]],[[13223,13223],"mapped",[109,8725,115]],[[13224,13224],"mapped",[109,8725,115,50]],[[13225,13225],"mapped",[112,97]],[[13226,13226],"mapped",[107,112,97]],[[13227,13227],"mapped",[109,112,97]],[[13228,13228],"mapped",[103,112,97]],[[13229,13229],"mapped",[114,97,100]],[[13230,13230],"mapped",[114,97,100,8725,115]],[[13231,13231],"mapped",[114,97,100,8725,115,50]],[[13232,13232],"mapped",[112,115]],[[13233,13233],"mapped",[110,115]],[[13234,13234],"mapped",[956,115]],[[13235,13235],"mapped",[109,115]],[[13236,13236],"mapped",[112,118]],[[13237,13237],"mapped",[110,118]],[[13238,13238],"mapped",[956,118]],[[13239,13239],"mapped",[109,118]],[[13240,13240],"mapped",[107,118]],[[13241,13241],"mapped",[109,118]],[[13242,13242],"mapped",[112,119]],[[13243,13243],"mapped",[110,119]],[[13244,13244],"mapped",[956,119]],[[13245,13245],"mapped",[109,119]],[[13246,13246],"mapped",[107,119]],[[13247,13247],"mapped",[109,119]],[[13248,13248],"mapped",[107,969]],[[13249,13249],"mapped",[109,969]],[[13250,13250],"disallowed"],[[13251,13251],"mapped",[98,113]],[[13252,13252],"mapped",[99,99]],[[13253,13253],"mapped",[99,100]],[[13254,13254],"mapped",[99,8725,107,103]],[[13255,13255],"disallowed"],[[13256,13256],"mapped",[100,98]],[[13257,13257],"mapped",[103,121]],[[13258,13258],"mapped",[104,97]],[[13259,13259],"mapped",[104,112]],[[13260,13260],"mapped",[105,110]],[[13261,13261],"mapped",[107,107]],[[13262,13262],"mapped",[107,109]],[[13263,13263],"mapped",[107,116]],[[13264,13264],"mapped",[108,109]],[[13265,13265],"mapped",[108,110]],[[13266,13266],"mapped",[108,111,103]],[[13267,13267],"mapped",[108,120]],[[13268,13268],"mapped",[109,98]],[[13269,13269],"mapped",[109,105,108]],[[13270,13270],"mapped",[109,111,108]],[[13271,13271],"mapped",[112,104]],[[13272,13272],"disallowed"],[[13273,13273],"mapped",[112,112,109]],[[13274,13274],"mapped",[112,114]],[[13275,13275],"mapped",[115,114]],[[13276,13276],"mapped",[115,118]],[[13277,13277],"mapped",[119,98]],[[13278,13278],"mapped",[118,8725,109]],[[13279,13279],"mapped",[97,8725,109]],[[13280,13280],"mapped",[49,26085]],[[13281,13281],"mapped",[50,26085]],[[13282,13282],"mapped",[51,26085]],[[13283,13283],"mapped",[52,26085]],[[13284,13284],"mapped",[53,26085]],[[13285,13285],"mapped",[54,26085]],[[13286,13286],"mapped",[55,26085]],[[13287,13287],"mapped",[56,26085]],[[13288,13288],"mapped",[57,26085]],[[13289,13289],"mapped",[49,48,26085]],[[13290,13290],"mapped",[49,49,26085]],[[13291,13291],"mapped",[49,50,26085]],[[13292,13292],"mapped",[49,51,26085]],[[13293,13293],"mapped",[49,52,26085]],[[13294,13294],"mapped",[49,53,26085]],[[13295,13295],"mapped",[49,54,26085]],[[13296,13296],"mapped",[49,55,26085]],[[13297,13297],"mapped",[49,56,26085]],[[13298,13298],"mapped",[49,57,26085]],[[13299,13299],"mapped",[50,48,26085]],[[13300,13300],"mapped",[50,49,26085]],[[13301,13301],"mapped",[50,50,26085]],[[13302,13302],"mapped",[50,51,26085]],[[13303,13303],"mapped",[50,52,26085]],[[13304,13304],"mapped",[50,53,26085]],[[13305,13305],"mapped",[50,54,26085]],[[13306,13306],"mapped",[50,55,26085]],[[13307,13307],"mapped",[50,56,26085]],[[13308,13308],"mapped",[50,57,26085]],[[13309,13309],"mapped",[51,48,26085]],[[13310,13310],"mapped",[51,49,26085]],[[13311,13311],"mapped",[103,97,108]],[[13312,19893],"valid"],[[19894,19903],"disallowed"],[[19904,19967],"valid",[],"NV8"],[[19968,40869],"valid"],[[40870,40891],"valid"],[[40892,40899],"valid"],[[40900,40907],"valid"],[[40908,40908],"valid"],[[40909,40917],"valid"],[[40918,40959],"disallowed"],[[40960,42124],"valid"],[[42125,42127],"disallowed"],[[42128,42145],"valid",[],"NV8"],[[42146,42147],"valid",[],"NV8"],[[42148,42163],"valid",[],"NV8"],[[42164,42164],"valid",[],"NV8"],[[42165,42176],"valid",[],"NV8"],[[42177,42177],"valid",[],"NV8"],[[42178,42180],"valid",[],"NV8"],[[42181,42181],"valid",[],"NV8"],[[42182,42182],"valid",[],"NV8"],[[42183,42191],"disallowed"],[[42192,42237],"valid"],[[42238,42239],"valid",[],"NV8"],[[42240,42508],"valid"],[[42509,42511],"valid",[],"NV8"],[[42512,42539],"valid"],[[42540,42559],"disallowed"],[[42560,42560],"mapped",[42561]],[[42561,42561],"valid"],[[42562,42562],"mapped",[42563]],[[42563,42563],"valid"],[[42564,42564],"mapped",[42565]],[[42565,42565],"valid"],[[42566,42566],"mapped",[42567]],[[42567,42567],"valid"],[[42568,42568],"mapped",[42569]],[[42569,42569],"valid"],[[42570,42570],"mapped",[42571]],[[42571,42571],"valid"],[[42572,42572],"mapped",[42573]],[[42573,42573],"valid"],[[42574,42574],"mapped",[42575]],[[42575,42575],"valid"],[[42576,42576],"mapped",[42577]],[[42577,42577],"valid"],[[42578,42578],"mapped",[42579]],[[42579,42579],"valid"],[[42580,42580],"mapped",[42581]],[[42581,42581],"valid"],[[42582,42582],"mapped",[42583]],[[42583,42583],"valid"],[[42584,42584],"mapped",[42585]],[[42585,42585],"valid"],[[42586,42586],"mapped",[42587]],[[42587,42587],"valid"],[[42588,42588],"mapped",[42589]],[[42589,42589],"valid"],[[42590,42590],"mapped",[42591]],[[42591,42591],"valid"],[[42592,42592],"mapped",[42593]],[[42593,42593],"valid"],[[42594,42594],"mapped",[42595]],[[42595,42595],"valid"],[[42596,42596],"mapped",[42597]],[[42597,42597],"valid"],[[42598,42598],"mapped",[42599]],[[42599,42599],"valid"],[[42600,42600],"mapped",[42601]],[[42601,42601],"valid"],[[42602,42602],"mapped",[42603]],[[42603,42603],"valid"],[[42604,42604],"mapped",[42605]],[[42605,42607],"valid"],[[42608,42611],"valid",[],"NV8"],[[42612,42619],"valid"],[[42620,42621],"valid"],[[42622,42622],"valid",[],"NV8"],[[42623,42623],"valid"],[[42624,42624],"mapped",[42625]],[[42625,42625],"valid"],[[42626,42626],"mapped",[42627]],[[42627,42627],"valid"],[[42628,42628],"mapped",[42629]],[[42629,42629],"valid"],[[42630,42630],"mapped",[42631]],[[42631,42631],"valid"],[[42632,42632],"mapped",[42633]],[[42633,42633],"valid"],[[42634,42634],"mapped",[42635]],[[42635,42635],"valid"],[[42636,42636],"mapped",[42637]],[[42637,42637],"valid"],[[42638,42638],"mapped",[42639]],[[42639,42639],"valid"],[[42640,42640],"mapped",[42641]],[[42641,42641],"valid"],[[42642,42642],"mapped",[42643]],[[42643,42643],"valid"],[[42644,42644],"mapped",[42645]],[[42645,42645],"valid"],[[42646,42646],"mapped",[42647]],[[42647,42647],"valid"],[[42648,42648],"mapped",[42649]],[[42649,42649],"valid"],[[42650,42650],"mapped",[42651]],[[42651,42651],"valid"],[[42652,42652],"mapped",[1098]],[[42653,42653],"mapped",[1100]],[[42654,42654],"valid"],[[42655,42655],"valid"],[[42656,42725],"valid"],[[42726,42735],"valid",[],"NV8"],[[42736,42737],"valid"],[[42738,42743],"valid",[],"NV8"],[[42744,42751],"disallowed"],[[42752,42774],"valid",[],"NV8"],[[42775,42778],"valid"],[[42779,42783],"valid"],[[42784,42785],"valid",[],"NV8"],[[42786,42786],"mapped",[42787]],[[42787,42787],"valid"],[[42788,42788],"mapped",[42789]],[[42789,42789],"valid"],[[42790,42790],"mapped",[42791]],[[42791,42791],"valid"],[[42792,42792],"mapped",[42793]],[[42793,42793],"valid"],[[42794,42794],"mapped",[42795]],[[42795,42795],"valid"],[[42796,42796],"mapped",[42797]],[[42797,42797],"valid"],[[42798,42798],"mapped",[42799]],[[42799,42801],"valid"],[[42802,42802],"mapped",[42803]],[[42803,42803],"valid"],[[42804,42804],"mapped",[42805]],[[42805,42805],"valid"],[[42806,42806],"mapped",[42807]],[[42807,42807],"valid"],[[42808,42808],"mapped",[42809]],[[42809,42809],"valid"],[[42810,42810],"mapped",[42811]],[[42811,42811],"valid"],[[42812,42812],"mapped",[42813]],[[42813,42813],"valid"],[[42814,42814],"mapped",[42815]],[[42815,42815],"valid"],[[42816,42816],"mapped",[42817]],[[42817,42817],"valid"],[[42818,42818],"mapped",[42819]],[[42819,42819],"valid"],[[42820,42820],"mapped",[42821]],[[42821,42821],"valid"],[[42822,42822],"mapped",[42823]],[[42823,42823],"valid"],[[42824,42824],"mapped",[42825]],[[42825,42825],"valid"],[[42826,42826],"mapped",[42827]],[[42827,42827],"valid"],[[42828,42828],"mapped",[42829]],[[42829,42829],"valid"],[[42830,42830],"mapped",[42831]],[[42831,42831],"valid"],[[42832,42832],"mapped",[42833]],[[42833,42833],"valid"],[[42834,42834],"mapped",[42835]],[[42835,42835],"valid"],[[42836,42836],"mapped",[42837]],[[42837,42837],"valid"],[[42838,42838],"mapped",[42839]],[[42839,42839],"valid"],[[42840,42840],"mapped",[42841]],[[42841,42841],"valid"],[[42842,42842],"mapped",[42843]],[[42843,42843],"valid"],[[42844,42844],"mapped",[42845]],[[42845,42845],"valid"],[[42846,42846],"mapped",[42847]],[[42847,42847],"valid"],[[42848,42848],"mapped",[42849]],[[42849,42849],"valid"],[[42850,42850],"mapped",[42851]],[[42851,42851],"valid"],[[42852,42852],"mapped",[42853]],[[42853,42853],"valid"],[[42854,42854],"mapped",[42855]],[[42855,42855],"valid"],[[42856,42856],"mapped",[42857]],[[42857,42857],"valid"],[[42858,42858],"mapped",[42859]],[[42859,42859],"valid"],[[42860,42860],"mapped",[42861]],[[42861,42861],"valid"],[[42862,42862],"mapped",[42863]],[[42863,42863],"valid"],[[42864,42864],"mapped",[42863]],[[42865,42872],"valid"],[[42873,42873],"mapped",[42874]],[[42874,42874],"valid"],[[42875,42875],"mapped",[42876]],[[42876,42876],"valid"],[[42877,42877],"mapped",[7545]],[[42878,42878],"mapped",[42879]],[[42879,42879],"valid"],[[42880,42880],"mapped",[42881]],[[42881,42881],"valid"],[[42882,42882],"mapped",[42883]],[[42883,42883],"valid"],[[42884,42884],"mapped",[42885]],[[42885,42885],"valid"],[[42886,42886],"mapped",[42887]],[[42887,42888],"valid"],[[42889,42890],"valid",[],"NV8"],[[42891,42891],"mapped",[42892]],[[42892,42892],"valid"],[[42893,42893],"mapped",[613]],[[42894,42894],"valid"],[[42895,42895],"valid"],[[42896,42896],"mapped",[42897]],[[42897,42897],"valid"],[[42898,42898],"mapped",[42899]],[[42899,42899],"valid"],[[42900,42901],"valid"],[[42902,42902],"mapped",[42903]],[[42903,42903],"valid"],[[42904,42904],"mapped",[42905]],[[42905,42905],"valid"],[[42906,42906],"mapped",[42907]],[[42907,42907],"valid"],[[42908,42908],"mapped",[42909]],[[42909,42909],"valid"],[[42910,42910],"mapped",[42911]],[[42911,42911],"valid"],[[42912,42912],"mapped",[42913]],[[42913,42913],"valid"],[[42914,42914],"mapped",[42915]],[[42915,42915],"valid"],[[42916,42916],"mapped",[42917]],[[42917,42917],"valid"],[[42918,42918],"mapped",[42919]],[[42919,42919],"valid"],[[42920,42920],"mapped",[42921]],[[42921,42921],"valid"],[[42922,42922],"mapped",[614]],[[42923,42923],"mapped",[604]],[[42924,42924],"mapped",[609]],[[42925,42925],"mapped",[620]],[[42926,42927],"disallowed"],[[42928,42928],"mapped",[670]],[[42929,42929],"mapped",[647]],[[42930,42930],"mapped",[669]],[[42931,42931],"mapped",[43859]],[[42932,42932],"mapped",[42933]],[[42933,42933],"valid"],[[42934,42934],"mapped",[42935]],[[42935,42935],"valid"],[[42936,42998],"disallowed"],[[42999,42999],"valid"],[[43000,43000],"mapped",[295]],[[43001,43001],"mapped",[339]],[[43002,43002],"valid"],[[43003,43007],"valid"],[[43008,43047],"valid"],[[43048,43051],"valid",[],"NV8"],[[43052,43055],"disallowed"],[[43056,43065],"valid",[],"NV8"],[[43066,43071],"disallowed"],[[43072,43123],"valid"],[[43124,43127],"valid",[],"NV8"],[[43128,43135],"disallowed"],[[43136,43204],"valid"],[[43205,43213],"disallowed"],[[43214,43215],"valid",[],"NV8"],[[43216,43225],"valid"],[[43226,43231],"disallowed"],[[43232,43255],"valid"],[[43256,43258],"valid",[],"NV8"],[[43259,43259],"valid"],[[43260,43260],"valid",[],"NV8"],[[43261,43261],"valid"],[[43262,43263],"disallowed"],[[43264,43309],"valid"],[[43310,43311],"valid",[],"NV8"],[[43312,43347],"valid"],[[43348,43358],"disallowed"],[[43359,43359],"valid",[],"NV8"],[[43360,43388],"valid",[],"NV8"],[[43389,43391],"disallowed"],[[43392,43456],"valid"],[[43457,43469],"valid",[],"NV8"],[[43470,43470],"disallowed"],[[43471,43481],"valid"],[[43482,43485],"disallowed"],[[43486,43487],"valid",[],"NV8"],[[43488,43518],"valid"],[[43519,43519],"disallowed"],[[43520,43574],"valid"],[[43575,43583],"disallowed"],[[43584,43597],"valid"],[[43598,43599],"disallowed"],[[43600,43609],"valid"],[[43610,43611],"disallowed"],[[43612,43615],"valid",[],"NV8"],[[43616,43638],"valid"],[[43639,43641],"valid",[],"NV8"],[[43642,43643],"valid"],[[43644,43647],"valid"],[[43648,43714],"valid"],[[43715,43738],"disallowed"],[[43739,43741],"valid"],[[43742,43743],"valid",[],"NV8"],[[43744,43759],"valid"],[[43760,43761],"valid",[],"NV8"],[[43762,43766],"valid"],[[43767,43776],"disallowed"],[[43777,43782],"valid"],[[43783,43784],"disallowed"],[[43785,43790],"valid"],[[43791,43792],"disallowed"],[[43793,43798],"valid"],[[43799,43807],"disallowed"],[[43808,43814],"valid"],[[43815,43815],"disallowed"],[[43816,43822],"valid"],[[43823,43823],"disallowed"],[[43824,43866],"valid"],[[43867,43867],"valid",[],"NV8"],[[43868,43868],"mapped",[42791]],[[43869,43869],"mapped",[43831]],[[43870,43870],"mapped",[619]],[[43871,43871],"mapped",[43858]],[[43872,43875],"valid"],[[43876,43877],"valid"],[[43878,43887],"disallowed"],[[43888,43888],"mapped",[5024]],[[43889,43889],"mapped",[5025]],[[43890,43890],"mapped",[5026]],[[43891,43891],"mapped",[5027]],[[43892,43892],"mapped",[5028]],[[43893,43893],"mapped",[5029]],[[43894,43894],"mapped",[5030]],[[43895,43895],"mapped",[5031]],[[43896,43896],"mapped",[5032]],[[43897,43897],"mapped",[5033]],[[43898,43898],"mapped",[5034]],[[43899,43899],"mapped",[5035]],[[43900,43900],"mapped",[5036]],[[43901,43901],"mapped",[5037]],[[43902,43902],"mapped",[5038]],[[43903,43903],"mapped",[5039]],[[43904,43904],"mapped",[5040]],[[43905,43905],"mapped",[5041]],[[43906,43906],"mapped",[5042]],[[43907,43907],"mapped",[5043]],[[43908,43908],"mapped",[5044]],[[43909,43909],"mapped",[5045]],[[43910,43910],"mapped",[5046]],[[43911,43911],"mapped",[5047]],[[43912,43912],"mapped",[5048]],[[43913,43913],"mapped",[5049]],[[43914,43914],"mapped",[5050]],[[43915,43915],"mapped",[5051]],[[43916,43916],"mapped",[5052]],[[43917,43917],"mapped",[5053]],[[43918,43918],"mapped",[5054]],[[43919,43919],"mapped",[5055]],[[43920,43920],"mapped",[5056]],[[43921,43921],"mapped",[5057]],[[43922,43922],"mapped",[5058]],[[43923,43923],"mapped",[5059]],[[43924,43924],"mapped",[5060]],[[43925,43925],"mapped",[5061]],[[43926,43926],"mapped",[5062]],[[43927,43927],"mapped",[5063]],[[43928,43928],"mapped",[5064]],[[43929,43929],"mapped",[5065]],[[43930,43930],"mapped",[5066]],[[43931,43931],"mapped",[5067]],[[43932,43932],"mapped",[5068]],[[43933,43933],"mapped",[5069]],[[43934,43934],"mapped",[5070]],[[43935,43935],"mapped",[5071]],[[43936,43936],"mapped",[5072]],[[43937,43937],"mapped",[5073]],[[43938,43938],"mapped",[5074]],[[43939,43939],"mapped",[5075]],[[43940,43940],"mapped",[5076]],[[43941,43941],"mapped",[5077]],[[43942,43942],"mapped",[5078]],[[43943,43943],"mapped",[5079]],[[43944,43944],"mapped",[5080]],[[43945,43945],"mapped",[5081]],[[43946,43946],"mapped",[5082]],[[43947,43947],"mapped",[5083]],[[43948,43948],"mapped",[5084]],[[43949,43949],"mapped",[5085]],[[43950,43950],"mapped",[5086]],[[43951,43951],"mapped",[5087]],[[43952,43952],"mapped",[5088]],[[43953,43953],"mapped",[5089]],[[43954,43954],"mapped",[5090]],[[43955,43955],"mapped",[5091]],[[43956,43956],"mapped",[5092]],[[43957,43957],"mapped",[5093]],[[43958,43958],"mapped",[5094]],[[43959,43959],"mapped",[5095]],[[43960,43960],"mapped",[5096]],[[43961,43961],"mapped",[5097]],[[43962,43962],"mapped",[5098]],[[43963,43963],"mapped",[5099]],[[43964,43964],"mapped",[5100]],[[43965,43965],"mapped",[5101]],[[43966,43966],"mapped",[5102]],[[43967,43967],"mapped",[5103]],[[43968,44010],"valid"],[[44011,44011],"valid",[],"NV8"],[[44012,44013],"valid"],[[44014,44015],"disallowed"],[[44016,44025],"valid"],[[44026,44031],"disallowed"],[[44032,55203],"valid"],[[55204,55215],"disallowed"],[[55216,55238],"valid",[],"NV8"],[[55239,55242],"disallowed"],[[55243,55291],"valid",[],"NV8"],[[55292,55295],"disallowed"],[[55296,57343],"disallowed"],[[57344,63743],"disallowed"],[[63744,63744],"mapped",[35912]],[[63745,63745],"mapped",[26356]],[[63746,63746],"mapped",[36554]],[[63747,63747],"mapped",[36040]],[[63748,63748],"mapped",[28369]],[[63749,63749],"mapped",[20018]],[[63750,63750],"mapped",[21477]],[[63751,63752],"mapped",[40860]],[[63753,63753],"mapped",[22865]],[[63754,63754],"mapped",[37329]],[[63755,63755],"mapped",[21895]],[[63756,63756],"mapped",[22856]],[[63757,63757],"mapped",[25078]],[[63758,63758],"mapped",[30313]],[[63759,63759],"mapped",[32645]],[[63760,63760],"mapped",[34367]],[[63761,63761],"mapped",[34746]],[[63762,63762],"mapped",[35064]],[[63763,63763],"mapped",[37007]],[[63764,63764],"mapped",[27138]],[[63765,63765],"mapped",[27931]],[[63766,63766],"mapped",[28889]],[[63767,63767],"mapped",[29662]],[[63768,63768],"mapped",[33853]],[[63769,63769],"mapped",[37226]],[[63770,63770],"mapped",[39409]],[[63771,63771],"mapped",[20098]],[[63772,63772],"mapped",[21365]],[[63773,63773],"mapped",[27396]],[[63774,63774],"mapped",[29211]],[[63775,63775],"mapped",[34349]],[[63776,63776],"mapped",[40478]],[[63777,63777],"mapped",[23888]],[[63778,63778],"mapped",[28651]],[[63779,63779],"mapped",[34253]],[[63780,63780],"mapped",[35172]],[[63781,63781],"mapped",[25289]],[[63782,63782],"mapped",[33240]],[[63783,63783],"mapped",[34847]],[[63784,63784],"mapped",[24266]],[[63785,63785],"mapped",[26391]],[[63786,63786],"mapped",[28010]],[[63787,63787],"mapped",[29436]],[[63788,63788],"mapped",[37070]],[[63789,63789],"mapped",[20358]],[[63790,63790],"mapped",[20919]],[[63791,63791],"mapped",[21214]],[[63792,63792],"mapped",[25796]],[[63793,63793],"mapped",[27347]],[[63794,63794],"mapped",[29200]],[[63795,63795],"mapped",[30439]],[[63796,63796],"mapped",[32769]],[[63797,63797],"mapped",[34310]],[[63798,63798],"mapped",[34396]],[[63799,63799],"mapped",[36335]],[[63800,63800],"mapped",[38706]],[[63801,63801],"mapped",[39791]],[[63802,63802],"mapped",[40442]],[[63803,63803],"mapped",[30860]],[[63804,63804],"mapped",[31103]],[[63805,63805],"mapped",[32160]],[[63806,63806],"mapped",[33737]],[[63807,63807],"mapped",[37636]],[[63808,63808],"mapped",[40575]],[[63809,63809],"mapped",[35542]],[[63810,63810],"mapped",[22751]],[[63811,63811],"mapped",[24324]],[[63812,63812],"mapped",[31840]],[[63813,63813],"mapped",[32894]],[[63814,63814],"mapped",[29282]],[[63815,63815],"mapped",[30922]],[[63816,63816],"mapped",[36034]],[[63817,63817],"mapped",[38647]],[[63818,63818],"mapped",[22744]],[[63819,63819],"mapped",[23650]],[[63820,63820],"mapped",[27155]],[[63821,63821],"mapped",[28122]],[[63822,63822],"mapped",[28431]],[[63823,63823],"mapped",[32047]],[[63824,63824],"mapped",[32311]],[[63825,63825],"mapped",[38475]],[[63826,63826],"mapped",[21202]],[[63827,63827],"mapped",[32907]],[[63828,63828],"mapped",[20956]],[[63829,63829],"mapped",[20940]],[[63830,63830],"mapped",[31260]],[[63831,63831],"mapped",[32190]],[[63832,63832],"mapped",[33777]],[[63833,63833],"mapped",[38517]],[[63834,63834],"mapped",[35712]],[[63835,63835],"mapped",[25295]],[[63836,63836],"mapped",[27138]],[[63837,63837],"mapped",[35582]],[[63838,63838],"mapped",[20025]],[[63839,63839],"mapped",[23527]],[[63840,63840],"mapped",[24594]],[[63841,63841],"mapped",[29575]],[[63842,63842],"mapped",[30064]],[[63843,63843],"mapped",[21271]],[[63844,63844],"mapped",[30971]],[[63845,63845],"mapped",[20415]],[[63846,63846],"mapped",[24489]],[[63847,63847],"mapped",[19981]],[[63848,63848],"mapped",[27852]],[[63849,63849],"mapped",[25976]],[[63850,63850],"mapped",[32034]],[[63851,63851],"mapped",[21443]],[[63852,63852],"mapped",[22622]],[[63853,63853],"mapped",[30465]],[[63854,63854],"mapped",[33865]],[[63855,63855],"mapped",[35498]],[[63856,63856],"mapped",[27578]],[[63857,63857],"mapped",[36784]],[[63858,63858],"mapped",[27784]],[[63859,63859],"mapped",[25342]],[[63860,63860],"mapped",[33509]],[[63861,63861],"mapped",[25504]],[[63862,63862],"mapped",[30053]],[[63863,63863],"mapped",[20142]],[[63864,63864],"mapped",[20841]],[[63865,63865],"mapped",[20937]],[[63866,63866],"mapped",[26753]],[[63867,63867],"mapped",[31975]],[[63868,63868],"mapped",[33391]],[[63869,63869],"mapped",[35538]],[[63870,63870],"mapped",[37327]],[[63871,63871],"mapped",[21237]],[[63872,63872],"mapped",[21570]],[[63873,63873],"mapped",[22899]],[[63874,63874],"mapped",[24300]],[[63875,63875],"mapped",[26053]],[[63876,63876],"mapped",[28670]],[[63877,63877],"mapped",[31018]],[[63878,63878],"mapped",[38317]],[[63879,63879],"mapped",[39530]],[[63880,63880],"mapped",[40599]],[[63881,63881],"mapped",[40654]],[[63882,63882],"mapped",[21147]],[[63883,63883],"mapped",[26310]],[[63884,63884],"mapped",[27511]],[[63885,63885],"mapped",[36706]],[[63886,63886],"mapped",[24180]],[[63887,63887],"mapped",[24976]],[[63888,63888],"mapped",[25088]],[[63889,63889],"mapped",[25754]],[[63890,63890],"mapped",[28451]],[[63891,63891],"mapped",[29001]],[[63892,63892],"mapped",[29833]],[[63893,63893],"mapped",[31178]],[[63894,63894],"mapped",[32244]],[[63895,63895],"mapped",[32879]],[[63896,63896],"mapped",[36646]],[[63897,63897],"mapped",[34030]],[[63898,63898],"mapped",[36899]],[[63899,63899],"mapped",[37706]],[[63900,63900],"mapped",[21015]],[[63901,63901],"mapped",[21155]],[[63902,63902],"mapped",[21693]],[[63903,63903],"mapped",[28872]],[[63904,63904],"mapped",[35010]],[[63905,63905],"mapped",[35498]],[[63906,63906],"mapped",[24265]],[[63907,63907],"mapped",[24565]],[[63908,63908],"mapped",[25467]],[[63909,63909],"mapped",[27566]],[[63910,63910],"mapped",[31806]],[[63911,63911],"mapped",[29557]],[[63912,63912],"mapped",[20196]],[[63913,63913],"mapped",[22265]],[[63914,63914],"mapped",[23527]],[[63915,63915],"mapped",[23994]],[[63916,63916],"mapped",[24604]],[[63917,63917],"mapped",[29618]],[[63918,63918],"mapped",[29801]],[[63919,63919],"mapped",[32666]],[[63920,63920],"mapped",[32838]],[[63921,63921],"mapped",[37428]],[[63922,63922],"mapped",[38646]],[[63923,63923],"mapped",[38728]],[[63924,63924],"mapped",[38936]],[[63925,63925],"mapped",[20363]],[[63926,63926],"mapped",[31150]],[[63927,63927],"mapped",[37300]],[[63928,63928],"mapped",[38584]],[[63929,63929],"mapped",[24801]],[[63930,63930],"mapped",[20102]],[[63931,63931],"mapped",[20698]],[[63932,63932],"mapped",[23534]],[[63933,63933],"mapped",[23615]],[[63934,63934],"mapped",[26009]],[[63935,63935],"mapped",[27138]],[[63936,63936],"mapped",[29134]],[[63937,63937],"mapped",[30274]],[[63938,63938],"mapped",[34044]],[[63939,63939],"mapped",[36988]],[[63940,63940],"mapped",[40845]],[[63941,63941],"mapped",[26248]],[[63942,63942],"mapped",[38446]],[[63943,63943],"mapped",[21129]],[[63944,63944],"mapped",[26491]],[[63945,63945],"mapped",[26611]],[[63946,63946],"mapped",[27969]],[[63947,63947],"mapped",[28316]],[[63948,63948],"mapped",[29705]],[[63949,63949],"mapped",[30041]],[[63950,63950],"mapped",[30827]],[[63951,63951],"mapped",[32016]],[[63952,63952],"mapped",[39006]],[[63953,63953],"mapped",[20845]],[[63954,63954],"mapped",[25134]],[[63955,63955],"mapped",[38520]],[[63956,63956],"mapped",[20523]],[[63957,63957],"mapped",[23833]],[[63958,63958],"mapped",[28138]],[[63959,63959],"mapped",[36650]],[[63960,63960],"mapped",[24459]],[[63961,63961],"mapped",[24900]],[[63962,63962],"mapped",[26647]],[[63963,63963],"mapped",[29575]],[[63964,63964],"mapped",[38534]],[[63965,63965],"mapped",[21033]],[[63966,63966],"mapped",[21519]],[[63967,63967],"mapped",[23653]],[[63968,63968],"mapped",[26131]],[[63969,63969],"mapped",[26446]],[[63970,63970],"mapped",[26792]],[[63971,63971],"mapped",[27877]],[[63972,63972],"mapped",[29702]],[[63973,63973],"mapped",[30178]],[[63974,63974],"mapped",[32633]],[[63975,63975],"mapped",[35023]],[[63976,63976],"mapped",[35041]],[[63977,63977],"mapped",[37324]],[[63978,63978],"mapped",[38626]],[[63979,63979],"mapped",[21311]],[[63980,63980],"mapped",[28346]],[[63981,63981],"mapped",[21533]],[[63982,63982],"mapped",[29136]],[[63983,63983],"mapped",[29848]],[[63984,63984],"mapped",[34298]],[[63985,63985],"mapped",[38563]],[[63986,63986],"mapped",[40023]],[[63987,63987],"mapped",[40607]],[[63988,63988],"mapped",[26519]],[[63989,63989],"mapped",[28107]],[[63990,63990],"mapped",[33256]],[[63991,63991],"mapped",[31435]],[[63992,63992],"mapped",[31520]],[[63993,63993],"mapped",[31890]],[[63994,63994],"mapped",[29376]],[[63995,63995],"mapped",[28825]],[[63996,63996],"mapped",[35672]],[[63997,63997],"mapped",[20160]],[[63998,63998],"mapped",[33590]],[[63999,63999],"mapped",[21050]],[[64000,64000],"mapped",[20999]],[[64001,64001],"mapped",[24230]],[[64002,64002],"mapped",[25299]],[[64003,64003],"mapped",[31958]],[[64004,64004],"mapped",[23429]],[[64005,64005],"mapped",[27934]],[[64006,64006],"mapped",[26292]],[[64007,64007],"mapped",[36667]],[[64008,64008],"mapped",[34892]],[[64009,64009],"mapped",[38477]],[[64010,64010],"mapped",[35211]],[[64011,64011],"mapped",[24275]],[[64012,64012],"mapped",[20800]],[[64013,64013],"mapped",[21952]],[[64014,64015],"valid"],[[64016,64016],"mapped",[22618]],[[64017,64017],"valid"],[[64018,64018],"mapped",[26228]],[[64019,64020],"valid"],[[64021,64021],"mapped",[20958]],[[64022,64022],"mapped",[29482]],[[64023,64023],"mapped",[30410]],[[64024,64024],"mapped",[31036]],[[64025,64025],"mapped",[31070]],[[64026,64026],"mapped",[31077]],[[64027,64027],"mapped",[31119]],[[64028,64028],"mapped",[38742]],[[64029,64029],"mapped",[31934]],[[64030,64030],"mapped",[32701]],[[64031,64031],"valid"],[[64032,64032],"mapped",[34322]],[[64033,64033],"valid"],[[64034,64034],"mapped",[35576]],[[64035,64036],"valid"],[[64037,64037],"mapped",[36920]],[[64038,64038],"mapped",[37117]],[[64039,64041],"valid"],[[64042,64042],"mapped",[39151]],[[64043,64043],"mapped",[39164]],[[64044,64044],"mapped",[39208]],[[64045,64045],"mapped",[40372]],[[64046,64046],"mapped",[37086]],[[64047,64047],"mapped",[38583]],[[64048,64048],"mapped",[20398]],[[64049,64049],"mapped",[20711]],[[64050,64050],"mapped",[20813]],[[64051,64051],"mapped",[21193]],[[64052,64052],"mapped",[21220]],[[64053,64053],"mapped",[21329]],[[64054,64054],"mapped",[21917]],[[64055,64055],"mapped",[22022]],[[64056,64056],"mapped",[22120]],[[64057,64057],"mapped",[22592]],[[64058,64058],"mapped",[22696]],[[64059,64059],"mapped",[23652]],[[64060,64060],"mapped",[23662]],[[64061,64061],"mapped",[24724]],[[64062,64062],"mapped",[24936]],[[64063,64063],"mapped",[24974]],[[64064,64064],"mapped",[25074]],[[64065,64065],"mapped",[25935]],[[64066,64066],"mapped",[26082]],[[64067,64067],"mapped",[26257]],[[64068,64068],"mapped",[26757]],[[64069,64069],"mapped",[28023]],[[64070,64070],"mapped",[28186]],[[64071,64071],"mapped",[28450]],[[64072,64072],"mapped",[29038]],[[64073,64073],"mapped",[29227]],[[64074,64074],"mapped",[29730]],[[64075,64075],"mapped",[30865]],[[64076,64076],"mapped",[31038]],[[64077,64077],"mapped",[31049]],[[64078,64078],"mapped",[31048]],[[64079,64079],"mapped",[31056]],[[64080,64080],"mapped",[31062]],[[64081,64081],"mapped",[31069]],[[64082,64082],"mapped",[31117]],[[64083,64083],"mapped",[31118]],[[64084,64084],"mapped",[31296]],[[64085,64085],"mapped",[31361]],[[64086,64086],"mapped",[31680]],[[64087,64087],"mapped",[32244]],[[64088,64088],"mapped",[32265]],[[64089,64089],"mapped",[32321]],[[64090,64090],"mapped",[32626]],[[64091,64091],"mapped",[32773]],[[64092,64092],"mapped",[33261]],[[64093,64094],"mapped",[33401]],[[64095,64095],"mapped",[33879]],[[64096,64096],"mapped",[35088]],[[64097,64097],"mapped",[35222]],[[64098,64098],"mapped",[35585]],[[64099,64099],"mapped",[35641]],[[64100,64100],"mapped",[36051]],[[64101,64101],"mapped",[36104]],[[64102,64102],"mapped",[36790]],[[64103,64103],"mapped",[36920]],[[64104,64104],"mapped",[38627]],[[64105,64105],"mapped",[38911]],[[64106,64106],"mapped",[38971]],[[64107,64107],"mapped",[24693]],[[64108,64108],"mapped",[148206]],[[64109,64109],"mapped",[33304]],[[64110,64111],"disallowed"],[[64112,64112],"mapped",[20006]],[[64113,64113],"mapped",[20917]],[[64114,64114],"mapped",[20840]],[[64115,64115],"mapped",[20352]],[[64116,64116],"mapped",[20805]],[[64117,64117],"mapped",[20864]],[[64118,64118],"mapped",[21191]],[[64119,64119],"mapped",[21242]],[[64120,64120],"mapped",[21917]],[[64121,64121],"mapped",[21845]],[[64122,64122],"mapped",[21913]],[[64123,64123],"mapped",[21986]],[[64124,64124],"mapped",[22618]],[[64125,64125],"mapped",[22707]],[[64126,64126],"mapped",[22852]],[[64127,64127],"mapped",[22868]],[[64128,64128],"mapped",[23138]],[[64129,64129],"mapped",[23336]],[[64130,64130],"mapped",[24274]],[[64131,64131],"mapped",[24281]],[[64132,64132],"mapped",[24425]],[[64133,64133],"mapped",[24493]],[[64134,64134],"mapped",[24792]],[[64135,64135],"mapped",[24910]],[[64136,64136],"mapped",[24840]],[[64137,64137],"mapped",[24974]],[[64138,64138],"mapped",[24928]],[[64139,64139],"mapped",[25074]],[[64140,64140],"mapped",[25140]],[[64141,64141],"mapped",[25540]],[[64142,64142],"mapped",[25628]],[[64143,64143],"mapped",[25682]],[[64144,64144],"mapped",[25942]],[[64145,64145],"mapped",[26228]],[[64146,64146],"mapped",[26391]],[[64147,64147],"mapped",[26395]],[[64148,64148],"mapped",[26454]],[[64149,64149],"mapped",[27513]],[[64150,64150],"mapped",[27578]],[[64151,64151],"mapped",[27969]],[[64152,64152],"mapped",[28379]],[[64153,64153],"mapped",[28363]],[[64154,64154],"mapped",[28450]],[[64155,64155],"mapped",[28702]],[[64156,64156],"mapped",[29038]],[[64157,64157],"mapped",[30631]],[[64158,64158],"mapped",[29237]],[[64159,64159],"mapped",[29359]],[[64160,64160],"mapped",[29482]],[[64161,64161],"mapped",[29809]],[[64162,64162],"mapped",[29958]],[[64163,64163],"mapped",[30011]],[[64164,64164],"mapped",[30237]],[[64165,64165],"mapped",[30239]],[[64166,64166],"mapped",[30410]],[[64167,64167],"mapped",[30427]],[[64168,64168],"mapped",[30452]],[[64169,64169],"mapped",[30538]],[[64170,64170],"mapped",[30528]],[[64171,64171],"mapped",[30924]],[[64172,64172],"mapped",[31409]],[[64173,64173],"mapped",[31680]],[[64174,64174],"mapped",[31867]],[[64175,64175],"mapped",[32091]],[[64176,64176],"mapped",[32244]],[[64177,64177],"mapped",[32574]],[[64178,64178],"mapped",[32773]],[[64179,64179],"mapped",[33618]],[[64180,64180],"mapped",[33775]],[[64181,64181],"mapped",[34681]],[[64182,64182],"mapped",[35137]],[[64183,64183],"mapped",[35206]],[[64184,64184],"mapped",[35222]],[[64185,64185],"mapped",[35519]],[[64186,64186],"mapped",[35576]],[[64187,64187],"mapped",[35531]],[[64188,64188],"mapped",[35585]],[[64189,64189],"mapped",[35582]],[[64190,64190],"mapped",[35565]],[[64191,64191],"mapped",[35641]],[[64192,64192],"mapped",[35722]],[[64193,64193],"mapped",[36104]],[[64194,64194],"mapped",[36664]],[[64195,64195],"mapped",[36978]],[[64196,64196],"mapped",[37273]],[[64197,64197],"mapped",[37494]],[[64198,64198],"mapped",[38524]],[[64199,64199],"mapped",[38627]],[[64200,64200],"mapped",[38742]],[[64201,64201],"mapped",[38875]],[[64202,64202],"mapped",[38911]],[[64203,64203],"mapped",[38923]],[[64204,64204],"mapped",[38971]],[[64205,64205],"mapped",[39698]],[[64206,64206],"mapped",[40860]],[[64207,64207],"mapped",[141386]],[[64208,64208],"mapped",[141380]],[[64209,64209],"mapped",[144341]],[[64210,64210],"mapped",[15261]],[[64211,64211],"mapped",[16408]],[[64212,64212],"mapped",[16441]],[[64213,64213],"mapped",[152137]],[[64214,64214],"mapped",[154832]],[[64215,64215],"mapped",[163539]],[[64216,64216],"mapped",[40771]],[[64217,64217],"mapped",[40846]],[[64218,64255],"disallowed"],[[64256,64256],"mapped",[102,102]],[[64257,64257],"mapped",[102,105]],[[64258,64258],"mapped",[102,108]],[[64259,64259],"mapped",[102,102,105]],[[64260,64260],"mapped",[102,102,108]],[[64261,64262],"mapped",[115,116]],[[64263,64274],"disallowed"],[[64275,64275],"mapped",[1396,1398]],[[64276,64276],"mapped",[1396,1381]],[[64277,64277],"mapped",[1396,1387]],[[64278,64278],"mapped",[1406,1398]],[[64279,64279],"mapped",[1396,1389]],[[64280,64284],"disallowed"],[[64285,64285],"mapped",[1497,1460]],[[64286,64286],"valid"],[[64287,64287],"mapped",[1522,1463]],[[64288,64288],"mapped",[1506]],[[64289,64289],"mapped",[1488]],[[64290,64290],"mapped",[1491]],[[64291,64291],"mapped",[1492]],[[64292,64292],"mapped",[1499]],[[64293,64293],"mapped",[1500]],[[64294,64294],"mapped",[1501]],[[64295,64295],"mapped",[1512]],[[64296,64296],"mapped",[1514]],[[64297,64297],"disallowed_STD3_mapped",[43]],[[64298,64298],"mapped",[1513,1473]],[[64299,64299],"mapped",[1513,1474]],[[64300,64300],"mapped",[1513,1468,1473]],[[64301,64301],"mapped",[1513,1468,1474]],[[64302,64302],"mapped",[1488,1463]],[[64303,64303],"mapped",[1488,1464]],[[64304,64304],"mapped",[1488,1468]],[[64305,64305],"mapped",[1489,1468]],[[64306,64306],"mapped",[1490,1468]],[[64307,64307],"mapped",[1491,1468]],[[64308,64308],"mapped",[1492,1468]],[[64309,64309],"mapped",[1493,1468]],[[64310,64310],"mapped",[1494,1468]],[[64311,64311],"disallowed"],[[64312,64312],"mapped",[1496,1468]],[[64313,64313],"mapped",[1497,1468]],[[64314,64314],"mapped",[1498,1468]],[[64315,64315],"mapped",[1499,1468]],[[64316,64316],"mapped",[1500,1468]],[[64317,64317],"disallowed"],[[64318,64318],"mapped",[1502,1468]],[[64319,64319],"disallowed"],[[64320,64320],"mapped",[1504,1468]],[[64321,64321],"mapped",[1505,1468]],[[64322,64322],"disallowed"],[[64323,64323],"mapped",[1507,1468]],[[64324,64324],"mapped",[1508,1468]],[[64325,64325],"disallowed"],[[64326,64326],"mapped",[1510,1468]],[[64327,64327],"mapped",[1511,1468]],[[64328,64328],"mapped",[1512,1468]],[[64329,64329],"mapped",[1513,1468]],[[64330,64330],"mapped",[1514,1468]],[[64331,64331],"mapped",[1493,1465]],[[64332,64332],"mapped",[1489,1471]],[[64333,64333],"mapped",[1499,1471]],[[64334,64334],"mapped",[1508,1471]],[[64335,64335],"mapped",[1488,1500]],[[64336,64337],"mapped",[1649]],[[64338,64341],"mapped",[1659]],[[64342,64345],"mapped",[1662]],[[64346,64349],"mapped",[1664]],[[64350,64353],"mapped",[1658]],[[64354,64357],"mapped",[1663]],[[64358,64361],"mapped",[1657]],[[64362,64365],"mapped",[1700]],[[64366,64369],"mapped",[1702]],[[64370,64373],"mapped",[1668]],[[64374,64377],"mapped",[1667]],[[64378,64381],"mapped",[1670]],[[64382,64385],"mapped",[1671]],[[64386,64387],"mapped",[1677]],[[64388,64389],"mapped",[1676]],[[64390,64391],"mapped",[1678]],[[64392,64393],"mapped",[1672]],[[64394,64395],"mapped",[1688]],[[64396,64397],"mapped",[1681]],[[64398,64401],"mapped",[1705]],[[64402,64405],"mapped",[1711]],[[64406,64409],"mapped",[1715]],[[64410,64413],"mapped",[1713]],[[64414,64415],"mapped",[1722]],[[64416,64419],"mapped",[1723]],[[64420,64421],"mapped",[1728]],[[64422,64425],"mapped",[1729]],[[64426,64429],"mapped",[1726]],[[64430,64431],"mapped",[1746]],[[64432,64433],"mapped",[1747]],[[64434,64449],"valid",[],"NV8"],[[64450,64466],"disallowed"],[[64467,64470],"mapped",[1709]],[[64471,64472],"mapped",[1735]],[[64473,64474],"mapped",[1734]],[[64475,64476],"mapped",[1736]],[[64477,64477],"mapped",[1735,1652]],[[64478,64479],"mapped",[1739]],[[64480,64481],"mapped",[1733]],[[64482,64483],"mapped",[1737]],[[64484,64487],"mapped",[1744]],[[64488,64489],"mapped",[1609]],[[64490,64491],"mapped",[1574,1575]],[[64492,64493],"mapped",[1574,1749]],[[64494,64495],"mapped",[1574,1608]],[[64496,64497],"mapped",[1574,1735]],[[64498,64499],"mapped",[1574,1734]],[[64500,64501],"mapped",[1574,1736]],[[64502,64504],"mapped",[1574,1744]],[[64505,64507],"mapped",[1574,1609]],[[64508,64511],"mapped",[1740]],[[64512,64512],"mapped",[1574,1580]],[[64513,64513],"mapped",[1574,1581]],[[64514,64514],"mapped",[1574,1605]],[[64515,64515],"mapped",[1574,1609]],[[64516,64516],"mapped",[1574,1610]],[[64517,64517],"mapped",[1576,1580]],[[64518,64518],"mapped",[1576,1581]],[[64519,64519],"mapped",[1576,1582]],[[64520,64520],"mapped",[1576,1605]],[[64521,64521],"mapped",[1576,1609]],[[64522,64522],"mapped",[1576,1610]],[[64523,64523],"mapped",[1578,1580]],[[64524,64524],"mapped",[1578,1581]],[[64525,64525],"mapped",[1578,1582]],[[64526,64526],"mapped",[1578,1605]],[[64527,64527],"mapped",[1578,1609]],[[64528,64528],"mapped",[1578,1610]],[[64529,64529],"mapped",[1579,1580]],[[64530,64530],"mapped",[1579,1605]],[[64531,64531],"mapped",[1579,1609]],[[64532,64532],"mapped",[1579,1610]],[[64533,64533],"mapped",[1580,1581]],[[64534,64534],"mapped",[1580,1605]],[[64535,64535],"mapped",[1581,1580]],[[64536,64536],"mapped",[1581,1605]],[[64537,64537],"mapped",[1582,1580]],[[64538,64538],"mapped",[1582,1581]],[[64539,64539],"mapped",[1582,1605]],[[64540,64540],"mapped",[1587,1580]],[[64541,64541],"mapped",[1587,1581]],[[64542,64542],"mapped",[1587,1582]],[[64543,64543],"mapped",[1587,1605]],[[64544,64544],"mapped",[1589,1581]],[[64545,64545],"mapped",[1589,1605]],[[64546,64546],"mapped",[1590,1580]],[[64547,64547],"mapped",[1590,1581]],[[64548,64548],"mapped",[1590,1582]],[[64549,64549],"mapped",[1590,1605]],[[64550,64550],"mapped",[1591,1581]],[[64551,64551],"mapped",[1591,1605]],[[64552,64552],"mapped",[1592,1605]],[[64553,64553],"mapped",[1593,1580]],[[64554,64554],"mapped",[1593,1605]],[[64555,64555],"mapped",[1594,1580]],[[64556,64556],"mapped",[1594,1605]],[[64557,64557],"mapped",[1601,1580]],[[64558,64558],"mapped",[1601,1581]],[[64559,64559],"mapped",[1601,1582]],[[64560,64560],"mapped",[1601,1605]],[[64561,64561],"mapped",[1601,1609]],[[64562,64562],"mapped",[1601,1610]],[[64563,64563],"mapped",[1602,1581]],[[64564,64564],"mapped",[1602,1605]],[[64565,64565],"mapped",[1602,1609]],[[64566,64566],"mapped",[1602,1610]],[[64567,64567],"mapped",[1603,1575]],[[64568,64568],"mapped",[1603,1580]],[[64569,64569],"mapped",[1603,1581]],[[64570,64570],"mapped",[1603,1582]],[[64571,64571],"mapped",[1603,1604]],[[64572,64572],"mapped",[1603,1605]],[[64573,64573],"mapped",[1603,1609]],[[64574,64574],"mapped",[1603,1610]],[[64575,64575],"mapped",[1604,1580]],[[64576,64576],"mapped",[1604,1581]],[[64577,64577],"mapped",[1604,1582]],[[64578,64578],"mapped",[1604,1605]],[[64579,64579],"mapped",[1604,1609]],[[64580,64580],"mapped",[1604,1610]],[[64581,64581],"mapped",[1605,1580]],[[64582,64582],"mapped",[1605,1581]],[[64583,64583],"mapped",[1605,1582]],[[64584,64584],"mapped",[1605,1605]],[[64585,64585],"mapped",[1605,1609]],[[64586,64586],"mapped",[1605,1610]],[[64587,64587],"mapped",[1606,1580]],[[64588,64588],"mapped",[1606,1581]],[[64589,64589],"mapped",[1606,1582]],[[64590,64590],"mapped",[1606,1605]],[[64591,64591],"mapped",[1606,1609]],[[64592,64592],"mapped",[1606,1610]],[[64593,64593],"mapped",[1607,1580]],[[64594,64594],"mapped",[1607,1605]],[[64595,64595],"mapped",[1607,1609]],[[64596,64596],"mapped",[1607,1610]],[[64597,64597],"mapped",[1610,1580]],[[64598,64598],"mapped",[1610,1581]],[[64599,64599],"mapped",[1610,1582]],[[64600,64600],"mapped",[1610,1605]],[[64601,64601],"mapped",[1610,1609]],[[64602,64602],"mapped",[1610,1610]],[[64603,64603],"mapped",[1584,1648]],[[64604,64604],"mapped",[1585,1648]],[[64605,64605],"mapped",[1609,1648]],[[64606,64606],"disallowed_STD3_mapped",[32,1612,1617]],[[64607,64607],"disallowed_STD3_mapped",[32,1613,1617]],[[64608,64608],"disallowed_STD3_mapped",[32,1614,1617]],[[64609,64609],"disallowed_STD3_mapped",[32,1615,1617]],[[64610,64610],"disallowed_STD3_mapped",[32,1616,1617]],[[64611,64611],"disallowed_STD3_mapped",[32,1617,1648]],[[64612,64612],"mapped",[1574,1585]],[[64613,64613],"mapped",[1574,1586]],[[64614,64614],"mapped",[1574,1605]],[[64615,64615],"mapped",[1574,1606]],[[64616,64616],"mapped",[1574,1609]],[[64617,64617],"mapped",[1574,1610]],[[64618,64618],"mapped",[1576,1585]],[[64619,64619],"mapped",[1576,1586]],[[64620,64620],"mapped",[1576,1605]],[[64621,64621],"mapped",[1576,1606]],[[64622,64622],"mapped",[1576,1609]],[[64623,64623],"mapped",[1576,1610]],[[64624,64624],"mapped",[1578,1585]],[[64625,64625],"mapped",[1578,1586]],[[64626,64626],"mapped",[1578,1605]],[[64627,64627],"mapped",[1578,1606]],[[64628,64628],"mapped",[1578,1609]],[[64629,64629],"mapped",[1578,1610]],[[64630,64630],"mapped",[1579,1585]],[[64631,64631],"mapped",[1579,1586]],[[64632,64632],"mapped",[1579,1605]],[[64633,64633],"mapped",[1579,1606]],[[64634,64634],"mapped",[1579,1609]],[[64635,64635],"mapped",[1579,1610]],[[64636,64636],"mapped",[1601,1609]],[[64637,64637],"mapped",[1601,1610]],[[64638,64638],"mapped",[1602,1609]],[[64639,64639],"mapped",[1602,1610]],[[64640,64640],"mapped",[1603,1575]],[[64641,64641],"mapped",[1603,1604]],[[64642,64642],"mapped",[1603,1605]],[[64643,64643],"mapped",[1603,1609]],[[64644,64644],"mapped",[1603,1610]],[[64645,64645],"mapped",[1604,1605]],[[64646,64646],"mapped",[1604,1609]],[[64647,64647],"mapped",[1604,1610]],[[64648,64648],"mapped",[1605,1575]],[[64649,64649],"mapped",[1605,1605]],[[64650,64650],"mapped",[1606,1585]],[[64651,64651],"mapped",[1606,1586]],[[64652,64652],"mapped",[1606,1605]],[[64653,64653],"mapped",[1606,1606]],[[64654,64654],"mapped",[1606,1609]],[[64655,64655],"mapped",[1606,1610]],[[64656,64656],"mapped",[1609,1648]],[[64657,64657],"mapped",[1610,1585]],[[64658,64658],"mapped",[1610,1586]],[[64659,64659],"mapped",[1610,1605]],[[64660,64660],"mapped",[1610,1606]],[[64661,64661],"mapped",[1610,1609]],[[64662,64662],"mapped",[1610,1610]],[[64663,64663],"mapped",[1574,1580]],[[64664,64664],"mapped",[1574,1581]],[[64665,64665],"mapped",[1574,1582]],[[64666,64666],"mapped",[1574,1605]],[[64667,64667],"mapped",[1574,1607]],[[64668,64668],"mapped",[1576,1580]],[[64669,64669],"mapped",[1576,1581]],[[64670,64670],"mapped",[1576,1582]],[[64671,64671],"mapped",[1576,1605]],[[64672,64672],"mapped",[1576,1607]],[[64673,64673],"mapped",[1578,1580]],[[64674,64674],"mapped",[1578,1581]],[[64675,64675],"mapped",[1578,1582]],[[64676,64676],"mapped",[1578,1605]],[[64677,64677],"mapped",[1578,1607]],[[64678,64678],"mapped",[1579,1605]],[[64679,64679],"mapped",[1580,1581]],[[64680,64680],"mapped",[1580,1605]],[[64681,64681],"mapped",[1581,1580]],[[64682,64682],"mapped",[1581,1605]],[[64683,64683],"mapped",[1582,1580]],[[64684,64684],"mapped",[1582,1605]],[[64685,64685],"mapped",[1587,1580]],[[64686,64686],"mapped",[1587,1581]],[[64687,64687],"mapped",[1587,1582]],[[64688,64688],"mapped",[1587,1605]],[[64689,64689],"mapped",[1589,1581]],[[64690,64690],"mapped",[1589,1582]],[[64691,64691],"mapped",[1589,1605]],[[64692,64692],"mapped",[1590,1580]],[[64693,64693],"mapped",[1590,1581]],[[64694,64694],"mapped",[1590,1582]],[[64695,64695],"mapped",[1590,1605]],[[64696,64696],"mapped",[1591,1581]],[[64697,64697],"mapped",[1592,1605]],[[64698,64698],"mapped",[1593,1580]],[[64699,64699],"mapped",[1593,1605]],[[64700,64700],"mapped",[1594,1580]],[[64701,64701],"mapped",[1594,1605]],[[64702,64702],"mapped",[1601,1580]],[[64703,64703],"mapped",[1601,1581]],[[64704,64704],"mapped",[1601,1582]],[[64705,64705],"mapped",[1601,1605]],[[64706,64706],"mapped",[1602,1581]],[[64707,64707],"mapped",[1602,1605]],[[64708,64708],"mapped",[1603,1580]],[[64709,64709],"mapped",[1603,1581]],[[64710,64710],"mapped",[1603,1582]],[[64711,64711],"mapped",[1603,1604]],[[64712,64712],"mapped",[1603,1605]],[[64713,64713],"mapped",[1604,1580]],[[64714,64714],"mapped",[1604,1581]],[[64715,64715],"mapped",[1604,1582]],[[64716,64716],"mapped",[1604,1605]],[[64717,64717],"mapped",[1604,1607]],[[64718,64718],"mapped",[1605,1580]],[[64719,64719],"mapped",[1605,1581]],[[64720,64720],"mapped",[1605,1582]],[[64721,64721],"mapped",[1605,1605]],[[64722,64722],"mapped",[1606,1580]],[[64723,64723],"mapped",[1606,1581]],[[64724,64724],"mapped",[1606,1582]],[[64725,64725],"mapped",[1606,1605]],[[64726,64726],"mapped",[1606,1607]],[[64727,64727],"mapped",[1607,1580]],[[64728,64728],"mapped",[1607,1605]],[[64729,64729],"mapped",[1607,1648]],[[64730,64730],"mapped",[1610,1580]],[[64731,64731],"mapped",[1610,1581]],[[64732,64732],"mapped",[1610,1582]],[[64733,64733],"mapped",[1610,1605]],[[64734,64734],"mapped",[1610,1607]],[[64735,64735],"mapped",[1574,1605]],[[64736,64736],"mapped",[1574,1607]],[[64737,64737],"mapped",[1576,1605]],[[64738,64738],"mapped",[1576,1607]],[[64739,64739],"mapped",[1578,1605]],[[64740,64740],"mapped",[1578,1607]],[[64741,64741],"mapped",[1579,1605]],[[64742,64742],"mapped",[1579,1607]],[[64743,64743],"mapped",[1587,1605]],[[64744,64744],"mapped",[1587,1607]],[[64745,64745],"mapped",[1588,1605]],[[64746,64746],"mapped",[1588,1607]],[[64747,64747],"mapped",[1603,1604]],[[64748,64748],"mapped",[1603,1605]],[[64749,64749],"mapped",[1604,1605]],[[64750,64750],"mapped",[1606,1605]],[[64751,64751],"mapped",[1606,1607]],[[64752,64752],"mapped",[1610,1605]],[[64753,64753],"mapped",[1610,1607]],[[64754,64754],"mapped",[1600,1614,1617]],[[64755,64755],"mapped",[1600,1615,1617]],[[64756,64756],"mapped",[1600,1616,1617]],[[64757,64757],"mapped",[1591,1609]],[[64758,64758],"mapped",[1591,1610]],[[64759,64759],"mapped",[1593,1609]],[[64760,64760],"mapped",[1593,1610]],[[64761,64761],"mapped",[1594,1609]],[[64762,64762],"mapped",[1594,1610]],[[64763,64763],"mapped",[1587,1609]],[[64764,64764],"mapped",[1587,1610]],[[64765,64765],"mapped",[1588,1609]],[[64766,64766],"mapped",[1588,1610]],[[64767,64767],"mapped",[1581,1609]],[[64768,64768],"mapped",[1581,1610]],[[64769,64769],"mapped",[1580,1609]],[[64770,64770],"mapped",[1580,1610]],[[64771,64771],"mapped",[1582,1609]],[[64772,64772],"mapped",[1582,1610]],[[64773,64773],"mapped",[1589,1609]],[[64774,64774],"mapped",[1589,1610]],[[64775,64775],"mapped",[1590,1609]],[[64776,64776],"mapped",[1590,1610]],[[64777,64777],"mapped",[1588,1580]],[[64778,64778],"mapped",[1588,1581]],[[64779,64779],"mapped",[1588,1582]],[[64780,64780],"mapped",[1588,1605]],[[64781,64781],"mapped",[1588,1585]],[[64782,64782],"mapped",[1587,1585]],[[64783,64783],"mapped",[1589,1585]],[[64784,64784],"mapped",[1590,1585]],[[64785,64785],"mapped",[1591,1609]],[[64786,64786],"mapped",[1591,1610]],[[64787,64787],"mapped",[1593,1609]],[[64788,64788],"mapped",[1593,1610]],[[64789,64789],"mapped",[1594,1609]],[[64790,64790],"mapped",[1594,1610]],[[64791,64791],"mapped",[1587,1609]],[[64792,64792],"mapped",[1587,1610]],[[64793,64793],"mapped",[1588,1609]],[[64794,64794],"mapped",[1588,1610]],[[64795,64795],"mapped",[1581,1609]],[[64796,64796],"mapped",[1581,1610]],[[64797,64797],"mapped",[1580,1609]],[[64798,64798],"mapped",[1580,1610]],[[64799,64799],"mapped",[1582,1609]],[[64800,64800],"mapped",[1582,1610]],[[64801,64801],"mapped",[1589,1609]],[[64802,64802],"mapped",[1589,1610]],[[64803,64803],"mapped",[1590,1609]],[[64804,64804],"mapped",[1590,1610]],[[64805,64805],"mapped",[1588,1580]],[[64806,64806],"mapped",[1588,1581]],[[64807,64807],"mapped",[1588,1582]],[[64808,64808],"mapped",[1588,1605]],[[64809,64809],"mapped",[1588,1585]],[[64810,64810],"mapped",[1587,1585]],[[64811,64811],"mapped",[1589,1585]],[[64812,64812],"mapped",[1590,1585]],[[64813,64813],"mapped",[1588,1580]],[[64814,64814],"mapped",[1588,1581]],[[64815,64815],"mapped",[1588,1582]],[[64816,64816],"mapped",[1588,1605]],[[64817,64817],"mapped",[1587,1607]],[[64818,64818],"mapped",[1588,1607]],[[64819,64819],"mapped",[1591,1605]],[[64820,64820],"mapped",[1587,1580]],[[64821,64821],"mapped",[1587,1581]],[[64822,64822],"mapped",[1587,1582]],[[64823,64823],"mapped",[1588,1580]],[[64824,64824],"mapped",[1588,1581]],[[64825,64825],"mapped",[1588,1582]],[[64826,64826],"mapped",[1591,1605]],[[64827,64827],"mapped",[1592,1605]],[[64828,64829],"mapped",[1575,1611]],[[64830,64831],"valid",[],"NV8"],[[64832,64847],"disallowed"],[[64848,64848],"mapped",[1578,1580,1605]],[[64849,64850],"mapped",[1578,1581,1580]],[[64851,64851],"mapped",[1578,1581,1605]],[[64852,64852],"mapped",[1578,1582,1605]],[[64853,64853],"mapped",[1578,1605,1580]],[[64854,64854],"mapped",[1578,1605,1581]],[[64855,64855],"mapped",[1578,1605,1582]],[[64856,64857],"mapped",[1580,1605,1581]],[[64858,64858],"mapped",[1581,1605,1610]],[[64859,64859],"mapped",[1581,1605,1609]],[[64860,64860],"mapped",[1587,1581,1580]],[[64861,64861],"mapped",[1587,1580,1581]],[[64862,64862],"mapped",[1587,1580,1609]],[[64863,64864],"mapped",[1587,1605,1581]],[[64865,64865],"mapped",[1587,1605,1580]],[[64866,64867],"mapped",[1587,1605,1605]],[[64868,64869],"mapped",[1589,1581,1581]],[[64870,64870],"mapped",[1589,1605,1605]],[[64871,64872],"mapped",[1588,1581,1605]],[[64873,64873],"mapped",[1588,1580,1610]],[[64874,64875],"mapped",[1588,1605,1582]],[[64876,64877],"mapped",[1588,1605,1605]],[[64878,64878],"mapped",[1590,1581,1609]],[[64879,64880],"mapped",[1590,1582,1605]],[[64881,64882],"mapped",[1591,1605,1581]],[[64883,64883],"mapped",[1591,1605,1605]],[[64884,64884],"mapped",[1591,1605,1610]],[[64885,64885],"mapped",[1593,1580,1605]],[[64886,64887],"mapped",[1593,1605,1605]],[[64888,64888],"mapped",[1593,1605,1609]],[[64889,64889],"mapped",[1594,1605,1605]],[[64890,64890],"mapped",[1594,1605,1610]],[[64891,64891],"mapped",[1594,1605,1609]],[[64892,64893],"mapped",[1601,1582,1605]],[[64894,64894],"mapped",[1602,1605,1581]],[[64895,64895],"mapped",[1602,1605,1605]],[[64896,64896],"mapped",[1604,1581,1605]],[[64897,64897],"mapped",[1604,1581,1610]],[[64898,64898],"mapped",[1604,1581,1609]],[[64899,64900],"mapped",[1604,1580,1580]],[[64901,64902],"mapped",[1604,1582,1605]],[[64903,64904],"mapped",[1604,1605,1581]],[[64905,64905],"mapped",[1605,1581,1580]],[[64906,64906],"mapped",[1605,1581,1605]],[[64907,64907],"mapped",[1605,1581,1610]],[[64908,64908],"mapped",[1605,1580,1581]],[[64909,64909],"mapped",[1605,1580,1605]],[[64910,64910],"mapped",[1605,1582,1580]],[[64911,64911],"mapped",[1605,1582,1605]],[[64912,64913],"disallowed"],[[64914,64914],"mapped",[1605,1580,1582]],[[64915,64915],"mapped",[1607,1605,1580]],[[64916,64916],"mapped",[1607,1605,1605]],[[64917,64917],"mapped",[1606,1581,1605]],[[64918,64918],"mapped",[1606,1581,1609]],[[64919,64920],"mapped",[1606,1580,1605]],[[64921,64921],"mapped",[1606,1580,1609]],[[64922,64922],"mapped",[1606,1605,1610]],[[64923,64923],"mapped",[1606,1605,1609]],[[64924,64925],"mapped",[1610,1605,1605]],[[64926,64926],"mapped",[1576,1582,1610]],[[64927,64927],"mapped",[1578,1580,1610]],[[64928,64928],"mapped",[1578,1580,1609]],[[64929,64929],"mapped",[1578,1582,1610]],[[64930,64930],"mapped",[1578,1582,1609]],[[64931,64931],"mapped",[1578,1605,1610]],[[64932,64932],"mapped",[1578,1605,1609]],[[64933,64933],"mapped",[1580,1605,1610]],[[64934,64934],"mapped",[1580,1581,1609]],[[64935,64935],"mapped",[1580,1605,1609]],[[64936,64936],"mapped",[1587,1582,1609]],[[64937,64937],"mapped",[1589,1581,1610]],[[64938,64938],"mapped",[1588,1581,1610]],[[64939,64939],"mapped",[1590,1581,1610]],[[64940,64940],"mapped",[1604,1580,1610]],[[64941,64941],"mapped",[1604,1605,1610]],[[64942,64942],"mapped",[1610,1581,1610]],[[64943,64943],"mapped",[1610,1580,1610]],[[64944,64944],"mapped",[1610,1605,1610]],[[64945,64945],"mapped",[1605,1605,1610]],[[64946,64946],"mapped",[1602,1605,1610]],[[64947,64947],"mapped",[1606,1581,1610]],[[64948,64948],"mapped",[1602,1605,1581]],[[64949,64949],"mapped",[1604,1581,1605]],[[64950,64950],"mapped",[1593,1605,1610]],[[64951,64951],"mapped",[1603,1605,1610]],[[64952,64952],"mapped",[1606,1580,1581]],[[64953,64953],"mapped",[1605,1582,1610]],[[64954,64954],"mapped",[1604,1580,1605]],[[64955,64955],"mapped",[1603,1605,1605]],[[64956,64956],"mapped",[1604,1580,1605]],[[64957,64957],"mapped",[1606,1580,1581]],[[64958,64958],"mapped",[1580,1581,1610]],[[64959,64959],"mapped",[1581,1580,1610]],[[64960,64960],"mapped",[1605,1580,1610]],[[64961,64961],"mapped",[1601,1605,1610]],[[64962,64962],"mapped",[1576,1581,1610]],[[64963,64963],"mapped",[1603,1605,1605]],[[64964,64964],"mapped",[1593,1580,1605]],[[64965,64965],"mapped",[1589,1605,1605]],[[64966,64966],"mapped",[1587,1582,1610]],[[64967,64967],"mapped",[1606,1580,1610]],[[64968,64975],"disallowed"],[[64976,65007],"disallowed"],[[65008,65008],"mapped",[1589,1604,1746]],[[65009,65009],"mapped",[1602,1604,1746]],[[65010,65010],"mapped",[1575,1604,1604,1607]],[[65011,65011],"mapped",[1575,1603,1576,1585]],[[65012,65012],"mapped",[1605,1581,1605,1583]],[[65013,65013],"mapped",[1589,1604,1593,1605]],[[65014,65014],"mapped",[1585,1587,1608,1604]],[[65015,65015],"mapped",[1593,1604,1610,1607]],[[65016,65016],"mapped",[1608,1587,1604,1605]],[[65017,65017],"mapped",[1589,1604,1609]],[[65018,65018],"disallowed_STD3_mapped",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],"disallowed_STD3_mapped",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],"mapped",[1585,1740,1575,1604]],[[65021,65021],"valid",[],"NV8"],[[65022,65023],"disallowed"],[[65024,65039],"ignored"],[[65040,65040],"disallowed_STD3_mapped",[44]],[[65041,65041],"mapped",[12289]],[[65042,65042],"disallowed"],[[65043,65043],"disallowed_STD3_mapped",[58]],[[65044,65044],"disallowed_STD3_mapped",[59]],[[65045,65045],"disallowed_STD3_mapped",[33]],[[65046,65046],"disallowed_STD3_mapped",[63]],[[65047,65047],"mapped",[12310]],[[65048,65048],"mapped",[12311]],[[65049,65049],"disallowed"],[[65050,65055],"disallowed"],[[65056,65059],"valid"],[[65060,65062],"valid"],[[65063,65069],"valid"],[[65070,65071],"valid"],[[65072,65072],"disallowed"],[[65073,65073],"mapped",[8212]],[[65074,65074],"mapped",[8211]],[[65075,65076],"disallowed_STD3_mapped",[95]],[[65077,65077],"disallowed_STD3_mapped",[40]],[[65078,65078],"disallowed_STD3_mapped",[41]],[[65079,65079],"disallowed_STD3_mapped",[123]],[[65080,65080],"disallowed_STD3_mapped",[125]],[[65081,65081],"mapped",[12308]],[[65082,65082],"mapped",[12309]],[[65083,65083],"mapped",[12304]],[[65084,65084],"mapped",[12305]],[[65085,65085],"mapped",[12298]],[[65086,65086],"mapped",[12299]],[[65087,65087],"mapped",[12296]],[[65088,65088],"mapped",[12297]],[[65089,65089],"mapped",[12300]],[[65090,65090],"mapped",[12301]],[[65091,65091],"mapped",[12302]],[[65092,65092],"mapped",[12303]],[[65093,65094],"valid",[],"NV8"],[[65095,65095],"disallowed_STD3_mapped",[91]],[[65096,65096],"disallowed_STD3_mapped",[93]],[[65097,65100],"disallowed_STD3_mapped",[32,773]],[[65101,65103],"disallowed_STD3_mapped",[95]],[[65104,65104],"disallowed_STD3_mapped",[44]],[[65105,65105],"mapped",[12289]],[[65106,65106],"disallowed"],[[65107,65107],"disallowed"],[[65108,65108],"disallowed_STD3_mapped",[59]],[[65109,65109],"disallowed_STD3_mapped",[58]],[[65110,65110],"disallowed_STD3_mapped",[63]],[[65111,65111],"disallowed_STD3_mapped",[33]],[[65112,65112],"mapped",[8212]],[[65113,65113],"disallowed_STD3_mapped",[40]],[[65114,65114],"disallowed_STD3_mapped",[41]],[[65115,65115],"disallowed_STD3_mapped",[123]],[[65116,65116],"disallowed_STD3_mapped",[125]],[[65117,65117],"mapped",[12308]],[[65118,65118],"mapped",[12309]],[[65119,65119],"disallowed_STD3_mapped",[35]],[[65120,65120],"disallowed_STD3_mapped",[38]],[[65121,65121],"disallowed_STD3_mapped",[42]],[[65122,65122],"disallowed_STD3_mapped",[43]],[[65123,65123],"mapped",[45]],[[65124,65124],"disallowed_STD3_mapped",[60]],[[65125,65125],"disallowed_STD3_mapped",[62]],[[65126,65126],"disallowed_STD3_mapped",[61]],[[65127,65127],"disallowed"],[[65128,65128],"disallowed_STD3_mapped",[92]],[[65129,65129],"disallowed_STD3_mapped",[36]],[[65130,65130],"disallowed_STD3_mapped",[37]],[[65131,65131],"disallowed_STD3_mapped",[64]],[[65132,65135],"disallowed"],[[65136,65136],"disallowed_STD3_mapped",[32,1611]],[[65137,65137],"mapped",[1600,1611]],[[65138,65138],"disallowed_STD3_mapped",[32,1612]],[[65139,65139],"valid"],[[65140,65140],"disallowed_STD3_mapped",[32,1613]],[[65141,65141],"disallowed"],[[65142,65142],"disallowed_STD3_mapped",[32,1614]],[[65143,65143],"mapped",[1600,1614]],[[65144,65144],"disallowed_STD3_mapped",[32,1615]],[[65145,65145],"mapped",[1600,1615]],[[65146,65146],"disallowed_STD3_mapped",[32,1616]],[[65147,65147],"mapped",[1600,1616]],[[65148,65148],"disallowed_STD3_mapped",[32,1617]],[[65149,65149],"mapped",[1600,1617]],[[65150,65150],"disallowed_STD3_mapped",[32,1618]],[[65151,65151],"mapped",[1600,1618]],[[65152,65152],"mapped",[1569]],[[65153,65154],"mapped",[1570]],[[65155,65156],"mapped",[1571]],[[65157,65158],"mapped",[1572]],[[65159,65160],"mapped",[1573]],[[65161,65164],"mapped",[1574]],[[65165,65166],"mapped",[1575]],[[65167,65170],"mapped",[1576]],[[65171,65172],"mapped",[1577]],[[65173,65176],"mapped",[1578]],[[65177,65180],"mapped",[1579]],[[65181,65184],"mapped",[1580]],[[65185,65188],"mapped",[1581]],[[65189,65192],"mapped",[1582]],[[65193,65194],"mapped",[1583]],[[65195,65196],"mapped",[1584]],[[65197,65198],"mapped",[1585]],[[65199,65200],"mapped",[1586]],[[65201,65204],"mapped",[1587]],[[65205,65208],"mapped",[1588]],[[65209,65212],"mapped",[1589]],[[65213,65216],"mapped",[1590]],[[65217,65220],"mapped",[1591]],[[65221,65224],"mapped",[1592]],[[65225,65228],"mapped",[1593]],[[65229,65232],"mapped",[1594]],[[65233,65236],"mapped",[1601]],[[65237,65240],"mapped",[1602]],[[65241,65244],"mapped",[1603]],[[65245,65248],"mapped",[1604]],[[65249,65252],"mapped",[1605]],[[65253,65256],"mapped",[1606]],[[65257,65260],"mapped",[1607]],[[65261,65262],"mapped",[1608]],[[65263,65264],"mapped",[1609]],[[65265,65268],"mapped",[1610]],[[65269,65270],"mapped",[1604,1570]],[[65271,65272],"mapped",[1604,1571]],[[65273,65274],"mapped",[1604,1573]],[[65275,65276],"mapped",[1604,1575]],[[65277,65278],"disallowed"],[[65279,65279],"ignored"],[[65280,65280],"disallowed"],[[65281,65281],"disallowed_STD3_mapped",[33]],[[65282,65282],"disallowed_STD3_mapped",[34]],[[65283,65283],"disallowed_STD3_mapped",[35]],[[65284,65284],"disallowed_STD3_mapped",[36]],[[65285,65285],"disallowed_STD3_mapped",[37]],[[65286,65286],"disallowed_STD3_mapped",[38]],[[65287,65287],"disallowed_STD3_mapped",[39]],[[65288,65288],"disallowed_STD3_mapped",[40]],[[65289,65289],"disallowed_STD3_mapped",[41]],[[65290,65290],"disallowed_STD3_mapped",[42]],[[65291,65291],"disallowed_STD3_mapped",[43]],[[65292,65292],"disallowed_STD3_mapped",[44]],[[65293,65293],"mapped",[45]],[[65294,65294],"mapped",[46]],[[65295,65295],"disallowed_STD3_mapped",[47]],[[65296,65296],"mapped",[48]],[[65297,65297],"mapped",[49]],[[65298,65298],"mapped",[50]],[[65299,65299],"mapped",[51]],[[65300,65300],"mapped",[52]],[[65301,65301],"mapped",[53]],[[65302,65302],"mapped",[54]],[[65303,65303],"mapped",[55]],[[65304,65304],"mapped",[56]],[[65305,65305],"mapped",[57]],[[65306,65306],"disallowed_STD3_mapped",[58]],[[65307,65307],"disallowed_STD3_mapped",[59]],[[65308,65308],"disallowed_STD3_mapped",[60]],[[65309,65309],"disallowed_STD3_mapped",[61]],[[65310,65310],"disallowed_STD3_mapped",[62]],[[65311,65311],"disallowed_STD3_mapped",[63]],[[65312,65312],"disallowed_STD3_mapped",[64]],[[65313,65313],"mapped",[97]],[[65314,65314],"mapped",[98]],[[65315,65315],"mapped",[99]],[[65316,65316],"mapped",[100]],[[65317,65317],"mapped",[101]],[[65318,65318],"mapped",[102]],[[65319,65319],"mapped",[103]],[[65320,65320],"mapped",[104]],[[65321,65321],"mapped",[105]],[[65322,65322],"mapped",[106]],[[65323,65323],"mapped",[107]],[[65324,65324],"mapped",[108]],[[65325,65325],"mapped",[109]],[[65326,65326],"mapped",[110]],[[65327,65327],"mapped",[111]],[[65328,65328],"mapped",[112]],[[65329,65329],"mapped",[113]],[[65330,65330],"mapped",[114]],[[65331,65331],"mapped",[115]],[[65332,65332],"mapped",[116]],[[65333,65333],"mapped",[117]],[[65334,65334],"mapped",[118]],[[65335,65335],"mapped",[119]],[[65336,65336],"mapped",[120]],[[65337,65337],"mapped",[121]],[[65338,65338],"mapped",[122]],[[65339,65339],"disallowed_STD3_mapped",[91]],[[65340,65340],"disallowed_STD3_mapped",[92]],[[65341,65341],"disallowed_STD3_mapped",[93]],[[65342,65342],"disallowed_STD3_mapped",[94]],[[65343,65343],"disallowed_STD3_mapped",[95]],[[65344,65344],"disallowed_STD3_mapped",[96]],[[65345,65345],"mapped",[97]],[[65346,65346],"mapped",[98]],[[65347,65347],"mapped",[99]],[[65348,65348],"mapped",[100]],[[65349,65349],"mapped",[101]],[[65350,65350],"mapped",[102]],[[65351,65351],"mapped",[103]],[[65352,65352],"mapped",[104]],[[65353,65353],"mapped",[105]],[[65354,65354],"mapped",[106]],[[65355,65355],"mapped",[107]],[[65356,65356],"mapped",[108]],[[65357,65357],"mapped",[109]],[[65358,65358],"mapped",[110]],[[65359,65359],"mapped",[111]],[[65360,65360],"mapped",[112]],[[65361,65361],"mapped",[113]],[[65362,65362],"mapped",[114]],[[65363,65363],"mapped",[115]],[[65364,65364],"mapped",[116]],[[65365,65365],"mapped",[117]],[[65366,65366],"mapped",[118]],[[65367,65367],"mapped",[119]],[[65368,65368],"mapped",[120]],[[65369,65369],"mapped",[121]],[[65370,65370],"mapped",[122]],[[65371,65371],"disallowed_STD3_mapped",[123]],[[65372,65372],"disallowed_STD3_mapped",[124]],[[65373,65373],"disallowed_STD3_mapped",[125]],[[65374,65374],"disallowed_STD3_mapped",[126]],[[65375,65375],"mapped",[10629]],[[65376,65376],"mapped",[10630]],[[65377,65377],"mapped",[46]],[[65378,65378],"mapped",[12300]],[[65379,65379],"mapped",[12301]],[[65380,65380],"mapped",[12289]],[[65381,65381],"mapped",[12539]],[[65382,65382],"mapped",[12530]],[[65383,65383],"mapped",[12449]],[[65384,65384],"mapped",[12451]],[[65385,65385],"mapped",[12453]],[[65386,65386],"mapped",[12455]],[[65387,65387],"mapped",[12457]],[[65388,65388],"mapped",[12515]],[[65389,65389],"mapped",[12517]],[[65390,65390],"mapped",[12519]],[[65391,65391],"mapped",[12483]],[[65392,65392],"mapped",[12540]],[[65393,65393],"mapped",[12450]],[[65394,65394],"mapped",[12452]],[[65395,65395],"mapped",[12454]],[[65396,65396],"mapped",[12456]],[[65397,65397],"mapped",[12458]],[[65398,65398],"mapped",[12459]],[[65399,65399],"mapped",[12461]],[[65400,65400],"mapped",[12463]],[[65401,65401],"mapped",[12465]],[[65402,65402],"mapped",[12467]],[[65403,65403],"mapped",[12469]],[[65404,65404],"mapped",[12471]],[[65405,65405],"mapped",[12473]],[[65406,65406],"mapped",[12475]],[[65407,65407],"mapped",[12477]],[[65408,65408],"mapped",[12479]],[[65409,65409],"mapped",[12481]],[[65410,65410],"mapped",[12484]],[[65411,65411],"mapped",[12486]],[[65412,65412],"mapped",[12488]],[[65413,65413],"mapped",[12490]],[[65414,65414],"mapped",[12491]],[[65415,65415],"mapped",[12492]],[[65416,65416],"mapped",[12493]],[[65417,65417],"mapped",[12494]],[[65418,65418],"mapped",[12495]],[[65419,65419],"mapped",[12498]],[[65420,65420],"mapped",[12501]],[[65421,65421],"mapped",[12504]],[[65422,65422],"mapped",[12507]],[[65423,65423],"mapped",[12510]],[[65424,65424],"mapped",[12511]],[[65425,65425],"mapped",[12512]],[[65426,65426],"mapped",[12513]],[[65427,65427],"mapped",[12514]],[[65428,65428],"mapped",[12516]],[[65429,65429],"mapped",[12518]],[[65430,65430],"mapped",[12520]],[[65431,65431],"mapped",[12521]],[[65432,65432],"mapped",[12522]],[[65433,65433],"mapped",[12523]],[[65434,65434],"mapped",[12524]],[[65435,65435],"mapped",[12525]],[[65436,65436],"mapped",[12527]],[[65437,65437],"mapped",[12531]],[[65438,65438],"mapped",[12441]],[[65439,65439],"mapped",[12442]],[[65440,65440],"disallowed"],[[65441,65441],"mapped",[4352]],[[65442,65442],"mapped",[4353]],[[65443,65443],"mapped",[4522]],[[65444,65444],"mapped",[4354]],[[65445,65445],"mapped",[4524]],[[65446,65446],"mapped",[4525]],[[65447,65447],"mapped",[4355]],[[65448,65448],"mapped",[4356]],[[65449,65449],"mapped",[4357]],[[65450,65450],"mapped",[4528]],[[65451,65451],"mapped",[4529]],[[65452,65452],"mapped",[4530]],[[65453,65453],"mapped",[4531]],[[65454,65454],"mapped",[4532]],[[65455,65455],"mapped",[4533]],[[65456,65456],"mapped",[4378]],[[65457,65457],"mapped",[4358]],[[65458,65458],"mapped",[4359]],[[65459,65459],"mapped",[4360]],[[65460,65460],"mapped",[4385]],[[65461,65461],"mapped",[4361]],[[65462,65462],"mapped",[4362]],[[65463,65463],"mapped",[4363]],[[65464,65464],"mapped",[4364]],[[65465,65465],"mapped",[4365]],[[65466,65466],"mapped",[4366]],[[65467,65467],"mapped",[4367]],[[65468,65468],"mapped",[4368]],[[65469,65469],"mapped",[4369]],[[65470,65470],"mapped",[4370]],[[65471,65473],"disallowed"],[[65474,65474],"mapped",[4449]],[[65475,65475],"mapped",[4450]],[[65476,65476],"mapped",[4451]],[[65477,65477],"mapped",[4452]],[[65478,65478],"mapped",[4453]],[[65479,65479],"mapped",[4454]],[[65480,65481],"disallowed"],[[65482,65482],"mapped",[4455]],[[65483,65483],"mapped",[4456]],[[65484,65484],"mapped",[4457]],[[65485,65485],"mapped",[4458]],[[65486,65486],"mapped",[4459]],[[65487,65487],"mapped",[4460]],[[65488,65489],"disallowed"],[[65490,65490],"mapped",[4461]],[[65491,65491],"mapped",[4462]],[[65492,65492],"mapped",[4463]],[[65493,65493],"mapped",[4464]],[[65494,65494],"mapped",[4465]],[[65495,65495],"mapped",[4466]],[[65496,65497],"disallowed"],[[65498,65498],"mapped",[4467]],[[65499,65499],"mapped",[4468]],[[65500,65500],"mapped",[4469]],[[65501,65503],"disallowed"],[[65504,65504],"mapped",[162]],[[65505,65505],"mapped",[163]],[[65506,65506],"mapped",[172]],[[65507,65507],"disallowed_STD3_mapped",[32,772]],[[65508,65508],"mapped",[166]],[[65509,65509],"mapped",[165]],[[65510,65510],"mapped",[8361]],[[65511,65511],"disallowed"],[[65512,65512],"mapped",[9474]],[[65513,65513],"mapped",[8592]],[[65514,65514],"mapped",[8593]],[[65515,65515],"mapped",[8594]],[[65516,65516],"mapped",[8595]],[[65517,65517],"mapped",[9632]],[[65518,65518],"mapped",[9675]],[[65519,65528],"disallowed"],[[65529,65531],"disallowed"],[[65532,65532],"disallowed"],[[65533,65533],"disallowed"],[[65534,65535],"disallowed"],[[65536,65547],"valid"],[[65548,65548],"disallowed"],[[65549,65574],"valid"],[[65575,65575],"disallowed"],[[65576,65594],"valid"],[[65595,65595],"disallowed"],[[65596,65597],"valid"],[[65598,65598],"disallowed"],[[65599,65613],"valid"],[[65614,65615],"disallowed"],[[65616,65629],"valid"],[[65630,65663],"disallowed"],[[65664,65786],"valid"],[[65787,65791],"disallowed"],[[65792,65794],"valid",[],"NV8"],[[65795,65798],"disallowed"],[[65799,65843],"valid",[],"NV8"],[[65844,65846],"disallowed"],[[65847,65855],"valid",[],"NV8"],[[65856,65930],"valid",[],"NV8"],[[65931,65932],"valid",[],"NV8"],[[65933,65935],"disallowed"],[[65936,65947],"valid",[],"NV8"],[[65948,65951],"disallowed"],[[65952,65952],"valid",[],"NV8"],[[65953,65999],"disallowed"],[[66000,66044],"valid",[],"NV8"],[[66045,66045],"valid"],[[66046,66175],"disallowed"],[[66176,66204],"valid"],[[66205,66207],"disallowed"],[[66208,66256],"valid"],[[66257,66271],"disallowed"],[[66272,66272],"valid"],[[66273,66299],"valid",[],"NV8"],[[66300,66303],"disallowed"],[[66304,66334],"valid"],[[66335,66335],"valid"],[[66336,66339],"valid",[],"NV8"],[[66340,66351],"disallowed"],[[66352,66368],"valid"],[[66369,66369],"valid",[],"NV8"],[[66370,66377],"valid"],[[66378,66378],"valid",[],"NV8"],[[66379,66383],"disallowed"],[[66384,66426],"valid"],[[66427,66431],"disallowed"],[[66432,66461],"valid"],[[66462,66462],"disallowed"],[[66463,66463],"valid",[],"NV8"],[[66464,66499],"valid"],[[66500,66503],"disallowed"],[[66504,66511],"valid"],[[66512,66517],"valid",[],"NV8"],[[66518,66559],"disallowed"],[[66560,66560],"mapped",[66600]],[[66561,66561],"mapped",[66601]],[[66562,66562],"mapped",[66602]],[[66563,66563],"mapped",[66603]],[[66564,66564],"mapped",[66604]],[[66565,66565],"mapped",[66605]],[[66566,66566],"mapped",[66606]],[[66567,66567],"mapped",[66607]],[[66568,66568],"mapped",[66608]],[[66569,66569],"mapped",[66609]],[[66570,66570],"mapped",[66610]],[[66571,66571],"mapped",[66611]],[[66572,66572],"mapped",[66612]],[[66573,66573],"mapped",[66613]],[[66574,66574],"mapped",[66614]],[[66575,66575],"mapped",[66615]],[[66576,66576],"mapped",[66616]],[[66577,66577],"mapped",[66617]],[[66578,66578],"mapped",[66618]],[[66579,66579],"mapped",[66619]],[[66580,66580],"mapped",[66620]],[[66581,66581],"mapped",[66621]],[[66582,66582],"mapped",[66622]],[[66583,66583],"mapped",[66623]],[[66584,66584],"mapped",[66624]],[[66585,66585],"mapped",[66625]],[[66586,66586],"mapped",[66626]],[[66587,66587],"mapped",[66627]],[[66588,66588],"mapped",[66628]],[[66589,66589],"mapped",[66629]],[[66590,66590],"mapped",[66630]],[[66591,66591],"mapped",[66631]],[[66592,66592],"mapped",[66632]],[[66593,66593],"mapped",[66633]],[[66594,66594],"mapped",[66634]],[[66595,66595],"mapped",[66635]],[[66596,66596],"mapped",[66636]],[[66597,66597],"mapped",[66637]],[[66598,66598],"mapped",[66638]],[[66599,66599],"mapped",[66639]],[[66600,66637],"valid"],[[66638,66717],"valid"],[[66718,66719],"disallowed"],[[66720,66729],"valid"],[[66730,66815],"disallowed"],[[66816,66855],"valid"],[[66856,66863],"disallowed"],[[66864,66915],"valid"],[[66916,66926],"disallowed"],[[66927,66927],"valid",[],"NV8"],[[66928,67071],"disallowed"],[[67072,67382],"valid"],[[67383,67391],"disallowed"],[[67392,67413],"valid"],[[67414,67423],"disallowed"],[[67424,67431],"valid"],[[67432,67583],"disallowed"],[[67584,67589],"valid"],[[67590,67591],"disallowed"],[[67592,67592],"valid"],[[67593,67593],"disallowed"],[[67594,67637],"valid"],[[67638,67638],"disallowed"],[[67639,67640],"valid"],[[67641,67643],"disallowed"],[[67644,67644],"valid"],[[67645,67646],"disallowed"],[[67647,67647],"valid"],[[67648,67669],"valid"],[[67670,67670],"disallowed"],[[67671,67679],"valid",[],"NV8"],[[67680,67702],"valid"],[[67703,67711],"valid",[],"NV8"],[[67712,67742],"valid"],[[67743,67750],"disallowed"],[[67751,67759],"valid",[],"NV8"],[[67760,67807],"disallowed"],[[67808,67826],"valid"],[[67827,67827],"disallowed"],[[67828,67829],"valid"],[[67830,67834],"disallowed"],[[67835,67839],"valid",[],"NV8"],[[67840,67861],"valid"],[[67862,67865],"valid",[],"NV8"],[[67866,67867],"valid",[],"NV8"],[[67868,67870],"disallowed"],[[67871,67871],"valid",[],"NV8"],[[67872,67897],"valid"],[[67898,67902],"disallowed"],[[67903,67903],"valid",[],"NV8"],[[67904,67967],"disallowed"],[[67968,68023],"valid"],[[68024,68027],"disallowed"],[[68028,68029],"valid",[],"NV8"],[[68030,68031],"valid"],[[68032,68047],"valid",[],"NV8"],[[68048,68049],"disallowed"],[[68050,68095],"valid",[],"NV8"],[[68096,68099],"valid"],[[68100,68100],"disallowed"],[[68101,68102],"valid"],[[68103,68107],"disallowed"],[[68108,68115],"valid"],[[68116,68116],"disallowed"],[[68117,68119],"valid"],[[68120,68120],"disallowed"],[[68121,68147],"valid"],[[68148,68151],"disallowed"],[[68152,68154],"valid"],[[68155,68158],"disallowed"],[[68159,68159],"valid"],[[68160,68167],"valid",[],"NV8"],[[68168,68175],"disallowed"],[[68176,68184],"valid",[],"NV8"],[[68185,68191],"disallowed"],[[68192,68220],"valid"],[[68221,68223],"valid",[],"NV8"],[[68224,68252],"valid"],[[68253,68255],"valid",[],"NV8"],[[68256,68287],"disallowed"],[[68288,68295],"valid"],[[68296,68296],"valid",[],"NV8"],[[68297,68326],"valid"],[[68327,68330],"disallowed"],[[68331,68342],"valid",[],"NV8"],[[68343,68351],"disallowed"],[[68352,68405],"valid"],[[68406,68408],"disallowed"],[[68409,68415],"valid",[],"NV8"],[[68416,68437],"valid"],[[68438,68439],"disallowed"],[[68440,68447],"valid",[],"NV8"],[[68448,68466],"valid"],[[68467,68471],"disallowed"],[[68472,68479],"valid",[],"NV8"],[[68480,68497],"valid"],[[68498,68504],"disallowed"],[[68505,68508],"valid",[],"NV8"],[[68509,68520],"disallowed"],[[68521,68527],"valid",[],"NV8"],[[68528,68607],"disallowed"],[[68608,68680],"valid"],[[68681,68735],"disallowed"],[[68736,68736],"mapped",[68800]],[[68737,68737],"mapped",[68801]],[[68738,68738],"mapped",[68802]],[[68739,68739],"mapped",[68803]],[[68740,68740],"mapped",[68804]],[[68741,68741],"mapped",[68805]],[[68742,68742],"mapped",[68806]],[[68743,68743],"mapped",[68807]],[[68744,68744],"mapped",[68808]],[[68745,68745],"mapped",[68809]],[[68746,68746],"mapped",[68810]],[[68747,68747],"mapped",[68811]],[[68748,68748],"mapped",[68812]],[[68749,68749],"mapped",[68813]],[[68750,68750],"mapped",[68814]],[[68751,68751],"mapped",[68815]],[[68752,68752],"mapped",[68816]],[[68753,68753],"mapped",[68817]],[[68754,68754],"mapped",[68818]],[[68755,68755],"mapped",[68819]],[[68756,68756],"mapped",[68820]],[[68757,68757],"mapped",[68821]],[[68758,68758],"mapped",[68822]],[[68759,68759],"mapped",[68823]],[[68760,68760],"mapped",[68824]],[[68761,68761],"mapped",[68825]],[[68762,68762],"mapped",[68826]],[[68763,68763],"mapped",[68827]],[[68764,68764],"mapped",[68828]],[[68765,68765],"mapped",[68829]],[[68766,68766],"mapped",[68830]],[[68767,68767],"mapped",[68831]],[[68768,68768],"mapped",[68832]],[[68769,68769],"mapped",[68833]],[[68770,68770],"mapped",[68834]],[[68771,68771],"mapped",[68835]],[[68772,68772],"mapped",[68836]],[[68773,68773],"mapped",[68837]],[[68774,68774],"mapped",[68838]],[[68775,68775],"mapped",[68839]],[[68776,68776],"mapped",[68840]],[[68777,68777],"mapped",[68841]],[[68778,68778],"mapped",[68842]],[[68779,68779],"mapped",[68843]],[[68780,68780],"mapped",[68844]],[[68781,68781],"mapped",[68845]],[[68782,68782],"mapped",[68846]],[[68783,68783],"mapped",[68847]],[[68784,68784],"mapped",[68848]],[[68785,68785],"mapped",[68849]],[[68786,68786],"mapped",[68850]],[[68787,68799],"disallowed"],[[68800,68850],"valid"],[[68851,68857],"disallowed"],[[68858,68863],"valid",[],"NV8"],[[68864,69215],"disallowed"],[[69216,69246],"valid",[],"NV8"],[[69247,69631],"disallowed"],[[69632,69702],"valid"],[[69703,69709],"valid",[],"NV8"],[[69710,69713],"disallowed"],[[69714,69733],"valid",[],"NV8"],[[69734,69743],"valid"],[[69744,69758],"disallowed"],[[69759,69759],"valid"],[[69760,69818],"valid"],[[69819,69820],"valid",[],"NV8"],[[69821,69821],"disallowed"],[[69822,69825],"valid",[],"NV8"],[[69826,69839],"disallowed"],[[69840,69864],"valid"],[[69865,69871],"disallowed"],[[69872,69881],"valid"],[[69882,69887],"disallowed"],[[69888,69940],"valid"],[[69941,69941],"disallowed"],[[69942,69951],"valid"],[[69952,69955],"valid",[],"NV8"],[[69956,69967],"disallowed"],[[69968,70003],"valid"],[[70004,70005],"valid",[],"NV8"],[[70006,70006],"valid"],[[70007,70015],"disallowed"],[[70016,70084],"valid"],[[70085,70088],"valid",[],"NV8"],[[70089,70089],"valid",[],"NV8"],[[70090,70092],"valid"],[[70093,70093],"valid",[],"NV8"],[[70094,70095],"disallowed"],[[70096,70105],"valid"],[[70106,70106],"valid"],[[70107,70107],"valid",[],"NV8"],[[70108,70108],"valid"],[[70109,70111],"valid",[],"NV8"],[[70112,70112],"disallowed"],[[70113,70132],"valid",[],"NV8"],[[70133,70143],"disallowed"],[[70144,70161],"valid"],[[70162,70162],"disallowed"],[[70163,70199],"valid"],[[70200,70205],"valid",[],"NV8"],[[70206,70271],"disallowed"],[[70272,70278],"valid"],[[70279,70279],"disallowed"],[[70280,70280],"valid"],[[70281,70281],"disallowed"],[[70282,70285],"valid"],[[70286,70286],"disallowed"],[[70287,70301],"valid"],[[70302,70302],"disallowed"],[[70303,70312],"valid"],[[70313,70313],"valid",[],"NV8"],[[70314,70319],"disallowed"],[[70320,70378],"valid"],[[70379,70383],"disallowed"],[[70384,70393],"valid"],[[70394,70399],"disallowed"],[[70400,70400],"valid"],[[70401,70403],"valid"],[[70404,70404],"disallowed"],[[70405,70412],"valid"],[[70413,70414],"disallowed"],[[70415,70416],"valid"],[[70417,70418],"disallowed"],[[70419,70440],"valid"],[[70441,70441],"disallowed"],[[70442,70448],"valid"],[[70449,70449],"disallowed"],[[70450,70451],"valid"],[[70452,70452],"disallowed"],[[70453,70457],"valid"],[[70458,70459],"disallowed"],[[70460,70468],"valid"],[[70469,70470],"disallowed"],[[70471,70472],"valid"],[[70473,70474],"disallowed"],[[70475,70477],"valid"],[[70478,70479],"disallowed"],[[70480,70480],"valid"],[[70481,70486],"disallowed"],[[70487,70487],"valid"],[[70488,70492],"disallowed"],[[70493,70499],"valid"],[[70500,70501],"disallowed"],[[70502,70508],"valid"],[[70509,70511],"disallowed"],[[70512,70516],"valid"],[[70517,70783],"disallowed"],[[70784,70853],"valid"],[[70854,70854],"valid",[],"NV8"],[[70855,70855],"valid"],[[70856,70863],"disallowed"],[[70864,70873],"valid"],[[70874,71039],"disallowed"],[[71040,71093],"valid"],[[71094,71095],"disallowed"],[[71096,71104],"valid"],[[71105,71113],"valid",[],"NV8"],[[71114,71127],"valid",[],"NV8"],[[71128,71133],"valid"],[[71134,71167],"disallowed"],[[71168,71232],"valid"],[[71233,71235],"valid",[],"NV8"],[[71236,71236],"valid"],[[71237,71247],"disallowed"],[[71248,71257],"valid"],[[71258,71295],"disallowed"],[[71296,71351],"valid"],[[71352,71359],"disallowed"],[[71360,71369],"valid"],[[71370,71423],"disallowed"],[[71424,71449],"valid"],[[71450,71452],"disallowed"],[[71453,71467],"valid"],[[71468,71471],"disallowed"],[[71472,71481],"valid"],[[71482,71487],"valid",[],"NV8"],[[71488,71839],"disallowed"],[[71840,71840],"mapped",[71872]],[[71841,71841],"mapped",[71873]],[[71842,71842],"mapped",[71874]],[[71843,71843],"mapped",[71875]],[[71844,71844],"mapped",[71876]],[[71845,71845],"mapped",[71877]],[[71846,71846],"mapped",[71878]],[[71847,71847],"mapped",[71879]],[[71848,71848],"mapped",[71880]],[[71849,71849],"mapped",[71881]],[[71850,71850],"mapped",[71882]],[[71851,71851],"mapped",[71883]],[[71852,71852],"mapped",[71884]],[[71853,71853],"mapped",[71885]],[[71854,71854],"mapped",[71886]],[[71855,71855],"mapped",[71887]],[[71856,71856],"mapped",[71888]],[[71857,71857],"mapped",[71889]],[[71858,71858],"mapped",[71890]],[[71859,71859],"mapped",[71891]],[[71860,71860],"mapped",[71892]],[[71861,71861],"mapped",[71893]],[[71862,71862],"mapped",[71894]],[[71863,71863],"mapped",[71895]],[[71864,71864],"mapped",[71896]],[[71865,71865],"mapped",[71897]],[[71866,71866],"mapped",[71898]],[[71867,71867],"mapped",[71899]],[[71868,71868],"mapped",[71900]],[[71869,71869],"mapped",[71901]],[[71870,71870],"mapped",[71902]],[[71871,71871],"mapped",[71903]],[[71872,71913],"valid"],[[71914,71922],"valid",[],"NV8"],[[71923,71934],"disallowed"],[[71935,71935],"valid"],[[71936,72383],"disallowed"],[[72384,72440],"valid"],[[72441,73727],"disallowed"],[[73728,74606],"valid"],[[74607,74648],"valid"],[[74649,74649],"valid"],[[74650,74751],"disallowed"],[[74752,74850],"valid",[],"NV8"],[[74851,74862],"valid",[],"NV8"],[[74863,74863],"disallowed"],[[74864,74867],"valid",[],"NV8"],[[74868,74868],"valid",[],"NV8"],[[74869,74879],"disallowed"],[[74880,75075],"valid"],[[75076,77823],"disallowed"],[[77824,78894],"valid"],[[78895,82943],"disallowed"],[[82944,83526],"valid"],[[83527,92159],"disallowed"],[[92160,92728],"valid"],[[92729,92735],"disallowed"],[[92736,92766],"valid"],[[92767,92767],"disallowed"],[[92768,92777],"valid"],[[92778,92781],"disallowed"],[[92782,92783],"valid",[],"NV8"],[[92784,92879],"disallowed"],[[92880,92909],"valid"],[[92910,92911],"disallowed"],[[92912,92916],"valid"],[[92917,92917],"valid",[],"NV8"],[[92918,92927],"disallowed"],[[92928,92982],"valid"],[[92983,92991],"valid",[],"NV8"],[[92992,92995],"valid"],[[92996,92997],"valid",[],"NV8"],[[92998,93007],"disallowed"],[[93008,93017],"valid"],[[93018,93018],"disallowed"],[[93019,93025],"valid",[],"NV8"],[[93026,93026],"disallowed"],[[93027,93047],"valid"],[[93048,93052],"disallowed"],[[93053,93071],"valid"],[[93072,93951],"disallowed"],[[93952,94020],"valid"],[[94021,94031],"disallowed"],[[94032,94078],"valid"],[[94079,94094],"disallowed"],[[94095,94111],"valid"],[[94112,110591],"disallowed"],[[110592,110593],"valid"],[[110594,113663],"disallowed"],[[113664,113770],"valid"],[[113771,113775],"disallowed"],[[113776,113788],"valid"],[[113789,113791],"disallowed"],[[113792,113800],"valid"],[[113801,113807],"disallowed"],[[113808,113817],"valid"],[[113818,113819],"disallowed"],[[113820,113820],"valid",[],"NV8"],[[113821,113822],"valid"],[[113823,113823],"valid",[],"NV8"],[[113824,113827],"ignored"],[[113828,118783],"disallowed"],[[118784,119029],"valid",[],"NV8"],[[119030,119039],"disallowed"],[[119040,119078],"valid",[],"NV8"],[[119079,119080],"disallowed"],[[119081,119081],"valid",[],"NV8"],[[119082,119133],"valid",[],"NV8"],[[119134,119134],"mapped",[119127,119141]],[[119135,119135],"mapped",[119128,119141]],[[119136,119136],"mapped",[119128,119141,119150]],[[119137,119137],"mapped",[119128,119141,119151]],[[119138,119138],"mapped",[119128,119141,119152]],[[119139,119139],"mapped",[119128,119141,119153]],[[119140,119140],"mapped",[119128,119141,119154]],[[119141,119154],"valid",[],"NV8"],[[119155,119162],"disallowed"],[[119163,119226],"valid",[],"NV8"],[[119227,119227],"mapped",[119225,119141]],[[119228,119228],"mapped",[119226,119141]],[[119229,119229],"mapped",[119225,119141,119150]],[[119230,119230],"mapped",[119226,119141,119150]],[[119231,119231],"mapped",[119225,119141,119151]],[[119232,119232],"mapped",[119226,119141,119151]],[[119233,119261],"valid",[],"NV8"],[[119262,119272],"valid",[],"NV8"],[[119273,119295],"disallowed"],[[119296,119365],"valid",[],"NV8"],[[119366,119551],"disallowed"],[[119552,119638],"valid",[],"NV8"],[[119639,119647],"disallowed"],[[119648,119665],"valid",[],"NV8"],[[119666,119807],"disallowed"],[[119808,119808],"mapped",[97]],[[119809,119809],"mapped",[98]],[[119810,119810],"mapped",[99]],[[119811,119811],"mapped",[100]],[[119812,119812],"mapped",[101]],[[119813,119813],"mapped",[102]],[[119814,119814],"mapped",[103]],[[119815,119815],"mapped",[104]],[[119816,119816],"mapped",[105]],[[119817,119817],"mapped",[106]],[[119818,119818],"mapped",[107]],[[119819,119819],"mapped",[108]],[[119820,119820],"mapped",[109]],[[119821,119821],"mapped",[110]],[[119822,119822],"mapped",[111]],[[119823,119823],"mapped",[112]],[[119824,119824],"mapped",[113]],[[119825,119825],"mapped",[114]],[[119826,119826],"mapped",[115]],[[119827,119827],"mapped",[116]],[[119828,119828],"mapped",[117]],[[119829,119829],"mapped",[118]],[[119830,119830],"mapped",[119]],[[119831,119831],"mapped",[120]],[[119832,119832],"mapped",[121]],[[119833,119833],"mapped",[122]],[[119834,119834],"mapped",[97]],[[119835,119835],"mapped",[98]],[[119836,119836],"mapped",[99]],[[119837,119837],"mapped",[100]],[[119838,119838],"mapped",[101]],[[119839,119839],"mapped",[102]],[[119840,119840],"mapped",[103]],[[119841,119841],"mapped",[104]],[[119842,119842],"mapped",[105]],[[119843,119843],"mapped",[106]],[[119844,119844],"mapped",[107]],[[119845,119845],"mapped",[108]],[[119846,119846],"mapped",[109]],[[119847,119847],"mapped",[110]],[[119848,119848],"mapped",[111]],[[119849,119849],"mapped",[112]],[[119850,119850],"mapped",[113]],[[119851,119851],"mapped",[114]],[[119852,119852],"mapped",[115]],[[119853,119853],"mapped",[116]],[[119854,119854],"mapped",[117]],[[119855,119855],"mapped",[118]],[[119856,119856],"mapped",[119]],[[119857,119857],"mapped",[120]],[[119858,119858],"mapped",[121]],[[119859,119859],"mapped",[122]],[[119860,119860],"mapped",[97]],[[119861,119861],"mapped",[98]],[[119862,119862],"mapped",[99]],[[119863,119863],"mapped",[100]],[[119864,119864],"mapped",[101]],[[119865,119865],"mapped",[102]],[[119866,119866],"mapped",[103]],[[119867,119867],"mapped",[104]],[[119868,119868],"mapped",[105]],[[119869,119869],"mapped",[106]],[[119870,119870],"mapped",[107]],[[119871,119871],"mapped",[108]],[[119872,119872],"mapped",[109]],[[119873,119873],"mapped",[110]],[[119874,119874],"mapped",[111]],[[119875,119875],"mapped",[112]],[[119876,119876],"mapped",[113]],[[119877,119877],"mapped",[114]],[[119878,119878],"mapped",[115]],[[119879,119879],"mapped",[116]],[[119880,119880],"mapped",[117]],[[119881,119881],"mapped",[118]],[[119882,119882],"mapped",[119]],[[119883,119883],"mapped",[120]],[[119884,119884],"mapped",[121]],[[119885,119885],"mapped",[122]],[[119886,119886],"mapped",[97]],[[119887,119887],"mapped",[98]],[[119888,119888],"mapped",[99]],[[119889,119889],"mapped",[100]],[[119890,119890],"mapped",[101]],[[119891,119891],"mapped",[102]],[[119892,119892],"mapped",[103]],[[119893,119893],"disallowed"],[[119894,119894],"mapped",[105]],[[119895,119895],"mapped",[106]],[[119896,119896],"mapped",[107]],[[119897,119897],"mapped",[108]],[[119898,119898],"mapped",[109]],[[119899,119899],"mapped",[110]],[[119900,119900],"mapped",[111]],[[119901,119901],"mapped",[112]],[[119902,119902],"mapped",[113]],[[119903,119903],"mapped",[114]],[[119904,119904],"mapped",[115]],[[119905,119905],"mapped",[116]],[[119906,119906],"mapped",[117]],[[119907,119907],"mapped",[118]],[[119908,119908],"mapped",[119]],[[119909,119909],"mapped",[120]],[[119910,119910],"mapped",[121]],[[119911,119911],"mapped",[122]],[[119912,119912],"mapped",[97]],[[119913,119913],"mapped",[98]],[[119914,119914],"mapped",[99]],[[119915,119915],"mapped",[100]],[[119916,119916],"mapped",[101]],[[119917,119917],"mapped",[102]],[[119918,119918],"mapped",[103]],[[119919,119919],"mapped",[104]],[[119920,119920],"mapped",[105]],[[119921,119921],"mapped",[106]],[[119922,119922],"mapped",[107]],[[119923,119923],"mapped",[108]],[[119924,119924],"mapped",[109]],[[119925,119925],"mapped",[110]],[[119926,119926],"mapped",[111]],[[119927,119927],"mapped",[112]],[[119928,119928],"mapped",[113]],[[119929,119929],"mapped",[114]],[[119930,119930],"mapped",[115]],[[119931,119931],"mapped",[116]],[[119932,119932],"mapped",[117]],[[119933,119933],"mapped",[118]],[[119934,119934],"mapped",[119]],[[119935,119935],"mapped",[120]],[[119936,119936],"mapped",[121]],[[119937,119937],"mapped",[122]],[[119938,119938],"mapped",[97]],[[119939,119939],"mapped",[98]],[[119940,119940],"mapped",[99]],[[119941,119941],"mapped",[100]],[[119942,119942],"mapped",[101]],[[119943,119943],"mapped",[102]],[[119944,119944],"mapped",[103]],[[119945,119945],"mapped",[104]],[[119946,119946],"mapped",[105]],[[119947,119947],"mapped",[106]],[[119948,119948],"mapped",[107]],[[119949,119949],"mapped",[108]],[[119950,119950],"mapped",[109]],[[119951,119951],"mapped",[110]],[[119952,119952],"mapped",[111]],[[119953,119953],"mapped",[112]],[[119954,119954],"mapped",[113]],[[119955,119955],"mapped",[114]],[[119956,119956],"mapped",[115]],[[119957,119957],"mapped",[116]],[[119958,119958],"mapped",[117]],[[119959,119959],"mapped",[118]],[[119960,119960],"mapped",[119]],[[119961,119961],"mapped",[120]],[[119962,119962],"mapped",[121]],[[119963,119963],"mapped",[122]],[[119964,119964],"mapped",[97]],[[119965,119965],"disallowed"],[[119966,119966],"mapped",[99]],[[119967,119967],"mapped",[100]],[[119968,119969],"disallowed"],[[119970,119970],"mapped",[103]],[[119971,119972],"disallowed"],[[119973,119973],"mapped",[106]],[[119974,119974],"mapped",[107]],[[119975,119976],"disallowed"],[[119977,119977],"mapped",[110]],[[119978,119978],"mapped",[111]],[[119979,119979],"mapped",[112]],[[119980,119980],"mapped",[113]],[[119981,119981],"disallowed"],[[119982,119982],"mapped",[115]],[[119983,119983],"mapped",[116]],[[119984,119984],"mapped",[117]],[[119985,119985],"mapped",[118]],[[119986,119986],"mapped",[119]],[[119987,119987],"mapped",[120]],[[119988,119988],"mapped",[121]],[[119989,119989],"mapped",[122]],[[119990,119990],"mapped",[97]],[[119991,119991],"mapped",[98]],[[119992,119992],"mapped",[99]],[[119993,119993],"mapped",[100]],[[119994,119994],"disallowed"],[[119995,119995],"mapped",[102]],[[119996,119996],"disallowed"],[[119997,119997],"mapped",[104]],[[119998,119998],"mapped",[105]],[[119999,119999],"mapped",[106]],[[120000,120000],"mapped",[107]],[[120001,120001],"mapped",[108]],[[120002,120002],"mapped",[109]],[[120003,120003],"mapped",[110]],[[120004,120004],"disallowed"],[[120005,120005],"mapped",[112]],[[120006,120006],"mapped",[113]],[[120007,120007],"mapped",[114]],[[120008,120008],"mapped",[115]],[[120009,120009],"mapped",[116]],[[120010,120010],"mapped",[117]],[[120011,120011],"mapped",[118]],[[120012,120012],"mapped",[119]],[[120013,120013],"mapped",[120]],[[120014,120014],"mapped",[121]],[[120015,120015],"mapped",[122]],[[120016,120016],"mapped",[97]],[[120017,120017],"mapped",[98]],[[120018,120018],"mapped",[99]],[[120019,120019],"mapped",[100]],[[120020,120020],"mapped",[101]],[[120021,120021],"mapped",[102]],[[120022,120022],"mapped",[103]],[[120023,120023],"mapped",[104]],[[120024,120024],"mapped",[105]],[[120025,120025],"mapped",[106]],[[120026,120026],"mapped",[107]],[[120027,120027],"mapped",[108]],[[120028,120028],"mapped",[109]],[[120029,120029],"mapped",[110]],[[120030,120030],"mapped",[111]],[[120031,120031],"mapped",[112]],[[120032,120032],"mapped",[113]],[[120033,120033],"mapped",[114]],[[120034,120034],"mapped",[115]],[[120035,120035],"mapped",[116]],[[120036,120036],"mapped",[117]],[[120037,120037],"mapped",[118]],[[120038,120038],"mapped",[119]],[[120039,120039],"mapped",[120]],[[120040,120040],"mapped",[121]],[[120041,120041],"mapped",[122]],[[120042,120042],"mapped",[97]],[[120043,120043],"mapped",[98]],[[120044,120044],"mapped",[99]],[[120045,120045],"mapped",[100]],[[120046,120046],"mapped",[101]],[[120047,120047],"mapped",[102]],[[120048,120048],"mapped",[103]],[[120049,120049],"mapped",[104]],[[120050,120050],"mapped",[105]],[[120051,120051],"mapped",[106]],[[120052,120052],"mapped",[107]],[[120053,120053],"mapped",[108]],[[120054,120054],"mapped",[109]],[[120055,120055],"mapped",[110]],[[120056,120056],"mapped",[111]],[[120057,120057],"mapped",[112]],[[120058,120058],"mapped",[113]],[[120059,120059],"mapped",[114]],[[120060,120060],"mapped",[115]],[[120061,120061],"mapped",[116]],[[120062,120062],"mapped",[117]],[[120063,120063],"mapped",[118]],[[120064,120064],"mapped",[119]],[[120065,120065],"mapped",[120]],[[120066,120066],"mapped",[121]],[[120067,120067],"mapped",[122]],[[120068,120068],"mapped",[97]],[[120069,120069],"mapped",[98]],[[120070,120070],"disallowed"],[[120071,120071],"mapped",[100]],[[120072,120072],"mapped",[101]],[[120073,120073],"mapped",[102]],[[120074,120074],"mapped",[103]],[[120075,120076],"disallowed"],[[120077,120077],"mapped",[106]],[[120078,120078],"mapped",[107]],[[120079,120079],"mapped",[108]],[[120080,120080],"mapped",[109]],[[120081,120081],"mapped",[110]],[[120082,120082],"mapped",[111]],[[120083,120083],"mapped",[112]],[[120084,120084],"mapped",[113]],[[120085,120085],"disallowed"],[[120086,120086],"mapped",[115]],[[120087,120087],"mapped",[116]],[[120088,120088],"mapped",[117]],[[120089,120089],"mapped",[118]],[[120090,120090],"mapped",[119]],[[120091,120091],"mapped",[120]],[[120092,120092],"mapped",[121]],[[120093,120093],"disallowed"],[[120094,120094],"mapped",[97]],[[120095,120095],"mapped",[98]],[[120096,120096],"mapped",[99]],[[120097,120097],"mapped",[100]],[[120098,120098],"mapped",[101]],[[120099,120099],"mapped",[102]],[[120100,120100],"mapped",[103]],[[120101,120101],"mapped",[104]],[[120102,120102],"mapped",[105]],[[120103,120103],"mapped",[106]],[[120104,120104],"mapped",[107]],[[120105,120105],"mapped",[108]],[[120106,120106],"mapped",[109]],[[120107,120107],"mapped",[110]],[[120108,120108],"mapped",[111]],[[120109,120109],"mapped",[112]],[[120110,120110],"mapped",[113]],[[120111,120111],"mapped",[114]],[[120112,120112],"mapped",[115]],[[120113,120113],"mapped",[116]],[[120114,120114],"mapped",[117]],[[120115,120115],"mapped",[118]],[[120116,120116],"mapped",[119]],[[120117,120117],"mapped",[120]],[[120118,120118],"mapped",[121]],[[120119,120119],"mapped",[122]],[[120120,120120],"mapped",[97]],[[120121,120121],"mapped",[98]],[[120122,120122],"disallowed"],[[120123,120123],"mapped",[100]],[[120124,120124],"mapped",[101]],[[120125,120125],"mapped",[102]],[[120126,120126],"mapped",[103]],[[120127,120127],"disallowed"],[[120128,120128],"mapped",[105]],[[120129,120129],"mapped",[106]],[[120130,120130],"mapped",[107]],[[120131,120131],"mapped",[108]],[[120132,120132],"mapped",[109]],[[120133,120133],"disallowed"],[[120134,120134],"mapped",[111]],[[120135,120137],"disallowed"],[[120138,120138],"mapped",[115]],[[120139,120139],"mapped",[116]],[[120140,120140],"mapped",[117]],[[120141,120141],"mapped",[118]],[[120142,120142],"mapped",[119]],[[120143,120143],"mapped",[120]],[[120144,120144],"mapped",[121]],[[120145,120145],"disallowed"],[[120146,120146],"mapped",[97]],[[120147,120147],"mapped",[98]],[[120148,120148],"mapped",[99]],[[120149,120149],"mapped",[100]],[[120150,120150],"mapped",[101]],[[120151,120151],"mapped",[102]],[[120152,120152],"mapped",[103]],[[120153,120153],"mapped",[104]],[[120154,120154],"mapped",[105]],[[120155,120155],"mapped",[106]],[[120156,120156],"mapped",[107]],[[120157,120157],"mapped",[108]],[[120158,120158],"mapped",[109]],[[120159,120159],"mapped",[110]],[[120160,120160],"mapped",[111]],[[120161,120161],"mapped",[112]],[[120162,120162],"mapped",[113]],[[120163,120163],"mapped",[114]],[[120164,120164],"mapped",[115]],[[120165,120165],"mapped",[116]],[[120166,120166],"mapped",[117]],[[120167,120167],"mapped",[118]],[[120168,120168],"mapped",[119]],[[120169,120169],"mapped",[120]],[[120170,120170],"mapped",[121]],[[120171,120171],"mapped",[122]],[[120172,120172],"mapped",[97]],[[120173,120173],"mapped",[98]],[[120174,120174],"mapped",[99]],[[120175,120175],"mapped",[100]],[[120176,120176],"mapped",[101]],[[120177,120177],"mapped",[102]],[[120178,120178],"mapped",[103]],[[120179,120179],"mapped",[104]],[[120180,120180],"mapped",[105]],[[120181,120181],"mapped",[106]],[[120182,120182],"mapped",[107]],[[120183,120183],"mapped",[108]],[[120184,120184],"mapped",[109]],[[120185,120185],"mapped",[110]],[[120186,120186],"mapped",[111]],[[120187,120187],"mapped",[112]],[[120188,120188],"mapped",[113]],[[120189,120189],"mapped",[114]],[[120190,120190],"mapped",[115]],[[120191,120191],"mapped",[116]],[[120192,120192],"mapped",[117]],[[120193,120193],"mapped",[118]],[[120194,120194],"mapped",[119]],[[120195,120195],"mapped",[120]],[[120196,120196],"mapped",[121]],[[120197,120197],"mapped",[122]],[[120198,120198],"mapped",[97]],[[120199,120199],"mapped",[98]],[[120200,120200],"mapped",[99]],[[120201,120201],"mapped",[100]],[[120202,120202],"mapped",[101]],[[120203,120203],"mapped",[102]],[[120204,120204],"mapped",[103]],[[120205,120205],"mapped",[104]],[[120206,120206],"mapped",[105]],[[120207,120207],"mapped",[106]],[[120208,120208],"mapped",[107]],[[120209,120209],"mapped",[108]],[[120210,120210],"mapped",[109]],[[120211,120211],"mapped",[110]],[[120212,120212],"mapped",[111]],[[120213,120213],"mapped",[112]],[[120214,120214],"mapped",[113]],[[120215,120215],"mapped",[114]],[[120216,120216],"mapped",[115]],[[120217,120217],"mapped",[116]],[[120218,120218],"mapped",[117]],[[120219,120219],"mapped",[118]],[[120220,120220],"mapped",[119]],[[120221,120221],"mapped",[120]],[[120222,120222],"mapped",[121]],[[120223,120223],"mapped",[122]],[[120224,120224],"mapped",[97]],[[120225,120225],"mapped",[98]],[[120226,120226],"mapped",[99]],[[120227,120227],"mapped",[100]],[[120228,120228],"mapped",[101]],[[120229,120229],"mapped",[102]],[[120230,120230],"mapped",[103]],[[120231,120231],"mapped",[104]],[[120232,120232],"mapped",[105]],[[120233,120233],"mapped",[106]],[[120234,120234],"mapped",[107]],[[120235,120235],"mapped",[108]],[[120236,120236],"mapped",[109]],[[120237,120237],"mapped",[110]],[[120238,120238],"mapped",[111]],[[120239,120239],"mapped",[112]],[[120240,120240],"mapped",[113]],[[120241,120241],"mapped",[114]],[[120242,120242],"mapped",[115]],[[120243,120243],"mapped",[116]],[[120244,120244],"mapped",[117]],[[120245,120245],"mapped",[118]],[[120246,120246],"mapped",[119]],[[120247,120247],"mapped",[120]],[[120248,120248],"mapped",[121]],[[120249,120249],"mapped",[122]],[[120250,120250],"mapped",[97]],[[120251,120251],"mapped",[98]],[[120252,120252],"mapped",[99]],[[120253,120253],"mapped",[100]],[[120254,120254],"mapped",[101]],[[120255,120255],"mapped",[102]],[[120256,120256],"mapped",[103]],[[120257,120257],"mapped",[104]],[[120258,120258],"mapped",[105]],[[120259,120259],"mapped",[106]],[[120260,120260],"mapped",[107]],[[120261,120261],"mapped",[108]],[[120262,120262],"mapped",[109]],[[120263,120263],"mapped",[110]],[[120264,120264],"mapped",[111]],[[120265,120265],"mapped",[112]],[[120266,120266],"mapped",[113]],[[120267,120267],"mapped",[114]],[[120268,120268],"mapped",[115]],[[120269,120269],"mapped",[116]],[[120270,120270],"mapped",[117]],[[120271,120271],"mapped",[118]],[[120272,120272],"mapped",[119]],[[120273,120273],"mapped",[120]],[[120274,120274],"mapped",[121]],[[120275,120275],"mapped",[122]],[[120276,120276],"mapped",[97]],[[120277,120277],"mapped",[98]],[[120278,120278],"mapped",[99]],[[120279,120279],"mapped",[100]],[[120280,120280],"mapped",[101]],[[120281,120281],"mapped",[102]],[[120282,120282],"mapped",[103]],[[120283,120283],"mapped",[104]],[[120284,120284],"mapped",[105]],[[120285,120285],"mapped",[106]],[[120286,120286],"mapped",[107]],[[120287,120287],"mapped",[108]],[[120288,120288],"mapped",[109]],[[120289,120289],"mapped",[110]],[[120290,120290],"mapped",[111]],[[120291,120291],"mapped",[112]],[[120292,120292],"mapped",[113]],[[120293,120293],"mapped",[114]],[[120294,120294],"mapped",[115]],[[120295,120295],"mapped",[116]],[[120296,120296],"mapped",[117]],[[120297,120297],"mapped",[118]],[[120298,120298],"mapped",[119]],[[120299,120299],"mapped",[120]],[[120300,120300],"mapped",[121]],[[120301,120301],"mapped",[122]],[[120302,120302],"mapped",[97]],[[120303,120303],"mapped",[98]],[[120304,120304],"mapped",[99]],[[120305,120305],"mapped",[100]],[[120306,120306],"mapped",[101]],[[120307,120307],"mapped",[102]],[[120308,120308],"mapped",[103]],[[120309,120309],"mapped",[104]],[[120310,120310],"mapped",[105]],[[120311,120311],"mapped",[106]],[[120312,120312],"mapped",[107]],[[120313,120313],"mapped",[108]],[[120314,120314],"mapped",[109]],[[120315,120315],"mapped",[110]],[[120316,120316],"mapped",[111]],[[120317,120317],"mapped",[112]],[[120318,120318],"mapped",[113]],[[120319,120319],"mapped",[114]],[[120320,120320],"mapped",[115]],[[120321,120321],"mapped",[116]],[[120322,120322],"mapped",[117]],[[120323,120323],"mapped",[118]],[[120324,120324],"mapped",[119]],[[120325,120325],"mapped",[120]],[[120326,120326],"mapped",[121]],[[120327,120327],"mapped",[122]],[[120328,120328],"mapped",[97]],[[120329,120329],"mapped",[98]],[[120330,120330],"mapped",[99]],[[120331,120331],"mapped",[100]],[[120332,120332],"mapped",[101]],[[120333,120333],"mapped",[102]],[[120334,120334],"mapped",[103]],[[120335,120335],"mapped",[104]],[[120336,120336],"mapped",[105]],[[120337,120337],"mapped",[106]],[[120338,120338],"mapped",[107]],[[120339,120339],"mapped",[108]],[[120340,120340],"mapped",[109]],[[120341,120341],"mapped",[110]],[[120342,120342],"mapped",[111]],[[120343,120343],"mapped",[112]],[[120344,120344],"mapped",[113]],[[120345,120345],"mapped",[114]],[[120346,120346],"mapped",[115]],[[120347,120347],"mapped",[116]],[[120348,120348],"mapped",[117]],[[120349,120349],"mapped",[118]],[[120350,120350],"mapped",[119]],[[120351,120351],"mapped",[120]],[[120352,120352],"mapped",[121]],[[120353,120353],"mapped",[122]],[[120354,120354],"mapped",[97]],[[120355,120355],"mapped",[98]],[[120356,120356],"mapped",[99]],[[120357,120357],"mapped",[100]],[[120358,120358],"mapped",[101]],[[120359,120359],"mapped",[102]],[[120360,120360],"mapped",[103]],[[120361,120361],"mapped",[104]],[[120362,120362],"mapped",[105]],[[120363,120363],"mapped",[106]],[[120364,120364],"mapped",[107]],[[120365,120365],"mapped",[108]],[[120366,120366],"mapped",[109]],[[120367,120367],"mapped",[110]],[[120368,120368],"mapped",[111]],[[120369,120369],"mapped",[112]],[[120370,120370],"mapped",[113]],[[120371,120371],"mapped",[114]],[[120372,120372],"mapped",[115]],[[120373,120373],"mapped",[116]],[[120374,120374],"mapped",[117]],[[120375,120375],"mapped",[118]],[[120376,120376],"mapped",[119]],[[120377,120377],"mapped",[120]],[[120378,120378],"mapped",[121]],[[120379,120379],"mapped",[122]],[[120380,120380],"mapped",[97]],[[120381,120381],"mapped",[98]],[[120382,120382],"mapped",[99]],[[120383,120383],"mapped",[100]],[[120384,120384],"mapped",[101]],[[120385,120385],"mapped",[102]],[[120386,120386],"mapped",[103]],[[120387,120387],"mapped",[104]],[[120388,120388],"mapped",[105]],[[120389,120389],"mapped",[106]],[[120390,120390],"mapped",[107]],[[120391,120391],"mapped",[108]],[[120392,120392],"mapped",[109]],[[120393,120393],"mapped",[110]],[[120394,120394],"mapped",[111]],[[120395,120395],"mapped",[112]],[[120396,120396],"mapped",[113]],[[120397,120397],"mapped",[114]],[[120398,120398],"mapped",[115]],[[120399,120399],"mapped",[116]],[[120400,120400],"mapped",[117]],[[120401,120401],"mapped",[118]],[[120402,120402],"mapped",[119]],[[120403,120403],"mapped",[120]],[[120404,120404],"mapped",[121]],[[120405,120405],"mapped",[122]],[[120406,120406],"mapped",[97]],[[120407,120407],"mapped",[98]],[[120408,120408],"mapped",[99]],[[120409,120409],"mapped",[100]],[[120410,120410],"mapped",[101]],[[120411,120411],"mapped",[102]],[[120412,120412],"mapped",[103]],[[120413,120413],"mapped",[104]],[[120414,120414],"mapped",[105]],[[120415,120415],"mapped",[106]],[[120416,120416],"mapped",[107]],[[120417,120417],"mapped",[108]],[[120418,120418],"mapped",[109]],[[120419,120419],"mapped",[110]],[[120420,120420],"mapped",[111]],[[120421,120421],"mapped",[112]],[[120422,120422],"mapped",[113]],[[120423,120423],"mapped",[114]],[[120424,120424],"mapped",[115]],[[120425,120425],"mapped",[116]],[[120426,120426],"mapped",[117]],[[120427,120427],"mapped",[118]],[[120428,120428],"mapped",[119]],[[120429,120429],"mapped",[120]],[[120430,120430],"mapped",[121]],[[120431,120431],"mapped",[122]],[[120432,120432],"mapped",[97]],[[120433,120433],"mapped",[98]],[[120434,120434],"mapped",[99]],[[120435,120435],"mapped",[100]],[[120436,120436],"mapped",[101]],[[120437,120437],"mapped",[102]],[[120438,120438],"mapped",[103]],[[120439,120439],"mapped",[104]],[[120440,120440],"mapped",[105]],[[120441,120441],"mapped",[106]],[[120442,120442],"mapped",[107]],[[120443,120443],"mapped",[108]],[[120444,120444],"mapped",[109]],[[120445,120445],"mapped",[110]],[[120446,120446],"mapped",[111]],[[120447,120447],"mapped",[112]],[[120448,120448],"mapped",[113]],[[120449,120449],"mapped",[114]],[[120450,120450],"mapped",[115]],[[120451,120451],"mapped",[116]],[[120452,120452],"mapped",[117]],[[120453,120453],"mapped",[118]],[[120454,120454],"mapped",[119]],[[120455,120455],"mapped",[120]],[[120456,120456],"mapped",[121]],[[120457,120457],"mapped",[122]],[[120458,120458],"mapped",[97]],[[120459,120459],"mapped",[98]],[[120460,120460],"mapped",[99]],[[120461,120461],"mapped",[100]],[[120462,120462],"mapped",[101]],[[120463,120463],"mapped",[102]],[[120464,120464],"mapped",[103]],[[120465,120465],"mapped",[104]],[[120466,120466],"mapped",[105]],[[120467,120467],"mapped",[106]],[[120468,120468],"mapped",[107]],[[120469,120469],"mapped",[108]],[[120470,120470],"mapped",[109]],[[120471,120471],"mapped",[110]],[[120472,120472],"mapped",[111]],[[120473,120473],"mapped",[112]],[[120474,120474],"mapped",[113]],[[120475,120475],"mapped",[114]],[[120476,120476],"mapped",[115]],[[120477,120477],"mapped",[116]],[[120478,120478],"mapped",[117]],[[120479,120479],"mapped",[118]],[[120480,120480],"mapped",[119]],[[120481,120481],"mapped",[120]],[[120482,120482],"mapped",[121]],[[120483,120483],"mapped",[122]],[[120484,120484],"mapped",[305]],[[120485,120485],"mapped",[567]],[[120486,120487],"disallowed"],[[120488,120488],"mapped",[945]],[[120489,120489],"mapped",[946]],[[120490,120490],"mapped",[947]],[[120491,120491],"mapped",[948]],[[120492,120492],"mapped",[949]],[[120493,120493],"mapped",[950]],[[120494,120494],"mapped",[951]],[[120495,120495],"mapped",[952]],[[120496,120496],"mapped",[953]],[[120497,120497],"mapped",[954]],[[120498,120498],"mapped",[955]],[[120499,120499],"mapped",[956]],[[120500,120500],"mapped",[957]],[[120501,120501],"mapped",[958]],[[120502,120502],"mapped",[959]],[[120503,120503],"mapped",[960]],[[120504,120504],"mapped",[961]],[[120505,120505],"mapped",[952]],[[120506,120506],"mapped",[963]],[[120507,120507],"mapped",[964]],[[120508,120508],"mapped",[965]],[[120509,120509],"mapped",[966]],[[120510,120510],"mapped",[967]],[[120511,120511],"mapped",[968]],[[120512,120512],"mapped",[969]],[[120513,120513],"mapped",[8711]],[[120514,120514],"mapped",[945]],[[120515,120515],"mapped",[946]],[[120516,120516],"mapped",[947]],[[120517,120517],"mapped",[948]],[[120518,120518],"mapped",[949]],[[120519,120519],"mapped",[950]],[[120520,120520],"mapped",[951]],[[120521,120521],"mapped",[952]],[[120522,120522],"mapped",[953]],[[120523,120523],"mapped",[954]],[[120524,120524],"mapped",[955]],[[120525,120525],"mapped",[956]],[[120526,120526],"mapped",[957]],[[120527,120527],"mapped",[958]],[[120528,120528],"mapped",[959]],[[120529,120529],"mapped",[960]],[[120530,120530],"mapped",[961]],[[120531,120532],"mapped",[963]],[[120533,120533],"mapped",[964]],[[120534,120534],"mapped",[965]],[[120535,120535],"mapped",[966]],[[120536,120536],"mapped",[967]],[[120537,120537],"mapped",[968]],[[120538,120538],"mapped",[969]],[[120539,120539],"mapped",[8706]],[[120540,120540],"mapped",[949]],[[120541,120541],"mapped",[952]],[[120542,120542],"mapped",[954]],[[120543,120543],"mapped",[966]],[[120544,120544],"mapped",[961]],[[120545,120545],"mapped",[960]],[[120546,120546],"mapped",[945]],[[120547,120547],"mapped",[946]],[[120548,120548],"mapped",[947]],[[120549,120549],"mapped",[948]],[[120550,120550],"mapped",[949]],[[120551,120551],"mapped",[950]],[[120552,120552],"mapped",[951]],[[120553,120553],"mapped",[952]],[[120554,120554],"mapped",[953]],[[120555,120555],"mapped",[954]],[[120556,120556],"mapped",[955]],[[120557,120557],"mapped",[956]],[[120558,120558],"mapped",[957]],[[120559,120559],"mapped",[958]],[[120560,120560],"mapped",[959]],[[120561,120561],"mapped",[960]],[[120562,120562],"mapped",[961]],[[120563,120563],"mapped",[952]],[[120564,120564],"mapped",[963]],[[120565,120565],"mapped",[964]],[[120566,120566],"mapped",[965]],[[120567,120567],"mapped",[966]],[[120568,120568],"mapped",[967]],[[120569,120569],"mapped",[968]],[[120570,120570],"mapped",[969]],[[120571,120571],"mapped",[8711]],[[120572,120572],"mapped",[945]],[[120573,120573],"mapped",[946]],[[120574,120574],"mapped",[947]],[[120575,120575],"mapped",[948]],[[120576,120576],"mapped",[949]],[[120577,120577],"mapped",[950]],[[120578,120578],"mapped",[951]],[[120579,120579],"mapped",[952]],[[120580,120580],"mapped",[953]],[[120581,120581],"mapped",[954]],[[120582,120582],"mapped",[955]],[[120583,120583],"mapped",[956]],[[120584,120584],"mapped",[957]],[[120585,120585],"mapped",[958]],[[120586,120586],"mapped",[959]],[[120587,120587],"mapped",[960]],[[120588,120588],"mapped",[961]],[[120589,120590],"mapped",[963]],[[120591,120591],"mapped",[964]],[[120592,120592],"mapped",[965]],[[120593,120593],"mapped",[966]],[[120594,120594],"mapped",[967]],[[120595,120595],"mapped",[968]],[[120596,120596],"mapped",[969]],[[120597,120597],"mapped",[8706]],[[120598,120598],"mapped",[949]],[[120599,120599],"mapped",[952]],[[120600,120600],"mapped",[954]],[[120601,120601],"mapped",[966]],[[120602,120602],"mapped",[961]],[[120603,120603],"mapped",[960]],[[120604,120604],"mapped",[945]],[[120605,120605],"mapped",[946]],[[120606,120606],"mapped",[947]],[[120607,120607],"mapped",[948]],[[120608,120608],"mapped",[949]],[[120609,120609],"mapped",[950]],[[120610,120610],"mapped",[951]],[[120611,120611],"mapped",[952]],[[120612,120612],"mapped",[953]],[[120613,120613],"mapped",[954]],[[120614,120614],"mapped",[955]],[[120615,120615],"mapped",[956]],[[120616,120616],"mapped",[957]],[[120617,120617],"mapped",[958]],[[120618,120618],"mapped",[959]],[[120619,120619],"mapped",[960]],[[120620,120620],"mapped",[961]],[[120621,120621],"mapped",[952]],[[120622,120622],"mapped",[963]],[[120623,120623],"mapped",[964]],[[120624,120624],"mapped",[965]],[[120625,120625],"mapped",[966]],[[120626,120626],"mapped",[967]],[[120627,120627],"mapped",[968]],[[120628,120628],"mapped",[969]],[[120629,120629],"mapped",[8711]],[[120630,120630],"mapped",[945]],[[120631,120631],"mapped",[946]],[[120632,120632],"mapped",[947]],[[120633,120633],"mapped",[948]],[[120634,120634],"mapped",[949]],[[120635,120635],"mapped",[950]],[[120636,120636],"mapped",[951]],[[120637,120637],"mapped",[952]],[[120638,120638],"mapped",[953]],[[120639,120639],"mapped",[954]],[[120640,120640],"mapped",[955]],[[120641,120641],"mapped",[956]],[[120642,120642],"mapped",[957]],[[120643,120643],"mapped",[958]],[[120644,120644],"mapped",[959]],[[120645,120645],"mapped",[960]],[[120646,120646],"mapped",[961]],[[120647,120648],"mapped",[963]],[[120649,120649],"mapped",[964]],[[120650,120650],"mapped",[965]],[[120651,120651],"mapped",[966]],[[120652,120652],"mapped",[967]],[[120653,120653],"mapped",[968]],[[120654,120654],"mapped",[969]],[[120655,120655],"mapped",[8706]],[[120656,120656],"mapped",[949]],[[120657,120657],"mapped",[952]],[[120658,120658],"mapped",[954]],[[120659,120659],"mapped",[966]],[[120660,120660],"mapped",[961]],[[120661,120661],"mapped",[960]],[[120662,120662],"mapped",[945]],[[120663,120663],"mapped",[946]],[[120664,120664],"mapped",[947]],[[120665,120665],"mapped",[948]],[[120666,120666],"mapped",[949]],[[120667,120667],"mapped",[950]],[[120668,120668],"mapped",[951]],[[120669,120669],"mapped",[952]],[[120670,120670],"mapped",[953]],[[120671,120671],"mapped",[954]],[[120672,120672],"mapped",[955]],[[120673,120673],"mapped",[956]],[[120674,120674],"mapped",[957]],[[120675,120675],"mapped",[958]],[[120676,120676],"mapped",[959]],[[120677,120677],"mapped",[960]],[[120678,120678],"mapped",[961]],[[120679,120679],"mapped",[952]],[[120680,120680],"mapped",[963]],[[120681,120681],"mapped",[964]],[[120682,120682],"mapped",[965]],[[120683,120683],"mapped",[966]],[[120684,120684],"mapped",[967]],[[120685,120685],"mapped",[968]],[[120686,120686],"mapped",[969]],[[120687,120687],"mapped",[8711]],[[120688,120688],"mapped",[945]],[[120689,120689],"mapped",[946]],[[120690,120690],"mapped",[947]],[[120691,120691],"mapped",[948]],[[120692,120692],"mapped",[949]],[[120693,120693],"mapped",[950]],[[120694,120694],"mapped",[951]],[[120695,120695],"mapped",[952]],[[120696,120696],"mapped",[953]],[[120697,120697],"mapped",[954]],[[120698,120698],"mapped",[955]],[[120699,120699],"mapped",[956]],[[120700,120700],"mapped",[957]],[[120701,120701],"mapped",[958]],[[120702,120702],"mapped",[959]],[[120703,120703],"mapped",[960]],[[120704,120704],"mapped",[961]],[[120705,120706],"mapped",[963]],[[120707,120707],"mapped",[964]],[[120708,120708],"mapped",[965]],[[120709,120709],"mapped",[966]],[[120710,120710],"mapped",[967]],[[120711,120711],"mapped",[968]],[[120712,120712],"mapped",[969]],[[120713,120713],"mapped",[8706]],[[120714,120714],"mapped",[949]],[[120715,120715],"mapped",[952]],[[120716,120716],"mapped",[954]],[[120717,120717],"mapped",[966]],[[120718,120718],"mapped",[961]],[[120719,120719],"mapped",[960]],[[120720,120720],"mapped",[945]],[[120721,120721],"mapped",[946]],[[120722,120722],"mapped",[947]],[[120723,120723],"mapped",[948]],[[120724,120724],"mapped",[949]],[[120725,120725],"mapped",[950]],[[120726,120726],"mapped",[951]],[[120727,120727],"mapped",[952]],[[120728,120728],"mapped",[953]],[[120729,120729],"mapped",[954]],[[120730,120730],"mapped",[955]],[[120731,120731],"mapped",[956]],[[120732,120732],"mapped",[957]],[[120733,120733],"mapped",[958]],[[120734,120734],"mapped",[959]],[[120735,120735],"mapped",[960]],[[120736,120736],"mapped",[961]],[[120737,120737],"mapped",[952]],[[120738,120738],"mapped",[963]],[[120739,120739],"mapped",[964]],[[120740,120740],"mapped",[965]],[[120741,120741],"mapped",[966]],[[120742,120742],"mapped",[967]],[[120743,120743],"mapped",[968]],[[120744,120744],"mapped",[969]],[[120745,120745],"mapped",[8711]],[[120746,120746],"mapped",[945]],[[120747,120747],"mapped",[946]],[[120748,120748],"mapped",[947]],[[120749,120749],"mapped",[948]],[[120750,120750],"mapped",[949]],[[120751,120751],"mapped",[950]],[[120752,120752],"mapped",[951]],[[120753,120753],"mapped",[952]],[[120754,120754],"mapped",[953]],[[120755,120755],"mapped",[954]],[[120756,120756],"mapped",[955]],[[120757,120757],"mapped",[956]],[[120758,120758],"mapped",[957]],[[120759,120759],"mapped",[958]],[[120760,120760],"mapped",[959]],[[120761,120761],"mapped",[960]],[[120762,120762],"mapped",[961]],[[120763,120764],"mapped",[963]],[[120765,120765],"mapped",[964]],[[120766,120766],"mapped",[965]],[[120767,120767],"mapped",[966]],[[120768,120768],"mapped",[967]],[[120769,120769],"mapped",[968]],[[120770,120770],"mapped",[969]],[[120771,120771],"mapped",[8706]],[[120772,120772],"mapped",[949]],[[120773,120773],"mapped",[952]],[[120774,120774],"mapped",[954]],[[120775,120775],"mapped",[966]],[[120776,120776],"mapped",[961]],[[120777,120777],"mapped",[960]],[[120778,120779],"mapped",[989]],[[120780,120781],"disallowed"],[[120782,120782],"mapped",[48]],[[120783,120783],"mapped",[49]],[[120784,120784],"mapped",[50]],[[120785,120785],"mapped",[51]],[[120786,120786],"mapped",[52]],[[120787,120787],"mapped",[53]],[[120788,120788],"mapped",[54]],[[120789,120789],"mapped",[55]],[[120790,120790],"mapped",[56]],[[120791,120791],"mapped",[57]],[[120792,120792],"mapped",[48]],[[120793,120793],"mapped",[49]],[[120794,120794],"mapped",[50]],[[120795,120795],"mapped",[51]],[[120796,120796],"mapped",[52]],[[120797,120797],"mapped",[53]],[[120798,120798],"mapped",[54]],[[120799,120799],"mapped",[55]],[[120800,120800],"mapped",[56]],[[120801,120801],"mapped",[57]],[[120802,120802],"mapped",[48]],[[120803,120803],"mapped",[49]],[[120804,120804],"mapped",[50]],[[120805,120805],"mapped",[51]],[[120806,120806],"mapped",[52]],[[120807,120807],"mapped",[53]],[[120808,120808],"mapped",[54]],[[120809,120809],"mapped",[55]],[[120810,120810],"mapped",[56]],[[120811,120811],"mapped",[57]],[[120812,120812],"mapped",[48]],[[120813,120813],"mapped",[49]],[[120814,120814],"mapped",[50]],[[120815,120815],"mapped",[51]],[[120816,120816],"mapped",[52]],[[120817,120817],"mapped",[53]],[[120818,120818],"mapped",[54]],[[120819,120819],"mapped",[55]],[[120820,120820],"mapped",[56]],[[120821,120821],"mapped",[57]],[[120822,120822],"mapped",[48]],[[120823,120823],"mapped",[49]],[[120824,120824],"mapped",[50]],[[120825,120825],"mapped",[51]],[[120826,120826],"mapped",[52]],[[120827,120827],"mapped",[53]],[[120828,120828],"mapped",[54]],[[120829,120829],"mapped",[55]],[[120830,120830],"mapped",[56]],[[120831,120831],"mapped",[57]],[[120832,121343],"valid",[],"NV8"],[[121344,121398],"valid"],[[121399,121402],"valid",[],"NV8"],[[121403,121452],"valid"],[[121453,121460],"valid",[],"NV8"],[[121461,121461],"valid"],[[121462,121475],"valid",[],"NV8"],[[121476,121476],"valid"],[[121477,121483],"valid",[],"NV8"],[[121484,121498],"disallowed"],[[121499,121503],"valid"],[[121504,121504],"disallowed"],[[121505,121519],"valid"],[[121520,124927],"disallowed"],[[124928,125124],"valid"],[[125125,125126],"disallowed"],[[125127,125135],"valid",[],"NV8"],[[125136,125142],"valid"],[[125143,126463],"disallowed"],[[126464,126464],"mapped",[1575]],[[126465,126465],"mapped",[1576]],[[126466,126466],"mapped",[1580]],[[126467,126467],"mapped",[1583]],[[126468,126468],"disallowed"],[[126469,126469],"mapped",[1608]],[[126470,126470],"mapped",[1586]],[[126471,126471],"mapped",[1581]],[[126472,126472],"mapped",[1591]],[[126473,126473],"mapped",[1610]],[[126474,126474],"mapped",[1603]],[[126475,126475],"mapped",[1604]],[[126476,126476],"mapped",[1605]],[[126477,126477],"mapped",[1606]],[[126478,126478],"mapped",[1587]],[[126479,126479],"mapped",[1593]],[[126480,126480],"mapped",[1601]],[[126481,126481],"mapped",[1589]],[[126482,126482],"mapped",[1602]],[[126483,126483],"mapped",[1585]],[[126484,126484],"mapped",[1588]],[[126485,126485],"mapped",[1578]],[[126486,126486],"mapped",[1579]],[[126487,126487],"mapped",[1582]],[[126488,126488],"mapped",[1584]],[[126489,126489],"mapped",[1590]],[[126490,126490],"mapped",[1592]],[[126491,126491],"mapped",[1594]],[[126492,126492],"mapped",[1646]],[[126493,126493],"mapped",[1722]],[[126494,126494],"mapped",[1697]],[[126495,126495],"mapped",[1647]],[[126496,126496],"disallowed"],[[126497,126497],"mapped",[1576]],[[126498,126498],"mapped",[1580]],[[126499,126499],"disallowed"],[[126500,126500],"mapped",[1607]],[[126501,126502],"disallowed"],[[126503,126503],"mapped",[1581]],[[126504,126504],"disallowed"],[[126505,126505],"mapped",[1610]],[[126506,126506],"mapped",[1603]],[[126507,126507],"mapped",[1604]],[[126508,126508],"mapped",[1605]],[[126509,126509],"mapped",[1606]],[[126510,126510],"mapped",[1587]],[[126511,126511],"mapped",[1593]],[[126512,126512],"mapped",[1601]],[[126513,126513],"mapped",[1589]],[[126514,126514],"mapped",[1602]],[[126515,126515],"disallowed"],[[126516,126516],"mapped",[1588]],[[126517,126517],"mapped",[1578]],[[126518,126518],"mapped",[1579]],[[126519,126519],"mapped",[1582]],[[126520,126520],"disallowed"],[[126521,126521],"mapped",[1590]],[[126522,126522],"disallowed"],[[126523,126523],"mapped",[1594]],[[126524,126529],"disallowed"],[[126530,126530],"mapped",[1580]],[[126531,126534],"disallowed"],[[126535,126535],"mapped",[1581]],[[126536,126536],"disallowed"],[[126537,126537],"mapped",[1610]],[[126538,126538],"disallowed"],[[126539,126539],"mapped",[1604]],[[126540,126540],"disallowed"],[[126541,126541],"mapped",[1606]],[[126542,126542],"mapped",[1587]],[[126543,126543],"mapped",[1593]],[[126544,126544],"disallowed"],[[126545,126545],"mapped",[1589]],[[126546,126546],"mapped",[1602]],[[126547,126547],"disallowed"],[[126548,126548],"mapped",[1588]],[[126549,126550],"disallowed"],[[126551,126551],"mapped",[1582]],[[126552,126552],"disallowed"],[[126553,126553],"mapped",[1590]],[[126554,126554],"disallowed"],[[126555,126555],"mapped",[1594]],[[126556,126556],"disallowed"],[[126557,126557],"mapped",[1722]],[[126558,126558],"disallowed"],[[126559,126559],"mapped",[1647]],[[126560,126560],"disallowed"],[[126561,126561],"mapped",[1576]],[[126562,126562],"mapped",[1580]],[[126563,126563],"disallowed"],[[126564,126564],"mapped",[1607]],[[126565,126566],"disallowed"],[[126567,126567],"mapped",[1581]],[[126568,126568],"mapped",[1591]],[[126569,126569],"mapped",[1610]],[[126570,126570],"mapped",[1603]],[[126571,126571],"disallowed"],[[126572,126572],"mapped",[1605]],[[126573,126573],"mapped",[1606]],[[126574,126574],"mapped",[1587]],[[126575,126575],"mapped",[1593]],[[126576,126576],"mapped",[1601]],[[126577,126577],"mapped",[1589]],[[126578,126578],"mapped",[1602]],[[126579,126579],"disallowed"],[[126580,126580],"mapped",[1588]],[[126581,126581],"mapped",[1578]],[[126582,126582],"mapped",[1579]],[[126583,126583],"mapped",[1582]],[[126584,126584],"disallowed"],[[126585,126585],"mapped",[1590]],[[126586,126586],"mapped",[1592]],[[126587,126587],"mapped",[1594]],[[126588,126588],"mapped",[1646]],[[126589,126589],"disallowed"],[[126590,126590],"mapped",[1697]],[[126591,126591],"disallowed"],[[126592,126592],"mapped",[1575]],[[126593,126593],"mapped",[1576]],[[126594,126594],"mapped",[1580]],[[126595,126595],"mapped",[1583]],[[126596,126596],"mapped",[1607]],[[126597,126597],"mapped",[1608]],[[126598,126598],"mapped",[1586]],[[126599,126599],"mapped",[1581]],[[126600,126600],"mapped",[1591]],[[126601,126601],"mapped",[1610]],[[126602,126602],"disallowed"],[[126603,126603],"mapped",[1604]],[[126604,126604],"mapped",[1605]],[[126605,126605],"mapped",[1606]],[[126606,126606],"mapped",[1587]],[[126607,126607],"mapped",[1593]],[[126608,126608],"mapped",[1601]],[[126609,126609],"mapped",[1589]],[[126610,126610],"mapped",[1602]],[[126611,126611],"mapped",[1585]],[[126612,126612],"mapped",[1588]],[[126613,126613],"mapped",[1578]],[[126614,126614],"mapped",[1579]],[[126615,126615],"mapped",[1582]],[[126616,126616],"mapped",[1584]],[[126617,126617],"mapped",[1590]],[[126618,126618],"mapped",[1592]],[[126619,126619],"mapped",[1594]],[[126620,126624],"disallowed"],[[126625,126625],"mapped",[1576]],[[126626,126626],"mapped",[1580]],[[126627,126627],"mapped",[1583]],[[126628,126628],"disallowed"],[[126629,126629],"mapped",[1608]],[[126630,126630],"mapped",[1586]],[[126631,126631],"mapped",[1581]],[[126632,126632],"mapped",[1591]],[[126633,126633],"mapped",[1610]],[[126634,126634],"disallowed"],[[126635,126635],"mapped",[1604]],[[126636,126636],"mapped",[1605]],[[126637,126637],"mapped",[1606]],[[126638,126638],"mapped",[1587]],[[126639,126639],"mapped",[1593]],[[126640,126640],"mapped",[1601]],[[126641,126641],"mapped",[1589]],[[126642,126642],"mapped",[1602]],[[126643,126643],"mapped",[1585]],[[126644,126644],"mapped",[1588]],[[126645,126645],"mapped",[1578]],[[126646,126646],"mapped",[1579]],[[126647,126647],"mapped",[1582]],[[126648,126648],"mapped",[1584]],[[126649,126649],"mapped",[1590]],[[126650,126650],"mapped",[1592]],[[126651,126651],"mapped",[1594]],[[126652,126703],"disallowed"],[[126704,126705],"valid",[],"NV8"],[[126706,126975],"disallowed"],[[126976,127019],"valid",[],"NV8"],[[127020,127023],"disallowed"],[[127024,127123],"valid",[],"NV8"],[[127124,127135],"disallowed"],[[127136,127150],"valid",[],"NV8"],[[127151,127152],"disallowed"],[[127153,127166],"valid",[],"NV8"],[[127167,127167],"valid",[],"NV8"],[[127168,127168],"disallowed"],[[127169,127183],"valid",[],"NV8"],[[127184,127184],"disallowed"],[[127185,127199],"valid",[],"NV8"],[[127200,127221],"valid",[],"NV8"],[[127222,127231],"disallowed"],[[127232,127232],"disallowed"],[[127233,127233],"disallowed_STD3_mapped",[48,44]],[[127234,127234],"disallowed_STD3_mapped",[49,44]],[[127235,127235],"disallowed_STD3_mapped",[50,44]],[[127236,127236],"disallowed_STD3_mapped",[51,44]],[[127237,127237],"disallowed_STD3_mapped",[52,44]],[[127238,127238],"disallowed_STD3_mapped",[53,44]],[[127239,127239],"disallowed_STD3_mapped",[54,44]],[[127240,127240],"disallowed_STD3_mapped",[55,44]],[[127241,127241],"disallowed_STD3_mapped",[56,44]],[[127242,127242],"disallowed_STD3_mapped",[57,44]],[[127243,127244],"valid",[],"NV8"],[[127245,127247],"disallowed"],[[127248,127248],"disallowed_STD3_mapped",[40,97,41]],[[127249,127249],"disallowed_STD3_mapped",[40,98,41]],[[127250,127250],"disallowed_STD3_mapped",[40,99,41]],[[127251,127251],"disallowed_STD3_mapped",[40,100,41]],[[127252,127252],"disallowed_STD3_mapped",[40,101,41]],[[127253,127253],"disallowed_STD3_mapped",[40,102,41]],[[127254,127254],"disallowed_STD3_mapped",[40,103,41]],[[127255,127255],"disallowed_STD3_mapped",[40,104,41]],[[127256,127256],"disallowed_STD3_mapped",[40,105,41]],[[127257,127257],"disallowed_STD3_mapped",[40,106,41]],[[127258,127258],"disallowed_STD3_mapped",[40,107,41]],[[127259,127259],"disallowed_STD3_mapped",[40,108,41]],[[127260,127260],"disallowed_STD3_mapped",[40,109,41]],[[127261,127261],"disallowed_STD3_mapped",[40,110,41]],[[127262,127262],"disallowed_STD3_mapped",[40,111,41]],[[127263,127263],"disallowed_STD3_mapped",[40,112,41]],[[127264,127264],"disallowed_STD3_mapped",[40,113,41]],[[127265,127265],"disallowed_STD3_mapped",[40,114,41]],[[127266,127266],"disallowed_STD3_mapped",[40,115,41]],[[127267,127267],"disallowed_STD3_mapped",[40,116,41]],[[127268,127268],"disallowed_STD3_mapped",[40,117,41]],[[127269,127269],"disallowed_STD3_mapped",[40,118,41]],[[127270,127270],"disallowed_STD3_mapped",[40,119,41]],[[127271,127271],"disallowed_STD3_mapped",[40,120,41]],[[127272,127272],"disallowed_STD3_mapped",[40,121,41]],[[127273,127273],"disallowed_STD3_mapped",[40,122,41]],[[127274,127274],"mapped",[12308,115,12309]],[[127275,127275],"mapped",[99]],[[127276,127276],"mapped",[114]],[[127277,127277],"mapped",[99,100]],[[127278,127278],"mapped",[119,122]],[[127279,127279],"disallowed"],[[127280,127280],"mapped",[97]],[[127281,127281],"mapped",[98]],[[127282,127282],"mapped",[99]],[[127283,127283],"mapped",[100]],[[127284,127284],"mapped",[101]],[[127285,127285],"mapped",[102]],[[127286,127286],"mapped",[103]],[[127287,127287],"mapped",[104]],[[127288,127288],"mapped",[105]],[[127289,127289],"mapped",[106]],[[127290,127290],"mapped",[107]],[[127291,127291],"mapped",[108]],[[127292,127292],"mapped",[109]],[[127293,127293],"mapped",[110]],[[127294,127294],"mapped",[111]],[[127295,127295],"mapped",[112]],[[127296,127296],"mapped",[113]],[[127297,127297],"mapped",[114]],[[127298,127298],"mapped",[115]],[[127299,127299],"mapped",[116]],[[127300,127300],"mapped",[117]],[[127301,127301],"mapped",[118]],[[127302,127302],"mapped",[119]],[[127303,127303],"mapped",[120]],[[127304,127304],"mapped",[121]],[[127305,127305],"mapped",[122]],[[127306,127306],"mapped",[104,118]],[[127307,127307],"mapped",[109,118]],[[127308,127308],"mapped",[115,100]],[[127309,127309],"mapped",[115,115]],[[127310,127310],"mapped",[112,112,118]],[[127311,127311],"mapped",[119,99]],[[127312,127318],"valid",[],"NV8"],[[127319,127319],"valid",[],"NV8"],[[127320,127326],"valid",[],"NV8"],[[127327,127327],"valid",[],"NV8"],[[127328,127337],"valid",[],"NV8"],[[127338,127338],"mapped",[109,99]],[[127339,127339],"mapped",[109,100]],[[127340,127343],"disallowed"],[[127344,127352],"valid",[],"NV8"],[[127353,127353],"valid",[],"NV8"],[[127354,127354],"valid",[],"NV8"],[[127355,127356],"valid",[],"NV8"],[[127357,127358],"valid",[],"NV8"],[[127359,127359],"valid",[],"NV8"],[[127360,127369],"valid",[],"NV8"],[[127370,127373],"valid",[],"NV8"],[[127374,127375],"valid",[],"NV8"],[[127376,127376],"mapped",[100,106]],[[127377,127386],"valid",[],"NV8"],[[127387,127461],"disallowed"],[[127462,127487],"valid",[],"NV8"],[[127488,127488],"mapped",[12411,12363]],[[127489,127489],"mapped",[12467,12467]],[[127490,127490],"mapped",[12469]],[[127491,127503],"disallowed"],[[127504,127504],"mapped",[25163]],[[127505,127505],"mapped",[23383]],[[127506,127506],"mapped",[21452]],[[127507,127507],"mapped",[12487]],[[127508,127508],"mapped",[20108]],[[127509,127509],"mapped",[22810]],[[127510,127510],"mapped",[35299]],[[127511,127511],"mapped",[22825]],[[127512,127512],"mapped",[20132]],[[127513,127513],"mapped",[26144]],[[127514,127514],"mapped",[28961]],[[127515,127515],"mapped",[26009]],[[127516,127516],"mapped",[21069]],[[127517,127517],"mapped",[24460]],[[127518,127518],"mapped",[20877]],[[127519,127519],"mapped",[26032]],[[127520,127520],"mapped",[21021]],[[127521,127521],"mapped",[32066]],[[127522,127522],"mapped",[29983]],[[127523,127523],"mapped",[36009]],[[127524,127524],"mapped",[22768]],[[127525,127525],"mapped",[21561]],[[127526,127526],"mapped",[28436]],[[127527,127527],"mapped",[25237]],[[127528,127528],"mapped",[25429]],[[127529,127529],"mapped",[19968]],[[127530,127530],"mapped",[19977]],[[127531,127531],"mapped",[36938]],[[127532,127532],"mapped",[24038]],[[127533,127533],"mapped",[20013]],[[127534,127534],"mapped",[21491]],[[127535,127535],"mapped",[25351]],[[127536,127536],"mapped",[36208]],[[127537,127537],"mapped",[25171]],[[127538,127538],"mapped",[31105]],[[127539,127539],"mapped",[31354]],[[127540,127540],"mapped",[21512]],[[127541,127541],"mapped",[28288]],[[127542,127542],"mapped",[26377]],[[127543,127543],"mapped",[26376]],[[127544,127544],"mapped",[30003]],[[127545,127545],"mapped",[21106]],[[127546,127546],"mapped",[21942]],[[127547,127551],"disallowed"],[[127552,127552],"mapped",[12308,26412,12309]],[[127553,127553],"mapped",[12308,19977,12309]],[[127554,127554],"mapped",[12308,20108,12309]],[[127555,127555],"mapped",[12308,23433,12309]],[[127556,127556],"mapped",[12308,28857,12309]],[[127557,127557],"mapped",[12308,25171,12309]],[[127558,127558],"mapped",[12308,30423,12309]],[[127559,127559],"mapped",[12308,21213,12309]],[[127560,127560],"mapped",[12308,25943,12309]],[[127561,127567],"disallowed"],[[127568,127568],"mapped",[24471]],[[127569,127569],"mapped",[21487]],[[127570,127743],"disallowed"],[[127744,127776],"valid",[],"NV8"],[[127777,127788],"valid",[],"NV8"],[[127789,127791],"valid",[],"NV8"],[[127792,127797],"valid",[],"NV8"],[[127798,127798],"valid",[],"NV8"],[[127799,127868],"valid",[],"NV8"],[[127869,127869],"valid",[],"NV8"],[[127870,127871],"valid",[],"NV8"],[[127872,127891],"valid",[],"NV8"],[[127892,127903],"valid",[],"NV8"],[[127904,127940],"valid",[],"NV8"],[[127941,127941],"valid",[],"NV8"],[[127942,127946],"valid",[],"NV8"],[[127947,127950],"valid",[],"NV8"],[[127951,127955],"valid",[],"NV8"],[[127956,127967],"valid",[],"NV8"],[[127968,127984],"valid",[],"NV8"],[[127985,127991],"valid",[],"NV8"],[[127992,127999],"valid",[],"NV8"],[[128000,128062],"valid",[],"NV8"],[[128063,128063],"valid",[],"NV8"],[[128064,128064],"valid",[],"NV8"],[[128065,128065],"valid",[],"NV8"],[[128066,128247],"valid",[],"NV8"],[[128248,128248],"valid",[],"NV8"],[[128249,128252],"valid",[],"NV8"],[[128253,128254],"valid",[],"NV8"],[[128255,128255],"valid",[],"NV8"],[[128256,128317],"valid",[],"NV8"],[[128318,128319],"valid",[],"NV8"],[[128320,128323],"valid",[],"NV8"],[[128324,128330],"valid",[],"NV8"],[[128331,128335],"valid",[],"NV8"],[[128336,128359],"valid",[],"NV8"],[[128360,128377],"valid",[],"NV8"],[[128378,128378],"disallowed"],[[128379,128419],"valid",[],"NV8"],[[128420,128420],"disallowed"],[[128421,128506],"valid",[],"NV8"],[[128507,128511],"valid",[],"NV8"],[[128512,128512],"valid",[],"NV8"],[[128513,128528],"valid",[],"NV8"],[[128529,128529],"valid",[],"NV8"],[[128530,128532],"valid",[],"NV8"],[[128533,128533],"valid",[],"NV8"],[[128534,128534],"valid",[],"NV8"],[[128535,128535],"valid",[],"NV8"],[[128536,128536],"valid",[],"NV8"],[[128537,128537],"valid",[],"NV8"],[[128538,128538],"valid",[],"NV8"],[[128539,128539],"valid",[],"NV8"],[[128540,128542],"valid",[],"NV8"],[[128543,128543],"valid",[],"NV8"],[[128544,128549],"valid",[],"NV8"],[[128550,128551],"valid",[],"NV8"],[[128552,128555],"valid",[],"NV8"],[[128556,128556],"valid",[],"NV8"],[[128557,128557],"valid",[],"NV8"],[[128558,128559],"valid",[],"NV8"],[[128560,128563],"valid",[],"NV8"],[[128564,128564],"valid",[],"NV8"],[[128565,128576],"valid",[],"NV8"],[[128577,128578],"valid",[],"NV8"],[[128579,128580],"valid",[],"NV8"],[[128581,128591],"valid",[],"NV8"],[[128592,128639],"valid",[],"NV8"],[[128640,128709],"valid",[],"NV8"],[[128710,128719],"valid",[],"NV8"],[[128720,128720],"valid",[],"NV8"],[[128721,128735],"disallowed"],[[128736,128748],"valid",[],"NV8"],[[128749,128751],"disallowed"],[[128752,128755],"valid",[],"NV8"],[[128756,128767],"disallowed"],[[128768,128883],"valid",[],"NV8"],[[128884,128895],"disallowed"],[[128896,128980],"valid",[],"NV8"],[[128981,129023],"disallowed"],[[129024,129035],"valid",[],"NV8"],[[129036,129039],"disallowed"],[[129040,129095],"valid",[],"NV8"],[[129096,129103],"disallowed"],[[129104,129113],"valid",[],"NV8"],[[129114,129119],"disallowed"],[[129120,129159],"valid",[],"NV8"],[[129160,129167],"disallowed"],[[129168,129197],"valid",[],"NV8"],[[129198,129295],"disallowed"],[[129296,129304],"valid",[],"NV8"],[[129305,129407],"disallowed"],[[129408,129412],"valid",[],"NV8"],[[129413,129471],"disallowed"],[[129472,129472],"valid",[],"NV8"],[[129473,131069],"disallowed"],[[131070,131071],"disallowed"],[[131072,173782],"valid"],[[173783,173823],"disallowed"],[[173824,177972],"valid"],[[177973,177983],"disallowed"],[[177984,178205],"valid"],[[178206,178207],"disallowed"],[[178208,183969],"valid"],[[183970,194559],"disallowed"],[[194560,194560],"mapped",[20029]],[[194561,194561],"mapped",[20024]],[[194562,194562],"mapped",[20033]],[[194563,194563],"mapped",[131362]],[[194564,194564],"mapped",[20320]],[[194565,194565],"mapped",[20398]],[[194566,194566],"mapped",[20411]],[[194567,194567],"mapped",[20482]],[[194568,194568],"mapped",[20602]],[[194569,194569],"mapped",[20633]],[[194570,194570],"mapped",[20711]],[[194571,194571],"mapped",[20687]],[[194572,194572],"mapped",[13470]],[[194573,194573],"mapped",[132666]],[[194574,194574],"mapped",[20813]],[[194575,194575],"mapped",[20820]],[[194576,194576],"mapped",[20836]],[[194577,194577],"mapped",[20855]],[[194578,194578],"mapped",[132380]],[[194579,194579],"mapped",[13497]],[[194580,194580],"mapped",[20839]],[[194581,194581],"mapped",[20877]],[[194582,194582],"mapped",[132427]],[[194583,194583],"mapped",[20887]],[[194584,194584],"mapped",[20900]],[[194585,194585],"mapped",[20172]],[[194586,194586],"mapped",[20908]],[[194587,194587],"mapped",[20917]],[[194588,194588],"mapped",[168415]],[[194589,194589],"mapped",[20981]],[[194590,194590],"mapped",[20995]],[[194591,194591],"mapped",[13535]],[[194592,194592],"mapped",[21051]],[[194593,194593],"mapped",[21062]],[[194594,194594],"mapped",[21106]],[[194595,194595],"mapped",[21111]],[[194596,194596],"mapped",[13589]],[[194597,194597],"mapped",[21191]],[[194598,194598],"mapped",[21193]],[[194599,194599],"mapped",[21220]],[[194600,194600],"mapped",[21242]],[[194601,194601],"mapped",[21253]],[[194602,194602],"mapped",[21254]],[[194603,194603],"mapped",[21271]],[[194604,194604],"mapped",[21321]],[[194605,194605],"mapped",[21329]],[[194606,194606],"mapped",[21338]],[[194607,194607],"mapped",[21363]],[[194608,194608],"mapped",[21373]],[[194609,194611],"mapped",[21375]],[[194612,194612],"mapped",[133676]],[[194613,194613],"mapped",[28784]],[[194614,194614],"mapped",[21450]],[[194615,194615],"mapped",[21471]],[[194616,194616],"mapped",[133987]],[[194617,194617],"mapped",[21483]],[[194618,194618],"mapped",[21489]],[[194619,194619],"mapped",[21510]],[[194620,194620],"mapped",[21662]],[[194621,194621],"mapped",[21560]],[[194622,194622],"mapped",[21576]],[[194623,194623],"mapped",[21608]],[[194624,194624],"mapped",[21666]],[[194625,194625],"mapped",[21750]],[[194626,194626],"mapped",[21776]],[[194627,194627],"mapped",[21843]],[[194628,194628],"mapped",[21859]],[[194629,194630],"mapped",[21892]],[[194631,194631],"mapped",[21913]],[[194632,194632],"mapped",[21931]],[[194633,194633],"mapped",[21939]],[[194634,194634],"mapped",[21954]],[[194635,194635],"mapped",[22294]],[[194636,194636],"mapped",[22022]],[[194637,194637],"mapped",[22295]],[[194638,194638],"mapped",[22097]],[[194639,194639],"mapped",[22132]],[[194640,194640],"mapped",[20999]],[[194641,194641],"mapped",[22766]],[[194642,194642],"mapped",[22478]],[[194643,194643],"mapped",[22516]],[[194644,194644],"mapped",[22541]],[[194645,194645],"mapped",[22411]],[[194646,194646],"mapped",[22578]],[[194647,194647],"mapped",[22577]],[[194648,194648],"mapped",[22700]],[[194649,194649],"mapped",[136420]],[[194650,194650],"mapped",[22770]],[[194651,194651],"mapped",[22775]],[[194652,194652],"mapped",[22790]],[[194653,194653],"mapped",[22810]],[[194654,194654],"mapped",[22818]],[[194655,194655],"mapped",[22882]],[[194656,194656],"mapped",[136872]],[[194657,194657],"mapped",[136938]],[[194658,194658],"mapped",[23020]],[[194659,194659],"mapped",[23067]],[[194660,194660],"mapped",[23079]],[[194661,194661],"mapped",[23000]],[[194662,194662],"mapped",[23142]],[[194663,194663],"mapped",[14062]],[[194664,194664],"disallowed"],[[194665,194665],"mapped",[23304]],[[194666,194667],"mapped",[23358]],[[194668,194668],"mapped",[137672]],[[194669,194669],"mapped",[23491]],[[194670,194670],"mapped",[23512]],[[194671,194671],"mapped",[23527]],[[194672,194672],"mapped",[23539]],[[194673,194673],"mapped",[138008]],[[194674,194674],"mapped",[23551]],[[194675,194675],"mapped",[23558]],[[194676,194676],"disallowed"],[[194677,194677],"mapped",[23586]],[[194678,194678],"mapped",[14209]],[[194679,194679],"mapped",[23648]],[[194680,194680],"mapped",[23662]],[[194681,194681],"mapped",[23744]],[[194682,194682],"mapped",[23693]],[[194683,194683],"mapped",[138724]],[[194684,194684],"mapped",[23875]],[[194685,194685],"mapped",[138726]],[[194686,194686],"mapped",[23918]],[[194687,194687],"mapped",[23915]],[[194688,194688],"mapped",[23932]],[[194689,194689],"mapped",[24033]],[[194690,194690],"mapped",[24034]],[[194691,194691],"mapped",[14383]],[[194692,194692],"mapped",[24061]],[[194693,194693],"mapped",[24104]],[[194694,194694],"mapped",[24125]],[[194695,194695],"mapped",[24169]],[[194696,194696],"mapped",[14434]],[[194697,194697],"mapped",[139651]],[[194698,194698],"mapped",[14460]],[[194699,194699],"mapped",[24240]],[[194700,194700],"mapped",[24243]],[[194701,194701],"mapped",[24246]],[[194702,194702],"mapped",[24266]],[[194703,194703],"mapped",[172946]],[[194704,194704],"mapped",[24318]],[[194705,194706],"mapped",[140081]],[[194707,194707],"mapped",[33281]],[[194708,194709],"mapped",[24354]],[[194710,194710],"mapped",[14535]],[[194711,194711],"mapped",[144056]],[[194712,194712],"mapped",[156122]],[[194713,194713],"mapped",[24418]],[[194714,194714],"mapped",[24427]],[[194715,194715],"mapped",[14563]],[[194716,194716],"mapped",[24474]],[[194717,194717],"mapped",[24525]],[[194718,194718],"mapped",[24535]],[[194719,194719],"mapped",[24569]],[[194720,194720],"mapped",[24705]],[[194721,194721],"mapped",[14650]],[[194722,194722],"mapped",[14620]],[[194723,194723],"mapped",[24724]],[[194724,194724],"mapped",[141012]],[[194725,194725],"mapped",[24775]],[[194726,194726],"mapped",[24904]],[[194727,194727],"mapped",[24908]],[[194728,194728],"mapped",[24910]],[[194729,194729],"mapped",[24908]],[[194730,194730],"mapped",[24954]],[[194731,194731],"mapped",[24974]],[[194732,194732],"mapped",[25010]],[[194733,194733],"mapped",[24996]],[[194734,194734],"mapped",[25007]],[[194735,194735],"mapped",[25054]],[[194736,194736],"mapped",[25074]],[[194737,194737],"mapped",[25078]],[[194738,194738],"mapped",[25104]],[[194739,194739],"mapped",[25115]],[[194740,194740],"mapped",[25181]],[[194741,194741],"mapped",[25265]],[[194742,194742],"mapped",[25300]],[[194743,194743],"mapped",[25424]],[[194744,194744],"mapped",[142092]],[[194745,194745],"mapped",[25405]],[[194746,194746],"mapped",[25340]],[[194747,194747],"mapped",[25448]],[[194748,194748],"mapped",[25475]],[[194749,194749],"mapped",[25572]],[[194750,194750],"mapped",[142321]],[[194751,194751],"mapped",[25634]],[[194752,194752],"mapped",[25541]],[[194753,194753],"mapped",[25513]],[[194754,194754],"mapped",[14894]],[[194755,194755],"mapped",[25705]],[[194756,194756],"mapped",[25726]],[[194757,194757],"mapped",[25757]],[[194758,194758],"mapped",[25719]],[[194759,194759],"mapped",[14956]],[[194760,194760],"mapped",[25935]],[[194761,194761],"mapped",[25964]],[[194762,194762],"mapped",[143370]],[[194763,194763],"mapped",[26083]],[[194764,194764],"mapped",[26360]],[[194765,194765],"mapped",[26185]],[[194766,194766],"mapped",[15129]],[[194767,194767],"mapped",[26257]],[[194768,194768],"mapped",[15112]],[[194769,194769],"mapped",[15076]],[[194770,194770],"mapped",[20882]],[[194771,194771],"mapped",[20885]],[[194772,194772],"mapped",[26368]],[[194773,194773],"mapped",[26268]],[[194774,194774],"mapped",[32941]],[[194775,194775],"mapped",[17369]],[[194776,194776],"mapped",[26391]],[[194777,194777],"mapped",[26395]],[[194778,194778],"mapped",[26401]],[[194779,194779],"mapped",[26462]],[[194780,194780],"mapped",[26451]],[[194781,194781],"mapped",[144323]],[[194782,194782],"mapped",[15177]],[[194783,194783],"mapped",[26618]],[[194784,194784],"mapped",[26501]],[[194785,194785],"mapped",[26706]],[[194786,194786],"mapped",[26757]],[[194787,194787],"mapped",[144493]],[[194788,194788],"mapped",[26766]],[[194789,194789],"mapped",[26655]],[[194790,194790],"mapped",[26900]],[[194791,194791],"mapped",[15261]],[[194792,194792],"mapped",[26946]],[[194793,194793],"mapped",[27043]],[[194794,194794],"mapped",[27114]],[[194795,194795],"mapped",[27304]],[[194796,194796],"mapped",[145059]],[[194797,194797],"mapped",[27355]],[[194798,194798],"mapped",[15384]],[[194799,194799],"mapped",[27425]],[[194800,194800],"mapped",[145575]],[[194801,194801],"mapped",[27476]],[[194802,194802],"mapped",[15438]],[[194803,194803],"mapped",[27506]],[[194804,194804],"mapped",[27551]],[[194805,194805],"mapped",[27578]],[[194806,194806],"mapped",[27579]],[[194807,194807],"mapped",[146061]],[[194808,194808],"mapped",[138507]],[[194809,194809],"mapped",[146170]],[[194810,194810],"mapped",[27726]],[[194811,194811],"mapped",[146620]],[[194812,194812],"mapped",[27839]],[[194813,194813],"mapped",[27853]],[[194814,194814],"mapped",[27751]],[[194815,194815],"mapped",[27926]],[[194816,194816],"mapped",[27966]],[[194817,194817],"mapped",[28023]],[[194818,194818],"mapped",[27969]],[[194819,194819],"mapped",[28009]],[[194820,194820],"mapped",[28024]],[[194821,194821],"mapped",[28037]],[[194822,194822],"mapped",[146718]],[[194823,194823],"mapped",[27956]],[[194824,194824],"mapped",[28207]],[[194825,194825],"mapped",[28270]],[[194826,194826],"mapped",[15667]],[[194827,194827],"mapped",[28363]],[[194828,194828],"mapped",[28359]],[[194829,194829],"mapped",[147153]],[[194830,194830],"mapped",[28153]],[[194831,194831],"mapped",[28526]],[[194832,194832],"mapped",[147294]],[[194833,194833],"mapped",[147342]],[[194834,194834],"mapped",[28614]],[[194835,194835],"mapped",[28729]],[[194836,194836],"mapped",[28702]],[[194837,194837],"mapped",[28699]],[[194838,194838],"mapped",[15766]],[[194839,194839],"mapped",[28746]],[[194840,194840],"mapped",[28797]],[[194841,194841],"mapped",[28791]],[[194842,194842],"mapped",[28845]],[[194843,194843],"mapped",[132389]],[[194844,194844],"mapped",[28997]],[[194845,194845],"mapped",[148067]],[[194846,194846],"mapped",[29084]],[[194847,194847],"disallowed"],[[194848,194848],"mapped",[29224]],[[194849,194849],"mapped",[29237]],[[194850,194850],"mapped",[29264]],[[194851,194851],"mapped",[149000]],[[194852,194852],"mapped",[29312]],[[194853,194853],"mapped",[29333]],[[194854,194854],"mapped",[149301]],[[194855,194855],"mapped",[149524]],[[194856,194856],"mapped",[29562]],[[194857,194857],"mapped",[29579]],[[194858,194858],"mapped",[16044]],[[194859,194859],"mapped",[29605]],[[194860,194861],"mapped",[16056]],[[194862,194862],"mapped",[29767]],[[194863,194863],"mapped",[29788]],[[194864,194864],"mapped",[29809]],[[194865,194865],"mapped",[29829]],[[194866,194866],"mapped",[29898]],[[194867,194867],"mapped",[16155]],[[194868,194868],"mapped",[29988]],[[194869,194869],"mapped",[150582]],[[194870,194870],"mapped",[30014]],[[194871,194871],"mapped",[150674]],[[194872,194872],"mapped",[30064]],[[194873,194873],"mapped",[139679]],[[194874,194874],"mapped",[30224]],[[194875,194875],"mapped",[151457]],[[194876,194876],"mapped",[151480]],[[194877,194877],"mapped",[151620]],[[194878,194878],"mapped",[16380]],[[194879,194879],"mapped",[16392]],[[194880,194880],"mapped",[30452]],[[194881,194881],"mapped",[151795]],[[194882,194882],"mapped",[151794]],[[194883,194883],"mapped",[151833]],[[194884,194884],"mapped",[151859]],[[194885,194885],"mapped",[30494]],[[194886,194887],"mapped",[30495]],[[194888,194888],"mapped",[30538]],[[194889,194889],"mapped",[16441]],[[194890,194890],"mapped",[30603]],[[194891,194891],"mapped",[16454]],[[194892,194892],"mapped",[16534]],[[194893,194893],"mapped",[152605]],[[194894,194894],"mapped",[30798]],[[194895,194895],"mapped",[30860]],[[194896,194896],"mapped",[30924]],[[194897,194897],"mapped",[16611]],[[194898,194898],"mapped",[153126]],[[194899,194899],"mapped",[31062]],[[194900,194900],"mapped",[153242]],[[194901,194901],"mapped",[153285]],[[194902,194902],"mapped",[31119]],[[194903,194903],"mapped",[31211]],[[194904,194904],"mapped",[16687]],[[194905,194905],"mapped",[31296]],[[194906,194906],"mapped",[31306]],[[194907,194907],"mapped",[31311]],[[194908,194908],"mapped",[153980]],[[194909,194910],"mapped",[154279]],[[194911,194911],"disallowed"],[[194912,194912],"mapped",[16898]],[[194913,194913],"mapped",[154539]],[[194914,194914],"mapped",[31686]],[[194915,194915],"mapped",[31689]],[[194916,194916],"mapped",[16935]],[[194917,194917],"mapped",[154752]],[[194918,194918],"mapped",[31954]],[[194919,194919],"mapped",[17056]],[[194920,194920],"mapped",[31976]],[[194921,194921],"mapped",[31971]],[[194922,194922],"mapped",[32000]],[[194923,194923],"mapped",[155526]],[[194924,194924],"mapped",[32099]],[[194925,194925],"mapped",[17153]],[[194926,194926],"mapped",[32199]],[[194927,194927],"mapped",[32258]],[[194928,194928],"mapped",[32325]],[[194929,194929],"mapped",[17204]],[[194930,194930],"mapped",[156200]],[[194931,194931],"mapped",[156231]],[[194932,194932],"mapped",[17241]],[[194933,194933],"mapped",[156377]],[[194934,194934],"mapped",[32634]],[[194935,194935],"mapped",[156478]],[[194936,194936],"mapped",[32661]],[[194937,194937],"mapped",[32762]],[[194938,194938],"mapped",[32773]],[[194939,194939],"mapped",[156890]],[[194940,194940],"mapped",[156963]],[[194941,194941],"mapped",[32864]],[[194942,194942],"mapped",[157096]],[[194943,194943],"mapped",[32880]],[[194944,194944],"mapped",[144223]],[[194945,194945],"mapped",[17365]],[[194946,194946],"mapped",[32946]],[[194947,194947],"mapped",[33027]],[[194948,194948],"mapped",[17419]],[[194949,194949],"mapped",[33086]],[[194950,194950],"mapped",[23221]],[[194951,194951],"mapped",[157607]],[[194952,194952],"mapped",[157621]],[[194953,194953],"mapped",[144275]],[[194954,194954],"mapped",[144284]],[[194955,194955],"mapped",[33281]],[[194956,194956],"mapped",[33284]],[[194957,194957],"mapped",[36766]],[[194958,194958],"mapped",[17515]],[[194959,194959],"mapped",[33425]],[[194960,194960],"mapped",[33419]],[[194961,194961],"mapped",[33437]],[[194962,194962],"mapped",[21171]],[[194963,194963],"mapped",[33457]],[[194964,194964],"mapped",[33459]],[[194965,194965],"mapped",[33469]],[[194966,194966],"mapped",[33510]],[[194967,194967],"mapped",[158524]],[[194968,194968],"mapped",[33509]],[[194969,194969],"mapped",[33565]],[[194970,194970],"mapped",[33635]],[[194971,194971],"mapped",[33709]],[[194972,194972],"mapped",[33571]],[[194973,194973],"mapped",[33725]],[[194974,194974],"mapped",[33767]],[[194975,194975],"mapped",[33879]],[[194976,194976],"mapped",[33619]],[[194977,194977],"mapped",[33738]],[[194978,194978],"mapped",[33740]],[[194979,194979],"mapped",[33756]],[[194980,194980],"mapped",[158774]],[[194981,194981],"mapped",[159083]],[[194982,194982],"mapped",[158933]],[[194983,194983],"mapped",[17707]],[[194984,194984],"mapped",[34033]],[[194985,194985],"mapped",[34035]],[[194986,194986],"mapped",[34070]],[[194987,194987],"mapped",[160714]],[[194988,194988],"mapped",[34148]],[[194989,194989],"mapped",[159532]],[[194990,194990],"mapped",[17757]],[[194991,194991],"mapped",[17761]],[[194992,194992],"mapped",[159665]],[[194993,194993],"mapped",[159954]],[[194994,194994],"mapped",[17771]],[[194995,194995],"mapped",[34384]],[[194996,194996],"mapped",[34396]],[[194997,194997],"mapped",[34407]],[[194998,194998],"mapped",[34409]],[[194999,194999],"mapped",[34473]],[[195000,195000],"mapped",[34440]],[[195001,195001],"mapped",[34574]],[[195002,195002],"mapped",[34530]],[[195003,195003],"mapped",[34681]],[[195004,195004],"mapped",[34600]],[[195005,195005],"mapped",[34667]],[[195006,195006],"mapped",[34694]],[[195007,195007],"disallowed"],[[195008,195008],"mapped",[34785]],[[195009,195009],"mapped",[34817]],[[195010,195010],"mapped",[17913]],[[195011,195011],"mapped",[34912]],[[195012,195012],"mapped",[34915]],[[195013,195013],"mapped",[161383]],[[195014,195014],"mapped",[35031]],[[195015,195015],"mapped",[35038]],[[195016,195016],"mapped",[17973]],[[195017,195017],"mapped",[35066]],[[195018,195018],"mapped",[13499]],[[195019,195019],"mapped",[161966]],[[195020,195020],"mapped",[162150]],[[195021,195021],"mapped",[18110]],[[195022,195022],"mapped",[18119]],[[195023,195023],"mapped",[35488]],[[195024,195024],"mapped",[35565]],[[195025,195025],"mapped",[35722]],[[195026,195026],"mapped",[35925]],[[195027,195027],"mapped",[162984]],[[195028,195028],"mapped",[36011]],[[195029,195029],"mapped",[36033]],[[195030,195030],"mapped",[36123]],[[195031,195031],"mapped",[36215]],[[195032,195032],"mapped",[163631]],[[195033,195033],"mapped",[133124]],[[195034,195034],"mapped",[36299]],[[195035,195035],"mapped",[36284]],[[195036,195036],"mapped",[36336]],[[195037,195037],"mapped",[133342]],[[195038,195038],"mapped",[36564]],[[195039,195039],"mapped",[36664]],[[195040,195040],"mapped",[165330]],[[195041,195041],"mapped",[165357]],[[195042,195042],"mapped",[37012]],[[195043,195043],"mapped",[37105]],[[195044,195044],"mapped",[37137]],[[195045,195045],"mapped",[165678]],[[195046,195046],"mapped",[37147]],[[195047,195047],"mapped",[37432]],[[195048,195048],"mapped",[37591]],[[195049,195049],"mapped",[37592]],[[195050,195050],"mapped",[37500]],[[195051,195051],"mapped",[37881]],[[195052,195052],"mapped",[37909]],[[195053,195053],"mapped",[166906]],[[195054,195054],"mapped",[38283]],[[195055,195055],"mapped",[18837]],[[195056,195056],"mapped",[38327]],[[195057,195057],"mapped",[167287]],[[195058,195058],"mapped",[18918]],[[195059,195059],"mapped",[38595]],[[195060,195060],"mapped",[23986]],[[195061,195061],"mapped",[38691]],[[195062,195062],"mapped",[168261]],[[195063,195063],"mapped",[168474]],[[195064,195064],"mapped",[19054]],[[195065,195065],"mapped",[19062]],[[195066,195066],"mapped",[38880]],[[195067,195067],"mapped",[168970]],[[195068,195068],"mapped",[19122]],[[195069,195069],"mapped",[169110]],[[195070,195071],"mapped",[38923]],[[195072,195072],"mapped",[38953]],[[195073,195073],"mapped",[169398]],[[195074,195074],"mapped",[39138]],[[195075,195075],"mapped",[19251]],[[195076,195076],"mapped",[39209]],[[195077,195077],"mapped",[39335]],[[195078,195078],"mapped",[39362]],[[195079,195079],"mapped",[39422]],[[195080,195080],"mapped",[19406]],[[195081,195081],"mapped",[170800]],[[195082,195082],"mapped",[39698]],[[195083,195083],"mapped",[40000]],[[195084,195084],"mapped",[40189]],[[195085,195085],"mapped",[19662]],[[195086,195086],"mapped",[19693]],[[195087,195087],"mapped",[40295]],[[195088,195088],"mapped",[172238]],[[195089,195089],"mapped",[19704]],[[195090,195090],"mapped",[172293]],[[195091,195091],"mapped",[172558]],[[195092,195092],"mapped",[172689]],[[195093,195093],"mapped",[40635]],[[195094,195094],"mapped",[19798]],[[195095,195095],"mapped",[40697]],[[195096,195096],"mapped",[40702]],[[195097,195097],"mapped",[40709]],[[195098,195098],"mapped",[40719]],[[195099,195099],"mapped",[40726]],[[195100,195100],"mapped",[40763]],[[195101,195101],"mapped",[173568]],[[195102,196605],"disallowed"],[[196606,196607],"disallowed"],[[196608,262141],"disallowed"],[[262142,262143],"disallowed"],[[262144,327677],"disallowed"],[[327678,327679],"disallowed"],[[327680,393213],"disallowed"],[[393214,393215],"disallowed"],[[393216,458749],"disallowed"],[[458750,458751],"disallowed"],[[458752,524285],"disallowed"],[[524286,524287],"disallowed"],[[524288,589821],"disallowed"],[[589822,589823],"disallowed"],[[589824,655357],"disallowed"],[[655358,655359],"disallowed"],[[655360,720893],"disallowed"],[[720894,720895],"disallowed"],[[720896,786429],"disallowed"],[[786430,786431],"disallowed"],[[786432,851965],"disallowed"],[[851966,851967],"disallowed"],[[851968,917501],"disallowed"],[[917502,917503],"disallowed"],[[917504,917504],"disallowed"],[[917505,917505],"disallowed"],[[917506,917535],"disallowed"],[[917536,917631],"disallowed"],[[917632,917759],"disallowed"],[[917760,917999],"ignored"],[[918000,983037],"disallowed"],[[983038,983039],"disallowed"],[[983040,1048573],"disallowed"],[[1048574,1048575],"disallowed"],[[1048576,1114109],"disallowed"],[[1114110,1114111],"disallowed"]]')}};var __webpack_module_cache__={};function __nccwpck_require__(r){var i=__webpack_module_cache__[r];if(i!==undefined){return i.exports}var s=__webpack_module_cache__[r]={id:r,loaded:false,exports:{}};var a=true;try{__webpack_modules__[r].call(s.exports,s,s.exports,__nccwpck_require__);a=false}finally{if(a)delete __webpack_module_cache__[r]}s.loaded=true;return s.exports}(()=>{__nccwpck_require__.n=r=>{var i=r&&r.__esModule?()=>r["default"]:()=>r;__nccwpck_require__.d(i,{a:i});return i}})();(()=>{__nccwpck_require__.d=(r,i)=>{for(var s in i){if(__nccwpck_require__.o(i,s)&&!__nccwpck_require__.o(r,s)){Object.defineProperty(r,s,{enumerable:true,get:i[s]})}}}})();(()=>{__nccwpck_require__.o=(r,i)=>Object.prototype.hasOwnProperty.call(r,i)})();(()=>{__nccwpck_require__.r=r=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(r,"__esModule",{value:true})}})();(()=>{__nccwpck_require__.nmd=r=>{r.paths=[];if(!r.children)r.children=[];return r}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var __webpack_exports__={};(()=>{"use strict";__nccwpck_require__.r(__webpack_exports__);var r=__nccwpck_require__(97742);var i=__nccwpck_require__.n(r);var s=__nccwpck_require__(63572);var a=__nccwpck_require__.n(s);var l=__nccwpck_require__(73949);var c=__nccwpck_require__.n(l);var d=__nccwpck_require__(10623);var p=__nccwpck_require__.n(d);var A=__nccwpck_require__(14721);var u=__nccwpck_require__.n(A);var h=__nccwpck_require__(28798);var g=__nccwpck_require__.n(h);const y={darwin:{updater:{bundle:"macos",bundleExt:"app",archiveExt:"tar.gz"},standalone:[{ext:"dmg",bundle:"dmg"}]},windows:{updater:{bundle:"msi",bundleExt:"msi",archiveExt:"zip"},standalone:[{ext:"msi",bundle:"msi"}]},linux:{updater:false,standalone:[{ext:"deb",bundle:"deb"}]}};const getInput=r=>c().getInput(r);const b=getInput("os");const C=getInput("arch");const B=getInput("profile");const I=getInput("target");const w=`target/${I}/${B}/bundle`;const v=".artifacts";const S=`OneLauncher-${b}-${C}`;const Q="apps/frontend/dist.tar.xz";const N=`OneLauncher-Updater-${b}-${C}`;const R=`OneLauncher-Frontend-${b}-${C}`;const globFiles=async r=>await(await p().create(r)).glob();async function uploadFrontend(){if(!await(0,h.exists)(Q)){console.error("frontend archive missing!");return}const r=`${R}.tar.xz`;const i=`${v}/${r}`;await u().cp(Q,i);await a().uploadArtifact(r,[i],v)}async function uploadUpdater(r){if(!r)return;const{bundle:i,bundleExt:s,archiveExt:l}=r;const c=`${s}.${l}`;const d=await globFiles(`${w}/${i}/*.${c}*`);const p=d.find((r=>r.endsWith(c)));if(!p)throw new Error(`failed to find updater path in ${d.join(",")}`);const A=`${v}/${N}.${l}`;await u().cp(p,A);await u().cp(`${p}.sig`,`${A}.sig`);await a().uploadArtifact(N,[A,`${A}.sig`],v)}async function uploadStandalone({bundle:r,ext:i}){const s=await globFiles(`${w}/${r}/*.${i}*`);const l=s.find((r=>r.endsWith(i)));if(!l)throw new Error(`failed to find standalone path in ${s.join(",")}`);const c=`${S}.${i}`;const d=`${v}/${c}`;await u().cp(l,d,{recursive:true});await a().uploadArtifact(c,[d],v)}async function run(){await u().mkdirP(v);const{updater:r,standalone:i}=y[b];await Promise.all([uploadUpdater(r),uploadFrontend(),...i.map(uploadStandalone)])}run().catch((r=>{console.error(r);i().exit(1)}))})();module.exports=__webpack_exports__})(); \ No newline at end of file diff --git a/.github/actions/publish-artifacts/package.json b/.github/actions/publish-artifacts/package.json deleted file mode 100644 index 0d407327..00000000 --- a/.github/actions/publish-artifacts/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@onelauncher/action-publish-artifacts", - "version": "1.1.7", - "private": true, - "description": "Next-generation open source Minecraft launcher", - "license": "GPL-3.0-only", - "repository": { - "type": "git", - "url": "git@github.com:polyfrost/onelauncher", - "directory": ".github/actions/publish-artifacts" - }, - "bugs": "https://github.com/polyfrost/onelauncher/issues", - "sideEffects": false, - "scripts": { - "build": "rimraf dist && ncc build src/index.ts -m -q --license ../../LICENSE" - }, - "dependencies": { - "@actions/artifact": "^2.1.9", - "@actions/core": "^1.10.1", - "@actions/glob": "^0.5.0", - "@actions/io": "^1.1.3" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.2" - } -} diff --git a/.github/actions/publish-artifacts/src/index.ts b/.github/actions/publish-artifacts/src/index.ts deleted file mode 100644 index 48c5ba53..00000000 --- a/.github/actions/publish-artifacts/src/index.ts +++ /dev/null @@ -1,147 +0,0 @@ -import process from 'node:process'; -import client from '@actions/artifact'; -import core from '@actions/core'; -import glob from '@actions/glob'; -import io from '@actions/io'; -import { exists } from '@actions/io/lib/io-util'; - -type OS = 'darwin' | 'windows' | 'linux'; -type Arch = 'x64' | 'arm64'; -type Profile = 'debug' | 'release' | 'dev' | 'dev-debug'; - -interface Updater { - bundle: string; - bundleExt: string; - archiveExt: string; -} -interface TargetConfig { - bundle: string; - ext: string; -} -interface BuildTarget { - updater: false | Updater; - standalone: Array; -} - -const osTargets = { - darwin: { - updater: { - bundle: 'macos', - bundleExt: 'app', - archiveExt: 'tar.gz', - }, - standalone: [ - { ext: 'dmg', bundle: 'dmg' }, - ], - }, - windows: { - updater: { - bundle: 'msi', - bundleExt: 'msi', - archiveExt: 'zip', - }, - standalone: [ - { ext: 'msi', bundle: 'msi' }, - ], - }, - linux: { - updater: false, // TODO - standalone: [ - { ext: 'deb', bundle: 'deb' }, - ], - }, -} satisfies Record; - -const getInput = (name: string): T => core.getInput(name) as T; -const os: OS = getInput('os'); -const arch: Arch = getInput('arch'); -const profile: Profile = getInput('profile'); -const target = getInput('target'); -const binaryName = getInput('binary'); - -const targetDir = `target/${target}`; -const bundleDir = `${targetDir}/${profile}/bundle`; -const artifactsDir = '.artifacts'; -const artifactBase = `OneLauncher-${os}-${arch}`; -const frontendBundle = 'apps/frontend/dist.tar.xz'; -const updaterName = `OneLauncher-Updater-${os}-${arch}`; -const frontendName = `OneLauncher-Frontend-${os}-${arch}`; - -const globFiles = async (pattern: string): Promise> => await (await glob.create(pattern)).glob(); - -async function uploadFrontend() { - if (!(await exists(frontendBundle))) { - console.error('frontend archive missing!'); - return; - } - - const artifactName = `${frontendName}.tar.xz`; - const artifactPath = `${artifactsDir}/${artifactName}`; - - await io.cp(frontendBundle, artifactPath); - await client.uploadArtifact(artifactName, [artifactPath], artifactsDir); -} - -async function uploadUpdater(updater: BuildTarget['updater']) { - if (!updater) - return; - - const { bundle, bundleExt, archiveExt } = updater; - const fullExt = `${bundleExt}.${archiveExt}`; - const files = await globFiles(`${bundleDir}/${bundle}/*.${fullExt}*`); - const updaterPath = files.find(f => f.endsWith(fullExt)); - - if (!updaterPath) - throw new Error(`failed to find updater path in ${files.join(',')}`); - - const artifactPath = `${artifactsDir}/${updaterName}.${archiveExt}`; - await io.cp(updaterPath, artifactPath); - await io.cp(`${updaterPath}.sig`, `${artifactPath}.sig`); - await client.uploadArtifact(updaterName, [artifactPath, `${artifactPath}.sig`], artifactsDir); -} - -async function uploadStandalone({ bundle, ext }: TargetConfig) { - const files = await globFiles(`${bundleDir}/${bundle}/*.${ext}*`); - const standalonePath = files.find(f => f.endsWith(ext)); - - if (!standalonePath) - throw new Error(`failed to find standalone path in ${files.join(',')}`); - - const artifactName = `${artifactBase}.${ext}`; - const artifactPath = `${artifactsDir}/${artifactName}`; - await io.cp(standalonePath, artifactPath, { recursive: true }); - await client.uploadArtifact(artifactName, [artifactPath], artifactsDir); -} - -async function uploadBinary() { - if (typeof binaryName !== 'string') - return; - - const file = binaryName || 'onelauncher_gui'; - const binaryPath = `${targetDir}/${file}`; - - if (!(await exists(binaryPath))) { - console.error('binary missing!'); - return; - } - - await io.cp(binaryPath, `${artifactsDir}/${file}`); - await client.uploadArtifact(file, [`${artifactsDir}/${file}`], artifactsDir); -} - -async function run() { - await io.mkdirP(artifactsDir); - const { updater, standalone } = osTargets[os]; - - await Promise.all([ - uploadUpdater(updater), - uploadFrontend(), - uploadBinary(), - ...standalone.map(uploadStandalone), - ]); -} - -run().catch((error) => { - console.error(error); - process.exit(1); -}); diff --git a/.github/actions/publish-artifacts/tsconfig.json b/.github/actions/publish-artifacts/tsconfig.json deleted file mode 100644 index 375422d7..00000000 --- a/.github/actions/publish-artifacts/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "allowImportingTsExtensions": false, - "noEmit": true, - "skipLibCheck": true - }, - "exclude": ["**/dist/**"] -} diff --git a/.github/actions/setup-packages/action.yml b/.github/actions/setup-packages/action.yml deleted file mode 100644 index 98281a9a..00000000 --- a/.github/actions/setup-packages/action.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Setup System and Rust -description: Setup System and Rust -inputs: - token: - description: GitHub token - required: false - default: '' - setup-arg: - description: Argument for the system setup script - required: false - default: '' -runs: - using: composite - steps: - - name: (macOS) Install bash@latest - shell: bash - if: ${{ runner.os == 'macOS' }} - run: brew install bash - - - name: (Linux) Install mold@latest - shell: bash - if: ${{ runner.os == 'Linux' }} - run: | - curl -L# 'https://github.com/rui314/mold/releases/download/v2.33.0/mold-2.33.0-x86_64-linux.tar.gz' \ - | sudo tar -xzf- -C /usr/local - - - name: (Linux) Cleanup Runner - shell: bash - if: ${{ runner.os == 'Linux' }} - run: | - set -eux - if dpkg -l | grep i386; then - sudo apt-get purge --allow-remove-essential libc6-i386 ".*:i386" || true - sudo dpkg --remove-architecture i386 || true - fi - - sudo apt-get remove libunwind-* || true - - - name: (Linux/macOS) - Setup System - shell: bash - if: ${{ runner.os == 'Linux' || runner.os == 'macOS' }} - run: ./packages/scripts/setup.sh ${{ inputs.setup-arg }} - - - name: (Windows) - Setup System - if: ${{ runner.os == 'Windows' }} - shell: powershell - run: ./packages/scripts/setup.ps1 - - - name: Setup pnpm - uses: ./.github/actions/setup-pnpm - with: - token: ${{ github.token }} - - - name: Setup Shared Libraries - shell: bash - env: - GITHUB_TOKEN: ${{ inputs.token }} - NODE_ENV: debug - run: pnpm prep - - - name: Override linuxdeploy version (fixes AppImage) - shell: bash - if: matrix.platform == 'ubuntu-22.04' - run: | - # Pin linuxdeploy version to prevent @tauri-apps/cli-linux-x64-gnu from pulling in an outdated version - TAURI_TOOLKIT_PATH="${XDG_CACHE_HOME:-$HOME/.cache}/tauri" - mkdir -p "$TAURI_TOOLKIT_PATH" - wget https://github.com/linuxdeploy/linuxdeploy/releases/download/1-alpha-20250213-2/linuxdeploy-x86_64.AppImage -O "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" - chmod +x "$TAURI_TOOLKIT_PATH/linuxdeploy-x86_64.AppImage" diff --git a/.github/actions/setup-pnpm/action.yml b/.github/actions/setup-pnpm/action.yml deleted file mode 100644 index e4417b9b..00000000 --- a/.github/actions/setup-pnpm/action.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: Setup Pnpm -description: Setup Pnpm -inputs: - token: - description: GitHub token - required: false - default: '' -runs: - using: composite - steps: - - name: Install pnpm - uses: pnpm/action-setup@v4 - with: - version: 10 - - - name: Install Node.js - uses: actions/setup-node@v4 - with: - token: ${{ inputs.token }} - check-latest: true - node-version-file: .nvmrc - cache: pnpm - - - name: Install dependencies - shell: ${{ runner.os == 'Windows' && 'powershell' || 'bash' }} - env: - NODE_ENV: debug - GITHUB_TOKEN: ${{ inputs.token }} - run: pnpm install --frozen-lockfile diff --git a/.github/actions/setup-rust/action.yml b/.github/actions/setup-rust/action.yml deleted file mode 100644 index 4b67d02c..00000000 --- a/.github/actions/setup-rust/action.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Setup Rust -description: Setup Rust -inputs: - target: - description: Toolchain target triple - required: false - save-cache: - description: Whether or not to save the rust cache - required: false - default: 'false' - restore-cache: - description: Whether or not to restore the rust cache - required: false - default: 'true' -runs: - using: composite - steps: - # - name: Install Rust Stable - # uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a - # with: - # toolchain: stable - # targets: ${{ inputs.target }} - # components: clippy, rustfmt - - - name: Install Rust Nightly - uses: dtolnay/rust-toolchain@master - with: - toolchain: nightly-2025-07-23 - targets: ${{ inputs.target }} - components: cargo, clippy, rustc, rustfmt - - - name: Cache Rust - if: ${{ inputs.restore-cache == 'true' }} - uses: Swatinem/rust-cache@master - with: - key: ${{ inputs.target }} - save-if: ${{ inputs.save-cache }} - shared-key: stable-cache - - - name: Prepare Cargo - shell: bash - run: echo '{}' | npx -y mustache - .cargo/config.toml.mustache .cargo/config.toml diff --git a/.github/workflows/aur_publish.yml b/.github/workflows/aur_publish.yml deleted file mode 100644 index 4e8be0b3..00000000 --- a/.github/workflows/aur_publish.yml +++ /dev/null @@ -1,104 +0,0 @@ -name: Publish AUR Packages - -on: - release: - types: [published] - workflow_dispatch: - inputs: - tag: - description: 'Release tag (e.g. onelauncher-1.0.3)' - required: true - -jobs: - resolve: - runs-on: ubuntu-latest - outputs: - app: ${{ steps.parse.outputs.app }} - version: ${{ steps.parse.outputs.version }} - steps: - - name: Parse release tag - id: parse - run: | - TAG="${{ github.event.release.tag_name || inputs.tag }}" - if [[ "$TAG" =~ ^onelauncher-(.+)$ ]]; then - echo "app=onelauncher" >> "$GITHUB_OUTPUT" - echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" - elif [[ "$TAG" =~ ^oneclient-(.+)$ ]]; then - echo "app=oneclient" >> "$GITHUB_OUTPUT" - echo "version=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT" - else - echo "::error::Tag '$TAG' does not match onelauncher-* or oneclient-*" - exit 1 - fi - - publish-source: - needs: resolve - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Compute source sha256 - id: hash - env: - APP: ${{ needs.resolve.outputs.app }} - VERSION: ${{ needs.resolve.outputs.version }} - run: | - URL="https://github.com/${{ github.repository }}/archive/refs/tags/${APP}-${VERSION}.tar.gz" - SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1) - echo "sha256=$SHA" >> "$GITHUB_OUTPUT" - - - name: Prepare PKGBUILD - env: - APP: ${{ needs.resolve.outputs.app }} - VERSION: ${{ needs.resolve.outputs.version }} - SHA256: ${{ steps.hash.outputs.sha256 }} - run: | - PKGBUILD="apps/${APP}/distribution/aur/source/PKGBUILD" - sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD" - sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" - sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD" - - - name: Publish to AUR - uses: KSXGitHub/github-actions-deploy-aur@v3 - with: - pkgname: ${{ needs.resolve.outputs.app }} - pkgbuild: apps/${{ needs.resolve.outputs.app }}/distribution/aur/source/PKGBUILD - commit_username: ${{ secrets.AUR_USERNAME }} - commit_email: ${{ secrets.AUR_EMAIL }} - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} - - publish-bin: - needs: resolve - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Compute .deb sha256 - id: hash - env: - APP: ${{ needs.resolve.outputs.app }} - VERSION: ${{ needs.resolve.outputs.version }} - run: | - URL="https://github.com/${{ github.repository }}/releases/download/${APP}-${VERSION}/${APP}_${VERSION}_amd64.deb" - SHA=$(curl -sL "$URL" | sha256sum | cut -d' ' -f1) - echo "sha256=$SHA" >> "$GITHUB_OUTPUT" - - - name: Prepare PKGBUILD - env: - APP: ${{ needs.resolve.outputs.app }} - VERSION: ${{ needs.resolve.outputs.version }} - SHA256: ${{ steps.hash.outputs.sha256 }} - run: | - PKGBUILD="apps/${APP}/distribution/aur/bin/PKGBUILD" - sed -i "s/^pkgver=.*/pkgver=${VERSION}/" "$PKGBUILD" - sed -i "s/^pkgrel=.*/pkgrel=1/" "$PKGBUILD" - sed -i "s/^sha256sums=.*/sha256sums=('${SHA256}')/" "$PKGBUILD" - - - name: Publish to AUR - uses: KSXGitHub/github-actions-deploy-aur@v3 - with: - pkgname: ${{ needs.resolve.outputs.app }}-bin - pkgbuild: apps/${{ needs.resolve.outputs.app }}/distribution/aur/bin/PKGBUILD - commit_username: ${{ secrets.AUR_USERNAME }} - commit_email: ${{ secrets.AUR_EMAIL }} - ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml deleted file mode 100644 index 265568e6..00000000 --- a/.github/workflows/format.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Build and Lint - -on: - push: - merge_group: - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - es: - name: ES Checks - runs-on: ubuntu-22.04 - timeout-minutes: 7 - steps: - - name: Prepare Target - run: echo "PR_FETCH_DEPTH=$(( ${{ github.event.pull_request.commits }} + 1))" >> "${GITHUB_ENV}" - - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Pnpm - uses: ./.github/actions/setup-pnpm - with: - token: ${{ secrets.GITHUB_TOKEN }} - - - name: Linting - run: pnpm lint:es - clippy: - name: Rust Checks - runs-on: ubuntu-22.04 - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Rust - uses: ./.github/actions/setup-rust - with: - save-cache: true - restore-cache: true - - - name: Setup Packages - uses: ./.github/actions/setup-packages - - - name: Create Dummy Dist Directories - run: | - mkdir -p apps/onelauncher/frontend/dist - mkdir -p apps/oneclient/frontend/dist - - - name: Run Clippy - run: cargo clippy --all-targets --all-features -- -D warnings diff --git a/.github/workflows/oneclient_release.yml b/.github/workflows/oneclient_release.yml deleted file mode 100644 index 2b14aa03..00000000 --- a/.github/workflows/oneclient_release.yml +++ /dev/null @@ -1,201 +0,0 @@ -name: OneClient Release Build - -on: - workflow_dispatch: - -jobs: - publish-tauri: - permissions: - contents: write - # Required so SignPath can download the uploaded build artifact. - actions: read - strategy: - fail-fast: false - matrix: - include: - - platform: macos-latest # ARM - args: --target aarch64-apple-darwin - - platform: macos-latest # Intel - args: --target x86_64-apple-darwin - - platform: ubuntu-22.04 - args: '' - - platform: windows-latest - args: '' - - runs-on: ${{ matrix.platform }} - steps: - - uses: actions/checkout@v4 - - - name: Resolve release version - shell: bash - run: | - VERSION=$(node -p "require('./apps/oneclient/desktop/package.json').version") - echo "RELEASE_VERSION=$VERSION" >> "$GITHUB_ENV" - - - name: Setup Rust - uses: ./.github/actions/setup-rust - with: - # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. - target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - save-cache: true - restore-cache: true - - - name: Add x86_64-apple-darwin target - if: contains(matrix.args, 'x86_64-apple-darwin') - run: rustup target add x86_64-apple-darwin - - - name: Setup Packages - uses: ./.github/actions/setup-packages - - - name: import Apple Developer Certificate - if: startsWith(matrix.platform, 'macos') - # Prevents keychain from locking automatically for 3600 seconds. - env: - APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} - run: | - echo $APPLE_CERTIFICATE | base64 --decode > certificate.p12 - security create-keychain -p "$KEYCHAIN_PASSWORD" build.keychain - security default-keychain -s build.keychain - security unlock-keychain -p "$KEYCHAIN_PASSWORD" build.keychain - security set-keychain-settings -t 3600 -u build.keychain - security import certificate.p12 -k build.keychain -P "$APPLE_CERTIFICATE_PASSWORD" -T /usr/bin/codesign - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$KEYCHAIN_PASSWORD" build.keychain - security find-identity -v -p codesigning build.keychain - - - name: verify certificate - if: startsWith(matrix.platform, 'macos') - run: | - IDENTITIES=$(security find-identity -v -p codesigning build.keychain || true) - echo "$IDENTITIES" - - CERT_ID=$(echo "$IDENTITIES" | awk -F'"' '/Developer ID Application/ {print $2; exit}') - if [ -z "$CERT_ID" ]; then - CERT_ID=$(echo "$IDENTITIES" | awk -F'"' '/^[[:space:]]*[0-9]+\)/ && $2 != "" {print $2; exit}') - if [ -n "$CERT_ID" ]; then - echo "::warning::Developer ID Application certificate not found. Falling back to: $CERT_ID" - fi - fi - - if [ -z "$CERT_ID" ]; then - echo "::error::No code-signing certificate was found in build.keychain. Check APPLE_CERTIFICATE/APPLE_CERTIFICATE_PASSWORD and ensure the cert includes a private key." - exit 1 - fi - - echo "CERT_ID=$CERT_ID" >> $GITHUB_ENV - echo "Certificate imported." - - - name: Build App (macOS) - if: startsWith(matrix.platform, 'macos') - uses: tauri-apps/tauri-action@dev - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }} - with: - tagName: oneclient-${{ env.RELEASE_VERSION }} - releaseName: OneClient ${{ env.RELEASE_VERSION }} - releaseDraft: true - prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }} - retryAttempts: 3 - tauriScript: pnpm -w oneclient:desktop - args: ${{ matrix.args }} - projectPath: ./apps/oneclient/desktop/ - uploadUpdaterJson: true - - - name: Build App (non-macOS) - if: startsWith(matrix.platform, 'macos') == false - uses: tauri-apps/tauri-action@dev - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }} - with: - tagName: oneclient-${{ env.RELEASE_VERSION }} - releaseName: OneClient ${{ env.RELEASE_VERSION }} - releaseDraft: true - prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }} - retryAttempts: 3 - tauriScript: pnpm -w oneclient:desktop - args: ${{ matrix.args }} - projectPath: ./apps/oneclient/desktop/ - uploadUpdaterJson: true - - # ---- Windows Authenticode signing via SignPath (windows-latest only) ---- - # The installer must be Authenticode-signed BEFORE its Tauri updater signature is - # computed, otherwise auto-update breaks: the .sig covers the *unsigned* bytes and no - # longer verifies once SignPath alters the exe. tauri-action already built and uploaded - # the unsigned exe + latest.json, so here we: SignPath-sign -> recompute the updater - # .sig over the SIGNED exe -> replace the release exe and patch latest.json's signature. - - - name: Locate Windows installer - if: matrix.platform == 'windows-latest' - id: installer - shell: bash - run: echo "path=$(ls target/release/bundle/nsis/*-setup.exe | head -n1)" >> "$GITHUB_OUTPUT" - - - name: Upload unsigned installer - if: matrix.platform == 'windows-latest' - id: upload-unsigned - uses: actions/upload-artifact@v4 - with: - name: oneclient-windows-installer-unsigned - path: ${{ steps.installer.outputs.path }} - - - name: Submit SignPath signing request - if: matrix.platform == 'windows-latest' - uses: signpath/github-action-submit-signing-request@v1 - with: - api-token: ${{ secrets.SIGNPATH_API_TOKEN }} - organization-id: ${{ secrets.SIGNPATH_ORGANIZATION_ID }} - project-slug: onelauncher - signing-policy-slug: test-signing - artifact-configuration-slug: onelauncher-installer - github-artifact-id: ${{ steps.upload-unsigned.outputs.artifact-id }} - wait-for-completion: true - output-artifact-directory: signed - - - name: Recompute updater signature over signed installer - if: matrix.platform == 'windows-latest' - id: resign - shell: bash - run: | - signed="$(ls signed/*-setup.exe | head -n1)" - echo "signed=$signed" >> "$GITHUB_OUTPUT" - signed_abs="$(cygpath -w "$(pwd)/$signed")" - pnpm -w oneclient:desktop tauri signer sign \ - --private-key "${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}" \ - --password "${{ secrets.TAURI_SIGNING_PRIVATE_KEY_PASSWORD }}" \ - "$signed_abs" - - - name: Publish signed installer and patch updater manifest - if: matrix.platform == 'windows-latest' - shell: bash - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: oneclient-${{ env.RELEASE_VERSION }} - run: | - signed="${{ steps.resign.outputs.signed }}" - # Replace the release installer with the Authenticode-signed one (same filename). - gh release upload "$TAG" "$signed" --clobber - # Patch latest.json: swap the windows-x86_64 signature for the recomputed one. - gh release download "$TAG" -p latest.json -D manifest --clobber - SIG="$(cat "$signed.sig")" python3 - <<'PY' - import json, os - p = "manifest/latest.json" - with open(p) as f: - data = json.load(f) - for key, plat in data.get("platforms", {}).items(): - if key.startswith("windows-"): - plat["signature"] = os.environ["SIG"] - with open(p, "w") as f: - json.dump(data, f, indent=2) - PY - gh release upload "$TAG" manifest/latest.json --clobber diff --git a/.github/workflows/onelauncher_release.yml b/.github/workflows/onelauncher_release.yml deleted file mode 100644 index 5c89928a..00000000 --- a/.github/workflows/onelauncher_release.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: OneLauncher Release Build - -on: - workflow_dispatch: - -jobs: - publish-tauri: - permissions: - contents: write - strategy: - fail-fast: false - matrix: - include: - - platform: macos-latest # ARM - args: --target aarch64-apple-darwin - - platform: macos-latest # Intel - args: --target x86_64-apple-darwin - - platform: ubuntu-22.04 - args: '' - - platform: windows-latest - args: '' - - runs-on: ${{ matrix.platform }} - steps: - - uses: actions/checkout@v4 - - - name: Setup Rust - uses: ./.github/actions/setup-rust - with: - # Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds. - target: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }} - save-cache: true - restore-cache: true - - - name: Setup Packages - uses: ./.github/actions/setup-packages - - - uses: tauri-apps/tauri-action@dev - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tagName: onelauncher-__VERSION__ - releaseName: OneLauncher __VERSION__ - releaseDraft: true - prerelease: ${{ startsWith(github.ref, 'refs/tags/v') && contains(github.ref, '-alpha') || false }} - tauriScript: pnpm -w onelauncher:desktop - args: ${{ matrix.args }} - projectPath: ./apps/onelauncher/desktop/ diff --git a/.gitignore b/.gitignore index d341ec83..05923927 100644 --- a/.gitignore +++ b/.gitignore @@ -1,519 +1,2 @@ -dev.db -dev.db-journal -.cargo/config.toml -.deps/* -vite.config.ts.timestamp* - -# Created by https://www.toptal.com/developers/gitignore/api/node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git -# Edit at https://www.toptal.com/developers/gitignore?templates=node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git - -### Git ### -# Created by git for backups. To disable backups in Git: -# $ git config --global mergetool.keepBackup false -*.orig - -# Created by git when using merge tools for conflicts -*.BACKUP.* -*.BASE.* -*.LOCAL.* -*.REMOTE.* -*_BACKUP_*.txt -*_BASE_*.txt -*_LOCAL_*.txt -*_REMOTE_*.txt - -### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# AWS User-specific -.idea/**/aws.xml - -# Generated files -.idea/**/contentModel.xml - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/artifacts -# .idea/compiler.xml -# .idea/jarRepositories.xml -# .idea/modules.xml -# .idea/*.iml -# .idea/modules -# *.iml -# *.ipr - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# SonarLint plugin -.idea/sonarlint/ - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - -# Android studio 3.1+ serialized cache file -.idea/caches/build_file_checksums.ser - -### Intellij Patch ### -# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 - -# *.iml -# modules.xml -# .idea/misc.xml -# *.ipr - -# Sonarlint plugin -# https://plugins.jetbrains.com/plugin/7973-sonarlint -.idea/**/sonarlint/ - -# SonarQube Plugin -# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin -.idea/**/sonarIssues.xml - -# Markdown Navigator plugin -# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced -.idea/**/markdown-navigator.xml -.idea/**/markdown-navigator-enh.xml -.idea/**/markdown-navigator/ - -# Cache file creation bug -# See https://youtrack.jetbrains.com/issue/JBR-2257 -.idea/$CACHE_FILE$ - -# CodeStream plugin -# https://plugins.jetbrains.com/plugin/12206-codestream -.idea/codestream.xml - -# Azure Toolkit for IntelliJ plugin -# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij -.idea/**/azureSettings.xml - -### Intellij+all ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff - -# AWS User-specific - -# Generated files - -# Sensitive or high-churn files - -# Gradle - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/artifacts -# .idea/compiler.xml -# .idea/jarRepositories.xml -# .idea/modules.xml -# .idea/*.iml -# .idea/modules -# *.iml -# *.ipr - -# CMake - -# Mongo Explorer plugin - -# File-based project format - -# IntelliJ - -# mpeltonen/sbt-idea plugin - -# JIRA plugin - -# Cursive Clojure plugin - -# SonarLint plugin - -# Crashlytics plugin (for Android Studio and IntelliJ) - -# Editor-based Rest Client - -# Android studio 3.1+ serialized cache file - -### Intellij+all Patch ### -# Ignore everything but code style settings and run configurations -# that are supposed to be shared within teams. - -.idea/* - -### Intellij+iml ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff - -# AWS User-specific - -# Generated files - -# Sensitive or high-churn files - -# Gradle - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/artifacts -# .idea/compiler.xml -# .idea/jarRepositories.xml -# .idea/modules.xml -# .idea/*.iml -# .idea/modules -# *.iml -# *.ipr - -# CMake - -# Mongo Explorer plugin - -# File-based project format - -# IntelliJ - -# mpeltonen/sbt-idea plugin - -# JIRA plugin - -# Cursive Clojure plugin - -# SonarLint plugin - -# Crashlytics plugin (for Android Studio and IntelliJ) - -# Editor-based Rest Client - -# Android studio 3.1+ serialized cache file - -### Intellij+iml Patch ### -# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023 - -*.iml -modules.xml -.idea/misc.xml -*.ipr - -### Linux ### -*~ - -# temporary files which can be created if a process still has a handle open of a deleted file -.fuse_hidden* - -# KDE directory preferences -.directory - -# Linux trash folder which might appear on any partition or disk -.Trash-* - -# .nfs files are created when an open file is removed but is still being accessed -.nfs* - -### macOS ### -# General +/target .DS_Store -.AppleDouble -.LSOverride - -# Icon must end with two \r -Icon - - -# Thumbnails -._* - -# Files that might appear in the root of a volume -.DocumentRevisions-V100 -.fseventsd -.Spotlight-V100 -.TemporaryItems -.Trashes -.VolumeIcon.icns -.com.apple.timemachine.donotpresent - -# Directories potentially created on remote AFP share -.AppleDB -.AppleDesktop -Network Trash Folder -Temporary Items -.apdisk - -### macOS Patch ### -# iCloud generated files -*.icloud - -### Node ### -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional stylelint cache -.stylelintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variable files -.env -.env.development.local -.env.test.local -.env.production.local -.env.local - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output - -# vuepress v2.x temp and cache directory -.temp - -# Docusaurus cache and generated files -.docusaurus - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -### Node Patch ### -# Serverless Webpack directories -.webpack/ - -# Optional stylelint cache - -# SvelteKit build / generate output -.svelte-kit - -### Rust ### -# Generated by Cargo -# will have compiled files and executables -debug/ -target/ - -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -# Cargo.lock - -# These are backup files generated by rustfmt -**/*.rs.bk - -# MSVC Windows builds of rustc generate these, which store debugging information -*.pdb - -### rust-analyzer ### -# Can be generated by other build systems other than cargo (ex: bazelbuild/rust_rules) -rust-project.json - - -### VisualStudioCode ### -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets - -# Local History for Visual Studio Code -.history/ - -# Built Visual Studio Code Extensions -*.vsix - -### VisualStudioCode Patch ### -# Ignore all local history of files -.history -.ionide - -### Windows ### -# Windows thumbnail cache files -Thumbs.db -Thumbs.db:encryptable -ehthumbs.db -ehthumbs_vista.db - -# Dump file -*.stackdump - -# Folder config file -[Dd]esktop.ini - -# Recycle Bin used on file shares -$RECYCLE.BIN/ - -# Windows Installer files -*.cab -*.msi -*.msix -*.msm -*.msp - -# Windows shortcuts -*.lnk - -### yarn ### -# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored - -.yarn/* -!.yarn/releases -!.yarn/patches -!.yarn/plugins -!.yarn/sdks -!.yarn/versions - -# if you are NOT using Zero-installs, then: -# comment the following lines -!.yarn/cache - -# and uncomment the following lines -# .pnp.* - -# End of https://www.toptal.com/developers/gitignore/api/node,rust,yarn,linux,macos,windows,intellij+all,rust-analyzer,visualstudiocode,intellij,intellij+iml,git diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100644 index cb2c84d5..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -pnpm lint-staged diff --git a/.npmrc b/.npmrc deleted file mode 100644 index bcdc315f..00000000 --- a/.npmrc +++ /dev/null @@ -1,9 +0,0 @@ -; make all engine requirements (e.g. node version) strictly kept -engine-strict=true -dedupe-peer-dependents=true -# strict-peer-dependencies=true -auto-install-peers=true -max-old-space-size=4096 -enable-pre-post-scripts=true -package-manager-strict=true -package-manager-strict-version=true diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index a45fd52c..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -24 diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index 72e8ffc0..00000000 --- a/.prettierignore +++ /dev/null @@ -1 +0,0 @@ -* diff --git a/.rustfmt.toml b/.rustfmt.toml deleted file mode 100644 index 07630d8b..00000000 --- a/.rustfmt.toml +++ /dev/null @@ -1,23 +0,0 @@ -max_width = 100 -hard_tabs = true -newline_style = "Unix" -use_small_heuristics = "Default" -reorder_imports = true -imports_granularity = "Module" -reorder_modules = true -remove_nested_parens = true -edition = "2024" -merge_derives = true -use_try_shorthand = false -use_field_init_shorthand = false -force_explicit_abi = true -unstable_features = true -deprecated = "warn" -deprecated_in_future = "forbid" -rust_2018_idioms = { level = "warn", priority = -1 } -trivial_casts = "warn" -trivial_numeric_casts = "warn" -unused_allocation = "warn" -unused_import_braces = "warn" -unused_must_use = "deny" -unused_qualifications = "warn" diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index bd082fa3..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "recommendations": [ - "tauri-apps.tauri-vscode", // Provides Tauri framework support. - "rust-lang.rust-analyzer", // Provides Rust language support. - "vadimcn.vscode-lldb", // Provides Rust debugging support. - "bradlc.vscode-tailwindcss", // Provides UnoCSS intellisense. - "EditorConfig.EditorConfig", // Maintains consistent coding styles. - "dbaeumer.vscode-eslint" // Code formatting using ESLint. - ] -} diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index a1d59c56..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Tauri Development", - "cargo": { - "args": [ - "build", - "--profile=dev-debug", - "--manifest-path=./apps/onelauncher/desktop/Cargo.toml", - "--no-default-features" - ], - "problemMatcher": "$rustc" - }, - "env": { - "RUST_BACKTRACE": "short" - // "RUST_LOG": "onelauncher=trace" - }, - "sourceLanguages": ["rust"], - "preLaunchTask": "frontend:dev" - }, - { - "type": "lldb", - "request": "launch", - "name": "Tauri Production", - "cargo": { - "args": [ - "build", - "--release", - "--manifest-path=./apps/desktop/Cargo.toml" - ], - "problemMatcher": "$rustc" - }, - "sourceLanguages": ["rust"], - "preLaunchTask": "frontend:build" - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug Core", - "cargo": { - "args": ["test", "--no-run", "--lib", "--package=onelauncher"], - "filter": { - "name": "onelauncher", - "kind": "lib" - } - }, - "args": [], - "cwd": "${workspaceFolder}" - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index a5fedb36..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "[rust]": { - "editor.defaultFormatter": "rust-lang.rust-analyzer" - }, - "[javascript]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[javascriptreact]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[typescript]": { - "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "vscode.typescript-language-features" - }, - "files.readonlyInclude": { - "**/node_modules/**": true, - "**/*.gen.ts": true - }, - "files.watcherExclude": { - "**/_build": true, - "**/.classpath": true, - "**/.flatpak-builder": true, - "**/.git/objects/**": true, - "**/.git/subtree-cache/**": true, - "**/.idea": true, - "**/.project": true, - "**/.settings": true, - "**/.venv": true, - "**/node_modules": true, - "**/.rustup": true, - "**/.cargo": true, - "**/.crates": true, - "**/*.gen.ts": true - }, - "rust-analyzer.procMacro.enable": true, - "rust-analyzer.procMacro.attributes.enable": true, - "rust-analyzer.diagnostics.disabled": [ - "macro-error" // TODO: Remove this once taurpc upgrades to latest specta - ], - "rust-analyzer.assist.preferSelf": true, - "rust-analyzer.procMacro.ignored": { - "async-trait": ["async_trait"] - }, - "rust-analyzer.check.command": "check", - "rust-analyzer.diagnostics.experimental.enable": false, - "rust-analyzer.linkedProjects": [], - "rust-analyzer.cargo.extraEnv": {}, - "rust-analyzer.check.targets": null, - "rust-analyzer.showUnlinkedFileNotification": false, - - // Disable the default formatter - "prettier.enable": false, - "editor.formatOnSave": false, - - // Auto fix - "editor.codeActionsOnSave": { - "source.fixAll.eslint": "explicit", - "source.organizeImports": "never" - }, - "eslint.runtime": "node", - - // Silent the stylistic rules in you IDE, but still auto fix them - "eslint.rules.customizations": [ - { "rule": "style/*", "severity": "off", "fixable": true }, - { "rule": "*-indent", "severity": "off", "fixable": true }, - { "rule": "*-spacing", "severity": "off", "fixable": true }, - { "rule": "*-spaces", "severity": "off", "fixable": true }, - { "rule": "*-order", "severity": "off", "fixable": true }, - { "rule": "*-dangle", "severity": "off", "fixable": true }, - { "rule": "*-newline", "severity": "off", "fixable": true }, - { "rule": "*quotes", "severity": "off", "fixable": true }, - { "rule": "*semi", "severity": "off", "fixable": true } - ], - - "eslint.validate": [ - "javascript", - "javascriptreact", - "typescript", - "typescriptreact", - "vue", - "html", - "markdown", - "json", - "jsonc", - "yaml", - "astro", - "toml", - "graphql", - "gql", - "xml", - "css", - "less", - "scss", - "pcss", - "postcss" - ], - - "eslint.options": { - "flags": ["unstable_ts_config"] - }, - - // Tailwind CSS intellisense - "tailwindCSS.classFunctions": ["tv"], - - // updated 2024-08-26 15:46 - // https://github.com/antfu/vscode-file-nesting-config - "explorer.fileNesting.enabled": false, - "explorer.fileNesting.expand": false, - "explorer.fileNesting.patterns": { - ".clang-tidy": ".clang-format, .clangd, compile_commands.json", - ".env": "*.env, .env.*, .envrc, env.d.ts", - ".gitignore": ".gitattributes, .gitmodules, .gitmessage, .mailmap, .git-blame*", - ".project": ".classpath", - "+layout.svelte": "+layout.ts,+layout.ts,+layout.js,+layout.server.ts,+layout.server.js,+layout.gql", - "+page.svelte": "+page.server.ts,+page.server.js,+page.ts,+page.js,+page.gql", - "ansible.cfg": "ansible.cfg, .ansible-lint, requirements.yml", - "app.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "artisan": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, server.php, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, webpack.mix.js, windi.config.*", - "astro.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "BUILD.bazel": "*.bzl, *.bazel, *.bazelrc, bazel.rc, .bazelignore, .bazelproject, WORKSPACE", - "Cargo.toml": ".clippy.toml, .rustfmt.toml, cargo.lock, clippy.toml, cross.toml, rust-toolchain.toml, rustfmt.toml", - "CMakeLists.txt": "*.cmake, *.cmake.in, .cmake-format.yaml, CMakePresets.json, CMakeCache.txt", - "composer.json": ".php*.cache, composer.lock, phpunit.xml*, psalm*.xml", - "default.nix": "shell.nix", - "deno.json*": "*.env, .env.*, .envrc, api-extractor.json, deno.lock, env.d.ts, import-map.json, import_map.json, jsconfig.*, tsconfig.*, tsdoc.*", - "Dockerfile": "*.dockerfile, .devcontainer.*, .dockerignore, captain-definition, compose.*, docker-compose.*, dockerfile*", - "flake.nix": "flake.lock", - "gatsby-config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, gatsby-browser.*, gatsby-node.*, gatsby-ssr.*, gatsby-transformer.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "gemfile": ".ruby-version, gemfile.lock", - "go.mod": ".air*, go.sum", - "go.work": "go.work.sum", - "hatch.toml": ".editorconfig, .flake8, .isort.cfg, .python-version, hatch.toml, requirements*.in, requirements*.pip, requirements*.txt, tox.ini", - "I*.cs": "$(capture).cs", - "Makefile": "*.mk", - "mix.exs": ".credo.exs, .dialyzer_ignore.exs, .formatter.exs, .iex.exs, .tool-versions, mix.lock", - "next.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, next-env.d.ts, next-i18next.config.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "nuxt.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .nuxtignore, .nuxtrc, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "package.json": "*.code-workspace, .browserslist*, .circleci*, .commitlint*, .cz-config.js, .czrc, .dlint.json, .dprint.json*, .editorconfig, .eslint*, .firebase*, .flowconfig, .github*, .gitlab*, .gitmojirc.json, .gitpod*, .huskyrc*, .jslint*, .knip.*, .lintstagedrc*, .markdownlint*, .node-version, .nodemon*, .npm*, .nvmrc, .pm2*, .pnp.*, .pnpm*, .prettier*, .pylintrc, .release-please*.json, .releaserc*, .ruff.toml, .sentry*, .simple-git-hooks*, .stackblitz*, .styleci*, .stylelint*, .tazerc*, .textlint*, .tool-versions, .travis*, .versionrc*, .vscode*, .watchman*, .xo-config*, .yamllint*, .yarnrc*, Procfile, apollo.config.*, appveyor*, azure-pipelines*, biome.json*, bower.json, build.config.*, bun.lockb, bunfig.toml, commitlint*, crowdin*, dangerfile*, dlint.json, dprint.json*, electron-builder.*, eslint*, firebase.json, grunt*, gulp*, jenkins*, knip.*, lerna*, lint-staged*, nest-cli.*, netlify*, nodemon*, npm-shrinkwrap.json, nx.*, package-lock.json, package.nls*.json, phpcs.xml, pm2.*, pnpm*, prettier*, pullapprove*, pyrightconfig.json, release-please*.json, release-tasks.sh, release.config.*, renovate*, rollup.config.*, rspack*, ruff.toml, simple-git-hooks*, sonar-project.properties, stylelint*, tslint*, tsup.config.*, turbo*, typedoc*, unlighthouse*, vercel*, vetur.config.*, webpack*, workspace.json, wrangler.toml, xo.config.*, yarn*", - "Pipfile": ".editorconfig, .flake8, .isort.cfg, .python-version, Pipfile, Pipfile.lock, requirements*.in, requirements*.pip, requirements*.txt, tox.ini", - "pubspec.yaml": ".metadata, .packages, all_lint_rules.yaml, analysis_options.yaml, build.yaml, pubspec.lock, pubspec_overrides.yaml", - "pyproject.toml": ".commitlint*, .dlint.json, .dprint.json*, .editorconfig, .eslint*, .flake8, .flowconfig, .isort.cfg, .jslint*, .lintstagedrc*, .markdownlint*, .pdm-python, .pdm.toml, .prettier*, .pylintrc, .python-version, .ruff.toml, .stylelint*, .textlint*, .xo-config*, .yamllint*, MANIFEST.in, Pipfile, Pipfile.lock, biome.json*, commitlint*, dangerfile*, dlint.json, dprint.json*, eslint*, hatch.toml, lint-staged*, pdm.lock, phpcs.xml, poetry.lock, poetry.toml, prettier*, pyproject.toml, pyrightconfig.json, requirements*.in, requirements*.pip, requirements*.txt, ruff.toml, setup.cfg, setup.py, stylelint*, tox.ini, tslint*, xo.config.*", - "quasar.conf.js": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, quasar.extensions.json, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "readme*": "AUTHORS, Authors, BACKERS*, Backers*, CHANGELOG*, CITATION*, CODEOWNERS, CODE_OF_CONDUCT*, CONTRIBUTING*, CONTRIBUTORS, COPYING*, CREDITS, Changelog*, Citation*, Code_Of_Conduct*, Codeowners, Contributing*, Contributors, Copying*, Credits, GOVERNANCE.MD, Governance.md, HISTORY.MD, History.md, LICENSE*, License*, MAINTAINERS, Maintainers, README-*, README_*, RELEASE_NOTES*, Readme-*, Readme_*, Release_Notes*, SECURITY.MD, SPONSORS*, Security.md, Sponsors*, authors, backers*, changelog*, citation*, code_of_conduct*, codeowners, contributing*, contributors, copying*, credits, governance.md, history.md, license*, maintainers, readme-*, readme_*, release_notes*, security.md, sponsors*", - "Readme*": "AUTHORS, Authors, BACKERS*, Backers*, CHANGELOG*, CITATION*, CODEOWNERS, CODE_OF_CONDUCT*, CONTRIBUTING*, CONTRIBUTORS, COPYING*, CREDITS, Changelog*, Citation*, Code_Of_Conduct*, Codeowners, Contributing*, Contributors, Copying*, Credits, GOVERNANCE.MD, Governance.md, HISTORY.MD, History.md, LICENSE*, License*, MAINTAINERS, Maintainers, README-*, README_*, RELEASE_NOTES*, Readme-*, Readme_*, Release_Notes*, SECURITY.MD, SPONSORS*, Security.md, Sponsors*, authors, backers*, changelog*, citation*, code_of_conduct*, codeowners, contributing*, contributors, copying*, credits, governance.md, history.md, license*, maintainers, readme-*, readme_*, release_notes*, security.md, sponsors*", - "README*": "AUTHORS, Authors, BACKERS*, Backers*, CHANGELOG*, CITATION*, CODEOWNERS, CODE_OF_CONDUCT*, CONTRIBUTING*, CONTRIBUTORS, COPYING*, CREDITS, Changelog*, Citation*, Code_Of_Conduct*, Codeowners, Contributing*, Contributors, Copying*, Credits, GOVERNANCE.MD, Governance.md, HISTORY.MD, History.md, LICENSE*, License*, MAINTAINERS, Maintainers, README-*, README_*, RELEASE_NOTES*, Readme-*, Readme_*, Release_Notes*, SECURITY.MD, SPONSORS*, Security.md, Sponsors*, authors, backers*, changelog*, citation*, code_of_conduct*, codeowners, contributing*, contributors, copying*, credits, governance.md, history.md, license*, maintainers, readme-*, readme_*, release_notes*, security.md, sponsors*", - "remix.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, remix.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "requirements.txt": ".editorconfig, .flake8, .isort.cfg, .python-version, requirements*.in, requirements*.pip, requirements*.txt, tox.ini", - "rush.json": "*.code-workspace, .browserslist*, .circleci*, .commitlint*, .cz-config.js, .czrc, .dlint.json, .dprint.json*, .editorconfig, .eslint*, .firebase*, .flowconfig, .github*, .gitlab*, .gitmojirc.json, .gitpod*, .huskyrc*, .jslint*, .knip.*, .lintstagedrc*, .markdownlint*, .node-version, .nodemon*, .npm*, .nvmrc, .pm2*, .pnp.*, .pnpm*, .prettier*, .pylintrc, .release-please*.json, .releaserc*, .ruff.toml, .sentry*, .simple-git-hooks*, .stackblitz*, .styleci*, .stylelint*, .tazerc*, .textlint*, .tool-versions, .travis*, .versionrc*, .vscode*, .watchman*, .xo-config*, .yamllint*, .yarnrc*, Procfile, apollo.config.*, appveyor*, azure-pipelines*, biome.json*, bower.json, build.config.*, bun.lockb, bunfig.toml, commitlint*, crowdin*, dangerfile*, dlint.json, dprint.json*, electron-builder.*, eslint*, firebase.json, grunt*, gulp*, jenkins*, knip.*, lerna*, lint-staged*, nest-cli.*, netlify*, nodemon*, npm-shrinkwrap.json, nx.*, package-lock.json, package.nls*.json, phpcs.xml, pm2.*, pnpm*, prettier*, pullapprove*, pyrightconfig.json, release-please*.json, release-tasks.sh, release.config.*, renovate*, rollup.config.*, rspack*, ruff.toml, simple-git-hooks*, sonar-project.properties, stylelint*, tslint*, tsup.config.*, turbo*, typedoc*, unlighthouse*, vercel*, vetur.config.*, webpack*, workspace.json, wrangler.toml, xo.config.*, yarn*", - "sanity.config.*": "sanity.cli.*, sanity.types.ts, schema.json", - "setup.cfg": ".editorconfig, .flake8, .isort.cfg, .python-version, MANIFEST.in, requirements*.in, requirements*.pip, requirements*.txt, setup.cfg, tox.ini", - "setup.py": ".editorconfig, .flake8, .isort.cfg, .python-version, MANIFEST.in, requirements*.in, requirements*.pip, requirements*.txt, setup.cfg, setup.py, tox.ini", - "shims.d.ts": "*.d.ts", - "svelte.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, houdini.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, mdsvex.config.js, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vite.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "vite.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "vue.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, capacitor.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, i18n.config.*, ionic.config.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, panda.config.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, sst.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, vuetify.config.*, webpack.config.*, windi.config.*", - "*.asax": "$(capture).*.cs, $(capture).*.vb", - "*.ascx": "$(capture).*.cs, $(capture).*.vb", - "*.ashx": "$(capture).*.cs, $(capture).*.vb", - "*.aspx": "$(capture).*.cs, $(capture).*.vb", - "*.axaml": "$(capture).axaml.cs", - "*.bloc.dart": "$(capture).event.dart, $(capture).state.dart", - "*.c": "$(capture).h", - "*.cc": "$(capture).hpp, $(capture).h, $(capture).hxx, $(capture).hh", - "*.cjs": "$(capture).cjs.map, $(capture).*.cjs, $(capture)_*.cjs", - "*.component.ts": "$(capture).component.html, $(capture).component.spec.ts, $(capture).component.css, $(capture).component.scss, $(capture).component.sass, $(capture).component.less", - "*.cpp": "$(capture).hpp, $(capture).h, $(capture).hxx, $(capture).hh", - "*.cs": "$(capture).*.cs", - "*.cshtml": "$(capture).cshtml.cs", - "*.csproj": "*.config, *proj.user, appsettings.*, bundleconfig.json", - "*.css": "$(capture).css.map, $(capture).*.css", - "*.cxx": "$(capture).hpp, $(capture).h, $(capture).hxx, $(capture).hh", - "*.dart": "$(capture).freezed.dart, $(capture).g.dart", - "*.db": "*.db-shm, *.db-wal", - "*.ex": "$(capture).html.eex, $(capture).html.heex, $(capture).html.leex", - "*.fs": "$(capture).fs.js, $(capture).fs.js.map, $(capture).fs.jsx, $(capture).fs.ts, $(capture).fs.tsx, $(capture).fs.rs, $(capture).fs.php, $(capture).fs.dart", - "*.go": "$(capture)_test.go", - "*.java": "$(capture).class", - "*.js": "$(capture).js.map, $(capture).*.js, $(capture)_*.js", - "*.jsx": "$(capture).js, $(capture).*.jsx, $(capture)_*.js, $(capture)_*.jsx, $(capture).less, $(capture).module.less, $(capture).module.less.d.ts, $(capture).scss, $(capture).module.scss, $(capture).module.scss.d.ts", - "*.master": "$(capture).*.cs, $(capture).*.vb", - "*.md": "$(capture).*", - "*.mjs": "$(capture).mjs.map, $(capture).*.mjs, $(capture)_*.mjs", - "*.module.ts": "$(capture).resolver.ts, $(capture).controller.ts, $(capture).service.ts", - "*.mts": "$(capture).mts.map, $(capture).*.mts, $(capture)_*.mts", - "*.pubxml": "$(capture).pubxml.user", - "*.py": "$(capture).pyi", - "*.razor": "$(capture).razor.cs, $(capture).razor.css, $(capture).razor.scss", - "*.resx": "$(capture).*.resx, $(capture).designer.cs, $(capture).designer.vb", - "*.tex": "$(capture).acn, $(capture).acr, $(capture).alg, $(capture).aux, $(capture).bbl, $(capture).blg, $(capture).fdb_latexmk, $(capture).fls, $(capture).glg, $(capture).glo, $(capture).gls, $(capture).idx, $(capture).ind, $(capture).ist, $(capture).lof, $(capture).log, $(capture).lot, $(capture).out, $(capture).pdf, $(capture).synctex.gz, $(capture).toc, $(capture).xdv", - "*.ts": "$(capture).js, $(capture).d.ts.map, $(capture).*.ts, $(capture)_*.js, $(capture)_*.ts", - "*.tsx": "$(capture).ts, $(capture).*.tsx, $(capture)_*.ts, $(capture)_*.tsx, $(capture).less, $(capture).module.less, $(capture).module.less.d.ts, $(capture).scss, $(capture).module.scss, $(capture).module.scss.d.ts, $(capture).css.ts", - "*.vbproj": "*.config, *proj.user, appsettings.*, bundleconfig.json", - "*.vue": "$(capture).*.ts, $(capture).*.js, $(capture).story.vue", - "*.w": "$(capture).*.w, I$(capture).w", - "*.xaml": "$(capture).xaml.cs" - }, - "typescript.tsdk": "node_modules/typescript/lib", - "svg.preview.background": "editor" -} diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 43e09f85..00000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "type": "cargo", - "command": "clippy", - "problemMatcher": ["$rustc"], - "group": { - "kind": "build", - "isDefault": true - }, - "label": "rust:clippy", - "args": ["--all-targets", "--all-features", "--all"] - }, - { - "type": "npm", - "script": "prepare", - "label": "pnpm:prep", - "group": "none", - "problemMatcher": ["$rustc"] - }, - { - "type": "shell", - "label": "start", - "command": "sh", - "args": ["-c", "'pnpm i && pnpm prepare'"], - "problemMatcher": ["$tsc-watch", "$rustc"] - }, - { - "type": "shell", - "label": "frontend:dev", - "problemMatcher": { - "base": "$tsc-watch", - "background": { - "activeOnStart": true, - "beginsPattern": "VITE v", - "endsPattern": "http://localhost:8001/" - } - }, - "isBackground": true, - "command": "pnpm", - "args": ["onelauncher:frontend", "dev", "--mode=development"], - "runOptions": { - "instanceLimit": 1 - } - }, - { - "type": "shell", - "label": "frontend:build", - "problemMatcher": "$tsc", - "command": "pnpm", - "args": ["frontend", "build"] - }, - { - "type": "cargo", - "command": "run", - "args": ["--manifest-path=./apps/desktop/Cargo.toml", "--no-default-features"], - "env": { - "RUST_BACKTRACE": "short" - // "RUST_LOG": "onelauncher=trace" - }, - "problemMatcher": ["$rustc"], - "group": "build", - "label": "rust:run", - "dependsOn": ["frontend:dev"] - }, - { - "type": "cargo", - "command": "run", - "args": ["--manifest-path=./apps/desktop/Cargo.toml", "--release"], - "env": { - "RUST_BACKTRACE": "short" - // "RUST_LOG": "onelauncher=trace" - }, - "problemMatcher": ["$rustc"], - "group": "build", - "label": "rust:run release", - "dependsOn": ["frontend:build"] - } - ] -} diff --git a/Cargo.lock b/Cargo.lock index 6192e640..140fd4dc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,51 +3,180 @@ version = 4 [[package]] -name = "Inflector" -version = "0.11.4" +name = "ab_glyph" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] [[package]] -name = "addr2line" -version = "0.24.1" +name = "ab_glyph_rasterizer" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a" dependencies = [ - "gimli", + "uuid", +] + +[[package]] +name = "accesskit_atspi_common" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e8c61bee90b42a772d39d06a740207dc71a4e780004ace1db8d99fb1baaa954" +dependencies = [ + "accesskit", + "accesskit_consumer", + "atspi-common", + "phf", + "serde", + "zvariant", +] + +[[package]] +name = "accesskit_consumer" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e0d7e25d06f4dc21d1774d67146e9e80d6789216cbd4d1e88185b0095dba60" +dependencies = [ + "accesskit", + "hashbrown 0.16.1", +] + +[[package]] +name = "accesskit_ios" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f907f6793e18524b69a4530528f8a8fb6dc8b4e162f782b97a9618401e7f2e3" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.16.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", +] + +[[package]] +name = "accesskit_macos" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c5c87e8d94f2ec10cce590aadff24c76f576dab5502d45d0aed9fc3065d4451" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.16.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "accesskit_unix" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b016ca8db0ea0ea2ceff29a9d6240391492d960716aa471967c00e8cc8cb197c" +dependencies = [ + "accesskit", + "accesskit_atspi_common", + "async-channel", + "async-executor", + "async-task", + "atspi", + "futures-lite", + "futures-util", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e329f630e4379b9b3464c1a4cf22d5dab05d66964d77d623855e803647ca565" +dependencies = [ + "accesskit", + "accesskit_consumer", + "hashbrown 0.16.1", + "static_assertions", + "windows 0.62.2", + "windows-core 0.62.2", +] + +[[package]] +name = "accesskit_winit" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f3b48f109814c181d6e9b6033641a11b25887d0aec706be8eb16b83ae9d27b" +dependencies = [ + "accesskit", + "accesskit_ios", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "raw-window-handle", + "winit", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "ahash" -version = "0.7.8" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "getrandom 0.2.15", + "cfg-if", + "getrandom 0.3.4", "once_cell", "version_check", + "zerocopy", ] [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" dependencies = [ "memchr", ] [[package]] -name = "aliasable" -version = "0.1.3" +name = "aligned" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" +checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685" +dependencies = [ + "as-slice", +] + +[[package]] +name = "aligned-vec" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" +dependencies = [ + "equator", +] [[package]] name = "alloc-no-stdlib" @@ -66,15 +195,43 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] -name = "android-tzdata" -version = "0.1.1" +name = "android-activity" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" +dependencies = [ + "android-properties", + "bitflags 2.12.1", + "cc", + "jni", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror 2.0.18", +] + +[[package]] +name = "android-build" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fc9904ad2ad097c3c1cfe2eacaaf0fc24710936fa9ed941cb310b7c6ed2ab7" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" [[package]] name = "android_system_properties" @@ -85,91 +242,55 @@ dependencies = [ "libc", ] -[[package]] -name = "anstream" -version = "0.6.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is_terminal_polyfill", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" - -[[package]] -name = "anstyle-parse" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "anstyle-wincon" -version = "3.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" -dependencies = [ - "anstyle", - "windows-sys 0.59.0", -] - [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" -dependencies = [ - "derive_arbitrary", -] +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" [[package]] name = "arboard" -version = "3.5.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.3", - "objc2-app-kit", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", - "windows-sys 0.59.0", - "wl-clipboard-rs", + "windows-sys 0.60.2", "x11rb", ] +[[package]] +name = "arg_enum_proc_macro" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + [[package]] name = "arrayvec" version = "0.7.6" @@ -177,21 +298,54 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] -name = "ashpd" -version = "0.11.0" +name = "as-raw-xcb-connection" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cbdf310d77fd3aaee6ea2093db7011dc2d35d2eb3481e5607f1f8d942ed99df" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "as-slice" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" dependencies = [ - "enumflags2", - "futures-channel", - "futures-util", - "rand 0.9.1", + "stable_deref_trait", +] + +[[package]] +name = "ash" +version = "0.38.0+1.3.281" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f" +dependencies = [ + "libloading", +] + +[[package]] +name = "ash-window" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52bca67b61cb81e5553babde81b8211f713cb6db79766f80168f3e5f40ea6c82" +dependencies = [ + "ash", "raw-window-handle", - "serde", - "serde_repr", + "raw-window-metal", +] + +[[package]] +name = "astral-tokio-tar" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb50a7aae84a03bf55b067832bc376f4961b790c97e64d3eacee97d389b90277" +dependencies = [ + "filetime", + "futures-core", + "libc", + "portable-atomic", + "rustc-hash", "tokio", - "url", - "zbus", + "tokio-stream", + "xattr", ] [[package]] @@ -208,9 +362,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -220,29 +374,22 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.23" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b37fc50485c4f3f736a4fb14199f6d5f5ba008d7f28fe710306c92780f004c07" +checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" dependencies = [ - "brotli 8.0.0", - "bzip2", - "deflate64", - "flate2", - "futures-core", + "compression-codecs", + "compression-core", "futures-io", - "liblzma", - "memchr", "pin-project-lite", "tokio", - "zstd", - "zstd-safe", ] [[package]] name = "async-executor" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -252,41 +399,29 @@ dependencies = [ "slab", ] -[[package]] -name = "async-fs" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - [[package]] name = "async-io" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 0.38.44", + "rustix 1.1.4", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ "event-listener", "event-listener-strategy", @@ -295,9 +430,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel", "async-io", @@ -308,8 +443,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 0.38.44", - "tracing", + "rustix 1.1.4", ] [[package]] @@ -320,14 +454,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "async-signal" -version = "0.2.10" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" dependencies = [ "async-io", "async-lock", @@ -335,10 +469,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 0.38.44", + "rustix 1.1.4", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -360,7 +494,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] @@ -376,74 +510,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8a57b75c36e16f4d015e60e6a177552976a99b6947724403c551bcfa7cb1207" dependencies = [ "tokio", + "uuid", ] [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "async-tungstenite" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee88b4c88ac8c9ea446ad43498955750a4bbe64c4392f21ccfe5d952865e318f" -dependencies = [ - "atomic-waker", - "futures-core", - "futures-io", - "futures-task", - "futures-util", - "log", - "pin-project-lite", - "tungstenite", + "syn", ] [[package]] name = "async_zip" -version = "0.0.17" +version = "0.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b9f7252833d5ed4b00aa9604b563529dd5e11de9c23615de2dcdf91eb87b52" +checksum = "0d8c50d65ce1b0e0cb65a785ff615f78860d7754290647d3b983208daa4f85e6" dependencies = [ "async-compression", "chrono", "crc32fast", "futures-lite", "pin-project", - "thiserror 1.0.64", + "thiserror 2.0.18", "tokio", "tokio-util", ] -[[package]] -name = "atk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - [[package]] name = "atoi" version = "2.0.0" @@ -460,37 +556,112 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] -name = "autocfg" -version = "1.4.0" +name = "atspi" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" - -[[package]] -name = "backtrace" -version = "0.3.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d" dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-targets 0.52.6", + "atspi-common", + "atspi-proxies", ] [[package]] -name = "base16ct" -version = "0.2.0" +name = "atspi-common" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" +checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus-lockstep", + "zbus-lockstep-macros", + "zbus_names", + "zvariant", +] [[package]] -name = "base64" -version = "0.21.7" +name = "atspi-proxies" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc" +dependencies = [ + "atspi-common", + "serde", + "zbus", +] + +[[package]] +name = "autocfg" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "av-scenechange" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" +dependencies = [ + "aligned", + "anyhow", + "arg_enum_proc_macro", + "arrayvec", + "log", + "num-rational", + "num-traits", + "pastey", + "rayon", + "thiserror 2.0.18", + "v_frame", + "y4m", +] + +[[package]] +name = "av1-grain" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8" +dependencies = [ + "anyhow", + "arrayvec", + "log", + "nom 8.0.0", + "num-rational", + "v_frame", +] + +[[package]] +name = "avif-serialize" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "aws-lc-rs" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +dependencies = [ + "cc", + "cmake", + "dunce", + "fs_extra", +] [[package]] name = "base64" @@ -499,25 +670,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] -name = "base64ct" -version = "1.6.0" +name = "beul" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "d3c3baedf037b161e69da9200947329f52afa3b6e1cdbe6f344d6aa350fedd2f" [[package]] -name = "bigdecimal" -version = "0.4.7" +name = "bindgen" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f31f3af01c5c65a07985c804d3366560e6fa7883d640a122819b14ec327482c" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "autocfg", - "libm", - "num-bigint", - "num-integer", - "num-traits", - "serde", + "bitflags 2.12.1", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex 1.3.0", + "syn", ] +[[package]] +name = "bit_field" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6" + [[package]] name = "bitflags" version = "1.3.2" @@ -526,25 +709,28 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" +checksum = "84d7ced0ae9557296835c32bf1b1e02b44c746701f898460fb000d7eaa84f00a" dependencies = [ "serde_core", ] [[package]] -name = "bitvec" -version = "1.0.1" +name = "bitstream-io" +version = "4.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f" dependencies = [ - "funty", - "radium", - "tap", - "wyz", + "no_std_io2", ] +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + [[package]] name = "block-buffer" version = "0.10.4" @@ -554,6 +740,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +dependencies = [ + "hybrid-array", +] + [[package]] name = "block2" version = "0.5.1" @@ -565,18 +760,18 @@ dependencies = [ [[package]] name = "block2" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "340d2f0bdb2a43c1d3cd40513185b2bd7def0aa1052f956455114bc98f82dcf2" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" dependencies = [ - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ "async-channel", "async-task", @@ -585,67 +780,22 @@ dependencies = [ "piper", ] -[[package]] -name = "borsh" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d4d6dafc1a3bb54687538972158f07b2c948bc57d5890df22c0739098b3028" -dependencies = [ - "borsh-derive", - "cfg_aliases 0.1.1", -] - -[[package]] -name = "borsh-derive" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4918709cc4dd777ad2b6303ed03cb37f3ca0ccede8c1b0d28ac6db8f4710e0" -dependencies = [ - "once_cell", - "proc-macro-crate 2.0.0", - "proc-macro2", - "quote", - "syn 2.0.101", - "syn_derive", -] - [[package]] name = "brotli" -version = "7.0.0" +version = "8.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor 4.0.1", -] - -[[package]] -name = "brotli" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf19e729cdbd51af9a397fb9ef8ac8378007b797f8273cfbfdf45dcaa316167b" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor 5.0.0", + "brotli-decompressor", ] [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -653,48 +803,45 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" dependencies = [ "memchr", - "regex-automata 0.4.9", "serde", ] +[[package]] +name = "built" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9" + [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "byteorder" @@ -710,148 +857,106 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.10.1" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" dependencies = [ - "serde", + "byteorder", + "iovec", ] +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" + [[package]] name = "bzip2" -version = "0.5.2" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" dependencies = [ - "bzip2-sys", + "libbz2-rs-sys", ] [[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" +name = "calloop" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "cc", - "pkg-config", + "bitflags 2.12.1", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", ] [[package]] -name = "cairo-rs" -version = "0.18.5" +name = "calloop" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" dependencies = [ - "bitflags 2.11.0", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.64", + "bitflags 2.12.1", + "polling", + "rustix 1.1.4", + "slab", + "tracing", ] [[package]] -name = "cairo-sys-rs" -version = "0.18.2" +name = "calloop-wayland-source" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "glib-sys", - "libc", - "system-deps", + "calloop 0.13.0", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", ] [[package]] -name = "camino" -version = "1.1.9" +name = "calloop-wayland-source" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.12", -] - -[[package]] -name = "cargo_toml" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02260d489095346e5cafd04dea8e8cb54d1d74fcd759022a9b72986ebe9a1257" -dependencies = [ - "serde", - "toml", + "calloop 0.14.4", + "rustix 1.1.4", + "wayland-backend", + "wayland-client", ] [[package]] name = "cc" -version = "1.1.22" +version = "1.2.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9540e661f81799159abee814118cc139a2004b3a3aa3ea37724a1b66530b90e0" +checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" dependencies = [ + "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] -name = "cesu8" -version = "1.1.0" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "byteorder", - "fnv", - "uuid 1.16.0", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", + "nom 7.1.3", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -860,74 +965,109 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] -name = "chrono" -version = "0.4.41" +name = "cgl" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link 0.1.1", + "windows-link", ] [[package]] -name = "clap" -version = "4.5.34" +name = "clang-sys" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e958897981290da2a852763fe9cdb89cd36977a5d729023127095fa94d95e2ff" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ - "clap_builder", - "clap_derive", + "glob", + "libc", + "libloading", ] -[[package]] -name = "clap_builder" -version = "4.5.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b0f35019843db2160b5bb19ae09b4e6411ac33fc6a712003c33e03090e2489" -dependencies = [ - "anstream", - "anstyle", - "clap_lex", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.5.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "clap_lex" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" - [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] [[package]] -name = "colorchoice" -version = "1.0.3" +name = "cmake" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678" +dependencies = [ + "cc", +] + +[[package]] +name = "cmov" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation 0.9.4", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation 0.9.4", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "combine" @@ -935,10 +1075,34 @@ version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ - "bytes", + "bytes 1.11.1", "memchr", ] +[[package]] +name = "compression-codecs" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf" +dependencies = [ + "brotli", + "bzip2", + "compression-core", + "deflate64", + "flate2", + "liblzma", + "lz4", + "memchr", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -950,77 +1114,28 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "d64e8af5551369d19cf50138de61f1c42074ab970f74e99be916646777f8fc87" dependencies = [ "encode_unicode", - "lazy_static", "libc", "unicode-width", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] -name = "const-oid" -version = "0.9.6" +name = "copypasta" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +checksum = "3e6811e17f81fe246ef2bc553f76b6ee6ab41a694845df1d37e52a92b7bbd38a" dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom 0.2.15", - "once_cell", - "tiny-keccak", -] - -[[package]] -name = "const_format" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" -dependencies = [ - "const_format_proc_macros", -] - -[[package]] -name = "const_format_proc_macros" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" -dependencies = [ - "proc-macro2", - "quote", - "unicode-xid", -] - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time", - "version_check", + "clipboard-win", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "smithay-clipboard", + "x11-clipboard", ] [[package]] @@ -1051,12 +1166,12 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.24.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.10.0", + "bitflags 1.3.2", + "core-foundation 0.9.4", "core-graphics-types", "foreign-types", "libc", @@ -1064,53 +1179,87 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.2.0" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.10.0", + "bitflags 1.3.2", + "core-foundation 0.9.4", "libc", ] [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" dependencies = [ "libc", ] [[package]] name = "crc" -version = "3.2.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +checksum = "5eb8a2a1cd12ab0d987a5d5e825195d372001a4094a0376319d5a0ad71c1ba0d" dependencies = [ "crc-catalog", ] [[package]] name = "crc-catalog" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +checksum = "217698eaf96b4a3f0bc4f3662aaa55bdf913cd54d7204591faa790070c6d0853" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] -name = "crossbeam-channel" -version = "0.5.13" +name = "critical-section" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] @@ -1126,123 +1275,64 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ "generic-array", "typenum", ] [[package]] -name = "cssparser" -version = "0.27.2" +name = "crypto-common" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa 0.4.8", - "matches", - "phf 0.8.0", - "proc-macro2", - "quote", - "smallvec", - "syn 1.0.109", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.101", + "hybrid-array", ] [[package]] name = "ctor" -version = "0.2.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +checksum = "83cf0d42651b16c6dfe68685716d18480d18a9c39c62d76e8cf3eb6ed5d8bcbf" dependencies = [ - "quote", - "syn 2.0.101", + "dtor", ] [[package]] -name = "darling" -version = "0.20.10" +name = "ctutils" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" dependencies = [ - "darling_core", - "darling_macro", + "cmov", ] [[package]] -name = "darling_core" -version = "0.20.10" +name = "cursor-icon" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.101", -] +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] -name = "darling_macro" -version = "0.20.10" +name = "dary_heap" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] +checksum = "8b1e3a325bc115f096c8b77bbf027a7c2592230e70be2d985be950d3d5e60ebe" [[package]] name = "data-encoding" @@ -1252,54 +1342,9 @@ checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" [[package]] name = "deflate64" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da692b8d1080ea3045efaab14434d40468c3d8657e42abddfffca87b428f4c1b" - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derive_arbitrary" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.101", -] +checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2" [[package]] name = "digest" @@ -1307,17 +1352,26 @@ version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "block-buffer", - "const-oid", - "crypto-common", - "subtle", + "block-buffer 0.10.4", + "crypto-common 0.1.7", ] [[package]] -name = "dirs" +name = "digest" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" +dependencies = [ + "block-buffer 0.12.0", + "crypto-common 0.2.2", + "ctutils", +] + +[[package]] +name = "directories" version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +checksum = "16f5094c54661b38d03bd7e50df373292118db60b585c08a411c6d840017fe7d" dependencies = [ "dirs-sys", ] @@ -1334,19 +1388,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "discord-rich-presence" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75db747ecd252c01bfecaf709b07fcb4c634adf0edb5fed47bc9c3052e7076b" -dependencies = [ - "serde", - "serde_derive", - "serde_json", - "serde_repr", - "uuid 0.8.2", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1355,67 +1396,34 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dispatch2" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a0d569e003ff27784e0e14e4a594048698e0c0f0b66cabcb51511be55a7caa0" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "bitflags 2.11.0", - "block2 0.6.1", + "bitflags 2.12.1", + "block2 0.6.2", "libc", - "objc2 0.6.3", -] - -[[package]] -name = "dispatch2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" -dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "objc2 0.6.4", ] [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] -name = "dlopen2" -version = "0.7.0" +name = "dlib" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "dlv-list" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" -dependencies = [ - "const-random", + "libloading", ] [[package]] @@ -1432,28 +1440,56 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "drm" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ - "serde", + "bitflags 2.12.1", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "libc", + "rustix 0.38.44", ] [[package]] -name = "dtoa" -version = "1.0.9" +name = "drm-ffi" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" +checksum = "51a91c9b32ac4e8105dec255e849e0d66e27d7c34d184364fb93e469db08f690" +dependencies = [ + "drm-sys", + "rustix 1.1.4", +] [[package]] -name = "dtoa-short" -version = "0.3.5" +name = "drm-fourcc" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8e1361066d91f5ffccff060a3c3be9c3ecde15be2959c1937595f7a82a9f8" dependencies = [ - "dtoa", + "libc", + "linux-raw-sys 0.9.4", ] +[[package]] +name = "dtor" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf234dd1594d6dd434a8fb8cada51ddbbc593e40e4a01556a0b31c62da2775b" + [[package]] name = "dunce" version = "1.0.5" @@ -1461,79 +1497,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] -name = "dyn-clone" -version = "1.0.17" +name = "easer" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" - -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" +checksum = "fba524f8b83c9c5bde02c2bb1627de9d1f81980489a6d54168cdfd08c258f917" dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", + "num-traits", ] [[package]] name = "either" -version = "1.13.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" dependencies = [ "serde", ] -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "pem-rfc7468", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "embed-resource" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fbc6e0d8e0c03a655b53ca813f0463d2c956bc4db8138dbc89f120b066551e3" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml", - "vswhom", - "winreg", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -1546,15 +1531,27 @@ dependencies = [ [[package]] name = "endi" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" + +[[package]] +name = "enum-as-inner" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] [[package]] name = "enumflags2" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" dependencies = [ "enumflags2_derive", "serde", @@ -1562,63 +1559,81 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", +] + +[[package]] +name = "equator" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" +dependencies = [ + "equator-macro", +] + +[[package]] +name = "equator-macro" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "erased-serde" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" -dependencies = [ - "serde", - "typeid", -] +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.10" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "error-code" -version = "3.3.1" +version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" +checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "etcetera" -version = "0.8.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +checksum = "de48cc4d1c1d97a20fd819def54b890cadde72ed3ad0c614822a0a433361be96" dependencies = [ "cfg-if", - "home", - "windows-sys 0.48.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", ] [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -1636,72 +1651,62 @@ dependencies = [ ] [[package]] -name = "fastrand" -version = "2.1.1" +name = "exr" +version = "1.74.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" +dependencies = [ + "bit_field", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fax" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "file-id" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc6a637b6dc58414714eddd9170ff187ecb0933d4c7024d1abbd23a3cc26e9" -dependencies = [ - "windows-sys 0.60.2", -] - [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" dependencies = [ "cfg-if", "libc", - "libredox", - "windows-sys 0.59.0", ] [[package]] -name = "fixedbitset" -version = "0.4.2" +name = "find-msvc-tools" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "flate2" -version = "1.0.34" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1709,9 +1714,9 @@ dependencies = [ [[package]] name = "flume" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +checksum = "5e139bc46ca777eb5efaf62df0ab8cc5fd400866427e56c68b22e414e53bd3be" dependencies = [ "futures-core", "futures-sink", @@ -1754,7 +1759,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] @@ -1765,58 +1770,314 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] [[package]] -name = "fsevent-sys" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +name = "freya" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" dependencies = [ - "libc", + "cfg-if", + "freya-android", + "freya-animation", + "freya-clipboard", + "freya-components", + "freya-core", + "freya-edit", + "freya-engine", + "freya-markdown", + "freya-performance-plugin", + "freya-query", + "freya-router", + "freya-sdk", + "freya-winit", + "torin", ] [[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +name = "freya-android" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" dependencies = [ - "mac", - "new_debug_unreachable", + "freya-components", + "freya-core", + "freya-winit", + "jni", + "tracing", + "winit", ] [[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +name = "freya-animation" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" dependencies = [ + "async-io", + "easer", + "freya-core", +] + +[[package]] +name = "freya-clipboard" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "copypasta", + "freya-core", +] + +[[package]] +name = "freya-components" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "accesskit", + "anyhow", + "async-io", + "async-lock", + "blocking", + "bytes 1.11.1", + "cfg-if", + "euclid", + "freya-animation", + "freya-core", + "freya-edit", + "freya-engine", + "freya-icons", + "freya-router", + "freya-sdk", + "open", + "paste", + "thiserror 2.0.18", + "torin", + "tracing", + "ureq", +] + +[[package]] +name = "freya-core" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "accesskit", + "async-broadcast", + "bitflags 2.12.1", + "bytes 1.11.1", + "cursor-icon", + "freya-engine", "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", + "futures-lite", + "futures-util", + "generational-box", + "hotpath", + "itertools 0.14.0", + "keyboard-types", + "mundy", + "paste", + "pathgraph", + "ragnarok", + "rustc-hash", + "smallvec", + "torin", + "tracing", +] + +[[package]] +name = "freya-edit" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "bitflags 2.12.1", + "freya-clipboard", + "freya-core", + "keyboard-types", + "ropey", + "torin", + "unicode-segmentation", +] + +[[package]] +name = "freya-engine" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "freya-skia-safe", +] + +[[package]] +name = "freya-icons" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "bytes 1.11.1", +] + +[[package]] +name = "freya-markdown" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "freya-components", + "freya-core", + "pulldown-cmark", + "torin", +] + +[[package]] +name = "freya-performance-plugin" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "freya-core", + "freya-engine", + "freya-winit", +] + +[[package]] +name = "freya-query" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "async-io", + "freya-core", "futures-util", ] [[package]] -name = "futures-channel" -version = "0.3.31" +name = "freya-router" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "freya-core", + "freya-router-macro", + "rustversion", + "url", + "urlencoding", +] + +[[package]] +name = "freya-router-macro" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "proc-macro2", + "quote", + "slab", + "syn", +] + +[[package]] +name = "freya-sdk" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "async-io", + "freya-core", + "tokio", +] + +[[package]] +name = "freya-skia-bindings" +version = "0.98.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "200c1b328da375fd1d51ed41b1ac0f6a34c873592bed39e3bcbde12f06402605" +dependencies = [ + "bindgen", + "cc", + "flate2", + "heck", + "pkg-config", + "regex", + "serde_json", + "tar", + "toml", +] + +[[package]] +name = "freya-skia-safe" +version = "0.98.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4756388cf43378c948daedc98d1f4777a44cb411e68c03a0d203a7692a91f09" +dependencies = [ + "base64", + "bitflags 2.12.1", + "freya-skia-bindings", + "freya-skia-svg-macros", + "percent-encoding", +] + +[[package]] +name = "freya-skia-svg-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c622cedc8d1cdaf144bc779734e7f6c5c29876a63e114bd0424d47a0d1aad18e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "freya-winit" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" +dependencies = [ + "accesskit", + "accesskit_winit", + "ash", + "ash-window", + "bytes 1.11.1", + "freya-clipboard", + "freya-components", + "freya-core", + "freya-engine", + "futures-channel", + "futures-lite", + "futures-util", + "gl", + "glutin", + "glutin-winit", + "hotpath", + "image", + "keyboard-types", + "mundy", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-metal 0.3.2", + "objc2-quartz-core 0.3.2", + "ragnarok", + "raw-window-handle", + "rfd", + "rustc-hash", + "softbuffer", + "torin", + "tracing", + "winit", +] + +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -1824,15 +2085,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -1852,15 +2113,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand", "futures-core", @@ -1871,40 +2132,33 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" - -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1912,116 +2166,18 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", + "tokio-io", ] [[package]] -name = "fxhash" -version = "0.2.1" +name = "generational-box" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +checksum = "8cd0d825b8d339701ad330dbcd6399519ced4d143484954daf6e3185dace4f77" dependencies = [ - "byteorder", -] - -[[package]] -name = "gdk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", + "parking_lot", + "tracing", ] [[package]] @@ -2032,17 +2188,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", -] - -[[package]] -name = "gethostname" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" -dependencies = [ - "libc", - "windows-targets 0.48.5", ] [[package]] @@ -2051,278 +2196,188 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.0.3", - "windows-link 0.2.1", + "rustix 1.1.4", + "windows-link", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "getopts" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "unicode-width", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi", "wasm-bindgen", ] [[package]] -name = "gimli" -version = "0.31.0" +name = "getrandom" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", + "cfg-if", + "js-sys", "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.64", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", ] [[package]] -name = "gio-sys" -version = "0.18.1" +name = "getrandom" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ - "glib-sys", - "gobject-sys", + "cfg-if", "libc", - "system-deps", - "winapi", + "r-efi 6.0.0", + "rand_core 0.10.1", + "wasip2", + "wasip3", ] [[package]] -name = "git2" -version = "0.20.0" +name = "gif" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" +checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159" dependencies = [ - "bitflags 2.11.0", - "libc", - "libgit2-sys", + "color_quant", + "weezl", +] + +[[package]] +name = "gl" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a94edab108827d67608095e269cf862e60d920f144a5026d3dbcfd8b877fb404" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", "log", - "url", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.11.0", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.64", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", + "xml-rs", ] [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] -name = "global-hotkey" -version = "0.7.0" +name = "globset" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9247516746aa8e53411a0db9b62b0e24efbcf6a76e0ba73e5a91b512ddabed7" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" dependencies = [ - "crossbeam-channel", - "keyboard-types", - "objc2 0.6.3", - "objc2-app-kit", + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "glutin" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" +dependencies = [ + "bitflags 2.12.1", + "cfg_aliases", + "cgl", + "dispatch2", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "libloading", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-core-foundation", + "objc2-foundation 0.3.2", "once_cell", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", - "x11rb", - "xkeysym", + "raw-window-handle", + "wayland-sys", + "windows-sys 0.52.0", + "x11-dl", ] [[package]] -name = "gobject-sys" -version = "0.18.0" +name = "glutin-winit" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +checksum = "85edca7075f8fc728f28cb8fbb111a96c3b89e930574369e3e9c27eb75d3788f" dependencies = [ - "glib-sys", - "libc", - "system-deps", + "cfg_aliases", + "glutin", + "raw-window-handle", + "winit", ] [[package]] -name = "governor" -version = "0.10.4" +name = "glutin_egl_sys" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9efcab3c1958580ff1f25a2a41be1668f7603d849bb63af523b208a3cc1223b8" +checksum = "4c4680ba6195f424febdc3ba46e7a42a0e58743f2edb115297b86d7f8ecc02d2" dependencies = [ - "cfg-if", - "dashmap", - "futures-sink", - "futures-timer", - "futures-util", - "getrandom 0.3.2", - "hashbrown 0.16.1", - "nonzero_ext", - "parking_lot", - "portable-atomic", - "quanta", - "rand 0.9.1", - "smallvec", - "spinning_top", - "web-time", + "gl_generator", + "windows-sys 0.52.0", ] [[package]] -name = "group" -version = "0.13.0" +name = "glutin_glx_sys" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +checksum = "8a7bb2938045a88b612499fbcba375a77198e01306f52272e692f8c1f3751185" dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", + "gl_generator", + "x11-dl", ] [[package]] -name = "gtk" -version = "0.18.1" +name = "glutin_wgl_sys" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" +checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e" dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.101", + "gl_generator", ] [[package]] name = "h2" -version = "0.4.6" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" dependencies = [ "atomic-waker", - "bytes", + "bytes 1.11.1", "fnv", "futures-core", "futures-sink", "http", - "indexmap 2.5.0", + "indexmap", "slab", "tokio", "tokio-util", @@ -2330,28 +2385,22 @@ dependencies = [ ] [[package]] -name = "hashbrown" -version = "0.12.3" +name = "half" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ - "ahash", + "cfg-if", + "crunchy", + "zerocopy", ] [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - -[[package]] -name = "hashbrown" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "allocator-api2", - "equivalent", "foldhash 0.1.5", ] @@ -2367,19 +2416,19 @@ dependencies = [ ] [[package]] -name = "hashlink" -version = "0.10.0" +name = "hashbrown" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" -dependencies = [ - "hashbrown 0.15.2", -] +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] -name = "heck" -version = "0.4.1" +name = "hashlink" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "ea0b22561a9c04a7cb1a302c013e0259cd3b4bb619f145b32f72b8b4bcbed230" +dependencies = [ + "hashbrown 0.16.1", +] [[package]] name = "heck" @@ -2389,15 +2438,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -2406,55 +2449,92 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] -name = "hkdf" -version = "0.12.4" +name = "hickory-proto" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand 0.9.4", + "ring", + "thiserror 2.0.18", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" +dependencies = [ + "cfg-if", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot", + "rand 0.9.4", + "resolv-conf", + "smallvec", + "thiserror 2.0.18", + "tokio", + "tracing", +] + +[[package]] +name = "hkdf" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aaa26c720c68b866f2c96ef5c1264b3e6f473fe5d4ce61cd44bbe913e553018" dependencies = [ "hmac", ] [[package]] name = "hmac" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f" dependencies = [ - "digest", + "digest 0.11.3", ] [[package]] -name = "home" -version = "0.5.9" +name = "hotpath" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "fdb7d0713302f121f02d93290b6303b320e886f462d2cde84146ce9f9e28f1f0" dependencies = [ - "windows-sys 0.52.0", + "hotpath-macros", ] [[package]] -name = "html5ever" -version = "0.26.0" +name = "hotpath-macros" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "51066092dc750f8cbcac4afa04592377bf7463a911d1beca430ddd788deb0757" [[package]] name = "http" -version = "1.1.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "8be7462df143984c4598a256ef469b251d7d7f9e271135073e78fc535414f3d0" dependencies = [ - "bytes", - "fnv", - "itoa 1.0.11", + "bytes 1.11.1", + "itoa", ] [[package]] @@ -2463,49 +2543,53 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ - "bytes", + "bytes 1.11.1", "http", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ - "bytes", - "futures-util", + "bytes 1.11.1", + "futures-core", "http", "http-body", "pin-project-lite", ] [[package]] -name = "http-range" -version = "0.1.5" +name = "httparse" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] -name = "httparse" -version = "1.9.4" +name = "hybrid-array" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +dependencies = [ + "typenum", +] [[package]] name = "hyper" -version = "1.4.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" dependencies = [ - "bytes", + "atomic-waker", + "bytes 1.11.1", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", "httparse", - "itoa 1.0.11", + "itoa", "pin-project-lite", "smallvec", "tokio", @@ -2514,34 +2598,35 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", "rustls", - "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots", ] [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ - "bytes", + "base64", + "bytes 1.11.1", "futures-channel", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", "tokio", @@ -2551,16 +2636,17 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core 0.62.2", ] [[package]] @@ -2573,126 +2659,211 @@ dependencies = [ ] [[package]] -name = "ico" -version = "0.4.0" +name = "icu_collections" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc50b891e4acf8fe0e71ef88ec43ad82ee07b3810ad09de10f1d01f072ed4b98" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ - "byteorder", - "png", + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "icu_locale_core" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "image" -version = "0.25.6" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", + "color_quant", + "exr", + "gif", + "image-webp", + "moxcms", "num-traits", "png", + "qoi", + "ravif", + "rayon", + "rgb", "tiff", + "zune-core", + "zune-jpeg", ] [[package]] -name = "indexmap" -version = "1.9.3" +name = "image-webp" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3" dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", + "byteorder-lite", + "quick-error", +] + +[[package]] +name = "imgref" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40fac9d56ed6437b198fddba683305e8e2d651aa42647f00f5ae542e7f5c94a2" + +[[package]] +name = "include-flate" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23e233413926ef735f7d87024466cfda5a4b87467730846bd82ea7d504121347" +dependencies = [ + "include-flate-codegen", + "include-flate-compress", +] + +[[package]] +name = "include-flate-codegen" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e7148f24ef8922cc0e5574ebb908729ccdd3a110c440a45165733fedadd9969" +dependencies = [ + "include-flate-compress", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "include-flate-compress" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74783a9ed407e844e99d5e7a57bd650acbfa124cf6e97ffd790ba59d8ab8e7ff" +dependencies = [ + "libflate", + "zstd", ] [[package]] name = "indexmap" -version = "2.5.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.17.1", "serde", + "serde_core", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "25470f23803092da7d239834776d653104d551bc4d7eacaf31e6837854b8e9eb" dependencies = [ "console", - "instant", - "number_prefix", "portable-atomic", + "tokio", "unicode-width", -] - -[[package]] -name = "infer" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] - -[[package]] -name = "inherent" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "inotify" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" -dependencies = [ - "bitflags 2.11.0", - "inotify-sys", - "libc", -] - -[[package]] -name = "inotify-sys" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" -dependencies = [ - "libc", -] - -[[package]] -name = "instant" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" -dependencies = [ - "cfg-if", + "unit-prefix", + "web-time", ] [[package]] @@ -2704,15 +2875,47 @@ dependencies = [ "chrono", "serde", "serde_json", - "specta", - "thiserror 2.0.12", + "thiserror 2.0.18", +] + +[[package]] +name = "interpolate_name" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipconfig" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" +dependencies = [ + "socket2", + "widestring", + "windows-registry", + "windows-result 0.4.1", + "windows-sys 0.61.2", ] [[package]] name = "ipnet" -version = "2.10.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" [[package]] name = "is-docker" @@ -2733,18 +2936,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "is_debug" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fe266d2e243c931d8190177f20bf7f24eed45e96f39e87dc49a27b32d12d407" - -[[package]] -name = "is_terminal_polyfill" -version = "1.70.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" - [[package]] name = "itertools" version = "0.13.0" @@ -2755,228 +2946,205 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "0.4.8" +name = "itertools" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", + "either", ] [[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" +name = "itoa" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jni" -version = "0.21.1" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" dependencies = [ - "cesu8", "cfg-if", "combine", - "jni-sys", + "jni-macros", + "jni-sys 0.4.1", "log", - "thiserror 1.0.64", + "simd_cesu8", + "thiserror 2.0.18", "walkdir", - "windows-sys 0.45.0", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn", ] [[package]] name = "jni-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn", +] [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.4", "libc", ] -[[package]] -name = "jpeg-decoder" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" - [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ + "cfg-if", + "futures-util", "once_cell", "wasm-bindgen", ] -[[package]] -name = "json-patch" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror 1.0.64", -] - -[[package]] -name = "jsonptr" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "keyboard-types" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +checksum = "0fbe853b403ae61a04233030ae8a79d94975281ed9770a1f9e246732b534b28d" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "serde", - "unicode-segmentation", ] [[package]] -name = "kqueue" -version = "1.1.1" +name = "khronos_api" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" -dependencies = [ - "kqueue-sys", - "libc", -] - -[[package]] -name = "kqueue-sys" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" -dependencies = [ - "bitflags 1.3.2", - "libc", -] - -[[package]] -name = "kuchikiki" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" -dependencies = [ - "cssparser", - "html5ever", - "indexmap 1.9.3", - "matches", - "selectors", -] +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -dependencies = [ - "spin", -] [[package]] -name = "libappindicator" -version = "0.9.0" +name = "leb128fmt" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] -name = "libappindicator-sys" -version = "0.9.0" +name = "lebe" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] +checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8" + +[[package]] +name = "libbz2-rs-sys" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b357333733e8260735ba5894eb928c02ecc69c78715f01a8019e7fa7f2db4c" [[package]] name = "libc" -version = "0.2.171" +version = "0.2.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] -name = "libgit2-sys" -version = "0.18.3+1.9.2" +name = "libflate" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" +checksum = "cd96e993e5f3368b0cb8497dae6c860c22af8ff18388c61c6c0b86c58d86b5df" dependencies = [ + "adler32", + "crc32fast", + "dary_heap", + "libflate_lz77", + "no_std_io2", +] + +[[package]] +name = "libflate_lz77" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff7a10e427698aef6eef269482776debfef63384d30f13aad39a1a95e0e098fd" +dependencies = [ + "hashbrown 0.16.1", + "no_std_io2", + "rle-decode-fast", +] + +[[package]] +name = "libfuzzer-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f12a681b7dd8ce12bff52488013ba614b869148d54dd79836ab85aafdd53f08d" +dependencies = [ + "arbitrary", "cc", - "libc", - "libz-sys", - "pkg-config", ] [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "winapi", + "windows-link", ] [[package]] name = "liblzma" -version = "0.4.1" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66352d7a8ac12d4877b6e6ea5a9b7650ee094257dc40889955bea5bc5b08c1d0" +checksum = "b6033b77c21d1f56deeae8014eb9fbe7bdf1765185a6c508b5ca82eeaed7f899" dependencies = [ "liblzma-sys", + "num_cpus", ] [[package]] name = "liblzma-sys" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5839bad90c3cc2e0b8c4ed8296b80e86040240f81d46b9c0e9bc8dd51ddd3af1" +checksum = "1a60851d15cd8c5346eca4ab8babff585be2ae4bc8097c067291d3ffe2add3b6" dependencies = [ "cc", "libc", @@ -2984,45 +3152,37 @@ dependencies = [ ] [[package]] -name = "libm" -version = "0.2.11" +name = "libmimalloc-sys" +version = "0.1.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" +checksum = "6a45a52f43e1c16f667ccfe4dd8c85b7f7c204fd5e3bf46c5b0db9a5c3c0b8e9" +dependencies = [ + "cc", +] [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "libc", - "redox_syscall", + "plain", + "redox_syscall 0.8.1", ] [[package]] name = "libsqlite3-sys" -version = "0.30.1" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +checksum = "b1f111c8c41e7c61a49cd34e44c7619462967221a6443b0ec299e0ac30cfb9b1" dependencies = [ "cc", "pkg-config", "vcpkg", ] -[[package]] -name = "libz-sys" -version = "1.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15d118bbf3771060e7311cc7bb0545b01d08a8b4a7de949198dec1fa0ca1c0f7" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -3031,60 +3191,98 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "113b30b4cd05f7c06868fdb2854f66a7b9fece9a48425351cd532e810d74024f" [[package]] -name = "mac" -version = "0.1.1" +name = "loop9" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "markup5ever" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" dependencies = [ - "log", - "phf 0.10.1", - "phf_codegen 0.10.0", - "string_cache", - "string_cache_codegen", - "tendril", + "imgref", +] + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "lz4" +version = "1.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" +dependencies = [ + "lz4-sys", +] + +[[package]] +name = "lz4-sys" +version = "1.11.1+lz4-1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] -name = "matches" -version = "0.1.10" +name = "maybe-rayon" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" +dependencies = [ + "cfg-if", + "rayon", +] [[package]] name = "md-5" @@ -3093,14 +3291,33 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ "cfg-if", - "digest", + "digest 0.10.7", +] + +[[package]] +name = "md-5" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b6441f590336821bb897fb28fc622898ccceb1d6cea3fde5ea86b090c4de98" +dependencies = [ + "cfg-if", + "digest 0.11.3", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" + +[[package]] +name = "memmap2" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" +dependencies = [ + "libc", +] [[package]] name = "memoffset" @@ -3112,25 +3329,12 @@ dependencies = [ ] [[package]] -name = "merge" -version = "0.2.0" +name = "mimalloc" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e520ba58faea3487f75df198b1d079644ec226ea3b0507d002c6fa4b8cf93a" +checksum = "2d4139bb28d14ad1facf21d5eb8825051b326e172d216b39f6d31df53cc97862" dependencies = [ - "merge_derive", - "num-traits", -] - -[[package]] -name = "merge_derive" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8f8ce6efff81cbc83caf4af0905c46e58cb46892f63ad3835e81b47eaf7968" -dependencies = [ - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.101", + "libmimalloc-sys", ] [[package]] @@ -3155,17 +3359,11 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "minisign-verify" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6367d84fb54d4242af283086402907277715b8fe46976963af5ebf173f8efba3" - [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", "simd-adler32", @@ -3173,43 +3371,66 @@ dependencies = [ [[package]] name = "mio" -version = "1.0.2" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" dependencies = [ - "hermit-abi 0.3.9", "libc", - "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi", + "windows-sys 0.61.2", ] [[package]] -name = "muda" -version = "0.16.1" +name = "moka" +version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de14a9b5d569ca68d7c891d613b390cf5ab4f851c77aaa2f9e435555d3d9492" +checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" dependencies = [ "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", + "crossbeam-epoch", + "crossbeam-utils", + "equivalent", + "parking_lot", + "portable-atomic", + "smallvec", + "tagptr", + "uuid", ] [[package]] -name = "murmur2" -version = "0.1.0" +name = "moxcms" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb585ade2549a017db2e35978b77c319214fa4b37cede841e27954dd6e8f3ca8" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + +[[package]] +name = "mundy" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f32eb0db40f2df2bcfb05c93b8f73938d4c26ce9ac8881f1df0c8d3296921a73" +dependencies = [ + "android-build", + "async-io", + "beul", + "cfg-if", + "futures-channel", + "futures-lite", + "jni", + "ndk-context", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", + "pin-project-lite", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "windows 0.62.2", + "zbus", +] [[package]] name = "ndk" @@ -3217,13 +3438,13 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.11.0", - "jni-sys", + "bitflags 2.12.1", + "jni-sys 0.3.1", "log", "ndk-sys", "num_enum", "raw-window-handle", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -3238,7 +3459,7 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -3248,36 +3469,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" [[package]] -name = "nix" -version = "0.29.0" +name = "no_std_io2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003" dependencies = [ - "bitflags 2.11.0", - "cfg-if", - "cfg_aliases 0.2.1", - "libc", - "memoffset", + "memchr", ] -[[package]] -name = "nix" -version = "0.30.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" -dependencies = [ - "bitflags 2.11.0", - "cfg-if", - "cfg_aliases 0.2.1", - "libc", -] - -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - [[package]] name = "nom" version = "7.1.3" @@ -3289,78 +3488,36 @@ dependencies = [ ] [[package]] -name = "nonzero_ext" +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + +[[package]] +name = "noop_proc_macro" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" - -[[package]] -name = "normpath" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "notify" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3" -dependencies = [ - "bitflags 2.11.0", - "fsevent-sys", - "inotify", - "kqueue", - "libc", - "log", - "mio", - "notify-types", - "walkdir", - "windows-sys 0.60.2", -] - -[[package]] -name = "notify-debouncer-full" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d88b1a7538054351c8258338df7c931a590513fb3745e8c15eb9ff4199b8d1" -dependencies = [ - "file-id", - "log", - "notify", - "notify-types", - "walkdir", -] - -[[package]] -name = "notify-types" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a" -dependencies = [ - "bitflags 2.11.0", - "serde", -] +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" [[package]] name = "ntapi" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae" dependencies = [ "winapi", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -3374,28 +3531,16 @@ dependencies = [ ] [[package]] -name = "num-bigint-dig" -version = "0.8.4" +name = "num-derive" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "byteorder", - "lazy_static", - "libm", - "num-integer", - "num-iter", - "num-traits", - "rand 0.8.5", - "smallvec", - "zeroize", + "proc-macro2", + "quote", + "syn", ] -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - [[package]] name = "num-integer" version = "0.1.46" @@ -3406,12 +3551,12 @@ dependencies = [ ] [[package]] -name = "num-iter" -version = "0.1.45" +name = "num-rational" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", + "num-bigint", "num-integer", "num-traits", ] @@ -3423,44 +3568,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", - "libm", ] [[package]] -name = "num_enum" -version = "0.7.3" +name = "num_cpus" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" -dependencies = [ - "proc-macro-crate 3.3.0", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ + "hermit-abi", "libc", ] [[package]] -name = "number_prefix" -version = "0.4.0" +name = "num_enum" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] [[package]] name = "objc-sys" @@ -3480,12 +3629,27 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c2599ce0ec54857b29ce62166b0ed9b4f6f1a70ccc9a71165b6154caca8c05" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", - "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.12.1", + "block2 0.5.1", + "libc", + "objc2 0.5.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", + "objc2-foundation 0.2.2", + "objc2-quartz-core 0.2.2", ] [[package]] @@ -3494,40 +3658,76 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.11.0", - "block2 0.6.1", + "bitflags 2.12.1", + "block2 0.6.2", "libc", - "objc2 0.6.3", - "objc2-cloud-kit", - "objc2-core-data", + "objc2 0.6.4", + "objc2-cloud-kit 0.3.2", + "objc2-core-data 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-core-image", + "objc2-core-image 0.3.2", "objc2-core-text", "objc2-core-video", "objc2-foundation 0.3.2", "objc2-quartz-core 0.3.2", ] +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.12.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-cloud-kit" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.12.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-core-data" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-foundation 0.3.2", ] @@ -3537,9 +3737,11 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.0", - "dispatch2 0.3.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "block2 0.6.2", + "dispatch2", + "libc", + "objc2 0.6.4", ] [[package]] @@ -3548,31 +3750,45 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.11.0", - "dispatch2 0.3.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "dispatch2", + "objc2 0.6.4", "objc2-core-foundation", "objc2-io-surface", ] +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", + "objc2-metal 0.2.2", +] + [[package]] name = "objc2-core-image" version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" dependencies = [ - "objc2 0.6.3", + "objc2 0.6.4", "objc2-foundation 0.3.2", ] [[package]] name = "objc2-core-location" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac0f75792558aa9d618443bbb5db7426a7a0b6fddf96903f86ef9ad02e135740" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", ] [[package]] @@ -3581,8 +3797,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", ] @@ -3593,8 +3809,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d425caf1df73233f29fd8a5c3e5edbc30d2d4307870f802d18f00d83dc5141a6" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", "objc2-io-surface", @@ -3606,23 +3822,15 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - [[package]] name = "objc2-foundation" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "block2 0.5.1", + "dispatch", "libc", "objc2 0.5.2", ] @@ -3633,10 +3841,20 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.11.0", - "block2 0.6.1", + "bitflags 2.12.1", + "block2 0.6.2", + "libc", + "objc2 0.6.4", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ "libc", - "objc2 0.6.3", "objc2-core-foundation", ] @@ -3646,32 +3864,57 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "objc2 0.6.4", "objc2-core-foundation", ] +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-metal" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", ] [[package]] -name = "objc2-osa-kit" -version = "0.3.1" +name = "objc2-metal" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26bb88504b5a050dbba515d2414607bf5e57dd56b107bc5f0351197a3e7bdc5d" +checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", - "objc2-app-kit", + "bitflags 2.12.1", + "block2 0.6.2", + "dispatch2", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-foundation 0.3.2", +] + +[[package]] +name = "objc2-open-directory" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb82bed227edf5201dfedf072bba4015a33d3d4a98519837295a90f0a23f676d" +dependencies = [ + "objc2 0.6.4", + "objc2-core-foundation", "objc2-foundation 0.3.2", ] @@ -3681,11 +3924,11 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "block2 0.5.1", "objc2 0.5.2", "objc2-foundation 0.2.2", - "objc2-metal", + "objc2-metal 0.2.2", ] [[package]] @@ -3694,273 +3937,192 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" dependencies = [ - "bitflags 2.11.0", - "objc2 0.6.3", + "bitflags 2.12.1", + "block2 0.6.2", + "libc", + "objc2 0.6.4", "objc2-core-foundation", + "objc2-core-graphics", + "objc2-core-video", "objc2-foundation 0.3.2", + "objc2-metal 0.3.2", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", ] [[package]] name = "objc2-ui-kit" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25b1312ad7bc8a0e92adae17aa10f90aae1fb618832f9b993b022b591027daed" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.11.0", - "block2 0.6.1", - "objc2 0.6.3", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", + "bitflags 2.12.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit 0.2.2", + "objc2-core-data 0.2.2", + "objc2-core-image 0.2.2", "objc2-core-location", - "objc2-foundation 0.3.2", - "objc2-quartz-core 0.3.2", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core 0.2.2", + "objc2-symbols", + "objc2-uniform-type-identifiers", "objc2-user-notifications", ] +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-user-notifications" -version = "0.3.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a3f5ec77a81d9e0c5a0b32159b0cb143d7086165e79708351e02bf37dfc65cd" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", -] - -[[package]] -name = "objc2-web-kit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91672909de8b1ce1c2252e95bbee8c1649c9ad9d14b9248b3d7b4c47903c47ad" -dependencies = [ - "bitflags 2.11.0", - "block2 0.6.1", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.2", -] - -[[package]] -name = "object" -version = "0.36.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" -dependencies = [ - "memchr", + "bitflags 2.12.1", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", ] [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" - -[[package]] -name = "oneclient_gui" -version = "1.1.7" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" dependencies = [ - "anyhow", - "chrono", - "interfrost", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "onelauncher_core", - "reqwest", - "sea-orm", - "serde", - "serde_json", - "specta", - "specta-typescript", - "strum 0.27.1", - "tauri", - "tauri-build", - "tauri-plugin-clipboard-manager", - "tauri-plugin-deep-link", - "tauri-plugin-dialog", - "tauri-plugin-fs", - "tauri-plugin-global-shortcut", - "tauri-plugin-os", - "tauri-plugin-single-instance", - "tauri-plugin-updater", - "tauri-plugin-window-state", - "taurpc", - "thiserror 2.0.12", - "tokio", - "tracing", - "tracing-error", - "uuid 1.16.0", + "critical-section", + "portable-atomic", ] [[package]] -name = "onelauncher_core" -version = "1.1.7" +name = "oneclient_app" +version = "2.0.0" dependencies = [ "anyhow", + "arboard", + "bytes 1.11.1", + "chrono", + "freya", + "freya-skia-safe", + "image", + "mimalloc", + "oneclient_core", + "oneclient_db", + "oneclient_macro", + "polyio", + "regex", + "rfd", + "rust-embed", + "sysinfo", + "tokio", + "tracing", + "tracing-subscriber", + "uuid", +] + +[[package]] +name = "oneclient_core" +version = "2.0.0" +dependencies = [ "async-compression", "async-stream", "async-tempfile", "async-trait", "async_zip", - "base64 0.22.1", - "byteorder", - "bytes", + "base64", + "bytes 1.11.1", "chrono", - "digest", - "dirs", - "discord-rich-presence", + "digest 0.10.7", + "directories", "dunce", - "encoding_rs", - "futures", "futures-lite", - "governor", + "futures-util", + "image", "indicatif", "interfrost", - "libc", - "md-5", - "merge", - "murmur2", - "onelauncher_entity", - "onelauncher_gamemode", - "onelauncher_macro", - "onelauncher_migration", - "opener", - "p256", - "paste", - "rand 0.8.5", - "regex", + "md-5 0.10.6", + "oneclient_db", + "parking_lot", + "polyio", + "rand 0.10.1", "reqwest", - "reqwest-websocket", "sanitize-filename", - "sea-orm", "serde", - "serde_json_path_to_error", + "serde_json", "serde_repr", - "serde_with", - "sha1", - "sha2", - "shadow-rs", - "specta", - "sysinfo", - "tauri", - "tauri-plugin-os", - "taurpc", - "thiserror 2.0.12", + "sha1 0.10.6", + "sha2 0.10.9", + "sqlx", + "strum", + "thiserror 2.0.18", "tokio", "tokio-stream", "tokio-util", "tracing", - "tracing-appender", - "tracing-error", + "tracing-futures", "tracing-subscriber", + "trash", "url", - "uuid 1.16.0", - "whoami", + "uuid", ] [[package]] -name = "onelauncher_entity" -version = "1.1.7" +name = "oneclient_db" +version = "2.0.0" dependencies = [ "chrono", - "interfrost", - "merge", - "onelauncher_macro", - "sea-orm", + "dunce", "serde", "serde_json", - "specta", - "url", - "uuid 1.16.0", -] - -[[package]] -name = "onelauncher_gamemode" -version = "1.1.7" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "onelauncher_gui" -version = "1.1.7" -dependencies = [ - "anyhow", - "chrono", - "interfrost", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "onelauncher_core", - "serde", - "serde_json", - "specta", - "specta-typescript", - "strum 0.27.1", - "tauri", - "tauri-build", - "tauri-plugin-clipboard-manager", - "tauri-plugin-deep-link", - "tauri-plugin-dialog", - "tauri-plugin-opener", - "tauri-plugin-os", - "tauri-plugin-single-instance", - "tauri-plugin-updater", - "tauri-plugin-window-state", - "taurpc", - "thiserror 2.0.12", - "tokio", + "sqlx", + "thiserror 2.0.18", "tracing", - "tracing-error", - "uuid 1.16.0", ] [[package]] -name = "onelauncher_macro" -version = "1.1.7" +name = "oneclient_macro" +version = "2.0.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "onelauncher_migration" -version = "1.1.7" -dependencies = [ - "async-trait", - "chrono", - "sea-orm-migration", - "tokio", + "syn", ] [[package]] name = "open" -version = "5.3.2" +version = "5.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" +checksum = "2fbaa89d2ddc8473c78a3adf69eea8cffa28c483b8e02a971ef31527cd0fc92c" dependencies = [ - "dunce", "is-wsl", "libc", "pathdiff", ] [[package]] -name = "opener" -version = "0.8.2" +name = "openssl-probe" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771b9704f8cd8b424ec747a320b30b47517a6966ba2c7da90047c16f4a962223" -dependencies = [ - "bstr", - "normpath", - "windows-sys 0.59.0", -] +checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "option-ext" @@ -3969,22 +4131,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] -name = "ordered-float" -version = "4.6.0" +name = "orbclient" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-multimap" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" -dependencies = [ - "dlv-list", - "hashbrown 0.14.5", + "libc", + "libredox", ] [[package]] @@ -3998,110 +4151,12 @@ dependencies = [ ] [[package]] -name = "os_info" -version = "3.13.0" +name = "owned_ttf_parser" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c39b5918402d564846d5aba164c09a66cc88d232179dfd3e3c619a25a268392" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ - "android_system_properties", - "log", - "nix 0.30.1", - "objc2 0.6.3", - "objc2-foundation 0.3.2", - "objc2-ui-kit", - "serde", - "windows-sys 0.61.2", -] - -[[package]] -name = "os_pipe" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "osakit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732c71caeaa72c065bb69d7ea08717bd3f4863a4f451402fc9513e29dbd5261b" -dependencies = [ - "objc2 0.6.3", - "objc2-foundation 0.3.2", - "objc2-osa-kit", - "serde", - "serde_json", - "thiserror 2.0.12", -] - -[[package]] -name = "ouroboros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" -dependencies = [ - "aliasable", - "ouroboros_macro", - "static_assertions", -] - -[[package]] -name = "ouroboros_macro" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "proc-macro2-diagnostics", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", + "ttf-parser", ] [[package]] @@ -4112,9 +4167,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -4122,15 +4177,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -4139,6 +4194,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "pathdiff" version = "0.2.3" @@ -4146,263 +4207,115 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] +name = "pathgraph" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] -name = "petgraph" -version = "0.6.5" +name = "phf" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.5.0", -] - -[[package]] -name = "pgvector" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e8871b6d7ca78348c6cd29b911b94851f3429f0cd403130ca17f26c1fb91a6" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ + "phf_macros", + "phf_shared", "serde", ] -[[package]] -name = "phf" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" -dependencies = [ - "phf_macros 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", -] - -[[package]] -name = "phf" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" -dependencies = [ - "phf_shared 0.10.0", -] - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros 0.11.2", - "phf_shared 0.11.2", -] - -[[package]] -name = "phf_codegen" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" -dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", -] - -[[package]] -name = "phf_codegen" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", -] - [[package]] name = "phf_generator" -version = "0.8.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ - "phf_shared 0.8.0", - "rand 0.7.3", -] - -[[package]] -name = "phf_generator" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" -dependencies = [ - "phf_shared 0.10.0", - "rand 0.8.5", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared 0.11.2", - "rand 0.8.5", + "fastrand", + "phf_shared", ] [[package]] name = "phf_macros" -version = "0.8.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.8.0", - "phf_shared 0.8.0", - "proc-macro-hack", + "phf_generator", + "phf_shared", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", - "proc-macro2", - "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "phf_shared" -version = "0.8.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" -dependencies = [ - "siphasher", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" dependencies = [ "siphasher", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "piper" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" dependencies = [ "atomic-waker", "fastrand", "futures-io", ] -[[package]] -name = "pkcs1" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" -dependencies = [ - "der", - "pkcs8", - "spki", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" [[package]] -name = "plist" -version = "1.7.0" +name = "plain" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" -dependencies = [ - "base64 0.22.1", - "indexmap 2.5.0", - "quick-xml 0.32.0", - "serde", - "time", -] +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "png" -version = "0.17.14" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.12.1", "crc32fast", "fdeflate", "flate2", @@ -4411,105 +4324,87 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi 0.4.0", + "hermit-abi", "pin-project-lite", - "rustix 0.38.44", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "pollster" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3" + +[[package]] +name = "polyio" +version = "2.0.0" +dependencies = [ + "astral-tokio-tar", + "async-compression", + "async-stream", + "async-tempfile", + "async_zip", + "bytes 1.11.1", + "dunce", + "futures-lite", + "futures-util", + "sanitize-filename", + "serde", + "serde_json", + "thiserror 2.0.18", + "tokio", + "tokio-util", "tracing", - "windows-sys 0.59.0", ] [[package]] name = "portable-atomic" -version = "1.8.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d30538d42559de6b034bc76fd6dd4c38961b1ee5c6c56e3808c50128fdbc22ce" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] -name = "powerfmt" -version = "0.2.0" +name = "potential_utf" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] -name = "precomputed-hash" -version = "0.1.1" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.2", -] - -[[package]] -name = "proc-macro-crate" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" -dependencies = [ - "toml_edit 0.22.26", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "quote", - "version_check", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit", ] [[package]] @@ -4531,212 +4426,195 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.20+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" - [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] [[package]] -name = "proc-macro2-diagnostics" -version = "0.10.1" +name = "profiling" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" +dependencies = [ + "profiling-procmacros", +] + +[[package]] +name = "profiling-procmacros" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb" dependencies = [ - "proc-macro2", "quote", - "syn 2.0.101", - "version_check", - "yansi", + "syn", ] [[package]] -name = "ptr_meta" -version = "0.1.4" +name = "pulldown-cmark" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" dependencies = [ - "ptr_meta_derive", + "bitflags 2.12.1", + "getopts", + "memchr", + "pulldown-cmark-escape", + "unicase", ] [[package]] -name = "ptr_meta_derive" -version = "0.1.4" +name = "pulldown-cmark-escape" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" + +[[package]] +name = "pxfm" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f" + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "bytemuck", ] [[package]] -name = "quanta" -version = "0.12.6" +name = "quick-error" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" -dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", - "web-sys", - "winapi", -] +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" -version = "0.32.0" +version = "0.39.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" -dependencies = [ - "memchr", -] - -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" dependencies = [ "memchr", + "serde", ] [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ - "bytes", + "bytes 1.11.1", + "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash", "rustls", "socket2", - "thiserror 1.0.64", + "thiserror 2.0.18", "tokio", "tracing", + "web-time", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" dependencies = [ - "bytes", - "rand 0.8.5", + "aws-lc-rs", + "bytes 1.11.1", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.4", "ring", "rustc-hash", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.64", + "thiserror 2.0.18", "tinyvec", "tracing", + "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ "proc-macro2", ] [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] -name = "radium" -version = "0.7.0" +name = "r-efi" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +name = "ragnarok" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", - "rand_pcg", + "euclid", + "hotpath", + "itertools 0.14.0", + "rustc-hash", + "tracing", ] [[package]] name = "rand" -version = "0.8.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", + "rand_chacha", + "rand_core 0.9.5", ] [[package]] name = "rand" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.3", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", + "chacha20", + "getrandom 0.4.2", + "rand_core 0.10.1", ] [[package]] @@ -4746,61 +4624,72 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] name = "rand_core" -version = "0.5.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" dependencies = [ - "getrandom 0.1.16", + "getrandom 0.3.4", ] [[package]] name = "rand_core" -version = "0.6.4" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + +[[package]] +name = "rav1e" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" dependencies = [ - "getrandom 0.2.15", + "aligned-vec", + "arbitrary", + "arg_enum_proc_macro", + "arrayvec", + "av-scenechange", + "av1-grain", + "bitstream-io", + "built", + "cfg-if", + "interpolate_name", + "itertools 0.14.0", + "libc", + "libfuzzer-sys", + "log", + "maybe-rayon", + "new_debug_unreachable", + "noop_proc_macro", + "num-derive", + "num-traits", + "paste", + "profiling", + "rand 0.9.4", + "rand_chacha", + "simd_helpers", + "thiserror 2.0.18", + "v_frame", + "wasm-bindgen", ] [[package]] -name = "rand_core" -version = "0.9.3" +name = "ravif" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45" dependencies = [ - "getrandom 0.3.2", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_pcg" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "raw-cpuid" -version = "11.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" -dependencies = [ - "bitflags 2.11.0", + "avif-serialize", + "imgref", + "loop9", + "quick-error", + "rav1e", + "rayon", + "rgb", ] [[package]] @@ -4810,99 +4699,124 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] -name = "redox_syscall" -version = "0.5.6" +name = "raw-window-metal" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355ae415ccd3a04315d3f8246e86d67689ea74d88d915576e1589a351062a13b" +checksum = "76e8caa82e31bb98fee12fa8f051c94a6aa36b07cddb03f0d4fc558988360ff1" dependencies = [ - "bitflags 2.11.0", + "cocoa", + "core-graphics", + "objc", + "raw-window-handle", +] + +[[package]] +name = "rayon" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.12.1", +] + +[[package]] +name = "redox_syscall" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" +dependencies = [ + "bitflags 2.12.1", ] [[package]] name = "redox_users" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.17", "libredox", - "thiserror 2.0.12", + "thiserror 2.0.18", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ - "async-compression", - "base64 0.22.1", - "bytes", + "base64", + "bytes 1.11.1", "encoding_rs", "futures-channel", "futures-core", "futures-util", "h2", + "hickory-resolver", "http", "http-body", "http-body-util", "hyper", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", "mime", @@ -4912,181 +4826,135 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", - "rustls-pemfile", "rustls-pki-types", + "rustls-platform-verifier", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-rustls", "tokio-util", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", - "windows-registry 0.2.0", ] [[package]] -name = "reqwest-websocket" -version = "0.5.1" +name = "resolv-conf" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd5f79b25f7f17a62cc9337108974431a66ae5a723ac0d9fe78ac1cce2027720" -dependencies = [ - "async-tungstenite", - "bytes", - "futures-util", - "reqwest", - "thiserror 2.0.12", - "tokio", - "tokio-util", - "tracing", - "tungstenite", - "web-sys", -] - -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] +checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" [[package]] name = "rfd" -version = "0.15.3" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c844748fdc82aae252ee4594a89b6e7ebef1063de7951545564cbc4e57075d" +checksum = "20dafead71c16a34e1ff357ddefc8afc11e7d51d6d2b9fbd07eaa48e3e540220" dependencies = [ - "ashpd", - "block2 0.6.1", - "dispatch2 0.2.0", - "glib-sys", - "gobject-sys", - "gtk-sys", + "block2 0.6.2", + "dispatch2", "js-sys", + "libc", "log", - "objc2 0.6.3", - "objc2-app-kit", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-foundation 0.3.2", + "percent-encoding", + "pollster", "raw-window-handle", "wasm-bindgen", "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", "web-sys", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] -name = "ring" -version = "0.17.8" +name = "rgb" +version = "0.8.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.17", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] [[package]] -name = "rkyv" -version = "0.7.45" +name = "rle-decode-fast" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" + +[[package]] +name = "ropey" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93411e420bcd1a75ddd1dc3caf18c23155eda2c090631a85af21ba19e97093b5" dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid 1.16.0", + "smallvec", + "str_indices", ] [[package]] -name = "rkyv_derive" -version = "0.7.45" +name = "rust-embed" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27" +dependencies = [ + "include-flate", + "rust-embed-impl", + "rust-embed-utils", + "walkdir", +] + +[[package]] +name = "rust-embed-impl" +version = "8.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "rust-embed-utils", + "syn", + "walkdir", ] [[package]] -name = "rsa" -version = "0.9.8" +name = "rust-embed-utils" +version = "8.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" +checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1" dependencies = [ - "const-oid", - "digest", - "num-bigint-dig", - "num-integer", - "num-traits", - "pkcs1", - "pkcs8", - "rand_core 0.6.4", - "signature", - "spki", - "subtle", - "zeroize", + "globset", + "sha2 0.10.9", + "walkdir", ] -[[package]] -name = "rust-ini" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" -dependencies = [ - "cfg-if", - "ordered-multimap", - "trim-in-place", -] - -[[package]] -name = "rust_decimal" -version = "1.37.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa7de2ba56ac291bd90c6b9bece784a52ae1411f9506544b3eae36dd2356d50" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand 0.8.5", - "rkyv", - "serde", - "serde_json", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" - [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" [[package]] name = "rustc_version" @@ -5103,32 +4971,34 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustix" -version = "1.0.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e56a18552996ac8d29ecc3b190b4fdbb2d91ca4ec396de7bbffaf43f3d637e96" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", "errno", "libc", - "linux-raw-sys 0.9.3", - "windows-sys 0.59.0", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.13" +version = "0.23.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" dependencies = [ + "aws-lc-rs", + "log", "once_cell", "ring", "rustls-pki-types", @@ -5138,27 +5008,61 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.1.3" +name = "rustls-native-certs" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d" dependencies = [ - "base64 0.22.1", + "openssl-probe", "rustls-pki-types", + "schannel", + "security-framework", ] [[package]] name = "rustls-pki-types" -version = "1.9.0" +version = "1.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e696e35370c65c9c541198af4543ccd580cf17fc25d8e05c5a242b202488c55" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-platform-verifier" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" +dependencies = [ + "core-foundation 0.10.0", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.102.8" +version = "0.103.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -5166,15 +5070,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -5195,31 +5099,19 @@ dependencies = [ ] [[package]] -name = "schemars" -version = "0.8.21" +name = "schannel" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid 1.16.0", + "windows-sys 0.61.2", ] [[package]] -name = "schemars_derive" -version = "0.8.21" +name = "scoped-tls" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.101", -] +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" @@ -5228,212 +5120,46 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "sea-bae" -version = "0.2.1" +name = "sctk-adwaita" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f694a6ab48f14bc063cfadff30ab551d3c7e46d8f81836c51989d548f44a2a25" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" dependencies = [ - "heck 0.4.1", - "proc-macro-error2", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "sea-orm" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3417812d38049e8ec3d588c03570f8c60de811d2453fb48e424045a1600ffd86" -dependencies = [ - "async-stream", - "async-trait", - "bigdecimal", - "chrono", - "futures-util", + "ab_glyph", "log", - "ouroboros", - "pgvector", - "rust_decimal", - "sea-orm-macros", - "sea-query", - "sea-query-binder", - "serde", - "serde_json", - "sqlx", - "strum 0.26.3", - "thiserror 1.0.64", - "time", - "tracing", - "url", - "uuid 1.16.0", + "memmap2", + "smithay-client-toolkit 0.19.2", + "tiny-skia", ] [[package]] -name = "sea-orm-cli" -version = "1.1.7" +name = "security-framework" +version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf2a390d6528f8e5c9ecd327bbb1a4c6cd7ab8333ef0da97010d5dc8f83f01c4" +checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "chrono", - "clap", - "dotenvy", - "glob", - "regex", - "sea-schema", - "tracing", - "tracing-subscriber", - "url", + "bitflags 2.12.1", + "core-foundation 0.10.0", + "core-foundation-sys", + "libc", + "security-framework-sys", ] [[package]] -name = "sea-orm-macros" -version = "1.1.7" +name = "security-framework-sys" +version = "2.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d705ba84e1c74c8ac27784e4ac6f21584058c1dc0cadb9d39b43e109fcf8139c" +checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "sea-bae", - "syn 2.0.101", - "unicode-ident", -] - -[[package]] -name = "sea-orm-migration" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c38451d5112e3a518a02251b5e6d3bc72e626957a44a79264716808a4c28ee0" -dependencies = [ - "async-trait", - "clap", - "dotenvy", - "sea-orm", - "sea-orm-cli", - "sea-schema", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "sea-query" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a24d8b9fcd2674a6c878a3d871f4f1380c6c43cc3718728ac96864d888458e" -dependencies = [ - "bigdecimal", - "chrono", - "inherent", - "ordered-float", - "rust_decimal", - "sea-query-derive", - "serde_json", - "time", - "uuid 1.16.0", -] - -[[package]] -name = "sea-query-binder" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608" -dependencies = [ - "bigdecimal", - "chrono", - "rust_decimal", - "sea-query", - "serde_json", - "sqlx", - "time", - "uuid 1.16.0", -] - -[[package]] -name = "sea-query-derive" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae0cbad6ab996955664982739354128c58d16e126114fe88c2a493642502aab" -dependencies = [ - "darling", - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.101", - "thiserror 2.0.12", -] - -[[package]] -name = "sea-schema" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef5dd7848c993f3789d09a2616484c72c9330cae2b048df59d8c9b8c0343e95" -dependencies = [ - "futures", - "sea-query", - "sea-schema-derive", -] - -[[package]] -name = "sea-schema-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "debdc8729c37fdbf88472f97fd470393089f997a909e535ff67c544d18cfccf0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - -[[package]] -name = "selectors" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" -dependencies = [ - "bitflags 1.3.2", - "cssparser", - "derive_more", - "fxhash", - "log", - "matches", - "phf 0.8.0", - "phf_codegen 0.8.0", - "precomputed-hash", - "servo_arc", - "smallvec", - "thin-slice", + "core-foundation-sys", + "libc", ] [[package]] name = "semver" -version = "1.0.23" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" -dependencies = [ - "serde", -] +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" @@ -5445,17 +5171,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-untagged" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" -dependencies = [ - "erased-serde", - "serde", - "typeid", -] - [[package]] name = "serde_core" version = "1.0.228" @@ -5473,49 +5188,20 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ - "itoa 1.0.11", + "itoa", "memchr", - "ryu", - "serde", -] - -[[package]] -name = "serde_json_path_to_error" -version = "0.2.0" -dependencies = [ - "serde", - "serde_json", - "serde_path_to_error", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" -dependencies = [ - "itoa 1.0.11", "serde", + "serde_core", + "zmij", ] [[package]] @@ -5526,16 +5212,16 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -5545,73 +5231,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.11", + "itoa", "ryu", "serde", ] -[[package]] -name = "serde_with" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b6f7f2fcb69f747921f79f3926bd1e203fce4fef62c268dd3abfb6d86029aa" -dependencies = [ - "base64 0.22.1", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.5.0", - "serde", - "serde_derive", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "servo_arc" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" -dependencies = [ - "nodrop", - "stable_deref_trait", -] - [[package]] name = "sha1" version = "0.10.6" @@ -5619,32 +5243,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", - "digest", + "cpufeatures 0.2.17", + "digest 0.10.7", ] [[package]] -name = "shadow-rs" -version = "1.5.0" +name = "sha2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff351910f271e7065781b6b4f0f43cb515d474d812f31176a0246d9058e47d5d" +checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4" dependencies = [ - "const_format", - "git2", - "is_debug", - "time", - "tzdb", + "cfg-if", + "cpufeatures 0.3.0", + "digest 0.11.3", ] [[package]] @@ -5663,29 +5296,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] -name = "signal-hook-registry" -version = "1.4.2" +name = "shlex" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] -name = "signature" -version = "2.2.0" +name = "simd-adler32" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "simd_cesu8" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" dependencies = [ - "digest", - "rand_core 0.6.4", + "rustc_version", + "simdutf8", ] [[package]] -name = "simd-adler32" -version = "0.3.7" +name = "simd_helpers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" +dependencies = [ + "quote", +] [[package]] name = "simdutf8" @@ -5695,152 +5344,137 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +dependencies = [ + "serde", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.12.1", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.12.1", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.4", + "thiserror 2.0.18", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" +dependencies = [ + "libc", + "smithay-client-toolkit 0.20.0", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.7" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "softbuffer" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" dependencies = [ + "as-raw-xcb-connection", "bytemuck", - "cfg_aliases 0.2.1", - "core-graphics", - "foreign-types", + "drm", + "fastrand", "js-sys", - "log", - "objc2 0.5.2", - "objc2-foundation 0.2.2", - "objc2-quartz-core 0.2.2", + "memmap2", + "ndk", + "objc2 0.6.4", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation 0.3.2", + "objc2-quartz-core 0.3.2", "raw-window-handle", - "redox_syscall", + "redox_syscall 0.5.18", + "rustix 1.1.4", + "tiny-xlib", + "tracing", "wasm-bindgen", + "wayland-backend", + "wayland-client", + "wayland-sys", "web-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "specta" -version = "2.0.0-rc.22" -source = "git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef#5758221bc9a11d6e827851273fd665662e90ceef" -dependencies = [ - "chrono", - "ctor", - "paste", - "serde", - "serde_json", - "specta-macros 2.0.0-rc.18 (git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef)", - "thiserror 1.0.64", - "tokio", - "uuid 1.16.0", -] - -[[package]] -name = "specta-macros" -version = "2.0.0-rc.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0074b9e30ed84c6924eb63ad8d2fe71cdc82628525d84b1fcb1f2fd40676517" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "specta-macros" -version = "2.0.0-rc.18" -source = "git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef#5758221bc9a11d6e827851273fd665662e90ceef" -dependencies = [ - "Inflector", - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "specta-serde" -version = "0.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77216504061374659e7245eac53d30c7b3e5fe64b88da97c753e7184b0781e63" -dependencies = [ - "specta", - "thiserror 1.0.64", -] - -[[package]] -name = "specta-serde" -version = "0.0.9" -source = "git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef#5758221bc9a11d6e827851273fd665662e90ceef" -dependencies = [ - "specta", - "thiserror 1.0.64", -] - -[[package]] -name = "specta-typescript" -version = "0.0.9" -source = "git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef#5758221bc9a11d6e827851273fd665662e90ceef" -dependencies = [ - "specta", - "specta-serde 0.0.9 (git+https://github.com/specta-rs/specta?rev=5758221bc9a11d6e827851273fd665662e90ceef)", - "thiserror 1.0.64", + "windows-sys 0.61.2", + "x11rb", ] [[package]] @@ -5852,30 +5486,11 @@ dependencies = [ "lock_api", ] -[[package]] -name = "spinning_top" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" -dependencies = [ - "lock_api", -] - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "sqlx" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4410e73b3c0d8442c5f99b425d7a435b5ee0ae4167b3196771dd3f7a01be745f" +checksum = "378620ccc25c62c89d8be1c819e76a88d59bdcc3304733330788948e619bfd71" dependencies = [ "sqlx-core", "sqlx-macros", @@ -5886,12 +5501,13 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a007b6936676aa9ab40207cde35daab0a04b823be8ae004368c0793b96a61e0" +checksum = "05b44e85bf579a8eeb4ceaa77a3a523baf2bf0e9bac7e40f405d537b5d2d5ccb" dependencies = [ - "bigdecimal", - "bytes", + "base64", + "bytes 1.11.1", + "cfg-if", "chrono", "crc", "crossbeam-queue", @@ -5901,126 +5517,102 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.2", + "hashbrown 0.16.1", "hashlink", - "indexmap 2.5.0", + "indexmap", "log", "memchr", - "once_cell", "percent-encoding", - "rust_decimal", "rustls", - "rustls-pemfile", + "rustls-native-certs", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "smallvec", - "thiserror 2.0.12", - "time", + "thiserror 2.0.18", "tokio", "tokio-stream", "tracing", "url", - "uuid 1.16.0", - "webpki-roots", + "uuid", ] [[package]] name = "sqlx-macros" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3112e2ad78643fef903618d78cf0aec1cb3134b019730edb039b69eaf531f310" +checksum = "bd2b84f2bc39a5705ef27ec785a11c934a41bbd4a24941e257927cddc26b60bf" dependencies = [ "proc-macro2", "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.101", + "syn", ] [[package]] name = "sqlx-macros-core" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e9f90acc5ab146a99bf5061a7eb4976b573f560bc898ef3bf8435448dd5e7ad" +checksum = "fb8d96de5fdc85a5c4ec813432b523ec637e80ba98f046555f75f7908ddac7c3" dependencies = [ + "cfg-if", "dotenvy", "either", - "heck 0.5.0", + "heck", "hex", - "once_cell", "proc-macro2", "quote", "serde", "serde_json", - "sha2", + "sha2 0.10.9", "sqlx-core", "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.101", - "tempfile", + "syn", + "thiserror 2.0.18", "tokio", "url", ] [[package]] name = "sqlx-mysql" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" +checksum = "90b8020fe17c5f2c245bfa2505d7ef59c5604839527c740266ad2214acebea27" dependencies = [ - "atoi", - "base64 0.22.1", - "bigdecimal", - "bitflags 2.11.0", + "bitflags 2.12.1", "byteorder", - "bytes", + "bytes 1.11.1", "chrono", "crc", - "digest", + "digest 0.11.3", "dotenvy", "either", - "futures-channel", "futures-core", - "futures-io", "futures-util", "generic-array", - "hex", - "hkdf", - "hmac", - "itoa 1.0.11", "log", - "md-5", - "memchr", - "once_cell", "percent-encoding", - "rand 0.8.5", - "rsa", - "rust_decimal", "serde", - "sha1", - "sha2", - "smallvec", + "sha1 0.11.0", + "sha2 0.11.0", "sqlx-core", - "stringprep", - "thiserror 2.0.12", - "time", + "thiserror 2.0.18", "tracing", - "uuid 1.16.0", - "whoami", + "uuid", ] [[package]] name = "sqlx-postgres" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" +checksum = "87a2bdd6e83f6b3ea525ca9fee568030508b58355a43d0b2c1674d5f79dcd65e" dependencies = [ "atoi", - "base64 0.22.1", - "bigdecimal", - "bitflags 2.11.0", + "base64", + "bitflags 2.12.1", "byteorder", "chrono", "crc", @@ -6032,37 +5624,33 @@ dependencies = [ "hex", "hkdf", "hmac", - "home", - "itoa 1.0.11", + "itoa", "log", - "md-5", + "md-5 0.11.0", "memchr", - "num-bigint", - "once_cell", - "rand 0.8.5", - "rust_decimal", + "rand 0.10.1", "serde", "serde_json", - "sha2", + "sha2 0.11.0", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", - "time", + "thiserror 2.0.18", "tracing", - "uuid 1.16.0", + "uuid", "whoami", ] [[package]] name = "sqlx-sqlite" -version = "0.8.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f85ca71d3a5b24e64e1d08dd8fe36c6c95c339a896cc33068148906784620540" +checksum = "488e99c397a62007e4229aec669a179816339afc6d2620ca6fa420dbee2e982c" dependencies = [ "atoi", "chrono", "flume", + "form_urlencoded", "futures-channel", "futures-core", "futures-executor", @@ -6072,19 +5660,18 @@ dependencies = [ "log", "percent-encoding", "serde", - "serde_urlencoded", "sqlx-core", - "time", + "thiserror 2.0.18", "tracing", "url", - "uuid 1.16.0", + "uuid", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -6093,30 +5680,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "string_cache" -version = "0.8.7" +name = "str_indices" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" -dependencies = [ - "new_debug_unreachable", - "once_cell", - "parking_lot", - "phf_shared 0.10.0", - "precomputed-hash", - "serde", -] +checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" [[package]] -name = "string_cache_codegen" -version = "0.5.2" +name = "strict-num" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" -dependencies = [ - "phf_generator 0.10.0", - "phf_shared 0.10.0", - "proc-macro2", - "quote", -] +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "stringprep" @@ -6129,38 +5702,25 @@ dependencies = [ "unicode-properties", ] -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - [[package]] name = "strum" -version = "0.26.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" - -[[package]] -name = "strum" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "rustversion", - "syn 2.0.101", + "syn", ] [[package]] @@ -6169,791 +5729,198 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - [[package]] name = "syn" -version = "1.0.109" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn" -version = "2.0.101" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.101", -] - [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] -name = "sys-locale" -version = "0.3.2" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "libc", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "sysinfo" -version = "0.34.2" +version = "0.39.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b93974b3d3aeaa036504b8eefd4c039dced109171c1ae973f1dc63b2c7e4b2" +checksum = "2c8bd2130a9b60bee2581bf82cfe89ee836424d1f37dcfa4ce21509611684673" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", - "serde", - "windows 0.57.0", + "objc2-io-kit", + "objc2-open-directory", + "windows 0.62.2", ] [[package]] -name = "system-configuration" -version = "0.6.1" +name = "tagptr" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.9.4", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e59c1f38e657351a2e822eadf40d6a2ad4627b9c25557bc1180ec1b3295ef82" -dependencies = [ - "bitflags 2.11.0", - "core-foundation 0.10.0", - "core-graphics", - "crossbeam-channel", - "dispatch", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni", - "lazy_static", - "libc", - "log", - "ndk", - "ndk-context", - "ndk-sys", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "once_cell", - "parking_lot", - "raw-window-handle", - "scopeguard", - "tao-macros", - "unicode-segmentation", - "url", - "windows 0.61.1", - "windows-core 0.61.0", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tar" -version = "0.4.44" +version = "0.4.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" dependencies = [ "filetime", "libc", "xattr", ] -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "tauri" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b0bc1aec81bda6bc455ea98fcaed26b3c98c1648c627ad6ff1c704e8bf8cbc" -dependencies = [ - "anyhow", - "bytes", - "dirs", - "dunce", - "embed_plist", - "futures-util", - "getrandom 0.2.15", - "glob", - "gtk", - "heck 0.5.0", - "http", - "http-range", - "image", - "jni", - "libc", - "log", - "mime", - "muda", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "objc2-ui-kit", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "specta", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror 2.0.12", - "tokio", - "tracing", - "tray-icon", - "url", - "urlpattern", - "uuid 1.16.0", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows 0.61.1", -] - -[[package]] -name = "tauri-build" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a0350f0df1db385ca5c02888a83e0e66655c245b7443db8b78a70da7d7f8fc" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs", - "glob", - "heck 0.5.0", - "json-patch", - "schemars", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93f035551bf7b11b3f51ad9bc231ebbe5e085565527991c16cf326aa38cdf47" -dependencies = [ - "base64 0.22.1", - "brotli 7.0.0", - "ico", - "json-patch", - "plist", - "png", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.101", - "tauri-utils", - "thiserror 2.0.12", - "time", - "url", - "uuid 1.16.0", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8db4df25e2d9d45de0c4c910da61cd5500190da14ae4830749fee3466dddd112" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.101", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a5ebe6a610d1b78a94650896e6f7c9796323f408800cef436e0fa0539de601" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars", - "serde", - "serde_json", - "tauri-utils", - "toml", - "walkdir", -] - -[[package]] -name = "tauri-plugin-clipboard-manager" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab4cb42fdf745229b768802e9180920a4be63122cf87ed1c879103f7609d98e" -dependencies = [ - "arboard", - "log", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", -] - -[[package]] -name = "tauri-plugin-deep-link" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba4412f30eaff6f5d210e20383c2d6835593977402092e95b72497a4f8632fa" -dependencies = [ - "dunce", - "rust-ini", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tauri-utils", - "thiserror 2.0.12", - "tracing", - "url", - "windows-registry 0.5.1", - "windows-result 0.3.2", -] - -[[package]] -name = "tauri-plugin-dialog" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcaf6e5d6062423a0f711a23c2a573ccba222b6a16a9322d8499928f27e41376" -dependencies = [ - "log", - "raw-window-handle", - "rfd", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tauri-plugin-fs", - "thiserror 2.0.12", - "url", -] - -[[package]] -name = "tauri-plugin-fs" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88371e340ad2f07409a3b68294abe73f20bc9c1bc1b631a31dc37a3d0161f682" -dependencies = [ - "anyhow", - "dunce", - "glob", - "notify", - "notify-debouncer-full", - "percent-encoding", - "schemars", - "serde", - "serde_json", - "serde_repr", - "tauri", - "tauri-plugin", - "tauri-utils", - "thiserror 2.0.12", - "toml", - "url", - "uuid 1.16.0", -] - -[[package]] -name = "tauri-plugin-global-shortcut" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31919f3c07bcb585afef217c0c33cde80da9ebccf5b8e2c90e0e0a535b14ab47" -dependencies = [ - "global-hotkey", - "log", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", -] - -[[package]] -name = "tauri-plugin-opener" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8983f50326d34437142a6d560b5c3426e91324297519b6eeb32ed0a1d1e0f2" -dependencies = [ - "dunce", - "glob", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "open", - "schemars", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", - "url", - "windows 0.61.1", - "zbus", -] - -[[package]] -name = "tauri-plugin-os" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424f19432397850c2ddd42aa58078630c15287bbce3866eb1d90e7dbee680637" -dependencies = [ - "gethostname 1.1.0", - "log", - "os_info", - "serde", - "serde_json", - "serialize-to-javascript", - "sys-locale", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", -] - -[[package]] -name = "tauri-plugin-single-instance" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1320af4d866a7fb5f5721d299d14d0dd9e4e6bc0359ff3e263124a2bf6814efa" -dependencies = [ - "serde", - "serde_json", - "tauri", - "thiserror 2.0.12", - "tracing", - "windows-sys 0.59.0", - "zbus", -] - -[[package]] -name = "tauri-plugin-updater" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73f05c38afd77a4b8fd98e8fb6f1cdbb5fbb8a46ba181eb2758b05321e3c6209" -dependencies = [ - "base64 0.22.1", - "dirs", - "flate2", - "futures-util", - "http", - "infer", - "log", - "minisign-verify", - "osakit", - "percent-encoding", - "reqwest", - "semver", - "serde", - "serde_json", - "tar", - "tauri", - "tauri-plugin", - "tempfile", - "thiserror 2.0.12", - "time", - "tokio", - "url", - "windows-sys 0.59.0", - "zip", -] - -[[package]] -name = "tauri-plugin-window-state" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27a3fe49de72adbe0d84aee33c89a0b059722cd0b42aaeab29eaaee7f7535cd" -dependencies = [ - "bitflags 2.11.0", - "log", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.12", -] - -[[package]] -name = "tauri-runtime" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f004905d549854069e6774533d742b03cacfd6f03deb08940a8677586cbe39" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni", - "objc2 0.6.3", - "objc2-ui-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.12", - "url", - "windows 0.61.1", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f85d056f4d4b014fe874814034f3416d57114b617a493a4fe552580851a3f3a2" -dependencies = [ - "gtk", - "http", - "jni", - "log", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-foundation 0.3.2", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "tracing", - "url", - "webkit2gtk", - "webview2-com", - "windows 0.61.1", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2900399c239a471bcff7f15c4399eb1a8c4fe511ba2853e07c996d771a5e0a4" -dependencies = [ - "anyhow", - "brotli 7.0.0", - "cargo_metadata", - "ctor", - "dunce", - "glob", - "html5ever", - "http", - "infer", - "json-patch", - "kuchikiki", - "log", - "memchr", - "phf 0.11.2", - "proc-macro2", - "quote", - "regex", - "schemars", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.12", - "toml", - "url", - "urlpattern", - "uuid 1.16.0", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d321dbc6f998d825ab3f0d62673e810c861aac2d0de2cc2c395328f1d113b4" -dependencies = [ - "embed-resource", - "indexmap 2.5.0", - "toml", -] - -[[package]] -name = "taurpc" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34f21c40a46c1e5f859eeb51427706dde816b55d6d9baf2dab4d952aff191a1" -dependencies = [ - "anyhow", - "heck 0.5.0", - "itertools", - "serde", - "serde_json", - "specta", - "specta-macros 2.0.0-rc.18 (registry+https://github.com/rust-lang/crates.io-index)", - "specta-serde 0.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "specta-typescript", - "tauri", - "taurpc-macros", - "tokio", -] - -[[package]] -name = "taurpc-macros" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39137974c051ae93c437b004082541bd0f2f0f69c0d9e30c16266983cd952d4f" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn 2.0.101", -] - [[package]] name = "tempfile" -version = "3.19.1" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.2", + "getrandom 0.4.2", "once_cell", - "rustix 1.0.3", - "windows-sys 0.59.0", -] - -[[package]] -name = "tendril" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" -dependencies = [ - "futf", - "mac", - "utf-8", -] - -[[package]] -name = "thin-slice" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" - -[[package]] -name = "thiserror" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" -dependencies = [ - "thiserror-impl 1.0.64", + "rustix 1.1.4", + "windows-sys 0.61.2", ] [[package]] name = "thiserror" -version = "2.0.12" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", ] [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] name = "tiff" -version = "0.9.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ + "fax", "flate2", - "jpeg-decoder", + "half", + "quick-error", "weezl", + "zune-jpeg", ] [[package]] -name = "time" -version = "0.3.36" +name = "tiny-skia" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" dependencies = [ - "deranged", - "itoa 1.0.11", - "libc", - "num-conv", - "num_threads", - "powerfmt", - "serde", - "time-core", - "time-macros", + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", ] [[package]] -name = "time-core" -version = "0.1.2" +name = "tiny-skia-path" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" dependencies = [ - "num-conv", - "time-core", + "arrayref", + "bytemuck", + "strict-num", ] [[package]] -name = "tiny-keccak" -version = "2.0.2" +name = "tiny-xlib" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +checksum = "a90a0ca3ee6a69f2ad28fd11621a4c3f03b371f366be500b64df260c4ffbafb4" dependencies = [ - "crunchy", + "as-raw-xcb-connection", + "ctor", + "libloading", + "pkg-config", + "tracing", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", ] [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" dependencies = [ "tinyvec_macros", ] @@ -6966,12 +5933,11 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ - "backtrace", - "bytes", + "bytes 1.11.1", "libc", "mio", "parking_lot", @@ -6979,119 +5945,175 @@ dependencies = [ "signal-hook-registry", "socket2", "tokio-macros", - "tracing", - "windows-sys 0.52.0", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-io" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" +dependencies = [ + "bytes 0.4.12", + "futures", + "log", ] [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", ] [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ - "bytes", + "bytes 1.11.1", "futures-core", "futures-io", "futures-sink", + "futures-util", + "hashbrown 0.15.5", "pin-project-lite", + "slab", "tokio", ] [[package]] name = "toml" -version = "0.8.22" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ - "serde", + "indexmap", + "serde_core", "serde_spanned", "toml_datetime", - "toml_edit 0.22.26", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] name = "toml_datetime" -version = "0.6.9" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ - "indexmap 2.5.0", + "indexmap", "toml_datetime", - "winnow 0.5.40", + "toml_parser", + "winnow", ] [[package]] -name = "toml_edit" -version = "0.20.2" +name = "toml_parser" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "indexmap 2.5.0", - "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] -name = "toml_edit" -version = "0.22.26" +name = "toml_writer" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "torin" +version = "0.4.0-rc.23" +source = "git+https://github.com/marc2332/freya.git#156512317eda19da23e7b14935c15504b2e368d7" dependencies = [ - "indexmap 2.5.0", - "serde", - "serde_spanned", - "toml_datetime", - "toml_write", - "winnow 0.7.7", + "euclid", + "itertools 0.14.0", + "rustc-hash", + "tracing", ] [[package]] -name = "toml_write" -version = "0.1.1" +name = "tower" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" +dependencies = [ + "async-compression", + "bitflags 2.12.1", + "bytes 1.11.1", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "pin-project-lite", + "tokio", + "tokio-util", + "tower", + "tower-layer", + "tower-service", + "url", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" @@ -7101,9 +6123,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "log", "pin-project-lite", @@ -7111,47 +6133,35 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-appender" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" -dependencies = [ - "crossbeam-channel", - "thiserror 1.0.64", - "time", - "tracing-subscriber", -] - [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", ] [[package]] -name = "tracing-error" -version = "0.2.0" +name = "tracing-futures" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" dependencies = [ + "pin-project", "tracing", - "tracing-subscriber", ] [[package]] @@ -7166,65 +6176,55 @@ dependencies = [ ] [[package]] -name = "tracing-subscriber" -version = "0.3.18" +name = "tracing-serde" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319" dependencies = [ - "chrono", "matchers", "nu-ansi-term", "once_cell", - "regex", + "parking_lot", + "regex-automata", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] -name = "tray-icon" -version = "0.20.1" +name = "trash" +version = "5.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7eee98ec5c90daf179d55c20a49d8c0d043054ce7c26336c09a24d31f14fa0" +checksum = "7602e0c7d66ec2d92a8c917219fbc7894039efa2063b9064260110828a356f46" dependencies = [ - "crossbeam-channel", - "dirs", - "libappindicator", - "muda", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", + "chrono", + "libc", + "log", + "objc2 0.6.4", "objc2-foundation 0.3.2", "once_cell", - "png", - "serde", - "thiserror 2.0.12", - "windows-sys 0.59.0", + "percent-encoding", + "scopeguard", + "urlencoding", + "windows 0.56.0", ] -[[package]] -name = "tree_magic_mini" -version = "3.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac5e8971f245c3389a5a76e648bfc80803ae066a1243a75db0064d7c1129d63" -dependencies = [ - "fnv", - "memchr", - "nom", - "once_cell", - "petgraph", -] - -[[package]] -name = "trim-in-place" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" - [[package]] name = "try-lock" version = "0.2.5" @@ -7232,159 +6232,72 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] -name = "tungstenite" -version = "0.27.0" +name = "ttf-parser" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d" -dependencies = [ - "bytes", - "data-encoding", - "http", - "httparse", - "log", - "rand 0.9.1", - "sha1", - "thiserror 2.0.12", - "utf-8", -] - -[[package]] -name = "typeid" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "typenum" -version = "1.17.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "tz-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14eff19b8dc1ace5bf7e4d920b2628ae3837f422ff42210cb1567cbf68b5accf" - -[[package]] -name = "tzdb" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be2ea5956f295449f47c0b825c5e109022ff1a6a53bb4f77682a87c2341fbf5" -dependencies = [ - "iana-time-zone", - "tz-rs", - "tzdb_data", -] - -[[package]] -name = "tzdb_data" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c4c81d75033770e40fbd3643ce7472a1a9fd301f90b7139038228daf8af03ec" -dependencies = [ - "tz-rs", -] +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "winapi", -] - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", + "windows-sys 0.61.2", ] [[package]] name = "unicase" -version = "2.7.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-normalization" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" dependencies = [ "tinyvec", ] [[package]] name = "unicode-properties" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" -version = "0.1.14" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" [[package]] name = "unicode-xid" @@ -7392,6 +6305,12 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unit-prefix" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" + [[package]] name = "untrusted" version = "0.9.0" @@ -7399,65 +6318,93 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] -name = "url" -version = "2.5.2" +name = "ureq" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" +dependencies = [ + "base64", + "flate2", + "log", + "percent-encoding", + "rustls", + "rustls-pki-types", + "ureq-proto", + "utf8-zero", + "webpki-roots", +] + +[[package]] +name = "ureq-proto" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" +dependencies = [ + "base64", + "http", + "httparse", + "log", +] + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", "serde", + "serde_derive", ] [[package]] -name = "urlpattern" -version = "0.3.0" +name = "urlencoding" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] -name = "utf-8" -version = "0.7.6" +name = "utf8-zero" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" [[package]] -name = "utf8parse" -version = "0.2.2" +name = "utf8_iter" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" [[package]] name = "uuid" -version = "0.8.2" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", ] [[package]] -name = "uuid" -version = "1.16.0" +name = "v_frame" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" +checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2" dependencies = [ - "getrandom 0.3.2", - "serde", + "aligned-vec", + "num-traits", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -7465,38 +6412,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" - [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "walkdir" version = "2.5.0" @@ -7518,36 +6439,33 @@ dependencies = [ [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +name = "wasip2" +version = "1.0.3+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen 0.57.1", ] [[package]] -name = "wasite" -version = "0.1.0" +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen 0.51.0", +] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" dependencies = [ "cfg-if", "once_cell", @@ -7558,21 +6476,19 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" dependencies = [ - "cfg-if", "js-sys", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7580,31 +6496,53 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.101", + "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] [[package]] -name = "wasm-streams" -version = "0.4.0" +name = "wasm-encoder" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" dependencies = [ "futures-util", "js-sys", @@ -7614,49 +6552,123 @@ dependencies = [ ] [[package]] -name = "wayland-backend" -version = "0.3.10" +name = "wasmparser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.12.1", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + +[[package]] +name = "wayland-backend" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.44", + "rustix 1.1.4", + "scoped-tls", "smallvec", "wayland-sys", ] [[package]] name = "wayland-client" -version = "0.31.10" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144" dependencies = [ - "bitflags 2.11.0", - "rustix 0.38.44", + "bitflags 2.12.1", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] [[package]] -name = "wayland-protocols" -version = "0.32.8" +name = "wayland-csd-frame" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" +dependencies = [ + "rustix 1.1.4", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f" +dependencies = [ + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-scanner", ] [[package]] -name = "wayland-protocols-wlr" -version = "0.3.8" +name = "wayland-protocols-experimental" +version = "20250721.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" dependencies = [ - "bitflags 2.11.0", + "bitflags 2.12.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" +dependencies = [ + "bitflags 2.12.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" +dependencies = [ + "bitflags 2.12.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" +dependencies = [ + "bitflags 2.12.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -7665,29 +6677,32 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.6" +version = "0.31.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a" dependencies = [ "proc-macro2", - "quick-xml 0.37.5", + "quick-xml", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.6" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ + "dlib", + "log", + "once_cell", "pkg-config", ] [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" dependencies = [ "js-sys", "wasm-bindgen", @@ -7704,110 +6719,40 @@ dependencies = [ ] [[package]] -name = "webkit2gtk" -version = "2.0.1" +name = "webpki-root-certs" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps", -] - -[[package]] -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" dependencies = [ "rustls-pki-types", ] [[package]] -name = "webview2-com" -version = "0.37.0" +name = "webpki-roots" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b542b5cfbd9618c46c2784e4d41ba218c336ac70d44c55e47b251033e7d85601" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows 0.61.1", - "windows-core 0.61.0", - "windows-implement 0.60.0", - "windows-interface 0.59.1", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", -] - -[[package]] -name = "webview2-com-sys" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae2d11c4a686e4409659d7891791254cf9286d3cfe0eef54df1523533d22295" -dependencies = [ - "thiserror 2.0.12", - "windows 0.61.1", - "windows-core 0.61.0", + "rustls-pki-types", ] [[package]] name = "weezl" -version = "0.1.8" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "whoami" -version = "1.6.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" -dependencies = [ - "redox_syscall", - "wasite", - "web-sys", -] +checksum = "998767ef88740d1f5b0682a9c53c24431453923962269c2db68ee43788c5a40d" + +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" [[package]] name = "winapi" @@ -7827,11 +6772,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7840,147 +6785,117 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2 0.6.3", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - [[package]] name = "windows" -version = "0.57.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ - "windows-core 0.57.0", + "windows-core 0.56.0", "windows-targets 0.52.6", ] [[package]] name = "windows" -version = "0.61.1" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" dependencies = [ "windows-collections", - "windows-core 0.61.0", + "windows-core 0.62.2", "windows-future", - "windows-link 0.1.1", "windows-numerics", ] [[package]] name = "windows-collections" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ - "windows-core 0.61.0", + "windows-core 0.62.2", ] [[package]] name = "windows-core" -version = "0.52.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-core" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" -dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", + "windows-implement 0.56.0", + "windows-interface 0.56.0", "windows-result 0.1.2", "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.61.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", - "windows-link 0.1.1", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link", + "windows-result 0.4.1", + "windows-strings", ] [[package]] name = "windows-future" -version = "0.2.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" dependencies = [ - "windows-core 0.61.0", - "windows-link 0.1.1", + "windows-core 0.62.2", + "windows-link", + "windows-threading", ] [[package]] name = "windows-implement" -version = "0.57.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "windows-interface" -version = "0.57.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", ] -[[package]] -name = "windows-link" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" - [[package]] name = "windows-link" version = "0.2.1" @@ -7989,34 +6904,23 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" -version = "0.2.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-core 0.61.0", - "windows-link 0.1.1", + "windows-core 0.62.2", + "windows-link", ] [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" dependencies = [ - "windows-result 0.2.0", - "windows-strings 0.1.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-registry" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1da3e436dc7653dfdf3da67332e22bff09bb0e28b0239e1624499c7830842e" -dependencies = [ - "windows-link 0.1.1", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-link", + "windows-result 0.4.1", + "windows-strings", ] [[package]] @@ -8030,57 +6934,20 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.2.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-result" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" -dependencies = [ - "windows-link 0.1.1", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-strings" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" -dependencies = [ - "windows-link 0.1.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", + "windows-link", ] [[package]] @@ -8092,15 +6959,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -8116,37 +6974,7 @@ version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-link", ] [[package]] @@ -8171,7 +6999,7 @@ version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows-link 0.2.1", + "windows-link", "windows_aarch64_gnullvm 0.53.1", "windows_aarch64_msvc 0.53.1", "windows_i686_gnu 0.53.1", @@ -8183,26 +7011,14 @@ dependencies = [ ] [[package]] -name = "windows-version" -version = "0.1.1" +name = "windows-threading" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -8215,18 +7031,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -8239,18 +7043,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -8275,18 +7067,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -8299,18 +7079,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -8323,18 +7091,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -8347,18 +7103,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -8372,123 +7116,174 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] -name = "winnow" -version = "0.5.40" +name = "winit" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.11.0", -] - -[[package]] -name = "wl-clipboard-rs" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a083daad7e8a4b8805ad73947ccadabe62afe37ce0e9787a56ff373d34762c7" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.12.1", + "block2 0.5.1", + "bytemuck", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", "libc", - "log", - "os_pipe", + "memmap2", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit", + "orbclient", + "percent-encoding", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", "rustix 0.38.44", - "tempfile", - "thiserror 1.0.64", - "tree_magic_mini", + "sctk-adwaita", + "smithay-client-toolkit 0.19.2", + "smol_str", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", "wayland-backend", "wayland-client", "wayland-protocols", - "wayland-protocols-wlr", -] - -[[package]] -name = "wry" -version = "0.51.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886a0a9d2a94fd90cfa1d929629b79cfefb1546e2c7430c63a47f0664c0e4e2" -dependencies = [ - "base64 0.22.1", - "block2 0.6.1", - "cookie", - "crossbeam-channel", - "dpi", - "dunce", - "gdkx11", - "gtk", - "html5ever", - "http", - "javascriptcore-rs", - "jni", - "kuchikiki", - "libc", - "ndk", - "objc2 0.6.3", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation 0.3.2", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.12", - "tracing", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows 0.61.1", - "windows-core 0.61.0", - "windows-version", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.52.0", "x11-dl", + "x11rb", + "xkbcommon-dl", ] [[package]] -name = "wyz" -version = "0.5.1" +name = "winnow" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ - "tap", + "memchr", ] [[package]] -name = "x11" -version = "2.21.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.12.1", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "x11-clipboard" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3" dependencies = [ "libc", - "pkg-config", + "x11rb", ] [[package]] @@ -8504,39 +7299,52 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ - "gethostname 0.4.3", - "rustix 0.38.44", + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading", + "once_cell", + "rustix 1.1.4", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xattr" -version = "1.5.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.0.3", + "rustix 1.1.4", ] [[package]] -name = "xdg-home" -version = "1.3.0" +name = "xcursor" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "libc", - "windows-sys 0.59.0", + "bitflags 2.12.1", + "dlib", + "log", + "once_cell", + "xkeysym", ] [[package]] @@ -8546,20 +7354,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] -name = "yansi" -version = "1.0.1" +name = "xml-rs" +version = "0.8.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f" + +[[package]] +name = "y4m" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] [[package]] name = "zbus" -version = "5.5.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" +checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" dependencies = [ "async-broadcast", "async-executor", - "async-fs", "async-io", "async-lock", "async-process", @@ -8572,32 +7408,55 @@ dependencies = [ "futures-core", "futures-lite", "hex", - "nix 0.29.0", + "libc", "ordered-stream", + "rustix 1.1.4", "serde", "serde_repr", - "static_assertions", - "tokio", "tracing", "uds_windows", - "windows-sys 0.59.0", - "winnow 0.7.7", - "xdg-home", + "uuid", + "windows-sys 0.61.2", + "winnow", "zbus_macros", "zbus_names", "zvariant", ] [[package]] -name = "zbus_macros" -version = "5.5.0" +name = "zbus-lockstep" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" +checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863" +dependencies = [ + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus-lockstep-macros" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0" dependencies = [ - "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.101", + "syn", + "zbus-lockstep", + "zbus_xml", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", "zbus_names", "zvariant", "zvariant_utils", @@ -8605,125 +7464,201 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.2.0" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" dependencies = [ "serde", - "static_assertions", - "winnow 0.7.7", + "winnow", + "zvariant", +] + +[[package]] +name = "zbus_xml" +version = "5.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9" +dependencies = [ + "quick-xml", + "serde", + "zbus_names", "zvariant", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn", +] + +[[package]] +name = "zerofrom" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] -name = "zip" -version = "2.2.0" +name = "zerotrie" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", "displaydoc", - "indexmap 2.5.0", - "memchr", - "thiserror 1.0.64", + "yoke", + "zerofrom", ] [[package]] -name = "zstd" -version = "0.13.2" +name = "zerovec" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + +[[package]] +name = "zstd" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", ] [[package]] -name = "zvariant" -version = "5.4.0" +name = "zune-core" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" +checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", +] + +[[package]] +name = "zvariant" +version = "5.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" dependencies = [ "endi", "enumflags2", "serde", - "static_assertions", - "url", - "winnow 0.7.7", + "winnow", "zvariant_derive", "zvariant_utils", ] [[package]] name = "zvariant_derive" -version = "5.4.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" +checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" dependencies = [ - "proc-macro-crate 3.3.0", + "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.101", + "syn", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "3.2.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" dependencies = [ "proc-macro2", "quote", "serde", - "static_assertions", - "syn 2.0.101", - "winnow 0.7.7", + "syn", + "winnow", ] diff --git a/Cargo.toml b/Cargo.toml index 54e62b0e..5cec2fcb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,264 +1,126 @@ [workspace] members = [ - "apps/oneclient/desktop", - "apps/onelauncher/desktop", - "packages/core", - "packages/entity", - "packages/gamemode", - "packages/macro", - "packages/migration", - "packages/serde_json_path_to_error", + "packages/*", ] -resolver = "2" # virtual workspace resolver so we don't need a root package +resolver = "3" [workspace.package] authors = [ - "Polyfrost", - "Polyfrost Contributors" + "Polyfrost", + "Polyfrost Contributors", ] -documentation = "https://docs.polyfrost.org/onelauncher" +documentation = "https://github.com/Polyfrost/OneLauncher" edition = "2024" -homepage = "https://polyfrost.org/projects/onelauncher" +homepage = "https://polyfrost.org/projects/oneclient" license = "GPL-3.0-only" readme = "README.md" repository = "https://github.com/Polyfrost/OneLauncher" -version = "1.1.7" +version = "2.0.0" + [workspace.dependencies] -# workspace -onelauncher_core = { path = "./packages/core" } -onelauncher_entity = { path = "./packages/entity" } -onelauncher_gamemode = { path = "./packages/gamemode" } -onelauncher_macro = { path = "./packages/macro" } -onelauncher_migration = { path = "./packages/migration" } -serde_json_path_to_error = { path = "./packages/serde_json_path_to_error" } - # core -interfrost = { version = "=1.3.2", features = [ "specta" ] } +polyio = { path = "./packages/polyio" } +oneclient_core = { path = "./packages/oneclient_core" } +oneclient_db = { path = "./packages/oneclient_db" } +oneclient_macro = { path = "./packages/oneclient_macro" } -# tauri -tauri = { version = "=2.5.1", features = [ - "rustls-tls", - "tracing", - "specta", - "uuid", - "protocol-asset", -] } -tauri-build = { version = "=2.2.0" } -tauri-plugin-clipboard-manager = { version = "=2.2.2" } -tauri-plugin-deep-link = { version = "=2.2.1" } -tauri-plugin-dialog = { version = "=2.2.1" } -tauri-plugin-fs = { version = "=2.2.1", features = ["watch"] } -tauri-plugin-os = { version = "=2.2.1" } -tauri-plugin-global-shortcut = { version = "=2.2.1" } -tauri-plugin-single-instance = { version = "=2.2.3" } -tauri-plugin-updater = { version = "=2.7.1" } -tauri-plugin-window-state = { version = "=2.2.2" } -tauri-plugin-opener = { version = "=2.3.0" } - -# code gen -strum = { version = "=0.27.1", features = [ "derive" ] } -specta = { version = "=2.0.0-rc.22", features = [ - "chrono", - "uuid", - "serde", - "serde_json", - "function", - "derive", - "tokio", -] } -specta-typescript = { version = "=0.0.9" } -taurpc = { version = "=0.5.0" } +# core (extra) +gamemode_rs = {path = "./packages/gamemode_rs"} +interfrost = {version = "=1.3.2"} # logging -tracing = { version = "0.1" } -tracing-appender = { version = "0.2" } -tracing-error = { version = "0.2" } -tracing-subscriber = { version = "0.3", features = [ - "chrono", - "env-filter" -] } +tracing = {version = "=0.1.44"} +tracing-futures = {version = "=0.2.5"} +tracing-subscriber = {version = "=0.3.23", features = ["env-filter", "fmt", "ansi", "json", "parking_lot", "registry"]} -# serialization & text -base64 = { version = "=0.22.1" } -byteorder = { version = "=1.5.0" } -chrono = { version = "0.4", features = [ "serde" ] } -nom = { version = "=8.0.0" } -rand = { version = "0.8" } -regex = { version = "1.11" } -serde = { version = "1.0", features = [ "derive" ] } -serde_json = { version = "=1.0" } -serde_with = { version = "=3.12.0", features = [ - "chrono_0_4", - "json", - "macros" -] } -serde_repr = { version = "=0.1.20" } -toml = { version = "0.8" } -url = { version = "2.5" } -uuid = { version = "1.16", features = [ - "serde", - "v4" -] } +# database +sqlx = {version = "=0.9.0", default-features = false, features = [ + "runtime-tokio", + "tls-rustls-ring-native-roots", + "sqlite", + "derive", + "macros", + "migrate", + "json", + "uuid", + "chrono", +]} -# network -reqwest = { version = "0.12", default-features = false, features = [ - "json", - "stream", - "multipart", - "blocking", - "rustls-tls", - "charset", - "http2", - "macos-system-configuration", - "deflate", - "gzip", - "brotli", -] } -reqwest-websocket = { version = "0.5", default-features = false } -webbrowser = { version = "=1.0.4" } - -# io -async-compression = { version = "=0.4.23", features = [ - "flate2", - "tokio" -] } -async_zip = { version = "=0.0.17", features = [ "full" ] } -bytes = { version = "=1.10.1" } -dirs = { version = "=6.0.0" } -dunce = { version = "=1.0.5" } -flate2 = { version = "=1.1.1" } -sanitize-filename = { version = "=0.6.0" } -async-tempfile = { version = "=0.7.0" } -tokio = { version = "1", features = [ "full" ] } -tokio-stream = { version = "0.1", features = [ "fs" ] } -tokio-util = { version = "0.7", features = [ "compat" ] } -governor = { version = "0.10.4" } -encoding_rs = { version = "0.8.35" } - -# crypto -digest = { version = "0.10" } -md-5 = { version = "0.10" } -murmur2 = { version = "=0.1.0" } -sha1 = { version = "0.10" } -sha2 = { version = "0.10" } -p256 = { version = "0.13", features = [ "ecdsa" ] } - -# db -sea-orm = { version = "1.1", features = [ - "sqlx-sqlite", - "runtime-tokio-rustls", - "macros", - "with-chrono", - "with-json", - "with-uuid", - "sqlite-use-returning-for-3_35", -] } -sea-orm-migration = { version = "1.1", features = [ - "sqlx-sqlite", - "runtime-tokio-rustls", - "with-chrono", - "with-json", - "with-uuid", -] } - -# utils -anyhow = { version = "1" } -async-trait = { version = "=0.1.88" } +# async +async-trait = {version = "=0.1.89"} +futures-util = {version = "=0.3.32", features = ["tokio-io"]} +futures-lite = { version = "=2.6.1" } +reqwest = {version = "=0.13.3", default-features = false, features = [ + "json", + "stream", + "multipart", + "blocking", + "rustls", + "charset", + "http2", + "deflate", + "gzip", + "brotli", + "form", + "hickory-dns", +]} +tokio = {version = "=1.52.3", features = ["full"]} +tokio-stream = {version = "=0.1.18", features = ["full"]} +tokio-util = {version = "=0.7.18", features = ["full"]} +async_zip = { version = "=0.0.18", features = ["full"]} +astral-tokio-tar = { version = "=0.6.2" } +async-tempfile = { version = "=0.7.0", features = ["uuid"] } async-stream = { version = "=0.3.6" } -cc = { version = "1" } -discord-rich-presence = { version = "=0.2.5" } -futures = { version = "0.3" } -futures-lite = { version = "2.6" } -indicatif = { version = "0.17" } -libc = { version = "0.2" } -merge = { version = "=0.2.0" } -sysinfo = { version = "=0.34.2", features = [ "serde" ] } -thiserror = { version = "2" } -whoami = { version = "=1.6.0" } -opener = { version = "=0.8.2" } -shadow-rs = { version = "1.5.0", default-features = false } +async-compression = { version = "=0.4.42", features = ["all"] } -# macro -paste = { version = "1" } -quote = { version = "1" } -syn = { version = "2" } -proc-macro2 = { version = "1" } +# crypto (content hashing) +digest = { version = "=0.10.7", features = ["std"] } +sha1 = { version = "=0.10.6", default-features = false } +sha2 = { version = "=0.10.9", default-features = false } +md-5 = { version = "=0.10.6", default-features = false } +p256 = { version = "=0.13.2", features = ["ecdsa", "pkcs8"] } +byteorder = { version = "=1.5.0" } -[patch.crates-io] -# tauri-specta = { git = "https://github.com/specta-rs/tauri-specta", rev = "6fe9532a44b8b683b4dacd178b0120ee585bea23" } -specta = { git = "https://github.com/specta-rs/specta", rev = "5758221bc9a11d6e827851273fd665662e90ceef" } -specta-typescript = { git = "https://github.com/specta-rs/specta", rev = "5758221bc9a11d6e827851273fd665662e90ceef" } +# util +base64 = {version = "=0.22.1"} +chrono = {version = "=0.4.44", features = ["serde"]} +directories = {version = "=6.0.0"} +rand = {version = "=0.10.1"} +serde = {version = "=1.0.228"} +serde_json = {version = "=1.0.150"} +url = {version = "=2.5.8", features = ["serde"]} +uuid = {version = "=1.23.1", features = ["serde", "v4"]} +sanitize-filename = { version = "=0.6.0" } +regex = { version = "=1.12.3" } +parking_lot = { version = "=0.12.5" } +dunce = { version = "=1.0.5" } +bytes = { version = "=1.11.1" } +indicatif = { version = "=0.18.4", features = [ "tokio" ]} +sysinfo = { version = "=0.39.5" } -[workspace.lints.rust] -unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(feature, values("used_linker"))' ] } +# util (codegen/macro) +proc-macro2 = {version = "=1.0.106"} +quote = {version = "=1.0.45"} +thiserror = {version = "=2.0.18" } +anyhow = {version = "=1.0.102"} +strum = {version = "=0.28.0", features = ["derive"]} +syn = {version = "=2.0.117"} -[workspace.lints.clippy] -all = { level = "warn", priority = -1 } -cast_lossless = "warn" -cast_precision_loss = "allow" -complexity = { level = "warn", priority = -1 } -correctness = { level = "warn", priority = -1 } -dbg_macro = "warn" -deprecated_cfg_attr = "warn" -future_not_send = "allow" -missing_errors_doc = "allow" -missing_panics_doc = "allow" -module_name_repetitions = "allow" -needless_return = "allow" -nursery = { level = "warn", priority = -1 } -pedantic = { level = "warn", priority = -1 } -perf = { level = "warn", priority = -1 } -separated_literal_suffix = "warn" -significant_drop_tightening = "allow" # tmp -struct_field_names = "allow" -style = { level = "warn", priority = -1 } -suspicious = { level = "warn", priority = -1 } -unnecessary_cast = "warn" +image = {version = "=0.25.10", default-features = false, features = ["png", "jpeg"]} +arboard = {version = "=3.6.1"} +trash = {version = "=5.2.6"} -[profile.dev] -# add debug symbols/logic and optimize for reduced build time (parallel) -codegen-units = 256 # make parallel incremental builds faster -debug = true # add debug info -incremental = true # enable incremental compilation -lto = false # disable link time optimizations, reduce compile time -opt-level = 0 # reduce optimizations -panic = "unwind" # add unwind panic logic because some deps require it -rpath = false # disable rpath -split-debuginfo = "unpacked" # unpack debug info -strip = "none" # don't remove debug symbols - -# add debug symbols/logic and optimize for reduced build time (parallel) -[profile.dev-debug] -codegen-units = 256 # make parallel incremental builds faster -debug = "full" # add full debug info -incremental = true # enable incremental compilation -inherits = "dev" # extend the dev profile -lto = "off" # disable link time optimizations, reduce compile time -opt-level = 0 # reduce optimizations -split-debuginfo = "none" # don't split debug info -strip = "none" # don't remove debug symbols - -# set the settings for build scripts and proc-macros. -[profile.dev.build-override] -opt-level = 3 # optimize build - -# set the default for dependencies, except workspace members. -[profile.dev.package."*"] -incremental = false # disable incremental compilation -opt-level = 3 # optimize build - -# set the default for dependencies, except workspace members. -[profile.dev-debug.package."*"] -debug = "full" # add full debug info -incremental = false # disable incremental compilation -inherits = "dev" # extend the dev profile -opt-level = 3 # optimize build - -# optimize for speed and reduce size for release [profile.release] -codegen-units = 1 # compile crate one after another for better optimization -lto = true # enable link time optimization -opt-level = "s" # optimize binary -panic = "abort" # strip panic cleanup logic +opt-level = 3 +lto = "fat" +codegen-units = 1 strip = true +panic = "abort" +debug = false + +[profile.release-profiling] +inherits = "release" + +strip = false +debug = true \ No newline at end of file diff --git a/apps/oneclient/desktop/.gitignore b/apps/oneclient/desktop/.gitignore deleted file mode 100644 index 787194aa..00000000 --- a/apps/oneclient/desktop/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by Tauri -.cargo/ -/gen diff --git a/apps/oneclient/desktop/App.entitlements b/apps/oneclient/desktop/App.entitlements deleted file mode 100644 index 48f4264c..00000000 --- a/apps/oneclient/desktop/App.entitlements +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - com.apple.security.cs.disable-library-validation - - - com.apple.security.cs.allow-dyld-environment-variables - - - com.apple.security.device.audio-input - - - com.apple.security.device.camera - - - diff --git a/apps/oneclient/desktop/Cargo.toml b/apps/oneclient/desktop/Cargo.toml deleted file mode 100644 index f75ee18f..00000000 --- a/apps/oneclient/desktop/Cargo.toml +++ /dev/null @@ -1,97 +0,0 @@ -[package] -name = "oneclient_gui" -default-run = "oneclient_gui" -description = "Next-generation open source Minecraft launcher" -version = { workspace = true } -license = { workspace = true } -edition = { workspace = true } -repository = { workspace = true } -documentation = { workspace = true } -readme = { workspace = true } -homepage = { workspace = true } -authors = { workspace = true } - -[lib] -name = "oneclient_gui" -crate-type = [ - "staticlib", - "cdylib", - "lib" -] - -[lints] -workspace = true - -[build-dependencies] -tauri-build = { workspace = true } - -[dependencies] -# core -onelauncher_core = { workspace = true, features = [ "tauri" ] } -interfrost = { workspace = true } - -# tauri -tauri-plugin-window-state = { workspace = true } -tauri-plugin-single-instance = { workspace = true } -tauri-plugin-updater = { workspace = true } -tauri-plugin-clipboard-manager = { workspace = true } -tauri-plugin-dialog = { workspace = true } -tauri-plugin-fs = { workspace = true } -tauri-plugin-os = { workspace = true } -tauri-plugin-global-shortcut = { workspace = true } -tauri-plugin-deep-link = { workspace = true } - -# code gen -taurpc = { workspace = true } -specta = { workspace = true } -specta-typescript = { workspace = true } -strum = { workspace = true } - -# logging -tracing = { workspace = true } -tracing-error = { workspace = true } - -# serialization & text -serde = { workspace = true } -serde_json = { workspace = true } -chrono = { workspace = true } -uuid = { workspace = true } - -# io -tokio = { workspace = true } - -# utils -thiserror = { workspace = true } -anyhow = { workspace = true } -reqwest = { workspace = true } - -[dependencies.tauri] -workspace = true -features = [ - "macos-private-api", - "image-ico", - "image-png", - "protocol-asset", - "specta" -] - -[dev-dependencies] -sea-orm = { workspace = true } - -[features] -default = [ - "custom-protocol", - "devtools" -] -devtools = [ "tauri/devtools" ] -custom-protocol = [ "tauri/custom-protocol" ] - -[target.'cfg(target_os = "macos")'.dependencies] -objc2 = "0.6.3" -objc2-app-kit = { version = "0.3.2", features = [ - "NSWindow", - "NSButton", - "NSControl", - "NSView" -] } -objc2-foundation = { version = "0.3.2", features = [ "NSObject" ] } diff --git a/apps/oneclient/desktop/Info.plist b/apps/oneclient/desktop/Info.plist deleted file mode 100644 index 041bdfca..00000000 --- a/apps/oneclient/desktop/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - CFBundleURLTypes - - - CFBundleURLName - OneClient - CFBundleURLSchemes - - oneclient - - - - - NSCameraUsageDescription - A Minecraft mod is requesting access to your camera. - - NSMicrophoneUsageDescription - A Minecraft mod is requesting access to your microphone. - - diff --git a/apps/oneclient/desktop/build.rs b/apps/oneclient/desktop/build.rs deleted file mode 100644 index 106b7123..00000000 --- a/apps/oneclient/desktop/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build(); -} diff --git a/apps/oneclient/desktop/capabilities/default.json b/apps/oneclient/desktop/capabilities/default.json deleted file mode 100644 index a6abfba1..00000000 --- a/apps/oneclient/desktop/capabilities/default.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "capabilities for the main window", - "windows": ["*"], - "permissions": [ - "core:app:default", - "core:webview:default", - "core:image:default", - "core:menu:default", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:window:default", - - "core:window:allow-close", - "core:window:allow-create", - "core:window:allow-destroy", - "core:window:allow-start-dragging", - "core:window:allow-minimize", - "core:window:allow-maximize", - "core:window:allow-toggle-maximize", - "core:window:allow-internal-toggle-maximize", - "core:window:allow-set-decorations", - "core:window:allow-set-title-bar-style", - "core:webview:allow-internal-toggle-devtools", - - "core:event:default", - "clipboard-manager:allow-write-text", - "dialog:allow-open", - "dialog:allow-save", - "dialog:allow-confirm", - "deep-link:default", - "updater:default", - - "fs:allow-download-read", - "fs:allow-download-write", - "fs:allow-data-read-recursive", - "fs:allow-data-write-recursive", - "fs:allow-watch", - - "os:deny-hostname", - "os:allow-locale", - "os:allow-os-type", - "os:allow-platform", - "os:allow-version", - "os:allow-arch", - "os:deny-exe-extension", - "os:allow-family", - - "global-shortcut:allow-is-registered", - "global-shortcut:allow-register", - "global-shortcut:allow-unregister" - ] -} diff --git a/apps/oneclient/desktop/package.json b/apps/oneclient/desktop/package.json deleted file mode 100644 index 386015d0..00000000 --- a/apps/oneclient/desktop/package.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "@oneclient/desktop", - "type": "module", - "version": "1.1.7", - "private": true, - "description": "Next-generation open source Minecraft launcher", - "license": "GPL-3.0-only", - "repository": { - "type": "git", - "url": "git@github.com:polyfrost/onelauncher", - "directory": "apps/desktop" - }, - "bugs": "https://github.com/polyfrost/onelauncher/issues", - "sideEffects": false, - "scripts": { - "build": "tauri build", - "dev": "tauri dev", - "tauri": "tauri", - "tauri-ext": "pnpm --filter @onelauncher/scripts -- tauri", - "cargo": "cargo" - }, - "dependencies": { - "@oneclient/frontend": "workspace:*" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.0.4" - } -} diff --git a/apps/oneclient/desktop/src/api/commands.rs b/apps/oneclient/desktop/src/api/commands.rs deleted file mode 100644 index 9f6cdb1f..00000000 --- a/apps/oneclient/desktop/src/api/commands.rs +++ /dev/null @@ -1,383 +0,0 @@ -use std::collections::HashMap; -use std::path::{Path, PathBuf}; - -use anyhow::Context; -use onelauncher_core::api; -use onelauncher_core::api::cluster::dao::ClusterId; -use onelauncher_core::api::packages::modpack::data::{ModpackArchive, ModpackFileKind}; -use onelauncher_core::entity::{clusters, packages}; -use onelauncher_core::error::LauncherResult; - -use crate::ext::updater::Update; -use crate::oneclient::bundle_updates::ApplyBundleUpdatesResult; -use crate::oneclient::bundles::BundlesManager; -use crate::oneclient::clusters::{OnlineClusterManifest, get_data_storage_versions}; -use tauri::{AppHandle, Runtime}; - -const BUNDLE_DIRS: &[&str] = &["mods", "resourcepacks", "shaderpacks"]; - -/// Recursively copy all files from `src` into `dst`, creating directories as needed. -async fn copy_dir_all(src: &Path, dst: &Path) -> onelauncher_core::error::LauncherResult<()> { - tokio::fs::create_dir_all(dst) - .await - .map_err(anyhow::Error::from)?; - - let mut entries = tokio::fs::read_dir(src) - .await - .map_err(anyhow::Error::from)?; - while let Some(entry) = entries.next_entry().await.map_err(anyhow::Error::from)? { - let src_path = entry.path(); - let dst_path = dst.join(entry.file_name()); - if src_path.is_dir() { - Box::pin(copy_dir_all(&src_path, &dst_path)).await?; - } else { - tokio::fs::copy(&src_path, &dst_path) - .await - .map_err(anyhow::Error::from)?; - } - } - - Ok(()) -} - -#[taurpc::procedures(path = "oneclient", export_to = "../frontend/src/bindings.gen.ts")] -pub trait OneClientApi { - #[taurpc(alias = "getClustersGroupedByMajor")] - async fn get_clusters_grouped_by_major() -> LauncherResult>>; - - #[taurpc(alias = "getBundlesFor")] - async fn get_bundles_for(cluster_id: ClusterId) -> LauncherResult>; - - #[taurpc(alias = "getVersions")] - async fn get_versions() -> LauncherResult; - - #[taurpc(alias = "extractBundleOverrides")] - async fn extract_bundle_overrides( - bundle_path: PathBuf, - cluster_id: ClusterId, - ) -> LauncherResult<()>; - - #[taurpc(alias = "checkForUpdate")] - async fn check_for_update( - app_handle: AppHandle, - ) -> LauncherResult>; - - #[taurpc(alias = "installUpdate")] - async fn install_update(app_handle: AppHandle) -> LauncherResult<()>; - - #[taurpc(alias = "downloadPackageFromBundle")] - async fn download_package_from_bundle( - package: ModpackFileKind, - cluster_id: ClusterId, - bundle_name: String, - skip_compatibility: Option, - ) -> LauncherResult; - - #[taurpc(alias = "updateBundlePackages")] - async fn update_bundle_packages( - cluster_id: ClusterId, - ) -> LauncherResult; - - #[taurpc(alias = "isBundleSyncing")] - async fn is_bundle_syncing() -> LauncherResult; - - #[taurpc(alias = "cacheArt")] - async fn cache_art(path: String) -> LauncherResult; - - #[taurpc(alias = "refreshArt")] - async fn refresh_art(path: String) -> LauncherResult<()>; - - #[taurpc(alias = "copyClusterContent")] - async fn copy_cluster_content( - source_id: ClusterId, - target_id: ClusterId, - ) -> LauncherResult; -} - -#[taurpc::ipc_type] -pub struct CopyClusterResult { - /// Files that had no compatible provider version and were copied verbatim from the source. - pub fallback_files: Vec, -} - -#[taurpc::ipc_type] -pub struct OneClientApiImpl; - -#[taurpc::resolvers] -impl OneClientApi for OneClientApiImpl { - async fn get_clusters_grouped_by_major( - self, - ) -> LauncherResult>> { - let clusters = onelauncher_core::api::cluster::dao::get_all_clusters().await?; - - let mut mapped: HashMap> = HashMap::new(); - - for cluster in clusters { - let mut parts = cluster.mc_version.splitn(3, '.'); - let major: u32 = match parts.next() { - // Old format: 1.X[.Y] - Some("1") => match parts.next().and_then(|v| v.parse().ok()) { - Some(v) => v, - None => continue, - }, - // New format: YY.N[.P] - Some(year) => match year.parse() { - Ok(v) => v, - Err(_) => continue, - }, - None => continue, - }; - mapped.entry(major).or_default().push(cluster); - } - - Ok(mapped) - } - - async fn get_bundles_for(self, cluster_id: ClusterId) -> LauncherResult> { - let cluster = onelauncher_core::api::cluster::dao::get_cluster_by_id(cluster_id) - .await? - .ok_or_else(|| { - onelauncher_core::error::LauncherError::from(anyhow::anyhow!( - "cluster with id {} not found", - cluster_id - )) - })?; - - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await?; - - Ok(bundles) - } - - async fn get_versions(self) -> LauncherResult { - get_data_storage_versions().await - } - - async fn extract_bundle_overrides( - self, - bundle_path: PathBuf, - cluster_id: ClusterId, - ) -> LauncherResult<()> { - let cluster = onelauncher_core::api::cluster::dao::get_cluster_by_id(cluster_id) - .await? - .ok_or_else(|| { - onelauncher_core::error::LauncherError::from(anyhow::anyhow!( - "cluster with id {} not found", - cluster_id - )) - })?; - - onelauncher_core::api::packages::modpack::mrpack::copy_overrides_folder( - &cluster, - &bundle_path, - &None, - ) - .await?; - - Ok(()) - } - - async fn check_for_update( - self, - app_handle: AppHandle, - ) -> LauncherResult> { - crate::ext::updater::check_for_update(app_handle) - .await - .map_err(|e| onelauncher_core::error::LauncherError::from(anyhow::anyhow!(e))) - } - - async fn install_update(self, app_handle: AppHandle) -> LauncherResult<()> { - crate::ext::updater::install_update(app_handle) - .await - .map_err(|e| onelauncher_core::error::LauncherError::from(anyhow::anyhow!(e))) - } - - async fn download_package_from_bundle( - self, - package: ModpackFileKind, - cluster_id: ClusterId, - bundle_name: String, - skip_compatibility: Option, - ) -> LauncherResult { - let cluster = api::cluster::dao::get_cluster_by_id(cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("cluster with id {} not found", cluster_id))?; - - match package { - ModpackFileKind::Managed(box_) => { - let (pkg, version) = *box_; - let model = api::packages::download_package(&pkg, &version, None, None).await?; - api::packages::link_package(&model, &cluster, skip_compatibility).await?; - api::packages::bundle_dao::track_bundle_package( - &cluster, - &model, - &bundle_name, - &version.version_id, - ) - .await?; - Ok(model) - } - - ModpackFileKind::External(ext_package) => { - let model = api::packages::download_external_package( - &ext_package, - &cluster, - None, - skip_compatibility.or(Some(true)), - None, - ) - .await? - .ok_or_else(|| anyhow::anyhow!("Failed to download external package"))?; - - api::packages::link_package(&model, &cluster, skip_compatibility.or(Some(true))) - .await?; - - api::packages::bundle_dao::track_bundle_package( - &cluster, - &model, - &bundle_name, - &ext_package.sha1, - ) - .await?; - - Ok(model) - } - } - } - - async fn update_bundle_packages( - self, - cluster_id: ClusterId, - ) -> LauncherResult { - // A manual update check must re-fetch the manifest and re-validate bundles rather than - // serving the process-cached copy, otherwise updates published after launch are missed. - crate::oneclient::bundles::BundlesManager::get() - .await - .refresh() - .await; - crate::oneclient::bundle_updates::apply_bundle_updates(cluster_id).await - } - - async fn is_bundle_syncing(self) -> LauncherResult { - Ok(crate::oneclient::is_bundle_syncing()) - } - - async fn cache_art(self, path: String) -> LauncherResult { - crate::oneclient::clusters::cache_art_image(&path).await - } - - async fn refresh_art(self, path: String) -> LauncherResult<()> { - tokio::spawn(async move { - crate::oneclient::clusters::refresh_art_cache(&path).await; - }); - Ok(()) - } - - async fn copy_cluster_content( - self, - source_id: ClusterId, - target_id: ClusterId, - ) -> LauncherResult { - let source = api::cluster::dao::get_cluster_by_id(source_id) - .await? - .ok_or_else(|| anyhow::anyhow!("source cluster {} not found", source_id))?; - let target = api::cluster::dao::get_cluster_by_id(target_id) - .await? - .ok_or_else(|| anyhow::anyhow!("target cluster {} not found", target_id))?; - - let clusters_dir = onelauncher_core::store::Dirs::get_clusters_dir().await?; - let source_path = clusters_dir.join(&source.folder_name); - let target_path = clusters_dir.join(&target.folder_name); - - // Mods, resource packs, and shader packs are version-dependent and bundle-managed. - // Detect the source cluster's bundle subscriptions, map them to the target version, - // copy overrides, and install the correctly-versioned packages into the target. - crate::oneclient::bundle_updates::migrate_bundles_to_cluster(source_id, target_id).await?; - - // Migrate non-bundle (custom) packages: update via provider for the target MC version - // where possible, and get back a list of files that had no compatible version and - // need to be copied verbatim. - let fallback_files: std::collections::HashSet = - crate::oneclient::bundle_updates::migrate_non_bundle_packages(source_id, target_id) - .await? - .into_iter() - .collect(); - - // File-copy everything from the source folder. For bundle-managed dirs, only copy - // files in the fallback list (everything else was handled version-correctly above). - if source_path.exists() { - let mut entries = tokio::fs::read_dir(&source_path) - .await - .map_err(anyhow::Error::from)?; - while let Some(entry) = entries.next_entry().await.map_err(anyhow::Error::from)? { - let name = entry.file_name(); - let name_str = name.to_string_lossy(); - let src = entry.path(); - let dst = target_path.join(&name); - if BUNDLE_DIRS.contains(&name_str.as_ref()) { - // Only copy files that weren't handled by migrate_non_bundle_packages - // or migrate_bundles_to_cluster (i.e., provider lookup failed). - if src.is_dir() { - let mut sub = tokio::fs::read_dir(&src) - .await - .map_err(anyhow::Error::from)?; - while let Some(sub_entry) = - sub.next_entry().await.map_err(anyhow::Error::from)? - { - let sub_name = sub_entry.file_name(); - if !fallback_files.contains(sub_name.to_string_lossy().as_ref()) { - continue; - } - tokio::fs::create_dir_all(&dst) - .await - .map_err(anyhow::Error::from)?; - let sub_src = sub_entry.path(); - // Copy as disabled — no compatible version exists for the new MC - // version, so mark it disabled rather than silently breaking the game. - let disabled_name = { - let s = sub_name.to_string_lossy(); - if s.ends_with(".disabled") { - sub_name.clone() - } else { - std::ffi::OsString::from(format!("{s}.disabled")) - } - }; - let sub_dst = dst.join(&disabled_name); - if sub_src.is_dir() { - copy_dir_all(&sub_src, &sub_dst).await?; - } else { - tokio::fs::copy(&sub_src, &sub_dst) - .await - .map_err(anyhow::Error::from)?; - } - } - } - } else if src.is_dir() { - copy_dir_all(&src, &dst).await?; - } else { - tokio::fs::copy(&src, &dst) - .await - .map_err(anyhow::Error::from)?; - } - } - } - - onelauncher_core::api::cluster::sync_cluster_by_id(target_id).await?; - - // Stamp the target cluster's created_at with the actual migration time so the - // home page can correctly identify it as a newly-migrated cluster. - onelauncher_core::api::cluster::dao::touch_cluster_created_at(target_id) - .await - .with_context(|| { - format!( - "failed to stamp migrated cluster created_at for target cluster {target_id}" - ) - })?; - - Ok(CopyClusterResult { - fallback_files: fallback_files.into_iter().collect(), - }) - } -} diff --git a/apps/oneclient/desktop/src/api/mod.rs b/apps/oneclient/desktop/src/api/mod.rs deleted file mode 100644 index 5bfa754f..00000000 --- a/apps/oneclient/desktop/src/api/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod commands; -pub mod statics; diff --git a/apps/oneclient/desktop/src/api/statics.rs b/apps/oneclient/desktop/src/api/statics.rs deleted file mode 100644 index ea54474d..00000000 --- a/apps/oneclient/desktop/src/api/statics.rs +++ /dev/null @@ -1,26 +0,0 @@ -use onelauncher_core::constants::{NATIVE_ARCH, TARGET_OS}; -use onelauncher_core::store::Core; -use serde::Serialize; -use specta::Type; - -#[derive(Serialize, Type)] -pub struct ProgramInfo { - launcher_version: String, - webview_version: String, - tauri_version: String, - dev_build: bool, - platform: String, - arch: String, -} - -#[must_use] -pub fn get_program_info() -> ProgramInfo { - ProgramInfo { - launcher_version: Core::get().launcher_version.clone(), - webview_version: tauri::webview_version().unwrap_or_else(|_| "UNKNOWN".into()), - tauri_version: tauri::VERSION.into(), - dev_build: tauri::is_dev(), - platform: TARGET_OS.into(), - arch: NATIVE_ARCH.into(), - } -} diff --git a/apps/oneclient/desktop/src/constants.rs b/apps/oneclient/desktop/src/constants.rs deleted file mode 100644 index 39d17743..00000000 --- a/apps/oneclient/desktop/src/constants.rs +++ /dev/null @@ -1,15 +0,0 @@ -// === API === -pub const CURSEFORGE_API_KEY: &str = "$2a$10$6utA1UNSmFPrE/Lh7b7ndeeGmiOkjKNY8kpFB0fsmE/d42ZAfFgCe"; -pub const DISCORD_CLIENT_ID: &str = "1426999264633946334"; -pub const PLUS_BACKEND_URL: &str = match option_env!("ONECLIENT_PLUS_BACKEND_URL") { - Some(url) => url, - #[cfg(debug_assertions)] - None => "https://plus-staging.polyfrost.org", - #[cfg(not(debug_assertions))] - None => "https://plus.polyfrost.org", -}; - -// === Meta === -// Cannot contain trailing slash -pub const META_URL_BASE: &str = - "https://raw.githubusercontent.com/Polyfrost/DataStorage/refs/heads/main/oneclient"; diff --git a/apps/oneclient/desktop/src/ext/mod.rs b/apps/oneclient/desktop/src/ext/mod.rs deleted file mode 100644 index 864c0b2a..00000000 --- a/apps/oneclient/desktop/src/ext/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod specta; -pub mod updater; diff --git a/apps/oneclient/desktop/src/ext/specta.rs b/apps/oneclient/desktop/src/ext/specta.rs deleted file mode 100644 index 624414b6..00000000 --- a/apps/oneclient/desktop/src/ext/specta.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::io; -use std::path::Path; -use std::process::Command; - -pub fn formatter(file: &Path) -> io::Result<()> { - let result = Command::new("pnpm") - .arg("eslint") - .arg("--flag") - .arg("unstable_ts_config") - .arg("--fix") - .arg(file) - .output(); - - match result { - Ok(_) => Ok(()), - Err(e) => { - eprintln!("error running formatter on {}: {}", file.display(), e); - Ok(()) - } - } -} - -const _: specta_typescript::FormatterFn = formatter; diff --git a/apps/oneclient/desktop/src/ext/updater.rs b/apps/oneclient/desktop/src/ext/updater.rs deleted file mode 100644 index 32d16990..00000000 --- a/apps/oneclient/desktop/src/ext/updater.rs +++ /dev/null @@ -1,90 +0,0 @@ -use onelauncher_core::store::Core; -use tauri::{Manager, Runtime}; -use tauri_plugin_updater::{Update as TauriPluginUpdate, UpdaterExt}; -use tokio::sync::Mutex; - -#[derive(Debug, Clone, serde::Serialize, specta::Type)] -pub struct Update { - pub version: String, -} - -impl Update { - fn new(update: &TauriPluginUpdate) -> Self { - Self { - version: update.version.clone(), - } - } -} - -#[derive(Default)] -pub struct UpdaterState { - install_lock: Mutex<()>, -} - -async fn get_update( - app: tauri::AppHandle, -) -> Result, String> { - app.updater() - .map_err(|e| e.to_string())? - .check() - .await - .map_err(|e| e.to_string()) -} - -#[derive(Debug, Clone, serde::Serialize, specta::Type)] -#[serde(rename_all = "camelCase", tag = "status")] -pub enum UpdateEvent { - Loading, - Error { error: String }, - UpdateAvailable { update: Update }, - NoUpdateAvailable, - Installing, -} - -pub async fn check_for_update( - app: tauri::AppHandle, -) -> Result, String> { - get_update(app) - .await - .map(|update| update.map(|u| Update::new(&u))) -} - -pub async fn install_update(app: tauri::AppHandle) -> Result<(), String> { - let state = app.state::(); - let Ok(lock) = state.install_lock.try_lock() else { - return Err("Update already installing".into()); - }; - - get_update(app.clone()) - .await? - .ok_or_else(|| "No update required".to_string())? - .download_and_install(|_, _| {}, || {}) - .await - .map_err(|e| e.to_string())?; - - drop(lock); - - app.restart(); -} - -pub fn init(app: &tauri::AppHandle) -> tauri::Result<()> { - #[cfg(target_os = "linux")] - let updater_available = false; - - #[cfg(not(target_os = "linux"))] - let updater_available = true; - - if updater_available && let Some(window) = app.get_webview_window("main") { - window - .eval("window.__LAUNCHER_UPDATER__ = true;") - .expect("Failed to inject updater JS"); - - window - .eval(format!( - r#"window.__ONECLIENT_VERSION__ = "{}";"#, - Core::get().launcher_version, - )) - .expect("Failed to inject version JS"); - } - Ok(()) -} diff --git a/apps/oneclient/desktop/src/lib.rs b/apps/oneclient/desktop/src/lib.rs deleted file mode 100644 index e451bf07..00000000 --- a/apps/oneclient/desktop/src/lib.rs +++ /dev/null @@ -1,200 +0,0 @@ -use onelauncher_core::api::proxy::ProxyTauri; -use onelauncher_core::api::tauri::{TauRPCLauncherExt, TauriLauncherDebugApi}; -use onelauncher_core::error::LauncherResult; -use onelauncher_core::store::proxy::ProxyState; -use onelauncher_core::store::semaphore::SemaphoreStore; -use onelauncher_core::store::{Core, CoreOptions, Dirs, State}; -use tauri::{Emitter, Manager}; - -use crate::api::commands::OneClientApi; -use crate::oneclient::initialize_oneclient; - -pub mod api; -pub mod constants; -pub mod ext; -pub mod oneclient; - -#[derive(Clone, serde::Serialize)] -pub struct SingleInstancePayload { - args: Vec, - cwd: String, -} - -#[tracing::instrument] -async fn initialize_core() -> LauncherResult<()> { - let level = if cfg!(debug_assertions) { - tracing::Level::DEBUG - } else { - tracing::Level::INFO - }; - - let opts = CoreOptions { - curseforge_api_key: Some(constants::CURSEFORGE_API_KEY.to_string()), - launcher_name: "OneClient".to_string(), - launcher_version: env!("CARGO_PKG_VERSION").to_string(), - launcher_website: "https://polyfrost.org/".to_string(), - discord_client_id: Some(constants::DISCORD_CLIENT_ID.to_string()), - plus_backend_url: Some(constants::PLUS_BACKEND_URL.to_string()), - fetch_attempts: 3, - logger_filter: Some(format!( - "{}={level},onelauncher_core={level}", - env!("CARGO_PKG_NAME") - )), - ..Default::default() - }; - - Core::initialize(opts).await?; - Dirs::get().await?; - onelauncher_core::start_logger().await; - SemaphoreStore::get().await; - tracing::info!("initialized core modules"); - - let debug_info = onelauncher_core::api::tauri::TauriLauncherDebugApiImpl - .get_full_debug_info_parsed_string() - .await; - - tracing::info!("\n{}", debug_info); - - Ok(()) -} - -#[tracing::instrument(skip_all)] -#[allow(clippy::large_stack_frames)] -async fn initialize_tauri(builder: tauri::Builder) -> LauncherResult { - let router = taurpc::Router::new() - .export_config( - specta_typescript::Typescript::default() - .bigint(specta_typescript::BigIntExportBehavior::Number) - .formatter(ext::specta::formatter) - .header("// @ts-nocheck\n"), - ) - .merge(api::commands::OneClientApiImpl.into_handler()) - .use_launcher_api(); - - let builder = builder - .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { - println!("{}, {argv:?}, {cwd}", app.package_info().name); - app.emit("single-instance", SingleInstancePayload { args: argv, cwd }) - .unwrap(); - })) - .plugin(tauri_plugin_updater::Builder::new().build()) - .plugin(tauri_plugin_clipboard_manager::init()) - .plugin(tauri_plugin_dialog::init()) - .plugin(tauri_plugin_fs::init()) - .plugin(tauri_plugin_deep_link::init()) - .plugin(tauri_plugin_os::init()); - - #[cfg(not(target_os = "linux"))] - let builder = builder.menu(tauri::menu::Menu::default); - - let builder = builder - .invoke_handler(router.into_handler()) - .setup(move |app| { - app.manage(ext::updater::UpdaterState::default()); - setup_window(app.handle()).expect("failed to setup main window"); - - #[cfg(desktop)] - app.handle() - .plugin(tauri_plugin_global_shortcut::Builder::new().build())?; - - Ok(()) - }); - - let app = builder - .build(tauri::generate_context!()) - .expect("failed to build tauri application"); - - Ok(app) -} - -#[tracing::instrument(skip_all)] -async fn initialize_state(handle: &tauri::AppHandle) -> LauncherResult<()> { - let proxy = ProxyTauri::new(handle.clone()); - ProxyState::initialize(proxy).await?; - - State::get().await?; - - if let Err(err) = onelauncher_core::api::credentials::refresh_accounts().await { - tracing::warn!("failed to refresh accounts on startup: {err}"); - } - - onelauncher_core::store::credentials::spawn_plus_playtime_tracking(); - - tracing::info!("initialized launcher successfully"); - Ok(()) -} - -pub async fn run() { - initialize_core().await.expect("failed to initialize core"); - - let app = initialize_tauri(tauri::Builder::default()) - .await - .expect("failed to initialize tauri"); - - initialize_state(app.handle()) - .await - .expect("failed to initialize state"); - - initialize_oneclient().await; - - app.run(|_, _| {}); -} - -fn setup_window(handle: &tauri::AppHandle) -> Result<(), Box> { - let win = handle - .get_webview_window("main") - .ok_or_else(|| anyhow::anyhow!("no window called main was found"))?; - - ext::updater::init(handle)?; - - let win_clone = win; - #[allow(unused_variables)] - let app_handle = handle.clone(); - tokio::task::spawn(async move { - if State::get().await.is_ok() { - // native_window_frame=true means use native decorations - // native_window_frame=false means use custom frame (no decorations) - #[cfg(target_os = "macos")] - { - win_clone.set_decorations(true).ok(); - let win_weak = win_clone.clone(); - app_handle - .run_on_main_thread(move || { - #[cfg(target_os = "macos")] - { - use objc2_app_kit::{NSWindow, NSWindowButton}; - - if let Ok(ns_window_ptr) = win_weak.ns_window() { - let ns_window = ns_window_ptr.cast::(); - unsafe { - let ns_window = &*ns_window; - if let Some(btn) = - ns_window.standardWindowButton(NSWindowButton::CloseButton) - { - btn.setHidden(true); - } - if let Some(btn) = ns_window - .standardWindowButton(NSWindowButton::MiniaturizeButton) - { - btn.setHidden(true); - } - if let Some(btn) = - ns_window.standardWindowButton(NSWindowButton::ZoomButton) - { - btn.setHidden(true); - } - } - } - } - }) - .ok(); - } - - #[cfg(not(target_os = "macos"))] - win_clone.set_decorations(false).ok(); - } - win_clone.show().ok(); - }); - - Ok(()) -} diff --git a/apps/oneclient/desktop/src/main.rs b/apps/oneclient/desktop/src/main.rs deleted file mode 100644 index f639d4ae..00000000 --- a/apps/oneclient/desktop/src/main.rs +++ /dev/null @@ -1,7 +0,0 @@ -// Prevents additional console window on Windows in release, DO NOT REMOVE!! -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -#[tokio::main] -async fn main() { - oneclient_gui::run().await; -} diff --git a/apps/oneclient/desktop/src/oneclient/bundle_updates.rs b/apps/oneclient/desktop/src/oneclient/bundle_updates.rs deleted file mode 100644 index 95cfbb39..00000000 --- a/apps/oneclient/desktop/src/oneclient/bundle_updates.rs +++ /dev/null @@ -1,1890 +0,0 @@ -use std::cmp::Ordering; -use std::collections::{HashMap, HashSet}; -use std::sync::{Arc, Mutex, OnceLock}; - -use chrono::{DateTime, Utc}; -use onelauncher_core::api::cluster::dao::ClusterId; -use onelauncher_core::api::packages::bundle_dao; -use onelauncher_core::api::packages::modpack::data::{ - ModpackArchive, ModpackFile, ModpackFileKind, -}; -use onelauncher_core::api::packages::provider::ProviderExt; -use onelauncher_core::entity::cluster_packages; -use onelauncher_core::entity::package::{PackageType, Provider}; -use onelauncher_core::error::LauncherResult; -use onelauncher_core::{api, send_error}; - -use crate::oneclient::bundles::BundlesManager; - -/// Per-cluster mutex map to prevent concurrent bundle updates on the same cluster. -static CLUSTER_UPDATE_LOCKS: OnceLock>>>> = - OnceLock::new(); - -fn get_cluster_lock(cluster_id: i64) -> Arc> { - let locks = CLUSTER_UPDATE_LOCKS.get_or_init(|| Mutex::new(HashMap::new())); - let mut map = locks.lock().unwrap(); - map.entry(cluster_id) - .or_insert_with(|| Arc::new(tokio::sync::Mutex::new(()))) - .clone() -} - -fn managed_bundle_key(provider: Provider, package_id: &str) -> String { - format!("m:{}:{}", provider.name(), package_id) -} - -fn external_bundle_key(sha1: &str) -> String { - format!("e:{sha1}") -} - -const VERSIONED_TYPES: &[PackageType] = &[ - PackageType::Mod, - PackageType::ResourcePack, - PackageType::Shader, -]; - -fn collect_inferable_managed_keys( - bundle_files_map: &HashMap, - hidden_dependency_keys: &HashSet, - hidden_explicit_keys: &HashSet, -) -> HashSet { - bundle_files_map - .keys() - .filter(|key| { - key.starts_with("m:") - && !hidden_dependency_keys.contains(*key) - && !hidden_explicit_keys.contains(*key) - }) - .cloned() - .collect() -} - -fn infer_bundle_names_from_unique_installed_keys( - candidate_keys_by_bundle: &HashMap>, - all_installed_managed_keys: &HashSet, -) -> HashSet { - let mut key_occurrence_count: HashMap = HashMap::new(); - for candidate_keys in candidate_keys_by_bundle.values() { - for key in candidate_keys { - *key_occurrence_count.entry(key.clone()).or_default() += 1; - } - } - - candidate_keys_by_bundle - .iter() - .filter_map(|(bundle_name, candidate_keys)| { - let has_unique_installed_key = candidate_keys.iter().any(|key| { - all_installed_managed_keys.contains(key) - && key_occurrence_count.get(key).copied().unwrap_or_default() == 1 - }); - - if has_unique_installed_key { - Some(bundle_name.clone()) - } else { - None - } - }) - .collect() -} - -fn collect_all_installed_managed_keys( - all_linked_packages: &[onelauncher_core::entity::packages::Model], -) -> HashSet { - all_linked_packages - .iter() - .filter_map(|pkg| { - if pkg.provider == Provider::Local && pkg.package_id == pkg.hash { - None - } else { - Some(managed_bundle_key(pkg.provider, &pkg.package_id)) - } - }) - .collect() -} - -fn collect_inferable_managed_keys_for_bundle(bundle: &ModpackArchive) -> HashSet { - let mut visible_managed_keys: HashSet = HashSet::new(); - let mut hidden_dependency_keys: HashSet = HashSet::new(); - let mut hidden_explicit_keys: HashSet = HashSet::new(); - - for file in &bundle.manifest.files { - if !file.enabled { - continue; - } - - if let ModpackFileKind::Managed(box_) = &file.kind { - let (pkg, version) = &**box_; - let key = managed_bundle_key(pkg.provider, &pkg.id); - visible_managed_keys.insert(key.clone()); - - if file.hidden { - hidden_explicit_keys.insert(key); - } - - for dep in &version.dependencies { - if let Some(dep_project_id) = &dep.project_id { - hidden_dependency_keys.insert(managed_bundle_key(pkg.provider, dep_project_id)); - } - } - } - } - - for visible_key in &visible_managed_keys { - hidden_dependency_keys.remove(visible_key); - } - - visible_managed_keys - .into_iter() - .filter(|key| !hidden_dependency_keys.contains(key) && !hidden_explicit_keys.contains(key)) - .collect() -} - -fn infer_subscribed_bundles_for_loader_sync( - bundle_packages: &[cluster_packages::Model], - bundles: &[ModpackArchive], - all_installed_managed_keys: &HashSet, -) -> HashSet { - let mut subscribed_bundles: HashSet = bundle_packages - .iter() - .filter_map(|bp| bp.bundle_name.clone()) - .collect(); - - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - for bundle in bundles { - candidate_keys_by_bundle.insert( - bundle.manifest.name.clone(), - collect_inferable_managed_keys_for_bundle(bundle), - ); - } - - for inferred_bundle in infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - all_installed_managed_keys, - ) { - subscribed_bundles.insert(inferred_bundle); - } - - subscribed_bundles -} - -fn split_version_segments(version: &str) -> Vec { - version - .split(|c: char| !c.is_ascii_alphanumeric()) - .filter(|segment| !segment.is_empty()) - .map(str::to_ascii_lowercase) - .collect() -} - -fn compare_version_segment(left: &str, right: &str) -> Ordering { - match (left.parse::(), right.parse::()) { - (Ok(left_num), Ok(right_num)) => left_num.cmp(&right_num), - (Ok(_), Err(_)) => Ordering::Greater, - (Err(_), Ok(_)) => Ordering::Less, - (Err(_), Err(_)) => left.cmp(right), - } -} - -fn compare_version_like(left: &str, right: &str) -> Ordering { - let left_segments = split_version_segments(left); - let right_segments = split_version_segments(right); - - for index in 0..left_segments.len().max(right_segments.len()) { - match (left_segments.get(index), right_segments.get(index)) { - (Some(left_segment), Some(right_segment)) => { - let cmp = compare_version_segment(left_segment, right_segment); - if cmp != Ordering::Equal { - return cmp; - } - } - (Some(left_segment), None) => { - if left_segment.parse::().is_ok_and(|value| value == 0) { - continue; - } - return Ordering::Greater; - } - (None, Some(right_segment)) => { - if right_segment.parse::().is_ok_and(|value| value == 0) { - continue; - } - return Ordering::Less; - } - (None, None) => break, - } - } - - Ordering::Equal -} - -fn select_highest_loader_version<'a>( - versions: impl IntoIterator, -) -> Option { - versions - .into_iter() - .map(str::trim) - .filter(|value| !value.is_empty()) - .max_by(|left, right| compare_version_like(left, right)) - .map(std::string::ToString::to_string) -} - -fn resolve_target_loader_version_for_subscribed_bundles( - bundles: &[ModpackArchive], - subscribed_bundles: &HashSet, -) -> Option { - select_highest_loader_version( - bundles - .iter() - .filter(|bundle| subscribed_bundles.contains(&bundle.manifest.name)) - .map(|bundle| bundle.manifest.loader_version.as_str()), - ) -} - -async fn sync_cluster_loader_version_from_bundles(cluster_id: ClusterId) -> LauncherResult<()> { - let Some(cluster) = onelauncher_core::api::cluster::dao::get_cluster_by_id(cluster_id).await? - else { - tracing::warn!( - cluster_id = %cluster_id, - "Skipping loader version sync because cluster no longer exists" - ); - return Ok(()); - }; - - let bundle_packages = bundle_dao::get_bundle_packages_for_cluster(cluster_id).await?; - let all_linked_packages = api::packages::dao::get_linked_packages(&cluster).await?; - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await?; - - let all_installed_managed_keys = collect_all_installed_managed_keys(&all_linked_packages); - let subscribed_bundles = infer_subscribed_bundles_for_loader_sync( - &bundle_packages, - &bundles, - &all_installed_managed_keys, - ); - - let Some(target_loader_version) = - resolve_target_loader_version_for_subscribed_bundles(&bundles, &subscribed_bundles) - else { - tracing::debug!( - cluster_id = %cluster_id, - subscribed_bundle_count = %subscribed_bundles.len(), - "No subscribed bundle loader version available for sync" - ); - return Ok(()); - }; - - let current_loader_version = cluster.mc_loader_version.clone(); - if current_loader_version.as_deref() == Some(target_loader_version.as_str()) { - tracing::debug!( - cluster_id = %cluster_id, - loader_version = %target_loader_version, - "Cluster loader version already matches resolved bundle loader version" - ); - return Ok(()); - } - - tracing::info!( - cluster_id = %cluster_id, - old_loader_version = ?current_loader_version, - new_loader_version = %target_loader_version, - subscribed_bundle_count = %subscribed_bundles.len(), - "Updating cluster loader version from subscribed bundle manifests" - ); - - onelauncher_core::api::cluster::dao::set_cluster_loader_version( - cluster_id, - Some(target_loader_version), - ) - .await?; - - Ok(()) -} - -#[taurpc::ipc_type] -pub struct BundlePackageUpdate { - pub cluster_id: ClusterId, - pub installed_package_hash: String, - pub installed_version_id: String, - pub bundle_name: String, - pub new_version_id: String, - pub new_file: ModpackFile, - pub installed_at: DateTime, -} - -#[taurpc::ipc_type] -pub struct BundlePackageRemoval { - pub cluster_id: ClusterId, - pub package_hash: String, - pub package_id: String, - pub bundle_name: String, - pub installed_at: DateTime, -} - -#[taurpc::ipc_type] -pub struct BundlePackageAddition { - pub cluster_id: ClusterId, - pub bundle_name: String, - pub new_file: ModpackFile, -} - -#[taurpc::ipc_type] -pub struct BundleUpdateCheckResult { - pub cluster_id: ClusterId, - pub updates_available: Vec, - pub removals_available: Vec, - pub additions_available: Vec, - pub checked_at: DateTime, -} - -pub async fn check_bundle_updates( - cluster_id: ClusterId, -) -> LauncherResult { - let overrides = bundle_dao::get_bundle_overrides(cluster_id).await?; - check_bundle_updates_inner(cluster_id, &overrides).await -} - -#[allow(clippy::too_many_lines)] -async fn check_bundle_updates_inner( - cluster_id: ClusterId, - overrides: &[onelauncher_core::entity::cluster_bundle_overrides::Model], -) -> LauncherResult { - tracing::debug!(cluster_id = %cluster_id, "Starting bundle update check"); - - let cluster = onelauncher_core::api::cluster::dao::get_cluster_by_id(cluster_id) - .await? - .ok_or_else(|| { - onelauncher_core::error::LauncherError::from(anyhow::anyhow!( - "cluster with id {} not found", - cluster_id - )) - })?; - - tracing::debug!( - cluster_id = %cluster_id, - cluster_name = %cluster.name, - mc_version = %cluster.mc_version, - mc_loader = ?cluster.mc_loader, - "Found cluster for update check" - ); - - let bundle_packages = bundle_dao::get_bundle_packages_for_cluster(cluster_id).await?; - - tracing::debug!( - cluster_id = %cluster_id, - package_count = %bundle_packages.len(), - "Retrieved bundle packages from database" - ); - - // Fetch ALL packages in the cluster (not just bundle-tracked ones) so we can - // infer bundle subscriptions from packages installed via the regular flow. - let all_linked_packages = api::packages::dao::get_linked_packages(&cluster).await?; - let all_linked_by_hash: std::collections::HashMap< - String, - &onelauncher_core::entity::packages::Model, - > = all_linked_packages - .iter() - .map(|pkg| (pkg.hash.clone(), pkg)) - .collect(); - - let all_installed_managed_keys: std::collections::HashSet = all_linked_packages - .iter() - .filter_map(|pkg| { - if pkg.provider == Provider::Local && pkg.package_id == pkg.hash { - None - } else { - Some(managed_bundle_key(pkg.provider, &pkg.package_id)) - } - }) - .collect(); - let all_installed_external_hashes: std::collections::HashSet = all_linked_packages - .iter() - .filter(|pkg| pkg.package_id == pkg.hash) - .map(|pkg| pkg.hash.clone()) - .collect(); - - tracing::debug!( - cluster_id = %cluster_id, - total_installed = %all_linked_packages.len(), - "Retrieved all linked packages for subscription inference" - ); - - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await?; - - tracing::debug!( - cluster_id = %cluster_id, - bundle_count = %bundles.len(), - bundle_names = ?bundles.iter().map(|b| &b.manifest.name).collect::>(), - "Retrieved available bundles" - ); - - let tracked_bundle_names: std::collections::HashSet = bundle_packages - .iter() - .filter_map(|bp| bp.bundle_name.clone()) - .collect(); - let loaded_bundle_names: std::collections::HashSet = - bundles.iter().map(|b| b.manifest.name.clone()).collect(); - let unavailable_tracked_bundles: std::collections::HashSet = tracked_bundle_names - .into_iter() - .filter(|name| !loaded_bundle_names.contains(name)) - .collect(); - - if !unavailable_tracked_bundles.is_empty() { - tracing::warn!( - cluster_id = %cluster_id, - unavailable_tracked_bundles = ?unavailable_tracked_bundles, - "Some tracked bundles could not be loaded; skipping updates/removals for those bundles" - ); - } - - let mut bundle_versions: std::collections::HashMap< - String, - std::collections::HashMap, // key: managed(provider+id) or external(sha1) - > = std::collections::HashMap::new(); - let mut hidden_dependency_keys_by_bundle: std::collections::HashMap< - String, - std::collections::HashSet, - > = std::collections::HashMap::new(); - let mut hidden_explicit_keys_by_bundle: std::collections::HashMap< - String, - std::collections::HashSet, - > = std::collections::HashMap::new(); - - for bundle in &bundles { - let mut enabled_count = 0; - let mut disabled_count = 0; - let mut files_map = std::collections::HashMap::new(); - let mut hidden_dependency_keys = std::collections::HashSet::new(); - let mut hidden_explicit_keys = std::collections::HashSet::new(); - - for file in &bundle.manifest.files { - if !file.enabled { - disabled_count += 1; - continue; - } - enabled_count += 1; - - match &file.kind { - ModpackFileKind::Managed(box_) => { - let (pkg, version) = &**box_; - let key = managed_bundle_key(pkg.provider, &pkg.id); - tracing::trace!( - bundle_name = %bundle.manifest.name, - provider = %pkg.provider, - package_id = %pkg.id, - version_id = %version.version_id, - "Indexed managed bundle package" - ); - files_map.insert(key, (version.version_id.clone(), file.clone())); - if file.hidden { - hidden_explicit_keys.insert(managed_bundle_key(pkg.provider, &pkg.id)); - } - - // Dependencies that are not explicit files are treated as hidden mods - // for subscription inference. - for dep in &version.dependencies { - if let Some(dep_project_id) = &dep.project_id { - hidden_dependency_keys - .insert(managed_bundle_key(pkg.provider, dep_project_id)); - } - } - } - ModpackFileKind::External(ext) => { - let key = external_bundle_key(&ext.sha1); - tracing::trace!( - bundle_name = %bundle.manifest.name, - sha1 = %ext.sha1, - "Indexed external bundle package" - ); - files_map.insert(key, (ext.sha1.clone(), file.clone())); - if file.hidden { - hidden_explicit_keys.insert(external_bundle_key(&ext.sha1)); - } - } - } - } - - // If a dependency is also an explicit bundle file, don't treat it as an - // inferred hidden dependency. - for visible_key in files_map.keys() { - hidden_dependency_keys.remove(visible_key); - } - - tracing::debug!( - bundle_name = %bundle.manifest.name, - enabled_packages = %enabled_count, - disabled_packages = %disabled_count, - total_files = %bundle.manifest.files.len(), - "Indexed bundle" - ); - hidden_dependency_keys_by_bundle - .insert(bundle.manifest.name.clone(), hidden_dependency_keys); - hidden_explicit_keys_by_bundle.insert(bundle.manifest.name.clone(), hidden_explicit_keys); - bundle_versions.insert(bundle.manifest.name.clone(), files_map); - } - - tracing::debug!( - total_indexed_bundles = %bundle_versions.len(), - "Finished indexing all bundle versions" - ); - - // Start with explicitly tracked bundles (packages installed via the bundle-aware path). - let mut subscribed_bundles: std::collections::HashSet = bundle_packages - .iter() - .filter_map(|bp| bp.bundle_name.clone()) - .collect(); - - // Infer subscriptions only from installed managed keys unique to a single bundle in this - // mc_version + loader set. Shared keys must not infer multiple bundles. - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - for bundle in &bundles { - let Some(bundle_files_map) = bundle_versions.get(&bundle.manifest.name) else { - continue; - }; - let hidden_keys = hidden_dependency_keys_by_bundle - .get(&bundle.manifest.name) - .cloned() - .unwrap_or_default(); - let hidden_explicit_keys = hidden_explicit_keys_by_bundle - .get(&bundle.manifest.name) - .cloned() - .unwrap_or_default(); - let inferable_keys = - collect_inferable_managed_keys(bundle_files_map, &hidden_keys, &hidden_explicit_keys); - candidate_keys_by_bundle.insert(bundle.manifest.name.clone(), inferable_keys); - } - - let inferred_bundles = infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - &all_installed_managed_keys, - ); - for bundle_name in inferred_bundles { - if subscribed_bundles.contains(&bundle_name) { - continue; - } - tracing::debug!( - bundle_name = %bundle_name, - "Inferring bundle subscription from unique installed package match" - ); - subscribed_bundles.insert(bundle_name); - } - - let subscribed_bundle_names: Vec<&str> = bundles - .iter() - .filter(|bundle| subscribed_bundles.contains(&bundle.manifest.name)) - .map(|bundle| bundle.manifest.name.as_str()) - .collect(); - - tracing::debug!( - cluster_id = %cluster_id, - subscribed_bundles = ?subscribed_bundles, - "Bundles this cluster is subscribed to" - ); - - let overrides_map: std::collections::HashMap< - (String, String), - onelauncher_core::entity::cluster_bundle_overrides::OverrideType, - > = overrides - .iter() - .map(|o| { - ( - (o.bundle_name.clone(), o.package_id.clone()), - o.override_type.clone(), - ) - }) - .collect(); - - let mut updates_available = Vec::new(); - let mut removals_available = Vec::new(); - let mut skipped_no_package_id = 0; - let mut skipped_no_version_id = 0; - let mut skipped_no_provider = 0; - let mut skipped_unavailable_bundle = 0; - let mut not_in_bundle = 0; - - for bundle_pkg in &bundle_packages { - let Some(ref pkg_id) = bundle_pkg.package_id else { - skipped_no_package_id += 1; - tracing::debug!( - package_hash = %bundle_pkg.package_hash, - "Skipping package: missing package_id" - ); - continue; - }; - let Some(ref installed_version_id) = bundle_pkg.bundle_version_id else { - skipped_no_version_id += 1; - tracing::debug!( - package_hash = %bundle_pkg.package_hash, - package_id = %pkg_id, - "Skipping package: missing bundle_version_id" - ); - continue; - }; - - let installed_key = if pkg_id == &bundle_pkg.package_hash { - external_bundle_key(&bundle_pkg.package_hash) - } else { - let Some(installed_pkg) = all_linked_by_hash.get(&bundle_pkg.package_hash) else { - skipped_no_provider += 1; - tracing::debug!( - package_hash = %bundle_pkg.package_hash, - package_id = %pkg_id, - "Skipping package: missing linked package metadata for provider-aware matching" - ); - continue; - }; - managed_bundle_key(installed_pkg.provider, pkg_id) - }; - - if let Some(ref bundle_name) = bundle_pkg.bundle_name { - if unavailable_tracked_bundles.contains(bundle_name) { - skipped_unavailable_bundle += 1; - tracing::warn!( - package_id = %pkg_id, - package_hash = %bundle_pkg.package_hash, - bundle_name = %bundle_name, - "Skipping package update check because tracked bundle metadata is unavailable" - ); - continue; - } - - let mut matched_target: Option<(String, String, ModpackFile)> = - bundle_versions.get(bundle_name).and_then(|files_map| { - files_map - .get(&installed_key) - .map(|(new_version_id, new_file)| { - ( - bundle_name.clone(), - new_version_id.clone(), - new_file.clone(), - ) - }) - }); - - // Bundles are combinable: if a package moved out of the tracked bundle but is still in - // any subscribed bundle, do not remove it. - if matched_target.is_none() { - for candidate_bundle_name in &subscribed_bundle_names { - if *candidate_bundle_name == bundle_name.as_str() { - continue; - } - if let Some((new_version_id, new_file)) = bundle_versions - .get(*candidate_bundle_name) - .and_then(|files_map| files_map.get(&installed_key)) - { - matched_target = Some(( - (*candidate_bundle_name).to_string(), - new_version_id.clone(), - new_file.clone(), - )); - break; - } - } - } - - if let Some((resolved_bundle_name, new_version_id, new_file)) = matched_target { - tracing::debug!( - package_id = %pkg_id, - installed_version = %installed_version_id, - bundle_version = %new_version_id, - bundle_name = %resolved_bundle_name, - "Checking bundle package for updates" - ); - if installed_version_id == &new_version_id { - tracing::debug!( - package_id = %pkg_id, - version = %installed_version_id, - "Bundle package is up to date" - ); - } else { - tracing::info!( - package_id = %pkg_id, - installed_version = %installed_version_id, - bundle_version = %new_version_id, - bundle_name = %resolved_bundle_name, - "Update available for bundle package" - ); - updates_available.push(BundlePackageUpdate { - cluster_id, - installed_package_hash: bundle_pkg.package_hash.clone(), - installed_version_id: installed_version_id.clone(), - bundle_name: resolved_bundle_name, - new_version_id, - new_file, - installed_at: bundle_pkg.installed_at.unwrap_or_else(Utc::now), - }); - } - } else { - not_in_bundle += 1; - tracing::info!( - package_id = %pkg_id, - package_hash = %bundle_pkg.package_hash, - bundle_name = %bundle_name, - "Package no longer in any subscribed bundle, marking for removal" - ); - removals_available.push(BundlePackageRemoval { - cluster_id, - package_hash: bundle_pkg.package_hash.clone(), - package_id: pkg_id.clone(), - bundle_name: bundle_name.clone(), - installed_at: bundle_pkg.installed_at.unwrap_or_else(Utc::now), - }); - } - } else { - tracing::debug!( - package_id = %pkg_id, - package_hash = %bundle_pkg.package_hash, - "Package not found in any bundle (no bundle name tracked)" - ); - } - } - - // Filter out updates for packages the user has explicitly removed. - // Without this, apply_single_update would try to replace a package that no longer exists. - updates_available.retain(|u| { - let file_id = match &u.new_file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - !matches!( - overrides_map.get(&(u.bundle_name.clone(), file_id)), - Some(onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Removed) - ) - }); - - let mut additions_available = Vec::new(); - let mut planned_addition_keys = all_installed_managed_keys.clone(); - for hash in &all_installed_external_hashes { - planned_addition_keys.insert(external_bundle_key(hash)); - } - - for bundle in &bundles { - if !subscribed_bundles.contains(&bundle.manifest.name) { - tracing::debug!( - bundle_name = %bundle.manifest.name, - "Skipping bundle - not subscribed" - ); - continue; - } - - for file in &bundle.manifest.files { - if !file.enabled { - continue; - } - - let file_key = match &file.kind { - ModpackFileKind::Managed(box_) => managed_bundle_key(box_.0.provider, &box_.0.id), - ModpackFileKind::External(ext) => external_bundle_key(&ext.sha1), - }; - if planned_addition_keys.contains(&file_key) { - continue; - } - - let file_id = match &file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - - // Check user overrides - if let Some(override_type) = - overrides_map.get(&(bundle.manifest.name.clone(), file_id.clone())) - && *override_type - == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Removed - { - tracing::info!( - bundle_name = %bundle.manifest.name, - file_id = %file_id, - "Skipping package addition due to user override 'Removed'" - ); - continue; - } - - tracing::info!( - bundle_name = %bundle.manifest.name, - file_id = %file_id, - "New package found in subscribed bundle, marking for addition" - ); - additions_available.push(BundlePackageAddition { - cluster_id, - bundle_name: bundle.manifest.name.clone(), - new_file: file.clone(), - }); - planned_addition_keys.insert(file_key); - } - } - - tracing::info!( - cluster_id = %cluster_id, - total_packages_checked = %bundle_packages.len(), - updates_found = %updates_available.len(), - removals_found = %removals_available.len(), - additions_found = %additions_available.len(), - skipped_no_package_id = %skipped_no_package_id, - skipped_no_version_id = %skipped_no_version_id, - skipped_no_provider = %skipped_no_provider, - skipped_unavailable_bundle = %skipped_unavailable_bundle, - not_in_bundle = %not_in_bundle, - "Bundle update check completed" - ); - - Ok(BundleUpdateCheckResult { - cluster_id, - updates_available, - removals_available, - additions_available, - checked_at: Utc::now(), - }) -} - -#[allow(clippy::too_many_lines)] -pub async fn get_bundles_with_update_status( - cluster_id: ClusterId, -) -> LauncherResult> { - let cluster = onelauncher_core::api::cluster::dao::get_cluster_by_id(cluster_id) - .await? - .ok_or_else(|| { - onelauncher_core::error::LauncherError::from(anyhow::anyhow!( - "cluster with id {} not found", - cluster_id - )) - })?; - - let bundle_packages = bundle_dao::get_bundle_packages_for_cluster(cluster_id).await?; - let all_linked_packages = api::packages::dao::get_linked_packages(&cluster).await?; - let all_linked_by_hash: std::collections::HashMap< - String, - &onelauncher_core::entity::packages::Model, - > = all_linked_packages - .iter() - .map(|pkg| (pkg.hash.clone(), pkg)) - .collect(); - - let mut installed_map: std::collections::HashMap = - std::collections::HashMap::new(); - for bundle_pkg in &bundle_packages { - let Some(pkg_id) = &bundle_pkg.package_id else { - continue; - }; - - let key = if pkg_id == &bundle_pkg.package_hash { - external_bundle_key(&bundle_pkg.package_hash) - } else if let Some(installed_pkg) = all_linked_by_hash.get(&bundle_pkg.package_hash) { - managed_bundle_key(installed_pkg.provider, pkg_id) - } else { - continue; - }; - - installed_map.insert(key, bundle_pkg); - } - - let overrides = bundle_dao::get_bundle_overrides(cluster_id).await?; - let overrides_map: std::collections::HashMap< - (String, String), - onelauncher_core::entity::cluster_bundle_overrides::OverrideType, - > = overrides - .iter() - .map(|o| { - ( - (o.bundle_name.clone(), o.package_id.clone()), - o.override_type.clone(), - ) - }) - .collect(); - - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await?; - - let mut results = Vec::new(); - - for bundle in bundles { - let mut files_with_status = Vec::new(); - let mut has_updates = false; - - for file in &bundle.manifest.files { - let update_status = match &file.kind { - ModpackFileKind::Managed(box_) => { - let (pkg, version) = &**box_; - let key = managed_bundle_key(pkg.provider, &pkg.id); - if let Some(installed) = installed_map.get(&key) { - let installed_version = - installed.bundle_version_id.as_deref().unwrap_or(""); - if installed_version == version.version_id { - FileUpdateStatus::UpToDate - } else { - has_updates = true; - FileUpdateStatus::UpdateAvailable { - installed_version_id: installed_version.to_string(), - new_version_id: version.version_id.clone(), - } - } - } else { - let key = (bundle.manifest.name.clone(), pkg.id.clone()); - if matches!( - overrides_map.get(&key), - Some(onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Removed) - ) { - FileUpdateStatus::RemovedByUser - } else { - FileUpdateStatus::NotInstalled - } - } - } - ModpackFileKind::External(ext) => { - let key = external_bundle_key(&ext.sha1); - if installed_map.contains_key(&key) { - FileUpdateStatus::UpToDate - } else { - let key = (bundle.manifest.name.clone(), ext.sha1.clone()); - if matches!( - overrides_map.get(&key), - Some(onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Removed) - ) { - FileUpdateStatus::RemovedByUser - } else { - FileUpdateStatus::NotInstalled - } - } - } - }; - - files_with_status.push(FileWithUpdateStatus { - file: file.clone(), - status: update_status, - }); - } - - results.push(BundleWithUpdateStatus { - bundle, - files: files_with_status, - has_updates, - }); - } - - Ok(results) -} - -#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize, specta::Type)] -pub enum FileUpdateStatus { - NotInstalled, - RemovedByUser, - UpToDate, - UpdateAvailable { - installed_version_id: String, - new_version_id: String, - }, -} - -#[taurpc::ipc_type] -pub struct FileWithUpdateStatus { - pub file: ModpackFile, - pub status: FileUpdateStatus, -} - -#[taurpc::ipc_type] -pub struct BundleWithUpdateStatus { - pub bundle: ModpackArchive, - pub files: Vec, - pub has_updates: bool, -} - -#[allow(clippy::too_many_lines)] -async fn apply_single_update( - update: &BundlePackageUpdate, - overrides: &[onelauncher_core::entity::cluster_bundle_overrides::Model], -) -> LauncherResult { - tracing::info!( - cluster_id = %update.cluster_id, - package_hash = %update.installed_package_hash, - bundle_name = %update.bundle_name, - old_version = %update.installed_version_id, - new_version = %update.new_version_id, - "Applying bundle package update" - ); - - let cluster = api::cluster::dao::get_cluster_by_id(update.cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("cluster with id {} not found", update.cluster_id))?; - - // Download the new version first. If it fails the old package remains untouched. - let model = match &update.new_file.kind { - ModpackFileKind::Managed(box_) => { - let (pkg, version) = &**box_; - tracing::debug!( - package_id = %pkg.id, - version_id = %version.version_id, - "Downloading new managed package version" - ); - api::packages::download_package(pkg, version, None, None).await? - } - ModpackFileKind::External(ext_package) => { - tracing::debug!( - url = %ext_package.url, - sha1 = %ext_package.sha1, - "Downloading new external package version" - ); - api::packages::download_external_package(ext_package, &cluster, None, Some(true), None) - .await? - .ok_or_else(|| anyhow::anyhow!("Failed to download external package"))? - } - }; - - // Link and track the new package BEFORE removing the old one. - // If linking or tracking fails, the old package remains untouched. - tracing::debug!( - package_hash = %model.hash, - "Linking new package to cluster" - ); - api::packages::link_package(&model, &cluster, Some(true)).await?; - - let version_id = match &update.new_file.kind { - ModpackFileKind::Managed(box_) => box_.1.version_id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - - tracing::debug!( - package_hash = %model.hash, - bundle_name = %update.bundle_name, - "Tracking new package as bundle package" - ); - api::packages::bundle_dao::track_bundle_package( - &cluster, - &model, - &update.bundle_name, - &version_id, - ) - .await?; - - // Check if this package should be disabled based on user overrides (passed in from caller) - let file_id = match &update.new_file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - - let should_be_disabled = overrides.iter().any(|o| { - o.bundle_name == update.bundle_name - && o.package_id == file_id - && o.override_type - == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Disabled - }); - - if should_be_disabled { - if model.file_name.ends_with(".disabled") { - tracing::debug!( - package_hash = %model.hash, - bundle_name = %update.bundle_name, - "Updated package is already disabled; skipping toggle" - ); - } else { - tracing::info!( - package_hash = %model.hash, - bundle_name = %update.bundle_name, - "Re-applying disabled state to updated package" - ); - // toggle_package internally disables the mod if it's currently enabled - api::packages::toggle_package(update.cluster_id, model.hash.clone()).await?; - } - } - - // If the replacement resolves to the same package hash, there is nothing to remove. - // Removing here would unlink the package we just kept/retagged. - if model.hash == update.installed_package_hash { - tracing::debug!( - package_hash = %model.hash, - "Update resolved to the same package hash; skipping old-package removal" - ); - return Ok(model); - } - - // Remove the old package only after the new one is fully installed and tracked. - // Pass record_override=false: this is a system-initiated replacement, not a user removal. - tracing::debug!( - package_hash = %update.installed_package_hash, - "Removing old package" - ); - api::packages::remove_package( - update.cluster_id, - update.installed_package_hash.clone(), - false, - ) - .await?; - - tracing::info!( - new_hash = %model.hash, - "Successfully updated package" - ); - Ok(model) -} - -async fn apply_single_removal(removal: &BundlePackageRemoval) -> LauncherResult<()> { - tracing::info!( - cluster_id = %removal.cluster_id, - package_hash = %removal.package_hash, - package_id = %removal.package_id, - bundle_name = %removal.bundle_name, - "Removing package that was removed from bundle" - ); - - tracing::debug!( - package_hash = %removal.package_hash, - "Removing package from cluster" - ); - // Pass record_override=false: removal is bundle-driven (publisher dropped the package), - // not a user choice. If the publisher re-adds it later, it should be reinstalled. - api::packages::remove_package(removal.cluster_id, removal.package_hash.clone(), false).await?; - - tracing::info!( - package_id = %removal.package_id, - package_hash = %removal.package_hash, - "Successfully removed package that was removed from bundle" - ); - - Ok(()) -} - -#[allow(clippy::too_many_lines)] -async fn apply_single_addition( - addition: &BundlePackageAddition, - overrides: &[onelauncher_core::entity::cluster_bundle_overrides::Model], -) -> LauncherResult { - let file_id = match &addition.new_file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - - tracing::info!( - cluster_id = %addition.cluster_id, - bundle_name = %addition.bundle_name, - file_id = %file_id, - "Installing new package from bundle" - ); - - let cluster = api::cluster::dao::get_cluster_by_id(addition.cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("cluster with id {} not found", addition.cluster_id))?; - - match &addition.new_file.kind { - ModpackFileKind::Managed(box_) => { - let (pkg, version) = &**box_; - tracing::debug!( - package_id = %pkg.id, - version_id = %version.version_id, - "Downloading new managed package" - ); - let model = api::packages::download_package(pkg, version, None, None).await?; - - tracing::debug!( - package_hash = %model.hash, - "Linking new package to cluster" - ); - api::packages::link_package(&model, &cluster, Some(true)).await?; - - tracing::debug!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Tracking new package as bundle package" - ); - api::packages::bundle_dao::track_bundle_package( - &cluster, - &model, - &addition.bundle_name, - &version.version_id, - ) - .await?; - - tracing::info!( - package_id = %pkg.id, - package_hash = %model.hash, - "Successfully installed new managed package from bundle" - ); - - let should_be_disabled = overrides.iter().any(|o| { - o.bundle_name == addition.bundle_name - && o.package_id == file_id - && o.override_type == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Disabled - }); - - if should_be_disabled { - if model.file_name.ends_with(".disabled") { - tracing::debug!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Added package is already disabled; skipping toggle" - ); - } else { - tracing::info!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Applying disabled state to newly added package due to overrides" - ); - api::packages::toggle_package(addition.cluster_id, model.hash.clone()).await?; - } - } - - Ok(model) - } - ModpackFileKind::External(ext_package) => { - tracing::debug!( - url = %ext_package.url, - sha1 = %ext_package.sha1, - "Downloading new external package" - ); - let model = api::packages::download_external_package( - ext_package, - &cluster, - None, - Some(true), - None, - ) - .await? - .ok_or_else(|| anyhow::anyhow!("Failed to download external package"))?; - - tracing::debug!( - package_hash = %model.hash, - "Linking new external package to cluster" - ); - api::packages::link_package(&model, &cluster, Some(true)).await?; - - tracing::debug!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Tracking new external package as bundle package" - ); - api::packages::bundle_dao::track_bundle_package( - &cluster, - &model, - &addition.bundle_name, - &ext_package.sha1, - ) - .await?; - - tracing::info!( - url = %ext_package.url, - package_hash = %model.hash, - "Successfully installed new external package from bundle" - ); - - let should_be_disabled = overrides.iter().any(|o| { - o.bundle_name == addition.bundle_name - && o.package_id == file_id - && o.override_type == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Disabled - }); - - if should_be_disabled { - if model.file_name.ends_with(".disabled") { - tracing::debug!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Added external package is already disabled; skipping toggle" - ); - } else { - tracing::info!( - package_hash = %model.hash, - bundle_name = %addition.bundle_name, - "Applying disabled state to newly added package due to overrides" - ); - api::packages::toggle_package(addition.cluster_id, model.hash.clone()).await?; - } - } - - Ok(model) - } - } -} - -#[taurpc::ipc_type] -pub struct ApplyBundleUpdatesResult { - pub updates_applied: Vec, - pub removals_applied: Vec, - pub additions_applied: Vec, - pub updates_failed: Vec, - pub removals_failed: Vec, - pub additions_failed: Vec, -} - -#[allow(clippy::too_many_lines)] -pub async fn apply_bundle_updates( - cluster_id: ClusterId, -) -> LauncherResult { - // Hold a per-cluster lock for the duration of the update to prevent concurrent - // apply calls on the same cluster from racing each other. - let cluster_lock = get_cluster_lock(cluster_id); - let _guard = cluster_lock.lock().await; - - // Fetch overrides once: shared by both the check and the apply pass. - let cluster_overrides = api::packages::bundle_dao::get_bundle_overrides(cluster_id).await?; - let check_result = check_bundle_updates_inner(cluster_id, &cluster_overrides).await?; - - let mut updates_applied = Vec::new(); - let mut removals_applied = Vec::new(); - let mut additions_applied = Vec::new(); - let mut updates_failed = Vec::new(); - let mut removals_failed = Vec::new(); - let mut additions_failed = Vec::new(); - - for removal in check_result.removals_available { - match apply_single_removal(&removal).await { - Ok(()) => { - removals_applied.push(removal); - } - Err(e) => { - let msg = format!( - "Failed to remove bundle package '{}': {}", - removal.package_id, e - ); - send_error!("{}", msg); - removals_failed.push(msg); - } - } - } - - for update in check_result.updates_available { - match apply_single_update(&update, &cluster_overrides).await { - Ok(_) => { - updates_applied.push(update); - } - Err(e) => { - let msg = format!("Failed to update bundle package: {e}"); - send_error!("{}", msg); - updates_failed.push(msg); - } - } - } - - for addition in check_result.additions_available { - let file_id = match &addition.new_file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - match apply_single_addition(&addition, &cluster_overrides).await { - Ok(_) => { - additions_applied.push(addition); - } - Err(e) => { - let msg = format!("Failed to install new bundle package '{file_id}': {e}"); - send_error!("{}", msg); - additions_failed.push(msg); - } - } - } - - // Always re-extract overrides for every subscribed bundle, regardless of whether any - // package was added/updated/removed this run. - // - // Overrides (config files, compatibility JSONs, resource packs, etc.) can change in a - // bundle WITHOUT any package version changing — e.g. publishing a JSON that makes an - // already-installed mod compatible with a new MC version. Gating extraction on - // package-level changes (the previous behaviour) silently skipped these override-only - // updates, so users who already had the mods installed never received the new override. - if let Err(e) = extract_overrides_for_subscribed_bundles(cluster_id).await { - send_error!("Failed to extract bundle overrides for cluster {cluster_id}: {e}"); - } - - let package_operation_failed = - !updates_failed.is_empty() || !removals_failed.is_empty() || !additions_failed.is_empty(); - - if package_operation_failed { - tracing::warn!( - cluster_id = %cluster_id, - "Skipping loader version sync because one or more bundle package operations failed" - ); - } else if let Err(e) = sync_cluster_loader_version_from_bundles(cluster_id).await { - send_error!("Failed to sync cluster loader version from bundles: {e}"); - } - - Ok(ApplyBundleUpdatesResult { - updates_applied, - removals_applied, - additions_applied, - updates_failed, - removals_failed, - additions_failed, - }) -} - -/// Re-extracts override files (configs, compatibility JSONs, resource packs, etc.) for -/// every bundle the cluster is subscribed to. -/// -/// This runs on every bundle sync — overrides can change independently of package -/// versions, so it must NOT be gated behind package-level changes. Existing on-disk files -/// are preserved (see [`copy_overrides_folder_no_overwrite`]) so user customizations and -/// already-correct files are not clobbered; only missing override files are written. -async fn extract_overrides_for_subscribed_bundles(cluster_id: ClusterId) -> LauncherResult<()> { - let Some(cluster) = api::cluster::dao::get_cluster_by_id(cluster_id).await? else { - tracing::warn!( - cluster_id = %cluster_id, - "Skipping override extraction because cluster no longer exists" - ); - return Ok(()); - }; - - let bundle_packages = bundle_dao::get_bundle_packages_for_cluster(cluster_id).await?; - let all_linked_packages = api::packages::dao::get_linked_packages(&cluster).await?; - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await?; - - let all_installed_managed_keys = collect_all_installed_managed_keys(&all_linked_packages); - let subscribed_bundles = infer_subscribed_bundles_for_loader_sync( - &bundle_packages, - &bundles, - &all_installed_managed_keys, - ); - - for bundle in &bundles { - if !subscribed_bundles.contains(&bundle.manifest.name) { - continue; - } - - tracing::debug!( - bundle_name = %bundle.manifest.name, - cluster_id = %cluster_id, - "Re-extracting overrides for subscribed bundle" - ); - - if let Err(e) = - onelauncher_core::api::packages::modpack::mrpack::copy_overrides_folder_no_overwrite( - &cluster, - &bundle.path, - ) - .await - { - send_error!( - "Failed to extract overrides from bundle '{}': {}", - bundle.manifest.name, - e - ); - } - } - - Ok(()) -} - -/// Migrates non-bundle (custom) packages from `source_cluster_id` to `target_cluster_id`. -/// -/// For packages tracked on Modrinth or `CurseForge`, attempts to find and install a version -/// compatible with the target cluster's MC version. Packages with no provider match are -/// returned as a list of file names to copy verbatim. -pub async fn migrate_non_bundle_packages( - source_cluster_id: ClusterId, - target_cluster_id: ClusterId, -) -> LauncherResult> { - let source = api::cluster::dao::get_cluster_by_id(source_cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("source cluster {} not found", source_cluster_id))?; - let target = api::cluster::dao::get_cluster_by_id(target_cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("target cluster {} not found", target_cluster_id))?; - - // All packages linked to source cluster. - let all_linked = api::packages::dao::get_linked_packages(&source).await?; - - // Set of hashes that are bundle-tracked. - let bundle_packages = bundle_dao::get_bundle_packages_for_cluster(source_cluster_id).await?; - let bundle_hashes: HashSet<&str> = bundle_packages - .iter() - .map(|bp| bp.package_hash.as_str()) - .collect(); - - let non_bundle: Vec<_> = all_linked - .iter() - .filter(|p| { - !bundle_hashes.contains(p.hash.as_str()) && VERSIONED_TYPES.contains(&p.package_type) - }) - .collect(); - - let mut fallback_file_names = Vec::new(); - - for pkg in non_bundle { - if matches!(pkg.provider, Provider::Modrinth | Provider::CurseForge) { - let versions = pkg - .provider - .get_versions_paginated( - &pkg.package_id, - Some(target.mc_version.clone()), - Some(target.mc_loader), - 0, - 1, - ) - .await; - - match versions { - Ok(page) if !page.items.is_empty() => { - let version = &page.items[0]; - match pkg.provider.get(&pkg.package_id).await { - Ok(managed_pkg) => { - match api::packages::download_package(&managed_pkg, version, None, None) - .await - { - Ok(dl) => { - if let Err(e) = - api::packages::link_package(&dl, &target, Some(true)).await - { - tracing::warn!( - package_id = %pkg.package_id, - "Failed to link migrated non-bundle package: {e}" - ); - fallback_file_names.push(pkg.file_name.clone()); - } - } - Err(e) => { - tracing::warn!( - package_id = %pkg.package_id, - "Failed to download migrated non-bundle package: {e}" - ); - fallback_file_names.push(pkg.file_name.clone()); - } - } - } - Err(e) => { - tracing::warn!( - package_id = %pkg.package_id, - "Failed to fetch package metadata for migration: {e}" - ); - fallback_file_names.push(pkg.file_name.clone()); - } - } - } - _ => { - // No compatible version found — fall back to file copy. - fallback_file_names.push(pkg.file_name.clone()); - } - } - } else { - // Local/unknown provider — always file-copy. - fallback_file_names.push(pkg.file_name.clone()); - } - } - - Ok(fallback_file_names) -} - -/// Migrates bundle packages from `source_cluster_id` to `target_cluster_id` by: -/// 1. Detecting which bundles the source is subscribed to. -/// 2. Mapping those to equivalent bundles for the target's MC version (by matching the -/// category suffix, e.g. `[HUD]`). -/// 3. Copying the source's bundle overrides (disabled/removed) to the target, translating -/// bundle names to the target version's equivalent. -/// 4. Installing all enabled packages from the matched bundles into the target cluster, -/// respecting those overrides. -#[allow(clippy::too_many_lines)] -pub async fn migrate_bundles_to_cluster( - source_cluster_id: ClusterId, - target_cluster_id: ClusterId, -) -> LauncherResult<()> { - let cluster_lock = get_cluster_lock(target_cluster_id); - let _guard = cluster_lock.lock().await; - - // 1. Find which bundle names the source cluster is explicitly subscribed to. - let source_bundle_packages = - bundle_dao::get_bundle_packages_for_cluster(source_cluster_id).await?; - let source_subscribed_names: HashSet = source_bundle_packages - .iter() - .filter_map(|bp| bp.bundle_name.clone()) - .collect(); - - if source_subscribed_names.is_empty() { - tracing::debug!( - source_cluster_id = %source_cluster_id, - "Source cluster has no tracked bundle subscriptions; skipping bundle migration" - ); - return Ok(()); - } - - let target_cluster = api::cluster::dao::get_cluster_by_id(target_cluster_id) - .await? - .ok_or_else(|| anyhow::anyhow!("target cluster {} not found", target_cluster_id))?; - - // 2. Fetch bundles available for the target version. - let target_bundles = BundlesManager::get() - .await - .get_bundles_for(&target_cluster.mc_version, target_cluster.mc_loader) - .await?; - - // Build a map: source bundle name → target bundle name, matched by category suffix - // (the `[Category]` part at the end of the name, e.g. `[HUD]`). - let bundle_name_map: HashMap = target_bundles - .iter() - .filter_map(|bundle| { - let target_name = &bundle.manifest.name; - let matched_src = source_subscribed_names.iter().find(|src_name| { - src_name - .rfind('[') - .is_some_and(|i| target_name.ends_with(&src_name[i..])) - })?; - Some((matched_src.clone(), target_name.clone())) - }) - .collect(); - - if bundle_name_map.is_empty() { - tracing::debug!( - source_cluster_id = %source_cluster_id, - target_cluster_id = %target_cluster_id, - "No matching target bundles found for source subscriptions; skipping bundle migration" - ); - return Ok(()); - } - - tracing::info!( - source_cluster_id = %source_cluster_id, - target_cluster_id = %target_cluster_id, - bundle_map = ?bundle_name_map, - "Migrating bundles to target cluster" - ); - - // 3. Copy source overrides to target, translating bundle names to the target version. - let source_overrides = bundle_dao::get_bundle_overrides(source_cluster_id).await?; - for ov in &source_overrides { - if let Some(target_bundle_name) = bundle_name_map.get(&ov.bundle_name) { - let _ = bundle_dao::save_bundle_override( - target_cluster_id, - target_bundle_name, - &ov.package_id, - ov.override_type.clone(), - ) - .await; - } - } - - // 4. Install all enabled packages from matched target bundles. - let target_overrides = bundle_dao::get_bundle_overrides(target_cluster_id).await?; - let mut additions_applied: HashSet = HashSet::new(); - - for bundle in &target_bundles { - if !bundle_name_map.values().any(|n| n == &bundle.manifest.name) { - continue; - } - for file in &bundle.manifest.files { - if !file.enabled { - continue; - } - let file_id = match &file.kind { - ModpackFileKind::Managed(box_) => box_.0.id.clone(), - ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - if target_overrides.iter().any(|o| { - o.bundle_name == bundle.manifest.name - && o.package_id == file_id - && o.override_type - == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Removed - }) { - tracing::info!( - bundle_name = %bundle.manifest.name, - file_id = %file_id, - "Skipping package migration due to user override 'Removed'" - ); - continue; - } - let addition = BundlePackageAddition { - cluster_id: target_cluster_id, - bundle_name: bundle.manifest.name.clone(), - new_file: file.clone(), - }; - match apply_single_addition(&addition, &target_overrides).await { - Ok(_) => { - additions_applied.insert(bundle.manifest.name.clone()); - } - Err(e) => { - send_error!( - "Failed to install bundle package '{}' during migration: {}", - file_id, - e - ); - } - } - } - } - - // Re-extract bundle overrides (configs, resource packs, etc.) for affected bundles. - for bundle in &target_bundles { - if additions_applied.contains(&bundle.manifest.name) - && let Err(e) = - onelauncher_core::api::packages::modpack::mrpack::copy_overrides_folder_no_overwrite( - &target_cluster, - &bundle.path, - ) - .await - { - send_error!( - "Failed to extract overrides from bundle '{}' during migration: {}", - bundle.manifest.name, - e - ); - } - } - - // Ensure disabled overrides are reflected on disk. Packages may have been pre-installed - // by startup bundle sync (before overrides were copied), so we retroactively disable any - // that the user had disabled in the source cluster. - let current_overrides = bundle_dao::get_bundle_overrides(target_cluster_id).await?; - if !current_overrides.is_empty() { - let target_bundle_packages = - bundle_dao::get_bundle_packages_for_cluster(target_cluster_id).await?; - let all_linked = api::packages::dao::get_linked_packages(&target_cluster).await?; - let linked_by_hash: HashMap<&str, &onelauncher_core::entity::packages::Model> = - all_linked.iter().map(|p| (p.hash.as_str(), p)).collect(); - - for bp in &target_bundle_packages { - let Some(bundle_name) = &bp.bundle_name else { - continue; - }; - let Some(package_id) = &bp.package_id else { - continue; - }; - let should_be_disabled = current_overrides.iter().any(|o| { - &o.bundle_name == bundle_name - && &o.package_id == package_id - && o.override_type - == onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Disabled - }); - let Some(pkg) = linked_by_hash.get(bp.package_hash.as_str()) else { - continue; - }; - - // Keep override metadata and on-disk state aligned after migration: - // - if file is already `.disabled`, ensure Disabled override exists - // - if Disabled override exists but file is enabled, disable it on disk - if pkg.file_name.ends_with(".disabled") { - if !should_be_disabled - && let Err(e) = bundle_dao::save_bundle_override( - target_cluster_id, - bundle_name, - package_id, - onelauncher_core::entity::cluster_bundle_overrides::OverrideType::Disabled, - ) - .await - { - tracing::warn!( - package_id = %package_id, - bundle_name = %bundle_name, - "Failed to persist disabled override for migrated package: {e}" - ); - } - continue; - } - - if should_be_disabled - && let Err(e) = - api::packages::toggle_package(target_cluster_id, bp.package_hash.clone()).await - { - tracing::warn!( - package_id = %package_id, - bundle_name = %bundle_name, - "Failed to disable migrated bundle package: {e}" - ); - } - } - } - - Ok(()) -} - -#[cfg(test)] -mod inference_tests { - use std::collections::{HashMap, HashSet}; - - use super::{ - compare_version_like, infer_bundle_names_from_unique_installed_keys, - select_highest_loader_version, - }; - - fn set(values: &[&str]) -> HashSet { - values.iter().map(|value| (*value).to_string()).collect() - } - - #[test] - fn shared_only_installed_key_does_not_infer_any_bundle() { - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - candidate_keys_by_bundle.insert("QoL".to_string(), set(&["m:modrinth:overflowparticles"])); - candidate_keys_by_bundle.insert( - "SkyBlock".to_string(), - set(&["m:modrinth:overflowparticles"]), - ); - - let inferred = infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - &set(&["m:modrinth:overflowparticles"]), - ); - assert!(inferred.is_empty()); - } - - #[test] - fn unique_installed_key_infers_only_its_bundle() { - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - candidate_keys_by_bundle.insert( - "QoL".to_string(), - set(&["m:modrinth:overflowparticles", "m:modrinth:autotip"]), - ); - candidate_keys_by_bundle.insert( - "SkyBlock".to_string(), - set(&["m:modrinth:overflowparticles"]), - ); - - let inferred = infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - &set(&["m:modrinth:overflowparticles", "m:modrinth:autotip"]), - ); - assert_eq!(inferred, set(&["QoL"])); - } - - #[test] - fn explicit_subscriptions_remain_even_without_unique_matches() { - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - candidate_keys_by_bundle.insert("QoL".to_string(), set(&["m:modrinth:overflowparticles"])); - candidate_keys_by_bundle.insert( - "SkyBlock".to_string(), - set(&["m:modrinth:overflowparticles"]), - ); - - let inferred = infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - &set(&["m:modrinth:overflowparticles"]), - ); - - let mut subscribed = set(&["SkyBlock"]); - subscribed.extend(inferred); - assert_eq!(subscribed, set(&["SkyBlock"])); - } - - #[test] - fn single_bundle_can_still_be_inferred() { - let mut candidate_keys_by_bundle: HashMap> = HashMap::new(); - candidate_keys_by_bundle.insert( - "QoL".to_string(), - set(&["m:modrinth:overflowparticles", "m:modrinth:autotip"]), - ); - - let inferred = infer_bundle_names_from_unique_installed_keys( - &candidate_keys_by_bundle, - &set(&["m:modrinth:overflowparticles"]), - ); - assert_eq!(inferred, set(&["QoL"])); - } - - #[test] - fn loader_version_selects_highest_numeric_value() { - let selected = select_highest_loader_version(["0.16.8", "0.16.12", "0.15.11"]); - assert_eq!(selected.as_deref(), Some("0.16.12")); - } - - #[test] - fn loader_version_ignores_empty_values() { - let selected = select_highest_loader_version(["", " ", "0.16.10"]); - assert_eq!(selected.as_deref(), Some("0.16.10")); - } - - #[test] - fn loader_version_comparator_treats_missing_zero_segments_as_equal() { - assert_eq!( - compare_version_like("0.16", "0.16.0"), - std::cmp::Ordering::Equal - ); - } -} - -#[cfg(test)] -#[path = "bundle_updates_test.rs"] -mod bundle_updates_test; diff --git a/apps/oneclient/desktop/src/oneclient/bundle_updates_test.rs b/apps/oneclient/desktop/src/oneclient/bundle_updates_test.rs deleted file mode 100644 index 150d06b8..00000000 --- a/apps/oneclient/desktop/src/oneclient/bundle_updates_test.rs +++ /dev/null @@ -1,584 +0,0 @@ -#[cfg(test)] -mod tests { - use onelauncher_core::entity::loader::GameLoader; - use onelauncher_core::store::{Core, CoreOptions}; - - use tokio::fs; - - use crate::oneclient::bundle_updates::{apply_bundle_updates, check_bundle_updates}; - use crate::oneclient::bundles::BundlesManager; - use onelauncher_core::api::cluster::{create_cluster, dao}; - use onelauncher_core::utils::DatabaseModelExt; - - // We only run this if we ignore it by default, since it hits the network and modifies DB - // but we can run it explicitly. - #[tokio::test] - #[ignore = "touches true files and takes long"] - #[allow(clippy::too_many_lines, clippy::items_after_statements)] - async fn test_bundle_updates_e2e() { - // 1. Initialize DB and paths - Core::initialize(CoreOptions::default()).await.unwrap(); - - // 2. Create a fresh cluster - let cluster_name = format!( - "Bundle Test {}", - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - ); - let cluster = create_cluster(&cluster_name, "1.21.1", GameLoader::Fabric, None, None) - .await - .unwrap(); - - let cluster_dir = cluster.path().await.unwrap(); - - // Ensure BundlesManager is initialized and fetches remote bundles - println!("Loaded BundlesManager: {:#?}", BundlesManager::get().await); - let retrieved_bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await - .unwrap(); - println!( - "get_bundles_for manually returned: {} bundles", - retrieved_bundles.len() - ); - for b in &retrieved_bundles { - println!( - "Bundle '{}' has {} files", - b.manifest.name, - b.manifest.files.len() - ); - } - - // Subscribe the cluster to one of the bundles manually to trigger additions - use sea_orm::{ActiveModelTrait, Set}; - - let dummy_hash = uuid::Uuid::new_v4().to_string(); - let dummy_base_pkg = onelauncher_core::entity::packages::ActiveModel { - hash: Set(dummy_hash.clone()), - file_name: Set("dummy.jar".to_string()), - version_id: Set("dummy_version".to_string()), - display_name: Set("Dummy".to_string()), - display_version: Set("1.0.0".to_string()), - package_type: Set(onelauncher_core::entity::package::PackageType::Mod), - provider: Set(onelauncher_core::entity::package::Provider::Modrinth), - package_id: Set("dummy_id".to_string()), - mc_versions: Set(onelauncher_core::entity::utility::DbVec(vec![ - "1.21.1".to_string(), - ])), - mc_loader: Set(onelauncher_core::entity::utility::DbVec(vec![ - onelauncher_core::entity::loader::GameLoader::Fabric, - ])), - published_at: Set(chrono::Utc::now()), - ..Default::default() - }; - dummy_base_pkg - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - let dummy_pkg = onelauncher_core::entity::cluster_packages::ActiveModel { - cluster_id: Set(cluster.id), - package_hash: Set(dummy_hash.clone()), - bundle_name: Set(Some("OneClient 1.21.1 Fabric [Performance]".to_string())), - ..Default::default() - }; - dummy_pkg - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - // 3. First apply: should detect additions for all bundle packages - let check1 = check_bundle_updates(cluster.id).await.unwrap(); - assert!( - !check1.additions_available.is_empty(), - "Expected fresh cluster to have bundle additions available" - ); - assert!(check1.updates_available.is_empty(), "Expected 0 updates"); - assert!(check1.removals_available.is_empty(), "Expected 0 removals"); - - let applied1 = apply_bundle_updates(cluster.id).await.unwrap(); - assert_eq!( - applied1.additions_applied.len(), - check1.additions_available.len() - ); - - let cluster_after_apply = dao::get_cluster_by_id(cluster.id) - .await - .unwrap() - .expect("cluster should still exist after bundle apply"); - assert!( - cluster_after_apply.mc_loader_version.is_some(), - "Expected bundle apply to sync cluster mc_loader_version" - ); - - // 4. Verify overrides were extracted - // The 1.21.1 Fabric bundles usually include some config overrides (e.g. options.txt or config/...) - // We'll write a custom file in the cluster to simulate a user creating a config - let user_config = cluster_dir.join("config").join("user_custom.txt"); - fs::create_dir_all(user_config.parent().unwrap()) - .await - .unwrap(); - fs::write(&user_config, b"user content").await.unwrap(); - - // We will modify an *existing* extracted override (if one exists), or we just let it be. - // For the sake of the test, let's artificially remove one package from the DB so the updater runs again - let installed_pkgs = - onelauncher_core::api::packages::bundle_dao::get_bundle_packages_for_cluster( - cluster.id, - ) - .await - .unwrap(); - let hash_to_remove = installed_pkgs - .into_iter() - .find(|p| { - p.package_hash != dummy_hash - && p.bundle_name.as_deref() == Some("OneClient 1.21.1 Fabric [Performance]") - }) - .unwrap() - .package_hash; - - // Remove it from the database and filesystem so the updater thinks it's missing. - // record_override=false: this simulates a missing package, not a deliberate user removal. - println!("Removing package hash: {hash_to_remove}"); - onelauncher_core::api::packages::remove_package(cluster.id, hash_to_remove, false) - .await - .unwrap(); - - // 5. Second apply: should detect 1 addition (the one we removed from DB) - let check2 = check_bundle_updates(cluster.id).await.unwrap(); - println!( - "check2 additions count: {}", - check2.additions_available.len() - ); - if check2.additions_available.len() != 1 { - println!( - "check2 additions: {:#?}", - check2 - .additions_available - .iter() - .map(|a| &a.new_file.kind) - .collect::>() - ); - } - assert_eq!( - check2.additions_available.len(), - 1, - "Expected exactly 1 addition available after DB deletion" - ); - assert_eq!(check2.updates_available.len(), 0); - assert_eq!(check2.removals_available.len(), 0); - - // Record modification time of the user_config - let mdata_before = fs::metadata(&user_config).await.unwrap(); - let mtime_before = mdata_before.modified().unwrap(); - - let applied2 = apply_bundle_updates(cluster.id).await.unwrap(); - assert_eq!(applied2.additions_applied.len(), 1); - - // 6. Verify user config was NOT overwritten or wiped (no_overwrite preserved it) - let mdata_after = fs::metadata(&user_config).await.unwrap(); - let mtime_after = mdata_after.modified().unwrap(); - - assert_eq!( - mtime_before, mtime_after, - "User config was modified during bundle update!" - ); - let content = fs::read_to_string(&user_config).await.unwrap(); - assert_eq!(content, "user content"); - - // Clean up - let _ = onelauncher_core::api::packages::dao::delete_package_by_id(dummy_hash).await; - let _ = dao::delete_cluster_by_id(cluster.id).await; - let _ = fs::remove_dir_all(cluster_dir).await; - println!("Bundle updates E2E test passed successfully"); - } - - #[tokio::test] - #[ignore = "touches true files and takes long"] - #[allow(clippy::too_many_lines, clippy::items_after_statements)] - async fn test_bundle_user_overrides() { - // 1. Initialize DB and paths - Core::initialize(CoreOptions::default()).await.unwrap(); - - // 2. Create a fresh cluster - let cluster_name = format!( - "Bundle Overrides Test {}", - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - ); - let cluster = create_cluster(&cluster_name, "1.21.1", GameLoader::Fabric, None, None) - .await - .unwrap(); - - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await - .unwrap(); - let target_bundle = bundles - .into_iter() - .find(|b| b.manifest.name.contains("Performance")) - .expect("Expected to find a Performance bundle"); - - // Subscribe cluster to bundle to trigger initial fetch - use sea_orm::{ActiveModelTrait, Set}; - - let dummy_hash = uuid::Uuid::new_v4().to_string(); - let dummy_base_pkg = onelauncher_core::entity::packages::ActiveModel { - hash: Set(dummy_hash.clone()), - file_name: Set("dummy.jar".to_string()), - version_id: Set("dummy_version".to_string()), - display_name: Set("Dummy".to_string()), - display_version: Set("1.0.0".to_string()), - package_type: Set(onelauncher_core::entity::package::PackageType::Mod), - provider: Set(onelauncher_core::entity::package::Provider::Modrinth), - package_id: Set("dummy_id".to_string()), - mc_versions: Set(onelauncher_core::entity::utility::DbVec(vec![ - "1.21.1".to_string(), - ])), - mc_loader: Set(onelauncher_core::entity::utility::DbVec(vec![ - onelauncher_core::entity::loader::GameLoader::Fabric, - ])), - published_at: Set(chrono::Utc::now()), - ..Default::default() - }; - dummy_base_pkg - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - let dummy_pkg = onelauncher_core::entity::cluster_packages::ActiveModel { - cluster_id: Set(cluster.id), - package_hash: Set(dummy_hash.clone()), - bundle_name: Set(Some(target_bundle.manifest.name.clone())), - ..Default::default() - }; - dummy_pkg - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - // 3. First apply: installs real bundle packages - let applied1 = apply_bundle_updates(cluster.id).await.unwrap(); - assert!( - !applied1.additions_applied.is_empty(), - "Expected initial additions from bundle" - ); - - let cluster_after_apply = dao::get_cluster_by_id(cluster.id) - .await - .unwrap() - .expect("cluster should still exist after bundle apply"); - assert!( - cluster_after_apply.mc_loader_version.is_some(), - "Expected bundle apply to sync cluster mc_loader_version" - ); - - // Get all installed packages mapping to the bundle - let installed_pkgs = - onelauncher_core::api::packages::bundle_dao::get_bundle_packages_for_cluster( - cluster.id, - ) - .await - .unwrap(); - - // Find two packages to test the two override types (Disabled, Removed) - let mut real_packages = installed_pkgs - .into_iter() - .filter(|p| p.package_hash != dummy_hash && p.package_id.is_some()); - - let disabled_target = real_packages - .next() - .expect("Expected at least 1 real package installed"); - let removed_target = real_packages - .next() - .expect("Expected at least 2 real packages installed"); - - // 4. Test "Removed" override behavior - println!( - "Testing Removed override on package: {}", - removed_target.package_id.as_ref().unwrap() - ); - - // Unlink/remove package, which should internally trigger the Overrides logic. - // record_override=true: this is an explicit user-initiated removal. - onelauncher_core::api::packages::remove_package( - cluster.id, - removed_target.package_hash.clone(), - true, - ) - .await - .unwrap(); - - // Check updates. The package should NOT appear as an addition since the user explicitly removed it. - let check_removed = check_bundle_updates(cluster.id).await.unwrap(); - - let is_offered_as_addition = check_removed.additions_available.iter().any(|a| { - let file_id = match &a.new_file.kind { - onelauncher_core::api::packages::modpack::data::ModpackFileKind::Managed(box_) => { - box_.0.id.clone() - } - onelauncher_core::api::packages::modpack::data::ModpackFileKind::External(ext) => { - ext.sha1.clone() - } - }; - &file_id == removed_target.package_id.as_ref().unwrap() - }); - assert!( - !is_offered_as_addition, - "Package was removed by user but offered as an addition during bundle check!" - ); - - // 5. Test "Disabled" override behavior - println!( - "Testing Disabled override on package: {}", - disabled_target.package_id.as_ref().unwrap() - ); - - // Toggle package to disabled, should trigger Overrides logic - let is_now_enabled = onelauncher_core::api::packages::toggle_package( - cluster.id, - disabled_target.package_hash.clone(), - ) - .await - .unwrap(); - assert!(!is_now_enabled, "Package was not disabled successfully"); - - // Let's fake an update for the disabled package by altering its installed version ID - let dummy_pkg = onelauncher_core::entity::cluster_packages::ActiveModel { - cluster_id: Set(disabled_target.cluster_id), - package_hash: Set(disabled_target.package_hash.clone()), - bundle_version_id: Set(Some("old_fake_version_trigger_update".to_string())), - ..disabled_target.clone().into() - }; - // Ignore warnings about updating Primary Key fields - dummy_pkg - .update(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - // Apply updates. The disabled package should be updated, BUT should remain disabled. - let _pre_update_path = onelauncher_core::api::packages::dao::get_package_by_hash( - disabled_target.package_hash.clone(), - ) - .await - .unwrap() - .unwrap() - .path() - .await - .unwrap(); - - let check_disabled = check_bundle_updates(cluster.id).await.unwrap(); - assert!( - check_disabled - .updates_available - .iter() - .any(|u| u.installed_package_hash == disabled_target.package_hash), - "Disabled package should still be marked for update" - ); - - let applied2 = apply_bundle_updates(cluster.id).await.unwrap(); - - let updated_pkg_hash = applied2 - .updates_applied - .into_iter() - .find(|u| u.installed_package_hash == disabled_target.package_hash) - .expect("Expected the disabled package to be updated") - .new_file; - - let file_id = match &updated_pkg_hash.kind { - onelauncher_core::api::packages::modpack::data::ModpackFileKind::Managed(box_) => { - box_.0.id.clone() - } - onelauncher_core::api::packages::modpack::data::ModpackFileKind::External(ext) => { - ext.sha1.clone() - } - }; - - // Check the new package database entry and filesystem to ensure it's still disabled - let new_bundle_mapping = - onelauncher_core::api::packages::bundle_dao::get_bundle_package_by_package_id( - cluster.id, &file_id, - ) - .await - .unwrap() - .unwrap(); - let new_pkg_data = onelauncher_core::api::packages::dao::get_package_by_hash( - new_bundle_mapping.package_hash, - ) - .await - .unwrap() - .unwrap(); - - assert!( - new_pkg_data.file_name.ends_with(".disabled"), - "Updated bundle package was re-enabled! It should have kept the .disabled extension." - ); - - // Clean up - let _ = dao::delete_cluster_by_id(cluster.id).await; - let _ = fs::remove_dir_all(cluster.path().await.unwrap()).await; - } - - /// Regression test for the bundle-override bug: override files (config JSONs, etc.) must - /// be re-extracted on a sync EVEN WHEN no package was added/updated/removed. - /// - /// Previously override extraction was gated behind package-level changes, so an - /// override-only update (e.g. a JSON making an already-installed mod compatible with a - /// new MC version) was silently skipped for users who already had the mods installed. - #[tokio::test] - #[ignore = "touches true files and takes long"] - #[allow(clippy::too_many_lines, clippy::items_after_statements)] - async fn test_overrides_reextracted_without_package_changes() { - use sea_orm::{ActiveModelTrait, Set}; - - Core::initialize(CoreOptions::default()).await.unwrap(); - - let cluster_name = format!( - "Bundle Override-Only Test {}", - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - ); - let cluster = create_cluster(&cluster_name, "1.21.1", GameLoader::Fabric, None, None) - .await - .unwrap(); - let cluster_dir = cluster.path().await.unwrap(); - - let bundles = BundlesManager::get() - .await - .get_bundles_for(&cluster.mc_version, cluster.mc_loader) - .await - .unwrap(); - let target_bundle = bundles - .into_iter() - .find(|b| b.manifest.name.contains("Performance")) - .expect("Expected to find a Performance bundle"); - - // Find an override file shipped in the bundle archive so we have something to assert on. - let override_rel_path = first_override_entry(&target_bundle.path) - .await - .expect("bundle has no override files to test against; cannot run this regression"); - - // Subscribe the cluster to the bundle. - let dummy_hash = uuid::Uuid::new_v4().to_string(); - onelauncher_core::entity::packages::ActiveModel { - hash: Set(dummy_hash.clone()), - file_name: Set("dummy.jar".to_string()), - version_id: Set("dummy_version".to_string()), - display_name: Set("Dummy".to_string()), - display_version: Set("1.0.0".to_string()), - package_type: Set(onelauncher_core::entity::package::PackageType::Mod), - provider: Set(onelauncher_core::entity::package::Provider::Modrinth), - package_id: Set("dummy_id".to_string()), - mc_versions: Set(onelauncher_core::entity::utility::DbVec(vec![ - "1.21.1".to_string(), - ])), - mc_loader: Set(onelauncher_core::entity::utility::DbVec(vec![ - GameLoader::Fabric, - ])), - published_at: Set(chrono::Utc::now()), - ..Default::default() - } - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - onelauncher_core::entity::cluster_packages::ActiveModel { - cluster_id: Set(cluster.id), - package_hash: Set(dummy_hash.clone()), - bundle_name: Set(Some(target_bundle.manifest.name.clone())), - ..Default::default() - } - .insert(&onelauncher_core::store::State::get().await.unwrap().db) - .await - .unwrap(); - - // First apply: installs packages AND extracts overrides (has_changes == true). - let applied1 = apply_bundle_updates(cluster.id).await.unwrap(); - assert!( - !applied1.additions_applied.is_empty(), - "Expected initial additions from bundle" - ); - - let extracted = cluster_dir.join(&override_rel_path); - assert!( - extracted.exists(), - "override file should be extracted on first apply" - ); - - // Simulate the override file being missing (e.g. it was only just added to the bundle, - // so existing users never had it). Delete it from disk. - fs::remove_file(&extracted).await.unwrap(); - assert!(!extracted.exists()); - - // Second apply: nothing about the packages changed, so has_changes == false. - // The override file MUST still be re-extracted (this is the bug being regression-tested). - let applied2 = apply_bundle_updates(cluster.id).await.unwrap(); - assert!( - applied2.updates_applied.is_empty() - && applied2.additions_applied.is_empty() - && applied2.removals_applied.is_empty(), - "second apply should have no package-level changes" - ); - assert!( - extracted.exists(), - "override file must be re-extracted even when no package changed (Bug 2 regression)" - ); - - // Clean up - let _ = onelauncher_core::api::packages::dao::delete_package_by_id(dummy_hash).await; - let _ = dao::delete_cluster_by_id(cluster.id).await; - let _ = fs::remove_dir_all(cluster_dir).await; - } - - /// Returns the first file path under `overrides/` in a `.mrpack`/zip archive, relative to - /// the cluster root (i.e. with the `overrides/` prefix stripped). - /// - /// Extracts the archive's overrides into a throwaway temp dir using the same public helper - /// the real sync uses, then walks it — avoiding a direct zip-crate dependency in this test. - async fn first_override_entry(archive_path: &std::path::Path) -> Option { - let probe_dir = std::env::temp_dir().join(format!( - "oneclient_override_probe_{}", - std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .unwrap() - .as_nanos() - )); - fs::create_dir_all(&probe_dir).await.ok()?; - - onelauncher_core::api::packages::modpack::mrpack::extract_overrides_no_overwrite( - &archive_path.to_path_buf(), - &probe_dir, - ) - .await - .ok()?; - - let relative = first_file_relative(&probe_dir, &probe_dir); - let _ = fs::remove_dir_all(&probe_dir).await; - relative - } - - /// Recursively finds the first regular file under `dir`, returning its path relative to - /// `root` with forward slashes. - fn first_file_relative(dir: &std::path::Path, root: &std::path::Path) -> Option { - let mut entries: Vec<_> = std::fs::read_dir(dir).ok()?.flatten().collect(); - entries.sort_by_key(std::fs::DirEntry::path); - for entry in entries { - let path = entry.path(); - if path.is_dir() { - if let Some(found) = first_file_relative(&path, root) { - return Some(found); - } - } else if let Ok(rel) = path.strip_prefix(root) { - return Some(rel.to_string_lossy().replace('\\', "/")); - } - } - None - } -} diff --git a/apps/oneclient/desktop/src/oneclient/bundles.rs b/apps/oneclient/desktop/src/oneclient/bundles.rs deleted file mode 100644 index d8cb5321..00000000 --- a/apps/oneclient/desktop/src/oneclient/bundles.rs +++ /dev/null @@ -1,274 +0,0 @@ -use std::collections::HashMap; -use std::path::PathBuf; - -use onelauncher_core::api::packages::modpack::data::ModpackArchive; -use onelauncher_core::api::packages::modpack::{InstallableModpackFormatExt, ModpackFormat}; -use onelauncher_core::entity::loader::GameLoader; -use onelauncher_core::error::LauncherResult; -use onelauncher_core::send_error; -use onelauncher_core::store::Dirs; -use onelauncher_core::utils::{http, io}; -use reqwest::{Method, header}; -use tokio::sync::{OnceCell, RwLock}; - -/// e.g. -/// ```json -/// { -/// "versions": { -/// "1.21.5": { -/// "fabric": ["/generated/hud-fabric-1.21.5.mrpack"], -/// "forge": ["/generated/hud-forge-1.21.5.mrpack"] -/// } -/// }, -/// } -/// ``` -#[derive(Default, Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, specta::Type)] -struct BundleManifest { - pub versions: HashMap>>, -} - -static BUNDLES_STATE: OnceCell = OnceCell::const_new(); - -#[derive(Debug)] -pub struct BundlesManager { - manifest: RwLock, - bundles: RwLock>>>, -} - -impl BundlesManager { - pub async fn get() -> &'static Self { - BUNDLES_STATE - .get_or_init(|| async { - let manifest = Self::fetch_cached().await; - - Self { - manifest: RwLock::new(manifest), - bundles: RwLock::new(HashMap::new()), - } - }) - .await - } - - #[tracing::instrument(skip(self))] - pub async fn get_bundles_for( - &self, - mc_version: &str, - loader: onelauncher_core::entity::loader::GameLoader, - ) -> LauncherResult> { - let manifest = self.manifest.read().await; - - // Fast path: check cache under read lock. - let bundles_lock = self.bundles.read().await; - if let Some(entry) = bundles_lock.get(mc_version) - && let Some(bundles) = entry.get(&loader) - { - return Ok(bundles.clone()); - } - drop(bundles_lock); - - // Slow path: acquire write lock and re-check before populating (double-checked locking). - // This closes the TOCTOU gap between dropping the read lock and acquiring the write lock. - let mut bundles_lock = self.bundles.write().await; - if let Some(entry) = bundles_lock.get(mc_version) - && let Some(bundles) = entry.get(&loader) - { - return Ok(bundles.clone()); - } - - let mut found = Vec::new(); - - for (version, loaders) in &manifest.versions { - if version != mc_version { - continue; - } - - let Some(paths) = loaders.get(&loader.get_format_name()) else { - continue; - }; - - // we will be first checking the disk cache, if that fails we fetch from remote - for path in paths { - let Some(file_name) = path.split('/').next_back() else { - tracing::error!("no bundle name was found in path: {path}"); - continue; - }; - - let disk_path = BundlesManager::dir().await.join("bundles").join(file_name); - - let modpack = match download_and_load_bundle(path, &disk_path).await { - Ok(modpack) => modpack, - Err(e) => { - tracing::error!("failed to load bundle from {path}: {e}"); - continue; - } - }; - - let manifest = match modpack.manifest().await { - Ok(manifest) => manifest, - Err(e) => { - tracing::error!("failed to load modpack manifest from {path}: {e}"); - continue; - } - } - .clone(); - - found.push(ModpackArchive { - manifest, - path: disk_path, - format: modpack.kind(), - }); - } - } - - bundles_lock - .entry(mc_version.to_string()) - .or_default() - .insert(loader, found.clone()); - - Ok(found.clone()) - } - - /// Re-fetches the bundles manifest from remote and clears the in-memory parsed-bundle - /// cache so the next [`get_bundles_for`](Self::get_bundles_for) call reloads everything. - /// - /// The on-disk `.mrpack` cache is still consulted (and validated via ETag) by - /// `download_and_load_bundle`, so this only forces re-validation, not blind re-downloads. - /// - /// Without this, the manifest is fetched exactly once per process at startup and the - /// parsed bundles are cached for the process lifetime — meaning a long-running session - /// (or a manual "check for updates") would never observe a bundle the publisher updated - /// after launch. Mods would silently stop updating until a full restart. - pub async fn refresh(&self) { - let manifest = Self::fetch_cached().await; - *self.manifest.write().await = manifest; - self.bundles.write().await.clear(); - } - - /// Fetches the bundles manifest from remote, falling back to a saved copy on disk if available - #[tracing::instrument] - pub async fn fetch_cached() -> BundleManifest { - let url = format!("{}/bundles.json", crate::constants::META_URL_BASE); - let manifest_path = Self::dir().await.join("bundles.json"); - - match http::fetch_json::(Method::GET, &url, None, None).await { - Ok(manifest) => { - io::create_dir_all(manifest_path.parent().unwrap()) - .await - .unwrap_or_else(|e| { - tracing::error!("failed to create bundles dir: {e}"); - }); - - if let Err(e) = io::write_json(&manifest_path, &manifest).await { - send_error!("failed to cache bundles manifest to disk: {e}"); - } - - manifest - } - Err(e) if manifest_path.exists() => { - tracing::debug!( - "falling back to cached bundles manifest, due to error fetching remote: {e}" - ); - - match io::read_json::(&manifest_path).await { - Ok(manifest) => manifest, - Err(e) => { - tracing::error!("failed to read cached bundles manifest: {e}"); - - BundleManifest::default() - } - } - } - Err(e) => { - tracing::error!("failed to fetch bundles manifest from remote: {e}"); - - BundleManifest::default() - } - } - } - - /// returns the directory for everything bundle related - pub async fn dir() -> std::path::PathBuf { - Dirs::get_caches_dir() - .await - .expect("failed to get caches dir") - .join("oneclient") - .join("bundles") - } -} - -#[tracing::instrument] -async fn download_and_load_bundle( - url_path: &str, - disk_path: &PathBuf, -) -> LauncherResult> { - let url = format!("{}{}", crate::constants::META_URL_BASE, url_path); - // Sidecar file that stores the server ETag for cache freshness checks. - let etag_path = PathBuf::from(format!("{}.etag", disk_path.display())); - - if disk_path.exists() { - // Check if the remote file differs from the local cached copy. - // If the validation request itself fails, trust the local cache instead of - // treating the bundle as unavailable. - match http::request(Method::HEAD, &url).await { - Ok(res) if res.status().is_success() => { - let server_etag = res - .headers() - .get(reqwest::header::ETAG) - .and_then(|v| v.to_str().ok()) - .map(std::string::ToString::to_string); - let stored_etag: Option = tokio::fs::read_to_string(&etag_path).await.ok(); - - if let (Some(server), Some(stored)) = (&server_etag, &stored_etag) { - // ETag comparison: most reliable cache validation method. - if server == stored { - tracing::debug!("bundle cache hit via ETag for: {url}"); - return ModpackFormat::from_file(disk_path).await; - } - } else { - // Fall back to Content-Length comparison when no ETag is available. - let content_length = res - .headers() - .get(header::CONTENT_LENGTH) - .and_then(|v| v.to_str().ok()) - .and_then(|v| v.parse::().ok()); - - if let Some(length) = content_length { - let file_size = io::stat(disk_path).await.map(|m| m.len()).unwrap_or(0); - if length == file_size { - return ModpackFormat::from_file(disk_path).await; - } - } - // If neither ETag nor Content-Length are available, fall through to re-download. - } - } - Ok(res) => { - tracing::warn!( - status = %res.status(), - "failed to validate remote bundle cache for {url}; using cached local bundle" - ); - return ModpackFormat::from_file(disk_path).await; - } - Err(e) => { - tracing::warn!( - "failed to validate remote bundle cache for {url}: {e}; using cached local bundle" - ); - return ModpackFormat::from_file(disk_path).await; - } - } - } - - tracing::debug!("downloading bundle from remote: {url}"); - http::download(Method::GET, &url, disk_path, None, None).await?; - - // After a fresh download, persist the server ETag for next time. - if let Ok(head_res) = http::request(Method::HEAD, &url).await - && let Some(etag) = head_res - .headers() - .get(reqwest::header::ETAG) - .and_then(|v| v.to_str().ok()) - { - let _ = tokio::fs::write(&etag_path, etag).await; - } - - ModpackFormat::from_file(disk_path).await -} diff --git a/apps/oneclient/desktop/src/oneclient/clusters.rs b/apps/oneclient/desktop/src/oneclient/clusters.rs deleted file mode 100644 index 6b549e93..00000000 --- a/apps/oneclient/desktop/src/oneclient/clusters.rs +++ /dev/null @@ -1,218 +0,0 @@ -use std::path::Path; - -use onelauncher_core::entity::clusters::Model as ClusterModel; -use onelauncher_core::entity::loader::GameLoader; -use onelauncher_core::error::LauncherResult; -use onelauncher_core::send_error; -use onelauncher_core::store::Dirs; -use onelauncher_core::utils::http::{fetch, fetch_json}; -use reqwest::Method; -use serde::{Deserialize, Serialize}; - -/// -/// e.g. -/// ```json -/// { -/// "clusters": [ -/// { -/// "major_version": 21, -/// "name": "Tricky Trials", -/// "art": "/versions/art/Tricky_Trials.png", -/// "entries": [ -/// { -/// "minor_version": 5, -/// "loader": "fabric", -/// "tags": ["PvP", "Survival"] -/// }, -/// { -/// "minor_version": 5, -/// "loader": "forge", -/// "tags": ["PvP", "Survival"] -/// } -/// ] -/// }, -/// { -/// "major_version": 20, -/// "name": "Trails & Tales", -/// "art": "/versions/art/Trails_Tales.png", -/// "entries": [ -/// { -/// "minor_version": 5, -/// "loader": "fabric", -/// "tags": ["PvP", "Survival"] -/// } -/// ] -/// } -/// ] -/// } -/// ``` -#[derive(specta::Type, Deserialize, Serialize)] -pub struct OnlineClusterManifest { - clusters: Vec, -} - -#[derive(specta::Type, Deserialize, Serialize)] -pub struct OnlineCluster { - major_version: u8, - name: String, - art: String, - entries: Vec, - #[serde(skip_serializing_if = "Option::is_none")] - long_description: Option, - #[serde(default, skip_serializing_if = "Vec::is_empty")] - tags: Vec, -} - -#[derive(specta::Type, Deserialize, Serialize)] -pub struct OnlineClusterEntry { - minor_version: u8, - #[serde(skip_serializing_if = "Option::is_none")] - name: Option, - #[serde(skip_serializing_if = "Option::is_none")] - art: Option, - loader: GameLoader, - tags: Vec, -} - -/// Load the versions manifest, preferring a local override file if one exists. -/// -/// Place a `versions_override.json` in the launcher's data directory -/// (the path logged as "using base directory '...'" on startup) to use it -/// instead of fetching from the remote `DataStorage` URL. Useful for testing -/// new versions locally before pushing to `DataStorage`. -async fn load_versions_manifest() -> LauncherResult { - if let Ok(base_dir) = onelauncher_core::store::Dirs::get() - .await - .map(|d| d.base_dir().clone()) - { - let override_path = base_dir.join("versions_override.json"); - if override_path.exists() { - tracing::info!("using local versions override: {}", override_path.display()); - let bytes = tokio::fs::read(&override_path) - .await - .map_err(anyhow::Error::from)?; - let manifest: OnlineClusterManifest = - serde_json::from_slice(&bytes).map_err(anyhow::Error::from)?; - return Ok(manifest); - } - } - - fetch_json::( - Method::GET, - &format!("{}/versions/versions.json", crate::constants::META_URL_BASE), - None, - None, - ) - .await -} - -pub async fn get_data_storage_versions() -> LauncherResult { - match load_versions_manifest().await { - Ok(m) => Ok(m), - Err(e) => { - send_error!("failed to fetch clusters manifest: {}", e); - Err(e) - } - } -} - -/// Download an art image (e.g. `/versions/art/Foo.png`) from the data storage CDN and -/// save it to the local cache directory. -/// -/// Returns the OS-native path to the cached file, -/// which the frontend converts to an `asset://` URL via `convertFileSrc`. -/// If the file is already cached it is returned immediately without a network request. -pub async fn cache_art_image(path: &str) -> LauncherResult { - let art_dir = Dirs::get_caches_dir().await?.join("oneclient").join("art"); - tokio::fs::create_dir_all(&art_dir) - .await - .map_err(anyhow::Error::from)?; - - // Flatten "/versions/art/Foo.png" → "versions_art_Foo.png" - let filename = path.trim_start_matches('/').replace('/', "_"); - let cached_path = art_dir.join(&filename); - - if cached_path.exists() { - return Ok(cached_path.to_string_lossy().into_owned()); - } - - let url = format!("{}{}", crate::constants::META_URL_BASE, path); - let bytes = fetch(Method::GET, &url).await?; - tokio::fs::write(&cached_path, bytes) - .await - .map_err(anyhow::Error::from)?; - - Ok(cached_path.to_string_lossy().into_owned()) -} - -/// Re-download an art image and overwrite the on-disk cache. -/// -/// Errors are silently ignored — the existing cached version is kept on failure. -/// Call this from `tokio::spawn` so it runs fully in the background. -pub async fn refresh_art_cache(path: &str) { - let Ok(caches_dir) = Dirs::get_caches_dir().await else { - return; - }; - let art_dir = caches_dir.join("oneclient").join("art"); - let filename = path.trim_start_matches('/').replace('/', "_"); - let cached_path = art_dir.join(&filename); - - let url = format!("{}{}", crate::constants::META_URL_BASE, path); - if let Ok(bytes) = fetch(Method::GET, &url).await { - let _ = tokio::fs::write(&cached_path, bytes).await; - } -} - -pub async fn init_clusters() -> LauncherResult<()> { - let manifest = match load_versions_manifest().await { - Ok(m) => m, - Err(e) => { - send_error!("failed to fetch clusters manifest: {}", e); - return Err(e); - } - }; - - for cluster in manifest.clusters { - for entry in cluster.entries { - let mc_version = if cluster.major_version >= 26 { - format!("{}.{}", cluster.major_version, entry.minor_version) - } else { - format!("1.{}.{}", cluster.major_version, entry.minor_version) - }; - - if let Err(e) = create_cluster_if_not_exist(&mc_version, entry.loader, None).await { - send_error!("failed to create cluster for {}: {}", mc_version, e); - } - } - } - - Ok(()) -} - -fn cluster_name(mc_version: &str, loader: GameLoader) -> String { - format!("{mc_version} {loader}") -} - -async fn create_cluster_if_not_exist( - mc_version: &str, - mc_loader: GameLoader, - mc_loader_version: Option<&str>, -) -> LauncherResult> { - let name = cluster_name(mc_version, mc_loader); - - let cluster = - onelauncher_core::api::cluster::dao::get_cluster_by_folder_name(Path::new(&name)).await?; - if cluster.is_some() { - return Ok(cluster); - } - - onelauncher_core::api::cluster::create_cluster( - &name, - mc_version, - mc_loader, - mc_loader_version, - None, - ) - .await - .map(Some) -} diff --git a/apps/oneclient/desktop/src/oneclient/mod.rs b/apps/oneclient/desktop/src/oneclient/mod.rs deleted file mode 100644 index d33f4f70..00000000 --- a/apps/oneclient/desktop/src/oneclient/mod.rs +++ /dev/null @@ -1,180 +0,0 @@ -pub mod bundle_updates; -pub mod bundles; -pub mod clusters; - -use std::sync::atomic::{AtomicBool, Ordering}; - -use onelauncher_core::api::cluster::dao::get_all_clusters; -use onelauncher_core::send_info; - -/// Global flag indicating whether a bundle sync is currently in progress. -/// Used by the frontend FS watcher to skip `syncCluster` calls during updates. -static BUNDLE_SYNCING: AtomicBool = AtomicBool::new(false); - -pub fn is_bundle_syncing() -> bool { - BUNDLE_SYNCING.load(Ordering::Relaxed) -} - -pub async fn initialize_oneclient() { - if let Err(err) = clusters::init_clusters().await { - tracing::error!("failed to initialize clusters: {err}"); - } - - if let Err(err) = onelauncher_core::api::cluster::sync_clusters().await { - tracing::error!("failed to sync clusters: {err}"); - } - - bundles::BundlesManager::get().await; - tokio::spawn(async { - check_and_apply_all_bundle_updates().await; - }); -} - -#[allow(clippy::too_many_lines)] -async fn check_and_apply_all_bundle_updates() { - BUNDLE_SYNCING.store(true, Ordering::Relaxed); - tracing::info!("checking for bundle updates..."); - - // Force a fresh manifest fetch + cache clear so we observe bundles the publisher updated - // since this process started (or since the last sync). The on-disk .mrpack cache is still - // ETag-validated, so unchanged bundles are not re-downloaded. - bundles::BundlesManager::get().await.refresh().await; - - let clusters = match get_all_clusters().await { - Ok(clusters) => clusters, - Err(err) => { - tracing::error!("failed to get clusters for bundle update check: {err}"); - BUNDLE_SYNCING.store(false, Ordering::Relaxed); - return; - } - }; - - let mut total_updates_applied = 0; - let mut total_removals_applied = 0; - let mut total_additions_applied = 0; - let mut total_clusters_failed = 0; - - for cluster in clusters { - tracing::debug!( - cluster_id = %cluster.id, - cluster_name = %cluster.name, - "Checking and applying bundle updates for cluster" - ); - - match bundle_updates::apply_bundle_updates(cluster.id).await { - Ok(result) => { - let update_count = result.updates_applied.len(); - let removal_count = result.removals_applied.len(); - let addition_count = result.additions_applied.len(); - let failure_count = result.updates_failed.len() - + result.removals_failed.len() - + result.additions_failed.len(); - if failure_count > 0 { - tracing::warn!( - "{failure_count} bundle operation(s) failed for cluster '{}'", - cluster.name - ); - } - - if update_count > 0 || removal_count > 0 || addition_count > 0 { - total_updates_applied += update_count; - total_removals_applied += removal_count; - total_additions_applied += addition_count; - - if update_count > 0 { - tracing::info!( - "applied {} bundle update(s) for cluster '{}' (id: {})", - update_count, - cluster.name, - cluster.id - ); - - for update in &result.updates_applied { - tracing::info!( - " - updated package from bundle '{}': {} -> {}", - update.bundle_name, - update.installed_version_id, - update.new_version_id - ); - } - } - - if removal_count > 0 { - tracing::info!( - "removed {} package(s) no longer in bundles for cluster '{}' (id: {})", - removal_count, - cluster.name, - cluster.id - ); - - for removal in &result.removals_applied { - tracing::info!( - " - removed package '{}' (was from bundle '{}')", - removal.package_id, - removal.bundle_name - ); - } - } - - if addition_count > 0 { - tracing::info!( - "installed {} new package(s) from bundles for cluster '{}' (id: {})", - addition_count, - cluster.name, - cluster.id - ); - - for addition in &result.additions_applied { - let file_id = match &addition.new_file.kind { - onelauncher_core::api::packages::modpack::data::ModpackFileKind::Managed(box_) => box_.0.id.clone(), - onelauncher_core::api::packages::modpack::data::ModpackFileKind::External(ext) => ext.sha1.clone(), - }; - tracing::info!( - " - installed new package '{}' from bundle '{}'", - file_id, - addition.bundle_name - ); - } - } - } else { - tracing::debug!("no bundle updates needed for cluster '{}'", cluster.name); - } - } - Err(err) => { - total_clusters_failed += 1; - tracing::warn!( - "failed to apply bundle updates for cluster '{}': {err}", - cluster.name - ); - } - } - } - - if total_updates_applied > 0 || total_removals_applied > 0 || total_additions_applied > 0 { - let mut message_parts = Vec::new(); - if total_updates_applied > 0 { - message_parts.push(format!("{total_updates_applied} mod(s) updated")); - } - if total_removals_applied > 0 { - message_parts.push(format!("{total_removals_applied} mod(s) removed")); - } - if total_additions_applied > 0 { - message_parts.push(format!("{total_additions_applied} mod(s) added")); - } - send_info!("Bundle sync: {}", message_parts.join(", ")); - tracing::info!( - "bundle sync complete: {} updates applied, {} removals applied, {} additions applied", - total_updates_applied, - total_removals_applied, - total_additions_applied - ); - } else if total_clusters_failed == 0 { - tracing::info!("all bundle packages are up to date"); - } - - if total_clusters_failed > 0 { - tracing::warn!("failed to apply updates for {total_clusters_failed} cluster(s)"); - } - - BUNDLE_SYNCING.store(false, Ordering::Relaxed); -} diff --git a/apps/oneclient/desktop/tauri.conf.json b/apps/oneclient/desktop/tauri.conf.json deleted file mode 100644 index b512916f..00000000 --- a/apps/oneclient/desktop/tauri.conf.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-cli/schema.json", - "productName": "OneClient", - "identifier": "org.polyfrost.oneclient", - "app": { - "withGlobalTauri": true, - "macOSPrivateApi": true, - "security": { - "csp": null, - "assetProtocol": { - "enable": true, - "scope": { - "allow": [ - "$DATA/OneClient/**", - "$RESOURCE/**" - ] - } - }, - "capabilities": [] - }, - "windows": [ - { - "title": "OneClient", - "titleBarStyle": "Overlay", - "hiddenTitle": true, - "width": 1280, - "height": 802, - "minWidth": 1020, - "minHeight": 600, - "resizable": true, - "center": true, - "decorations": false, - "fullscreen": false, - "shadow": true, - "visible": false - } - ] - }, - "build": { - "beforeDevCommand": "pnpm --filter @oneclient/frontend run dev", - "beforeBuildCommand": "pnpm --filter @oneclient/frontend run build", - "frontendDist": "../frontend/dist", - "devUrl": "http://localhost:8001" - }, - "bundle": { - "active": true, - "createUpdaterArtifacts": true, - "targets": [ - "app", - "dmg", - "deb", - "rpm", - "appimage", - "nsis" - ], - "category": "Game", - "icon": [ - "../distribution/icons/32x32.png", - "../distribution/icons/128x128.png", - "../distribution/icons/128x128@2x.png", - "../distribution/icons/icon.icns", - "../distribution/icons/icon.ico" - ], - "copyright": "© 2026 Polyfrost Inc.", - "publisher": "Polyfrost", - "license": "GPL-3.0-only", - "homepage": "https://polyfrost.org/", - "longDescription": "Next-generation open source Minecraft launcher", - "resources": [], - "externalBin": [], - "linux": { - "deb": { - "depends": [], - "desktopTemplate": "../distribution/linux/org.polyfrost.oneclient.template" - }, - "rpm": { - "desktopTemplate": "../distribution/linux/org.polyfrost.oneclient.template" - }, - "appimage": { - - } - }, - "shortDescription": "OneClient", - "macOS": { - "entitlements": "App.entitlements", - "exceptionDomain": null, - "frameworks": [], - "dmg": { - "appPosition": { - "x": 190, - "y": 190 - }, - "applicationFolderPosition": { - "x": 470, - "y": 190 - } - }, - "providerShortName": null, - "signingIdentity": null, - "minimumSystemVersion": "10.15" - }, - "windows": { - "certificateThumbprint": null, - "webviewInstallMode": { - "silent": true, - "type": "downloadBootstrapper" - }, - "digestAlgorithm": "sha256", - "timestampUrl": "https://timestamp.digicert.com" - } - }, - "plugins": { - "updater": { - "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDFGODk3MkMyMjg0MjFDMDUKUldRRkhFSW93bktKSHpkWjNEMXNzaDVINVpCTU8xSnhuK2RnV0dTZ2FkcFJWbG1zUkhGYTNjaUkK", - "endpoints": ["https://github.com/Polyfrost/OneLauncher/releases/latest/download/latest.json"] - }, - "deep-link": { - "mobile": [], - "desktop": { - "schemes": ["oneclient"] - } - } - } -} diff --git a/apps/oneclient/desktop/tauri.macos.conf.json b/apps/oneclient/desktop/tauri.macos.conf.json deleted file mode 100644 index d88f24b5..00000000 --- a/apps/oneclient/desktop/tauri.macos.conf.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "app": { - "windows": [ - { - "title": "OneClient", - "titleBarStyle": "Overlay", - "hiddenTitle": true, - "width": 1280, - "height": 802, - "minWidth": 1020, - "minHeight": 600, - "resizable": true, - "center": true, - "decorations": true, - "fullscreen": false, - "shadow": true, - "visible": false - } - ] - } -} diff --git a/apps/oneclient/distribution/aur/bin/PKGBUILD b/apps/oneclient/distribution/aur/bin/PKGBUILD deleted file mode 100644 index 1de711c9..00000000 --- a/apps/oneclient/distribution/aur/bin/PKGBUILD +++ /dev/null @@ -1,25 +0,0 @@ -pkgname=oneclient-bin -pkgver=1.0.3 -pkgrel=1 -pkgdesc='Next-generation open source Minecraft launcher that downloads all the mods you would ever want' -url='https://polyfrost.org/projects/oneclient' -arch=('x86_64') -license=('GPL-3.0-only') - -depends=( - 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -provides=('oneclient') -conflicts=('oneclient') -source=("https://github.com/Polyfrost/OneLauncher/releases/download/oneclient-${pkgver}/oneclient_${pkgver}_amd64.deb") -sha256sums=('SKIP') - -build() { - cd "$srcdir/" - tar xf data.tar.gz -} - -package() { - cp -r "${srcdir}/usr/" "${pkgdir}" -} diff --git a/apps/oneclient/distribution/aur/source/PKGBUILD b/apps/oneclient/distribution/aur/source/PKGBUILD deleted file mode 100644 index a6fa1d35..00000000 --- a/apps/oneclient/distribution/aur/source/PKGBUILD +++ /dev/null @@ -1,46 +0,0 @@ -pkgname=oneclient -pkgver=1.0.3 -pkgrel=1 -pkgdesc='Next-generation open source Minecraft launcher that downloads all the mods you would ever want' -url='https://polyfrost.org/projects/oneclient' -arch=('x86_64') -license=('GPL-3.0-only') - -makedepends=('rust' 'pnpm' 'nodejs' 'clang' 'nasm' 'perl') -depends=( - 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -conflicts=('oneclient-bin') -source=("$pkgname-$pkgver.tar.gz::https://github.com/Polyfrost/OneLauncher/archive/refs/tags/oneclient-${pkgver}.tar.gz") -sha256sums=('SKIP') -options=('!lto') - -prepare() { - cd "OneLauncher-oneclient-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" - pnpm install --frozen-lockfile - pnpm prep -} - -build() { - cd "OneLauncher-oneclient-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - pnpm --filter @oneclient/frontend build - cargo build --frozen --release -p oneclient_gui -} - -check() { - cd "OneLauncher-oneclient-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo test --frozen -p oneclient_gui -} - -package() { - cd "OneLauncher-oneclient-${pkgver}" - install -Dm755 "target/release/oneclient_gui" "$pkgdir/usr/bin/oneclient" - install -Dm644 "apps/oneclient/distribution/icons/128x128.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/org.polyfrost.oneclient.png" - install -Dm644 "apps/oneclient/distribution/icons/512x512.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/org.polyfrost.oneclient.png" - install -Dm644 "apps/oneclient/distribution/flatpak/org.polyfrost.oneclient" "$pkgdir/usr/share/applications/org.polyfrost.oneclient.desktop" -} diff --git a/apps/oneclient/distribution/brew/oneclient.rb b/apps/oneclient/distribution/brew/oneclient.rb deleted file mode 100644 index de3276e8..00000000 --- a/apps/oneclient/distribution/brew/oneclient.rb +++ /dev/null @@ -1,28 +0,0 @@ -cask "oneclient" do - version "0.1.0" - sha256 "" - - url "https://oneclient.polyfrost.org/versions/#{version}/macos/OneClient_#{version}_universal.dmg" - name "OneClient" - desc "Next-generation open source Minecraft launcher" - homepage "https://polyfrost.org" - - livecheck do - url "https://polyfrost.org/projects/oneclient" - regex("/OneClient[._-]v(\d+(?:\.\d+)+)[._-]universal\.dmg/i") - end - - auto_updated true - depends_on macos: ">= :high_sierra" - - app "OneClient.app" - - uninstall quit: "OneClient" - - zap trash: [ - "~/Library/Application Support/OneClient", - "~/Library/Caches/OneClient", - "~/Library/Saved Application State/OneClient.savedState", - "~/Library/WebKit/OneClient", - ] -end diff --git a/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient b/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient deleted file mode 100644 index 51ee7c08..00000000 --- a/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=OneClient -Comment=Next-generation open source Minecraft launcher -Exec=oneclient -Icon=org.polyfrost.client -Type=Application -Terminal=false -StartupNotify=true -Categories=Game; -Keywords=game;launcher;mc;minecraft; -StartupWMClass=OneClient -Version=1.4 diff --git a/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient.metainfo.xml b/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient.metainfo.xml deleted file mode 100644 index 0483218d..00000000 --- a/apps/oneclient/distribution/flatpak/org.polyfrost.oneclient.metainfo.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/oneclient/distribution/icons/128x128.png b/apps/oneclient/distribution/icons/128x128.png deleted file mode 100644 index 21b90752..00000000 Binary files a/apps/oneclient/distribution/icons/128x128.png and /dev/null differ diff --git a/apps/oneclient/distribution/icons/128x128@2x.png b/apps/oneclient/distribution/icons/128x128@2x.png deleted file mode 100644 index 0786a43c..00000000 Binary files a/apps/oneclient/distribution/icons/128x128@2x.png and /dev/null differ diff --git a/apps/oneclient/distribution/icons/32x32.png b/apps/oneclient/distribution/icons/32x32.png deleted file mode 100644 index 6c92d512..00000000 Binary files a/apps/oneclient/distribution/icons/32x32.png and /dev/null differ diff --git a/apps/oneclient/distribution/icons/512x512.png b/apps/oneclient/distribution/icons/512x512.png deleted file mode 100644 index fbc4ca47..00000000 Binary files a/apps/oneclient/distribution/icons/512x512.png and /dev/null differ diff --git a/apps/oneclient/distribution/icons/StoreLogo.png b/apps/oneclient/distribution/icons/StoreLogo.png deleted file mode 100644 index 431f57e5..00000000 Binary files a/apps/oneclient/distribution/icons/StoreLogo.png and /dev/null differ diff --git a/apps/oneclient/distribution/icons/icon.icns b/apps/oneclient/distribution/icons/icon.icns deleted file mode 100644 index 3f4729d4..00000000 Binary files a/apps/oneclient/distribution/icons/icon.icns and /dev/null differ diff --git a/apps/oneclient/distribution/icons/icon.ico b/apps/oneclient/distribution/icons/icon.ico deleted file mode 100644 index 446f9a84..00000000 Binary files a/apps/oneclient/distribution/icons/icon.ico and /dev/null differ diff --git a/apps/oneclient/distribution/icons/icon.png b/apps/oneclient/distribution/icons/icon.png deleted file mode 100644 index fbc4ca47..00000000 Binary files a/apps/oneclient/distribution/icons/icon.png and /dev/null differ diff --git a/apps/oneclient/distribution/linux/org.polyfrost.oneclient.template b/apps/oneclient/distribution/linux/org.polyfrost.oneclient.template deleted file mode 100644 index e43eb2ad..00000000 --- a/apps/oneclient/distribution/linux/org.polyfrost.oneclient.template +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=OneClient -Comment=Next-generation open source Minecraft launcher -Exec={{exec}} -Icon={{icon}} -Type=Application -Terminal=false -StartupNotify=true -Categories=Game;ActionGame;AdventureGame;Simulation; -Keywords=mc;minecraft;game -StartupWMClass={{exec}} -Version=1.4 diff --git a/apps/oneclient/distribution/scoop/oneclient.json b/apps/oneclient/distribution/scoop/oneclient.json deleted file mode 100644 index ba176038..00000000 --- a/apps/oneclient/distribution/scoop/oneclient.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "0.1.0", - "homepage": "https://polyfrost.org/projects/oneclient", - "description": "Next-generation open source Minecraft launcher", - "license": "GPL-3.0-only", - "architecture": { - "64bit": { - "url": "https://oneclient.polyfrost.org/versions/0.1.0/windows/OneClient_0.1.0_x64_en-US.msi", - "hash": "hhjgskdfghskfdlafjdshjadlk" - } - }, - "shortcuts": [ - [ - "PFiles\\OneClient\\OneClient.exe", - "OneClient" - ] - ], - "checkver": { - "github": "https://github.com/polyfrost/onelauncher" - }, - "autoupdat": { - "architecture": { - "64bit": { - "url": "https://oneclient.polyfrost.org/versions/$version/windows/OneClient_$version_x64_en-US.msi" - } - } - } -} diff --git a/apps/oneclient/distribution/winget/Polyfrost.OneClient.installer.yaml b/apps/oneclient/distribution/winget/Polyfrost.OneClient.installer.yaml deleted file mode 100644 index 538ccbfc..00000000 --- a/apps/oneclient/distribution/winget/Polyfrost.OneClient.installer.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneClient -PackageVersion: 0.1.0 -InstallerLocale: en-US -InstallerType: wix -ProductCode: '{}' -Installers: - - Architecture: x64 - InstallerUrl: https://oneclient.polyfrost.org/versions/0.1.0/windows/OneClient_0.1.0_x64_en-US.msi - InstallerSha256: '1111111111111111111111111111318274823726424624666666666666666666666666666666661111E1235666' -ManifestType: installer -ManifestVersion: 1.5.0 diff --git a/apps/oneclient/distribution/winget/Polyfrost.OneClient.locale.en-US.yaml b/apps/oneclient/distribution/winget/Polyfrost.OneClient.locale.en-US.yaml deleted file mode 100644 index 7958e7f6..00000000 --- a/apps/oneclient/distribution/winget/Polyfrost.OneClient.locale.en-US.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneClient -PackageVersion: 0.1.0 -PackageLocale: en-US -Publisher: Polyfrost -PackageName: OneClient -License: GPL-3.0 -ShortDescription: Next-generation open source Minecraft launcher -ManifestType: defaultLocale -ManifestVersion: 1.5.0 diff --git a/apps/oneclient/distribution/winget/Polyfrost.OneClient.yaml b/apps/oneclient/distribution/winget/Polyfrost.OneClient.yaml deleted file mode 100644 index 1c14ba0f..00000000 --- a/apps/oneclient/distribution/winget/Polyfrost.OneClient.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneClient -PackageVersion: 0.1.0 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.5.0 diff --git a/apps/oneclient/frontend/.gitignore b/apps/oneclient/frontend/.gitignore deleted file mode 100644 index ed5e068a..00000000 --- a/apps/oneclient/frontend/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules -.DS_Store -dist -dist-ssr -*.local - -# **/*.gen.ts -routeTree.gen.ts diff --git a/apps/oneclient/frontend/.prettierignore b/apps/oneclient/frontend/.prettierignore deleted file mode 100644 index 5322d7fe..00000000 --- a/apps/oneclient/frontend/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -package-lock.json -pnpm-lock.yaml -yarn.lock \ No newline at end of file diff --git a/apps/oneclient/frontend/index.html b/apps/oneclient/frontend/index.html deleted file mode 100644 index d7a70b74..00000000 --- a/apps/oneclient/frontend/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - OneClient - - -
- - - diff --git a/apps/oneclient/frontend/package.json b/apps/oneclient/frontend/package.json deleted file mode 100644 index f1237b57..00000000 --- a/apps/oneclient/frontend/package.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "@oneclient/frontend", - "type": "module", - "private": true, - "scripts": { - "dev": "vite", - "start": "vite", - "build": "vite build && tsc", - "serve": "vite preview", - "lint": "eslint", - "check": "eslint --fix" - }, - "dependencies": { - "@fontsource/poppins": "catalog:", - "@formatjs/intl-durationformat": "catalog:", - "@onelauncher/common": "workspace:*", - "@tailwindcss/typography": "^0.5.16", - "@tailwindcss/vite": "catalog:", - "@tanstack/match-sorter-utils": "catalog:", - "@tanstack/react-devtools": "catalog:", - "@tanstack/react-query": "catalog:", - "@tanstack/react-query-devtools": "catalog:", - "@tanstack/react-router": "catalog:", - "@tanstack/react-router-devtools": "catalog:", - "@tanstack/react-table": "catalog:", - "@tanstack/react-virtual": "catalog:", - "@tanstack/router-plugin": "catalog:", - "@tauri-apps/api": "catalog:", - "@tauri-apps/plugin-clipboard-manager": "catalog:", - "@tauri-apps/plugin-dialog": "catalog:", - "@tauri-apps/plugin-fs": "catalog:", - "@tauri-apps/plugin-global-shortcut": "catalog:", - "@untitled-theme/icons-react": "catalog:", - "fuse.js": "^7.1.0", - "motion": "catalog:", - "overlayscrollbars": "catalog:", - "overlayscrollbars-react": "catalog:", - "react": "catalog:", - "react-aria-components": "catalog:", - "react-dom": "catalog:", - "react-just-parallax": "catalog:", - "react-markdown": "^10.1.0", - "react-toastify": "catalog:", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "skinview3d": "catalog:", - "tailwind-merge": "catalog:", - "tailwind-variants": "catalog:", - "tailwindcss": "catalog:", - "tailwindcss-animated": "catalog:", - "tailwindcss-react-aria-components": "catalog:", - "taurpc": "catalog:", - "zustand": "catalog:" - }, - "devDependencies": { - "@tanstack/eslint-config": "catalog:", - "@types/react": "catalog:", - "@types/react-dom": "catalog:", - "@vitejs/plugin-react": "catalog:", - "typescript": "catalog:", - "vite": "catalog:", - "vite-plugin-svgr": "catalog:" - } -} diff --git a/apps/oneclient/frontend/src/assets/backgrounds/CavesAndCliffs.jpg b/apps/oneclient/frontend/src/assets/backgrounds/CavesAndCliffs.jpg deleted file mode 100644 index 58fe22ff..00000000 Binary files a/apps/oneclient/frontend/src/assets/backgrounds/CavesAndCliffs.jpg and /dev/null differ diff --git a/apps/oneclient/frontend/src/assets/backgrounds/HypixelSkyblockHub.png b/apps/oneclient/frontend/src/assets/backgrounds/HypixelSkyblockHub.png deleted file mode 100644 index 46562616..00000000 Binary files a/apps/oneclient/frontend/src/assets/backgrounds/HypixelSkyblockHub.png and /dev/null differ diff --git a/apps/oneclient/frontend/src/assets/backgrounds/MinecraftBuilding.png b/apps/oneclient/frontend/src/assets/backgrounds/MinecraftBuilding.png deleted file mode 100644 index 94208370..00000000 Binary files a/apps/oneclient/frontend/src/assets/backgrounds/MinecraftBuilding.png and /dev/null differ diff --git a/apps/oneclient/frontend/src/assets/illustrations/onboarding/language.svg b/apps/oneclient/frontend/src/assets/illustrations/onboarding/language.svg deleted file mode 100644 index bc60266c..00000000 --- a/apps/oneclient/frontend/src/assets/illustrations/onboarding/language.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/oneclient/frontend/src/assets/logos/Logo.svg b/apps/oneclient/frontend/src/assets/logos/Logo.svg deleted file mode 100644 index d5494599..00000000 --- a/apps/oneclient/frontend/src/assets/logos/Logo.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/apps/oneclient/frontend/src/assets/logos/oneclient2.svg b/apps/oneclient/frontend/src/assets/logos/oneclient2.svg deleted file mode 100644 index 7330f6ce..00000000 --- a/apps/oneclient/frontend/src/assets/logos/oneclient2.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/apps/oneclient/frontend/src/assets/misc/missingLogo.svg b/apps/oneclient/frontend/src/assets/misc/missingLogo.svg deleted file mode 100644 index 36b1a4a9..00000000 --- a/apps/oneclient/frontend/src/assets/misc/missingLogo.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/oneclient/frontend/src/bindings.gen.ts b/apps/oneclient/frontend/src/bindings.gen.ts deleted file mode 100644 index e6e81410..00000000 --- a/apps/oneclient/frontend/src/bindings.gen.ts +++ /dev/null @@ -1,419 +0,0 @@ -// @ts-nocheck -// This file has been generated by Specta. DO NOT EDIT. - -import { createTauRPCProxy as createProxy, type InferCommandOutput } from 'taurpc' -type TAURI_CHANNEL = (response: T) => void - - -export type ApplyBundleUpdatesResult = { updates_applied: BundlePackageUpdate[]; removals_applied: BundlePackageRemoval[]; additions_applied: BundlePackageAddition[]; updates_failed: string[]; removals_failed: string[]; additions_failed: string[] } - -export type BundlePackageAddition = { cluster_id: number; bundle_name: string; new_file: ModpackFile } - -export type BundlePackageRemoval = { cluster_id: number; package_hash: string; package_id: string; bundle_name: string; installed_at: string } - -export type BundlePackageUpdate = { cluster_id: number; installed_package_hash: string; installed_version_id: string; bundle_name: string; new_version_id: string; new_file: ModpackFile; installed_at: string } - -export type ClusterError = { type: "InvalidVersion"; data: string } | { type: "MismatchedVersion"; data: string } | { type: "MismatchedLoader"; data: string } | { type: "MissingJavaVersion"; data: string } | { type: "ClusterDownloading"; data: string } | { type: "ClusterAlreadyRunning"; data: string } - -export type ClusterModel = { id: number; folder_name: string; stage: ClusterStage; created_at: string; group_id: number | null; name: string; mc_version: string; mc_loader: GameLoader; mc_loader_version: string | null; last_played: string | null; overall_played: number | null; icon_url: Icon | null; setting_profile_name: string | null; linked_modpack_hash: string | null } - -export type ClusterStage = "notready" | "downloading" | "repairing" | "ready" - -export type ClusterUpdate = { name: string | null; icon_url: Icon | null; setting_profile_name: string | null } - -export type CopyClusterResult = { -/** - * Files that had no compatible provider version and were copied verbatim from the source. - */ -fallback_files: string[] } - -export type CreateCluster = { name: string; mc_version: string; mc_loader: GameLoader; mc_loader_version: string | null; icon: Icon | null } - -export type CryptoError = { type: "InvalidHash"; data: string } | { type: "InvalidAlgorithm"; data: string } - -export type DaoError = { type: "NotFound"; data: string } | { type: "AlreadyExists"; data: string } | { type: "InvalidValue"; data: string } - -export type DbVec = T[] - -export type DebugInfoData = { inDev: boolean; platform: string; arch: string; family: string; locale: string; osType: string; osVersion: string; osDistro: string; commitHash: string; buildTimestamp: string; buildVersion: string; hasDevSettings: boolean } - -export type DebugInfoParsedLine = { title: string; value: string } - -export type DirectoryError = { type: "BaseDir"; data: string } - -export type DiscordError = { type: "MissingClientId"; data: string } | { type: "ConnectError"; data: string } - -export type ExternalPackage = { name: string; url: string; sha1: string; size: number; package_type: PackageType } - -export type Filters = { game_versions: string[] | null; loaders: GameLoader[] | null; categories: PackageCategories | null; package_type: PackageType | null } - -export type GameLoader = "vanilla" | "forge" | "neoforge" | "quilt" | "fabric" | "legacyfabric" - -export type IOError = { type: "InvalidAbsolutePath"; data: string } | { type: "FileNotFoundInZip"; data: string } | { type: "IOErrorWrapper"; data: string } | { type: "IOError"; data: string } | { type: "DeserializeError"; data: string } | { type: "AsyncZipError"; data: string } | { type: "TempFileError"; data: string } - -export type Icon = string - -export type IncompatiblePackageType = { type: "McVersion"; data: string } | { type: "Loader"; data: string } - -export type IngressError = { type: "NotFound"; data: string } - -export type IngressPayload = { id: string; message: string; ingress_type: IngressType; percent: number | null; total: number } - -export type IngressType = { Download: { file_name: string } } | "JavaPrepare" | "JavaCheck" | "JavaLocate" | "MinecraftDownload" | { PrepareCluster: { cluster_name: string } } - -export type JavaError = { type: "ParseVersion"; data: string } | { type: "Execute"; data: string } | { type: "MissingJava"; data: string } - -export type LauncherError = { type: "DirError"; data: DirectoryError } | { type: "IOError"; data: IOError } | { type: "IngressError"; data: IngressError } | { type: "JavaError"; data: JavaError } | { type: "CryptoError"; data: CryptoError } | { type: "DiscordError"; data: DiscordError } | { type: "MetadataError"; data: MetadataError } | { type: "ClusterError"; data: ClusterError } | { type: "MinecraftAuthError"; data: MinecraftAuthError } | { type: "ProcessError"; data: ProcessError } | { type: "PackageError"; data: PackageError } | { type: "DaoError"; data: DaoError } | { type: "SerdeError"; data: string } | { type: "AnyhowError"; data: string } | { type: "DbError"; data: string } | { type: "ReqwestError"; data: string } | { type: "InterfrostError"; data: string } | { type: "RegexError"; data: string } | { type: "SemaphoreError"; data: string } | { type: "UrlError"; data: string } | { type: "OpenerError"; data: string } | { type: "TauriError"; data: string } - -export type ManagedPackage = { id: string; slug: string; provider: Provider; package_type: PackageType; name: string; short_desc: string; body: ManagedPackageBody; -/** - * Won't have all versions for some providers, like `CurseForge`. - * Try making a request to get the versions if needed - */ -version_ids: string[]; mc_versions: string[]; loaders: GameLoader[]; icon_url: string | null; created: string; updated: string; client: PackageSide; server: PackageSide; categories: PackageCategories; license: PackageLicense | null; author: PackageAuthor; links: PackageLinks; status: PackageStatus; downloads: number; gallery: PackageGallery[] } - -export type ManagedPackageBody = { Url: string } | { Raw: string } - -export type ManagedUser = { id: string; username: string; url?: string | null; avatar_url?: string | null; bio?: string | null; is_organization_user?: boolean; role?: string | null } - -export type ManagedVersion = { version_id: string; project_id: string; display_name: string; display_version: string; changelog: string | null; dependencies: ManagedVersionDependency[]; mc_versions: string[]; release_type: PackageReleaseType; loaders: GameLoader[]; published: string; downloads: number; files: ManagedVersionFile[] } - -export type ManagedVersionDependency = { version_id: string | null; project_id: string | null; file_name: string | null; dependency_type: PackageDependencyType } - -export type ManagedVersionFile = { sha1: string; url: string; file_name: string; primary: boolean; size: number } - -export type MessageLevel = "Info" | "Warn" | "Error" - -export type MessagePayload = { level: MessageLevel; message: string } - -export type MetadataError = { type: "FetchError"; data: string } | { type: "NotModdedManifest"; data: string } | { type: "NotVanillaManifest"; data: string } | { type: "ParseError"; data: string } | { type: "NoMatchingLoader"; data: string } | { type: "RequestedLoaderVersionNotFound"; data: string } | { type: "NoMatchingVersion"; data: string } - -export type MinecraftAuthError = { type: "PublicKeyReading"; data: string } | { type: "PKCS8Error"; data: string } | { type: "SerializeError"; data: string } | { type: "DeserializeError"; data: string } | { type: "RequestError"; data: string } | { type: "SigningError"; data: string } | { type: "HashError"; data: string } | { type: "SessionIdError"; data: string } | { type: "XboxError"; data: string } - -/** - * A structure of all needed Minecraft credentials for logging in and account management. - */ -export type MinecraftCredentials = { -/** - * The uuid of the credentials. - */ -id: string; -/** - * The username of the Minecraft account. - */ -username: string; -/** - * The access token as a String. - */ -access_token: string; -/** - * The refresh token as a string for [`MinecraftState#refresh`]. - */ -refresh_token: string; -/** - * The time that the access token expires as a [`DateTime`]. - */ -expires: string } - -export type ModpackArchive = { manifest: ModpackManifest; path: string; format: ModpackFormat } - -export type ModpackFile = { enabled: boolean; hidden?: boolean; kind: ModpackFileKind; overrides?: PackageOverrides | null } - -export type ModpackFileKind = { Managed: [ManagedPackage, ManagedVersion] } | { External: ExternalPackage } - -export type ModpackFormat = "CurseForge" | "MrPack" | "PolyMrPack" - -export type ModpackManifest = { name: string; version: string; loader: GameLoader; loader_version: string; mc_version: string; enabled?: boolean; files: ModpackFile[] } - -export type MojangCape = { id: string; state: string; url: string; alias: string } - -export type MojangFullPlayerProfile = { id: string; username: string; skins: MojangSkin[]; capes: MojangCape[] } - -export type MojangPlayerProfile = { uuid: string; username: string; is_slim: boolean; skin_url: string | null; cape_url: string | null } - -export type MojangSkin = { id: string; state: string; url: string; variant: SkinVariant } - -export type MowojangProfile = { id: string; username: string } - -export type OnlineCluster = { major_version: number; name: string; art: string; entries: OnlineClusterEntry[]; long_description?: string | null; tags: string[] } - -export type OnlineClusterEntry = { minor_version: number; name?: string | null; art?: string | null; loader: GameLoader; tags: string[] } - -/** - * e.g. - * ```json - * { - * "clusters": [ - * { - * "major_version": 21, - * "name": "Tricky Trials", - * "art": "/versions/art/Tricky_Trials.png", - * "entries": [ - * { - * "minor_version": 5, - * "loader": "fabric", - * "tags": ["PvP", "Survival"] - * }, - * { - * "minor_version": 5, - * "loader": "forge", - * "tags": ["PvP", "Survival"] - * } - * ] - * }, - * { - * "major_version": 20, - * "name": "Trails & Tales", - * "art": "/versions/art/Trails_Tales.png", - * "entries": [ - * { - * "minor_version": 5, - * "loader": "fabric", - * "tags": ["PvP", "Survival"] - * } - * ] - * } - * ] - * } - * ``` - */ -export type OnlineClusterManifest = { clusters: OnlineCluster[] } - -export type PackageAuthor = { Team: { team_id: string; org_id: string | null } } | { Users: ManagedUser[] } - -export type PackageCategories = { Mod: PackageModCategory[] } | { ResourcePack: PackageResourcePackCategory[] } | { Shader: PackageShaderCategory[] } | { DataPack: PackageModCategory[] } | { ModPack: PackageModPackCategory[] } - -export type PackageDependencyType = "required" | "optional" | "embedded" | "incompatible" - -/** - * - */ -export type PackageDonationPlatform = "patreon" | "buymeacoffee" | "paypal" | "github" | "kofi" | "other" - -export type PackageDonationUrl = { id: PackageDonationPlatform; url: string } - -export type PackageError = { type: "NoPrimaryFile"; data: string } | { type: "IsNotModPack"; data: string } | { type: "PartialModpackInstall"; data: string } | { type: "Incompatible"; data: IncompatiblePackageType } | { type: "MissingApiKey"; data: string } | { type: "UnsupportedBodyType"; data: string } | { type: "UnsupportedAuthorType"; data: string } | { type: "UnsupportedModpackFormat"; data: string } - -export type PackageGallery = { url: string; thumbnail_url: string; title: string | null; description: string | null; featured: boolean | null } - -/** - * - */ -export type PackageLicense = { id: string; name: string; url: string | null } - -/** - * - */ -export type PackageLinks = { website: string | null; issues: string | null; source: string | null; wiki: string | null; donation: PackageDonationUrl[] | null; discord: string | null } - -export type PackageModCategory = "Adventure" | "Library" | "Equipment" | "Patches" | "Cosmetic" | "Food" | "Magic" | "Information" | "Misc" | "Performance" | "Redstone" | "ServerUtil" | "Storage" | "Technology" | "Farming" | "Automation" | "Transport" | "Utility" | "QoL" | "WorldGen" | "Mobs" | "Economy" | "Social" - -export type PackageModPackCategory = "Technology" | "Quests" | "Optimization" | "Multiplayer" | "Magic" | "LightWeight" | "Combat" | "Challenging" | "Adventure" - -export type PackageModel = { hash: string; file_name: string; version_id: string; published_at: string; display_name: string; display_version: string; package_type: PackageType; provider: Provider; package_id: string; mc_versions: DbVec; mc_loader: DbVec; icon: Icon | null } - -export type PackageOverrides = { icon: string | null; name: string | null; authors: string[] | null; description: string | null } - -export type PackageReleaseType = "release" | "beta" | "alpha" - -export type PackageResourcePackCategory = "X8" | "X16" | "X32" | "X48" | "X64" | "X128" | "X256" | "X512" | "VanillaLike" | "Utility" | "Tweaks" | "Themed" | "Simplistic" | "Realistic" | "Modded" | "Decoration" | "Cursed" | "Combat" | "Audio" | "Blocks" | "CoreShaders" | "Gui" | "Fonts" | "Equipment" | "Environment" | "Entities" | "Items" | "Locale" | "Models" - -export type PackageShaderCategory = "VanillaLike" | "SemiRealistic" | "Realistic" | "Fantasy" | "Cursed" | "Cartoon" | "Bloom" | "Atmosphere" | "Reflections" | "Shadows" | "PBR" | "PathTracing" | "Foliage" | "ColoredLightning" | "Potato" | "Low" | "Medium" | "High" | "Ultra" - -export type PackageSide = "unknown" | "required" | "optional" | "unsupported" - -export type PackageStatus = "active" | "abandoned" - -export type PackageType = "mod" | "resourcepack" | "shader" | "datapack" | "modpack" - -export type Paginated = { total: number; offset: number; limit: number; items: T[] } - -export type Process = { pid: number; started_at: string; cluster_id: number; post_hook: string | null; account_id: string } - -export type ProcessError = { type: "HookUnsuccessful"; data: string } | { type: "NoPid"; data: string } - -export type ProcessLogTail = { content: string; truncated: boolean } - -export type ProcessPayload = { cluster_id: number; kind: ProcessPayloadKind } - -export type ProcessPayloadKind = { type: "Starting"; command: string } | { type: "Started"; pid: number; started_at: string; post_hook: string | null; account_id: string } | { type: "Stopped"; pid: number; exit_code: number } | { type: "Output"; pid: number; output: string } - -export type ProfileUpdate = { res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null } - -export type Provider = "Modrinth" | "CurseForge" | "SkyClient" | "Local" - -export type Resolution = { width: number; height: number } - -export type SearchQuery = { query: string | null; offset: number | null; limit: number | null; sort: Sort | null; filters: Filters | null } - -export type SearchResult = { project_id: string; package_type: PackageType; slug: string; author: string; title: string; description: string; categories: PackageCategories; loaders: GameLoader[]; mc_versions: string[]; downloads: number; icon_url: string; date_created: string; date_modified: string; latest_version: string; license: string | null; client_side: PackageSide; server_side: PackageSide; -/** - * List of URLs to images - */ -gallery: string[] } - -export type SettingProfileModel = { name: string; java_id: number | null; res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null; os_extra: SettingsOsExtra | null } - -export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; seen_onboarding: boolean; mod_list_use_grid: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean; log_debug_info: boolean; show_tanstack_dev_tools: boolean; toast_position: ToastPosition; toast_duration: number; toast_auto_close: boolean; seen_versions: string[] } - -export type SettingsOsExtra = Record - -export type SkinVariant = "classic" | "slim" - -export type Sort = "Relevance" | "Downloads" | "Newest" | "Updated" - -export type ToastPosition = "top-right" | "top-left" | "bottom-right" | "bottom-left" - -export type Update = { version: string } - -/** - * A game version of Minecraft - */ -export type Version = { -/** - * A unique identifier of the version - */ -id: string; -/** - * The release type of the version - */ -type: VersionType; -/** - * A link to additional information about the version - */ -url: string; -/** - * The latest time a file in this version was updated - */ -time: string; -/** - * The time this version was released - */ -releaseTime: string; -/** - * The SHA1 hash of the additional information about the version - */ -sha1: string; -/** - * Whether the version supports the latest player safety features - */ -complianceLevel: number; -/** - * The SHA1 hash of the original unmodified Minecraft version's JSON - * This is only available when using the Polyfrost/Pulseflow mirror - */ -originalSha1?: string | null } - -/** - * The version type of Minecraft - */ -export type VersionType = -/** - * A major version, which is stable for all players to use - */ -"release" | -/** - * An experimental version, which is unstable and used for feature previews and beta testing - */ -"snapshot" | -/** - * The oldest versions before the game was released - */ -"old_alpha" | -/** - * Early versions of the game - */ -"old_beta" - -const ARGS_MAP = { 'oneclient':'{"downloadPackageFromBundle":["package","cluster_id","bundle_name","skip_compatibility"],"copyClusterContent":["source_id","target_id"],"getVersions":[],"isBundleSyncing":[],"installUpdate":[],"cacheArt":["path"],"getBundlesFor":["cluster_id"],"getClustersGroupedByMajor":[],"refreshArt":["path"],"extractBundleOverrides":["bundle_path","cluster_id"],"checkForUpdate":[],"updateBundlePackages":["cluster_id"]}', 'core':'{"getProfileOrDefault":["name"],"getWorlds":["id"],"createCluster":["options"],"setDefaultUser":["uuid"],"refreshAccounts":[],"getPackage":["provider","slug"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"installModpack":["modpack","cluster_id"],"open":["input"],"isClusterRunning":["cluster_id"],"killProcess":["pid"],"createSettingsProfile":["name"],"updateClusterProfile":["name","profile"],"getDefaultUser":["fallback"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"syncCluster":["cluster_id"],"fetchMinecraftProfile":["uuid"],"searchPackages":["provider","query"],"removeCape":["access_token"],"getLogs":["id"],"fetchLoggedInProfile":["access_token"],"getClusterById":["id"],"getScreenshots":["id"],"removePackage":["cluster_id","package_hash"],"setClusterStage":["id","stage"],"readSettings":[],"getUsersFromAuthor":["provider","author"],"getUser":["uuid"],"getUsers":[],"updateClusterById":["id","request"],"getPackageBody":["provider","body"],"launchCluster":["id","uuid","search_for_java"],"writeSettings":["setting"],"getLinkedPackages":["cluster_id"],"togglePackage":["cluster_id","package_hash"],"refreshAccount":["uuid"],"getRunningProcesses":[],"getClusters":[],"getLoadersForVersion":["mc_version"],"openMsaLogin":[],"removeCluster":["id"],"removeUser":["uuid"],"getLogByName":["id","name"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"convertUsernameUUID":["username_uuid"],"setDiscordRPCMessage":["message"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"getGameVersions":[],"getGlobalProfile":[],"getProcessLogTail":["id","max_lines"],"getRunningProcessesByClusterId":["cluster_id"]}', 'events':'{"message":["event"],"ingress":["event"],"process":["event"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'debug':'{"getOsDistro":[],"getPackageVersion":[],"getArch":[],"getOsVersion":[],"hasDevSettings":[],"getLocale":[],"getFamily":[],"getGitCommitHash":[],"getFullDebugInfoParsedString":[],"getFullDebugInfo":[],"getFullDebugInfoParsed":[],"openDevTools":[],"isInDev":[],"getPlatform":[],"getBuildTimestamp":[],"getType":[]}' } -export type Router = { 'core': { getClusters: () => Promise, -getClusterById: (id: number) => Promise, -removeCluster: (id: number) => Promise, -createCluster: (options: CreateCluster) => Promise, -launchCluster: (id: number, uuid: string | null, searchForJava: boolean | null) => Promise, -updateClusterById: (id: number, request: ClusterUpdate) => Promise, -setClusterStage: (id: number, stage: ClusterStage) => Promise, -getScreenshots: (id: number) => Promise, -getWorlds: (id: number) => Promise, -getLogs: (id: number) => Promise, -getLogByName: (id: number, name: string) => Promise, -getProcessLogTail: (id: number, maxLines: number) => Promise, -getRunningProcesses: () => Promise, -getRunningProcessesByClusterId: (clusterId: number) => Promise, -isClusterRunning: (clusterId: number) => Promise, -killProcess: (pid: number) => Promise, -getProfileOrDefault: (name: string | null) => Promise, -getGlobalProfile: () => Promise, -updateClusterProfile: (name: string, profile: ProfileUpdate) => Promise, -createSettingsProfile: (name: string) => Promise, -getGameVersions: () => Promise, -getLoadersForVersion: (mcVersion: string) => Promise, -getUsers: () => Promise, -getUser: (uuid: string) => Promise, -removeUser: (uuid: string) => Promise, -getDefaultUser: (fallback: boolean | null) => Promise, -setDefaultUser: (uuid: string | null) => Promise, -openMsaLogin: () => Promise, -refreshAccounts: () => Promise, -refreshAccount: (uuid: string) => Promise, -readSettings: () => Promise, -writeSettings: (setting: Settings) => Promise, -searchPackages: (provider: Provider, query: SearchQuery) => Promise>, -getPackage: (provider: Provider, slug: string) => Promise, -getPackageBody: (provider: Provider, body: ManagedPackageBody) => Promise, -getMultiplePackages: (provider: Provider, slugs: string[]) => Promise, -getPackageVersions: (provider: Provider, slug: string, mcVersion: string | null, loader: GameLoader | null, offset: number, limit: number) => Promise>, -downloadPackage: (provider: Provider, packageId: string, versionId: string, clusterId: number, skipCompatibility: boolean | null) => Promise, -downloadExternalPackage: (package: ExternalPackage, clusterId: number, force: boolean | null, skipCompatibility: boolean | null) => Promise, -getUsersFromAuthor: (provider: Provider, author: PackageAuthor) => Promise, -syncCluster: (clusterId: number) => Promise, -getLinkedPackages: (clusterId: number) => Promise, -removePackage: (clusterId: number, packageHash: string) => Promise, -togglePackage: (clusterId: number, packageHash: string) => Promise, -installModpack: (modpack: ModpackArchive, clusterId: number) => Promise, -fetchMinecraftProfile: (uuid: string) => Promise, -fetchLoggedInProfile: (accessToken: string) => Promise, -uploadSkinBytes: (accessToken: string, skinData: number[], imageFormat: string, skinVariant: SkinVariant) => Promise, -changeSkin: (accessToken: string, skinUrl: string, skinVariant: SkinVariant) => Promise, -changeCape: (accessToken: string, capeUuid: string) => Promise, -removeCape: (accessToken: string) => Promise, -convertUsernameUUID: (usernameUuid: string) => Promise, -setDiscordRPCMessage: (message: string) => Promise, -open: (input: string) => Promise }, -'oneclient': { getClustersGroupedByMajor: () => Promise>, -getBundlesFor: (clusterId: number) => Promise, -getVersions: () => Promise, -extractBundleOverrides: (bundlePath: string, clusterId: number) => Promise, -checkForUpdate: () => Promise, -installUpdate: () => Promise, -downloadPackageFromBundle: (package: ModpackFileKind, clusterId: number, bundleName: string, skipCompatibility: boolean | null) => Promise, -updateBundlePackages: (clusterId: number) => Promise, -isBundleSyncing: () => Promise, -cacheArt: (path: string) => Promise, -refreshArt: (path: string) => Promise, -copyClusterContent: (sourceId: number, targetId: number) => Promise }, -'folders': { fromCluster: (folderName: string) => Promise, -openCluster: (folderName: string) => Promise }, -'events': { ingress: (event: IngressPayload) => Promise, -message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise }, -'debug': { openDevTools: () => Promise, -isInDev: () => Promise, -getArch: () => Promise, -getFamily: () => Promise, -getLocale: () => Promise, -getType: () => Promise, -getPlatform: () => Promise, -getOsVersion: () => Promise, -getOsDistro: () => Promise, -getGitCommitHash: () => Promise, -getBuildTimestamp: () => Promise, -getPackageVersion: () => Promise, -getFullDebugInfo: () => Promise, -getFullDebugInfoParsed: () => Promise, -getFullDebugInfoParsedString: () => Promise, -hasDevSettings: () => Promise } }; - - -export type { InferCommandOutput } -export const createTauRPCProxy = () => createProxy(ARGS_MAP) diff --git a/apps/oneclient/frontend/src/components/AccountAvatar.tsx b/apps/oneclient/frontend/src/components/AccountAvatar.tsx deleted file mode 100644 index aad665db..00000000 --- a/apps/oneclient/frontend/src/components/AccountAvatar.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import type { ImgHTMLAttributes } from 'react'; -import { usePlayerProfile } from '@/hooks/usePlayerProfile'; -import { getSkinUrl } from '@/utils/minecraft'; -import { renderHeadToDataUrl } from '@onelauncher/common'; -import { useEffect, useState } from 'react'; - -export interface AccountAvatarProps extends ImgHTMLAttributes { - uuid: string | undefined | null; -} - -export function AccountAvatar({ - uuid, - alt, - style, - ...rest -}: AccountAvatarProps) { - const { data: profile } = usePlayerProfile(uuid); - const [headUrl, setHeadUrl] = useState(null); - - useEffect(() => { - renderHeadToDataUrl(getSkinUrl(profile?.skin_url)).then(setHeadUrl); - }, [profile]); - - return ( - {alt - ); -} diff --git a/apps/oneclient/frontend/src/components/BrowserPackageItem.tsx b/apps/oneclient/frontend/src/components/BrowserPackageItem.tsx deleted file mode 100644 index fd8985b9..00000000 --- a/apps/oneclient/frontend/src/components/BrowserPackageItem.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import type { Provider, SearchResult } from '@/bindings.gen'; -import { Link } from '@tanstack/react-router'; - -export function PackageGrid({ items, provider, clusterId }: { items: Array; provider: Provider; clusterId: number }) { - return ( -
- {items.map(item => ( - - ))} -
- ); -} - -export function PackageItem({ provider, clusterId, ...item }: SearchResult & { provider: Provider; clusterId: number }) { - return ( - -
- {item.icon_url - ? ( - <> - {`Icon - {`Icon - - ) - : ( -
- )} -
-
-
-

{item.title}

-

- By - {' '} - {item.author} - {' '} - on - {' '} - {provider} -

-
- -

{item.description}

-
- - ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/Bundle.tsx b/apps/oneclient/frontend/src/components/Bundle/Bundle.tsx deleted file mode 100644 index 65fa0cac..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/Bundle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import type { ClusterModel, ModpackFile } from '@/bindings.gen'; -import { ModCard, useModCardContext } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { twMerge } from 'tailwind-merge'; - -interface BundleProps { - files: Array; - cluster: ClusterModel; -} - -export function Bundle({ files, cluster }: BundleProps) { - const { useVerticalGridLayout } = useModCardContext(); - const { setting } = useSettings(); - const useGridLayout = setting('mod_list_use_grid'); - const visibleFiles = files.filter(file => !file.hidden); - - return ( - -
- {visibleFiles.map(file => ( - - ))} -
-
- - ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/DownloadModButton.tsx b/apps/oneclient/frontend/src/components/Bundle/DownloadModButton.tsx deleted file mode 100644 index 17f6b1aa..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/DownloadModButton.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import type { ClusterModel, ModpackFile } from '@/bindings.gen'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { useCommandMut } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { Download01Icon } from '@untitled-theme/icons-react'; -import { twMerge } from 'tailwind-merge'; - -export function DownloadModButton({ cluster, file }: { cluster: ClusterModel; file: ModpackFile }) { - const download = useCommandMut(async () => { - if ('Managed' in file.kind) { - const [pkg, version] = file.kind.Managed; - if (version.dependencies.length > 0) - for (const dependency of version.dependencies) - if (dependency.dependency_type === 'required') { - const slug = dependency.project_id ?? ''; - const versions = await bindings.core.getPackageVersions(pkg.provider, slug, cluster.mc_version, cluster.mc_loader, 0, 1); - await bindings.core.downloadPackage(pkg.provider, slug, versions.items[0].version_id, cluster.id, null); - } - - await bindings.core.downloadPackage(pkg.provider, pkg.id, version.version_id, cluster.id, null); - } - else { - await bindings.core.downloadExternalPackage(file.kind.External, cluster.id, null, null); - } - }); - - const handleDownload = () => { - (async () => { - await download.mutateAsync(); - })(); - }; - - const { setting } = useSettings(); - const useGridLayout = setting('mod_list_use_grid'); - - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/ModCard.tsx b/apps/oneclient/frontend/src/components/Bundle/ModCard.tsx deleted file mode 100644 index cde18c1f..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/ModCard.tsx +++ /dev/null @@ -1,283 +0,0 @@ -import type { ClusterModel, ModpackFile, ModpackFileKind, PackageModel } from '@/bindings.gen'; -import MissingLogo from '@/assets/misc/missingLogo.svg'; -import { ModTag } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { useCommandMut } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; -import { createContext, useContext, useEffect, useMemo, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export interface ModInfo { - name: string; - description: string | null; - author: string | null; - iconURL: string | null; - url: string | null; - managed: boolean; - packageSlug: string | null; -} - -async function getModAuthor(kind: ModpackFileKind, useVerticalGridLayout?: boolean): Promise { - if ('External' in kind) - return null; - if (!('Managed' in kind)) - return null; - - const authors = await bindings.core.getUsersFromAuthor(kind.Managed[0].provider, kind.Managed[0].author); - return parseAuthors(authors.map(author => author.username), useVerticalGridLayout); -} - -function parseAuthors(usernames: Array, useVerticalGridLayout?: boolean): string | null { - if (usernames.length === 0) - return null; - - if (useVerticalGridLayout) { - let visibleCount = usernames.length; - while (visibleCount >= 1) { - const hiddenUsers = usernames.length - visibleCount; - let string = usernames.slice(0, visibleCount).join(', '); - if (hiddenUsers > 0) - string += ` and ${hiddenUsers} more`; - if (string.length <= 21) - return string; - visibleCount--; - } - return `${usernames[0]} and ${usernames.length - 1} more`; - } - return usernames.join(', '); -} - -export function getModMetaDataName(file: ModpackFile): string { - if ('External' in file.kind) - return file.overrides?.name ?? file.kind.External.name.replaceAll('.jar', ''); - if ('Managed' in file.kind) - return file.overrides?.name ?? file.kind.Managed[0].name; - else return 'UNKNOWN'; -} - -function getFileKey(file: ModpackFile): string { - if ('Managed' in file.kind) - return `managed:${file.kind.Managed[0].id}`; - if ('External' in file.kind) - return `external:${file.kind.External.sha1 || file.kind.External.url || file.kind.External.name}`; - return 'unknown'; -} - -const modMetadataCache: Map> = new Map(); - -function fetchModMetaData(file: ModpackFile, useVerticalGridLayout?: boolean): Promise { - const key = getFileKey(file); - const existing = modMetadataCache.get(key); - if (existing) - return existing; - - const promise = getModMetaData(file, useVerticalGridLayout).catch((err) => { - modMetadataCache.delete(key); - throw err; - }); - modMetadataCache.set(key, promise); - return promise; -} - -async function getModMetaData(file: ModpackFile, useVerticalGridLayout?: boolean): Promise { - if ('External' in file.kind) - return { - name: getModMetaDataName(file), - description: file.overrides?.description ?? null, - author: parseAuthors(file.overrides?.authors ?? [], useVerticalGridLayout), - iconURL: file.overrides?.icon ?? null, - url: null, - managed: false, - packageSlug: null, - }; - - return { - name: getModMetaDataName(file), - description: file.overrides?.description ?? file.kind.Managed[0].short_desc, - author: (file.overrides?.authors ?? []).length > 1 ? parseAuthors(file.overrides?.authors ?? []) : await getModAuthor(file.kind, useVerticalGridLayout), - iconURL: file.overrides?.icon ?? file.kind.Managed[0].icon_url, - url: `https://modrinth.com/project/${file.kind.Managed[0].slug}`, - managed: true, - packageSlug: file.kind.Managed[0].id, - }; -} - -interface ModCardProps { - file: ModpackFile; - cluster: ClusterModel; -} - -export type onClickOnMod = (file: ModpackFile) => void; -export interface ModCardContextApi { - enableClickToDownload?: boolean; - onClickOnMod?: onClickOnMod; - useVerticalGridLayout?: boolean; - mods?: Array; - installedPackages?: Array; - useToggleMode?: boolean; - skipCompatibilityChecks?: boolean; -} - -const DEFAULT_MOD_CARD_CONTEXT: ModCardContextApi = {}; - -export const ModCardContext = createContext(null); -export function useModCardContext() { - return useContext(ModCardContext) ?? DEFAULT_MOD_CARD_CONTEXT; -} - -export function ModCard({ file, cluster }: ModCardProps) { - const { enableClickToDownload, onClickOnMod, useVerticalGridLayout, mods, installedPackages, useToggleMode, skipCompatibilityChecks = null } = useModCardContext(); - const queryClient = useQueryClient(); - - const [modMetadata, setModMetadata] = useState({ name: getModMetaDataName(file), description: null, author: null, iconURL: null, url: null, managed: false, packageSlug: null }); - useEffect(() => { - let cancelled = false; - fetchModMetaData(file, useVerticalGridLayout).then((meta) => { - if (!cancelled) - setModMetadata(meta); - }).catch(() => {}); - return () => { - cancelled = true; - }; - }, [file, useVerticalGridLayout]); - - const kind = file.kind; - // Directory-based packages (folders dropped into resourcepacks/shaderpacks/datapacks) - // cannot be toggled via .disabled rename — skip toggle mode for them. - const isDirectory = useMemo(() => - 'External' in kind && !kind.External.name.includes('.'), [kind]); - const effectiveToggleMode = useToggleMode && !isDirectory; - const isInstalled = useMemo(() => { - if (installedPackages) - if ('Managed' in kind) { - const [pkg, _] = kind.Managed; - return installedPackages.some(p => p.package_id === pkg.id && p.provider === pkg.provider); - } - else { - return installedPackages.some(p => p.hash === kind.External.sha1); - } - - return mods?.includes(file) ?? false; - }, [installedPackages, kind, mods, file]); - - // In toggle mode, "selected" = enabled (file_name doesn't end with .disabled) - const isFileEnabled = useMemo(() => { - if (!effectiveToggleMode) - return true; - if ('Managed' in kind) { - const primary = kind.Managed[1].files.find(f => f.primary) ?? kind.Managed[1].files[0]; - return !primary.file_name.endsWith('.disabled'); - } - return !kind.External.name.endsWith('.disabled'); - }, [effectiveToggleMode, kind]); - const [isSelected, setSelected] = useState(effectiveToggleMode ? isFileEnabled : isInstalled); - useEffect(() => { - setSelected(effectiveToggleMode ? isFileEnabled : isInstalled); - }, [isInstalled, effectiveToggleMode, isFileEnabled]); - - const download = useCommandMut(async () => { - if ('Managed' in kind) { - const [pkg, version] = kind.Managed; - if (version.dependencies.length > 0) - for (const dependency of version.dependencies) - if (dependency.dependency_type === 'required') { - const slug = dependency.project_id ?? ''; - const versions = await bindings.core.getPackageVersions(pkg.provider, slug, cluster.mc_version, cluster.mc_loader, 0, 1); - await bindings.core.downloadPackage(pkg.provider, slug, versions.items[0].version_id, cluster.id, skipCompatibilityChecks); - } - - await bindings.core.downloadPackage(pkg.provider, pkg.id, version.version_id, cluster.id, skipCompatibilityChecks); - } - else { - await bindings.core.downloadExternalPackage(kind.External, cluster.id, null, skipCompatibilityChecks); - } - }); - - const remove = useCommandMut(async () => { - let hash: string | undefined; - if ('Managed' in kind) { - const [_, version] = kind.Managed; - const primary = version.files.find(f => f.primary) ?? version.files[0]; - hash = primary.sha1; - } - else { - hash = kind.External.sha1; - } - - if (hash) - await bindings.core.removePackage(cluster.id, hash); - }); - - const toggle = useCommandMut(async () => { - let hash: string | undefined; - if ('Managed' in kind) { - const [_, version] = kind.Managed; - const primary = version.files.find(f => f.primary) ?? version.files[0]; - hash = primary.sha1; - } - else { - hash = kind.External.sha1; - } - - if (hash) - await bindings.core.togglePackage(cluster.id, hash); - }); - - const handleOnClick = () => { - // Folder-based packages (resource packs, shader packs, data packs as directories) - // cannot be toggled or removed — treat them as entirely non-interactive. - if (isDirectory) - return; - if (effectiveToggleMode) - (async () => { - await toggle.mutateAsync(); - await queryClient.invalidateQueries({ queryKey: ['getLinkedPackages', cluster.id] }); - })(); - - else if (enableClickToDownload) - (async () => { - if (isInstalled) - await remove.mutateAsync(); - - else - await download.mutateAsync(); - - await queryClient.invalidateQueries({ queryKey: ['getLinkedPackages', cluster.id] }); - })(); - - else if (onClickOnMod) - onClickOnMod(file); - }; - - const { setting } = useSettings(); - let useGridLayout = setting('mod_list_use_grid'); - if (useVerticalGridLayout) - useGridLayout = true; - - return ( -
-
-
-
- -
-
-
-
-

{modMetadata.name}

- {useVerticalGridLayout !== true && } -
- -

- by - {' '} - {modMetadata.author ?? 'UNKNOWN'} -

- {useVerticalGridLayout !== true &&

{modMetadata.description ?? 'No Description'}

} -
-
- {useVerticalGridLayout === true && modMetadata.description !== null &&

{modMetadata.description}

} -
- ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/ModList.tsx b/apps/oneclient/frontend/src/components/Bundle/ModList.tsx deleted file mode 100644 index c66a755a..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/ModList.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import type { ClusterModel, ModpackArchive } from '@/bindings.gen'; -import { Bundle, getModMetaDataName, ModCardContext } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { Button, Tab, TabContent, TabList, TabPanel, Tabs, TextField } from '@onelauncher/common/components'; -import { SearchMdIcon } from '@untitled-theme/icons-react'; -import Fuse from 'fuse.js'; -import { useContext, useMemo, useState } from 'react'; - -function getBundleName(name: string): string { - return (name.match(/\[(.*?)\]/)?.[1]) ?? 'Loading...'; -} - -interface ModListProps { - bundles: Array; - cluster: ClusterModel; - selectedTab?: string; - onTabChange?: (value: string) => void; - toggleBundlePaths?: Set; -} - -export function ModList({ bundles, cluster, selectedTab, onTabChange, toggleBundlePaths }: ModListProps) { - const ctx = useContext(ModCardContext); - const useVerticalGridLayout = ctx?.useVerticalGridLayout ?? false; - const { createSetting } = useSettings(); - const [useGridLayout, setUseGrid] = createSetting('mod_list_use_grid'); - const [searchQuery, setSearchQuery] = useState(''); - - const nonEmptyBundles = bundles - .map(bundle => ({ - ...bundle, - manifest: { - ...bundle.manifest, - files: bundle.manifest.files.filter(file => !file.hidden), - }, - })) - .filter(b => b.manifest.files.length > 0); - - const isSearching = searchQuery.trim().length > 0; - - const searchResults = useMemo(() => { - if (!isSearching) - return []; - const allFiles = nonEmptyBundles.flatMap(b => b.manifest.files); - const fuse = new Fuse(allFiles, { - keys: [{ name: 'name', getFn: file => getModMetaDataName(file) }], - threshold: 0.4, - distance: 100, - minMatchCharLength: 1, - }); - return fuse.search(searchQuery.trim()).map(r => r.item); - }, [isSearching, searchQuery, nonEmptyBundles]); - - return ( - - - {!isSearching && ( -
- {nonEmptyBundles.map(bundle => {getBundleName(bundle.manifest.name)})} -
- )} - {isSearching &&
} -
- } - onChange={e => setSearchQuery(e.target.value)} - placeholder="Search..." - value={searchQuery} - /> - {!useVerticalGridLayout && ( - - )} -
- - - {isSearching - ? ( -
- -
- ) - : ( - - {nonEmptyBundles.map((bundleData) => { - const isToggle = toggleBundlePaths?.has(bundleData.path) ?? false; - const content = ; - - return ( - - {isToggle - ? ( - - {content} - - ) - : content} - - ); - })} - - )} - - ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/ModTag.tsx b/apps/oneclient/frontend/src/components/Bundle/ModTag.tsx deleted file mode 100644 index 1f17496e..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/ModTag.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import type { ModInfo } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { Link } from '@tanstack/react-router'; -import { twMerge } from 'tailwind-merge'; - -export function ModTag({ modData, cluster }: { modData: ModInfo; cluster: ClusterModel }) { - const { setting } = useSettings(); - const useGridLayout = setting('mod_list_use_grid'); - - return ( - -

{modData.managed ? 'Modrinth' : 'External'}

- - ); -} diff --git a/apps/oneclient/frontend/src/components/Bundle/index.ts b/apps/oneclient/frontend/src/components/Bundle/index.ts deleted file mode 100644 index b51fb8e0..00000000 --- a/apps/oneclient/frontend/src/components/Bundle/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './Bundle'; -export * from './DownloadModButton'; -export * from './ModCard'; -export * from './ModList'; -export * from './ModTag'; diff --git a/apps/oneclient/frontend/src/components/DeleteAccountButton.tsx b/apps/oneclient/frontend/src/components/DeleteAccountButton.tsx deleted file mode 100644 index c21e0a13..00000000 --- a/apps/oneclient/frontend/src/components/DeleteAccountButton.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { Overlay, RemoveAccountModal } from '@/components'; -import { Button } from '@onelauncher/common/components'; -import { Trash01Icon } from '@untitled-theme/icons-react'; - -export function DeleteAccountButton({ profile, onPress }: { profile: MinecraftCredentials; onPress: () => void }) { - return ( - - - - - - - - ); -} diff --git a/apps/oneclient/frontend/src/components/DownloadMods.tsx b/apps/oneclient/frontend/src/components/DownloadMods.tsx deleted file mode 100644 index 26ce0c5f..00000000 --- a/apps/oneclient/frontend/src/components/DownloadMods.tsx +++ /dev/null @@ -1,297 +0,0 @@ -import type { ExternalPackage, ManagedVersionDependency, ModpackFile, ModpackFileKind, Provider } from '@/bindings.gen'; -import { getModMetaDataName, Overlay } from '@/components'; -import { bindings } from '@/main'; -import { useCommandMut } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useNavigate } from '@tanstack/react-router'; -import { useEffect, useImperativeHandle, useState } from 'react'; -import { DialogTrigger } from 'react-aria-components'; - -export interface DownloadModsRef { - openDownloadDialog: (nextPath?: string) => void; -} - -export interface BaseModData { - name: string; - clusterId: number; - managed: boolean; - bundleName: string | null; - fileKind: ModpackFileKind; -} - -export interface ManagedModData extends BaseModData { - provider: Provider; - id: string; - versionId: string; - dependencies: Array; -} - -export interface ExternalModData extends BaseModData { - package: ExternalPackage; -} - -export type ModData = ManagedModData | ExternalModData; -export type ModDataArray = Array; - -export type DownloadModsParallelResult = - | { - ok: true; - index: number; - mod: ModData; - } - | { - ok: false; - index: number; - mod: ModData; - error: unknown; - }; - -export function isManagedMod(mod: ModData): mod is ManagedModData { - return mod.managed === true; -} - -export interface ModWithBundle { - file: ModpackFile; - bundleName: string; -} - -export function DownloadMods({ modsPerCluster, ref }: { modsPerCluster: Record>; ref: React.Ref }) { - const navigate = useNavigate(); - const [isOpen, setOpen] = useState(false); - const [mods, setMods] = useState([]); - const [nextPath, setNextPath] = useState('/app'); - - useEffect(() => { - const modsList: ModDataArray = []; - for (const [clusterId, modsWithBundle] of Object.entries(modsPerCluster)) - for (const { file: mod, bundleName } of modsWithBundle) { - if ('External' in mod.kind) - modsList.push({ - name: getModMetaDataName(mod), - clusterId: Number(clusterId), - managed: false, - package: mod.kind.External, - bundleName, - fileKind: mod.kind, - }); - - if ('Managed' in mod.kind) { - const [pkg, version] = mod.kind.Managed; - modsList.push({ - name: getModMetaDataName(mod), - clusterId: Number(clusterId), - managed: true, - provider: pkg.provider, - id: pkg.id, - versionId: version.version_id, - dependencies: version.dependencies, - bundleName, - fileKind: mod.kind, - }); - } - } - setMods(modsList); - }, [modsPerCluster]); - - useImperativeHandle(ref, () => { - return { - openDownloadDialog(nextPath?: string) { - if (mods.length !== 0) { - setOpen(true); - setNextPath(nextPath ?? '/app'); - } - else { - navigate({ to: nextPath ?? '/app' }); - } - }, - }; - }, [mods.length, navigate]); - - return ( - - - - - - - - ); -} - -export function buildModDataArray(modsPerCluster: Record>): ModDataArray { - const modsList: ModDataArray = []; - for (const [clusterId, modsWithBundle] of Object.entries(modsPerCluster)) - for (const { file: mod, bundleName } of modsWithBundle) { - if ('External' in mod.kind) - modsList.push({ - name: getModMetaDataName(mod), - clusterId: Number(clusterId), - managed: false, - package: mod.kind.External, - bundleName, - fileKind: mod.kind, - }); - - if ('Managed' in mod.kind) { - const [pkg, version] = mod.kind.Managed; - modsList.push({ - name: getModMetaDataName(mod), - clusterId: Number(clusterId), - managed: true, - provider: pkg.provider, - id: pkg.id, - versionId: version.version_id, - dependencies: version.dependencies, - bundleName, - fileKind: mod.kind, - }); - } - } - return modsList; -} - -export async function downloadModsParallel( - items: ModDataArray, - limit: number, - fn: (mod: ModData, index: number) => Promise, -): Promise> { - if (items.length === 0) - return []; - - let index = 0; - const workerCount = Math.max(1, Math.min(limit, items.length)); - const results: Array = []; - - const workers = Array.from({ length: workerCount }).fill(null).map(async () => { - while (index < items.length) { - const i = index; - index += 1; - - if (i >= items.length) - return; - - const mod = items[i]; - try { - await fn(mod, i); - results.push({ - ok: true, - index: i, - mod, - }); - } - catch (error) { - results.push({ - ok: false, - index: i, - mod, - error, - }); - } - } - }); - - await Promise.all(workers); - - results.sort((left, right) => left.index - right.index); - return results; -} - -function DownloadingMods({ mods, setOpen, nextPath }: { mods: ModDataArray; setOpen: React.Dispatch>; nextPath: string }) { - const navigate = useNavigate(); - const [downloadedMods, setDownloadedMods] = useState(0); - const [modName, setModName] = useState(null); - const download = useCommandMut(async (mod: ModData) => { - if (isManagedMod(mod)) { - if (mod.dependencies.length > 0) - for (const dependency of mod.dependencies) { - const cluster = await bindings.core.getClusterById(mod.clusterId); - if (!cluster) - continue; - if (dependency.dependency_type === 'required') { - const slug = dependency.project_id ?? ''; - const versions = await bindings.core.getPackageVersions(mod.provider, slug, cluster.mc_version, cluster.mc_loader, 0, 1); - if (versions.items.length !== 0) - await bindings.core.downloadPackage(mod.provider, slug, versions.items[0].version_id, cluster.id, null); - } - } - - if (mod.bundleName) - await bindings.oneclient.downloadPackageFromBundle( - mod.fileKind, - mod.clusterId, - mod.bundleName, - true, - ); - - else - await bindings.core.downloadPackage(mod.provider, mod.id, mod.versionId, mod.clusterId, true); - } - else { - if (mod.bundleName) - await bindings.oneclient.downloadPackageFromBundle( - mod.fileKind, - mod.clusterId, - mod.bundleName, - true, - ); - - else - await bindings.core.downloadExternalPackage(mod.package, mod.clusterId, null, null); - } - }); - - useEffect(() => { - const downloadAll = async () => { - const results = await downloadModsParallel(mods, 10, async (mod) => { - setModName(mod.name); - try { - await download.mutateAsync(mod); - } - finally { - setDownloadedMods(prev => prev + 1); - } - }); - - const failed = results.filter(result => !result.ok); - if (failed.length > 0) - console.error('[DownloadMods] Some mods failed to download:', { - failed: failed.length, - total: mods.length, - entries: failed.map(result => ({ - index: result.index, - name: result.mod.name, - error: result.error, - })), - }); - }; - - void downloadAll(); - // eslint-disable-next-line react-hooks/exhaustive-deps -- download is not stable, adding it would cause infinite loops - }, [mods]); - - useEffect(() => { - if (downloadedMods >= mods.length) { - setOpen(false); - navigate({ to: nextPath }); - } - }, [downloadedMods, mods, navigate, nextPath, setOpen]); - - return ( - - Downloading Mods - -
-

Downloaded {downloadedMods} / {mods.length}

-
-
0 ? `${(downloadedMods / mods.length) * 100}%` : '0%' }} - > -
-
- {modName !== null ?

Downloading {modName}

: <>} -
- -
- ); -} diff --git a/apps/oneclient/frontend/src/components/ExternalLink.tsx b/apps/oneclient/frontend/src/components/ExternalLink.tsx deleted file mode 100644 index ae5dd23c..00000000 --- a/apps/oneclient/frontend/src/components/ExternalLink.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import type React from 'react'; -import type { HTMLProps } from 'react'; -import { Overlay } from '@/components'; -import { bindings } from '@/main'; -import { writeText } from '@tauri-apps/plugin-clipboard-manager'; -import { LinkExternal01Icon } from '@untitled-theme/icons-react'; -import { useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export interface ExternalLinkProps extends HTMLProps { - href?: string | undefined; - children?: React.ReactNode; - includeIcon?: boolean | undefined; - showModal?: boolean | undefined; -} - -export function ExternalLink({ - href, - children, - includeIcon, - showModal = true, - className, - ...rest -}: ExternalLinkProps) { - const [isOpen, setIsOpen] = useState(false); - - // done like this so that "image" links don't have an icon - const withIcon = !!(includeIcon ?? typeof children === 'string'); - - return ( - - { - e.preventDefault(); - if (!href) - return; - - if (showModal) - setIsOpen(true); - else - bindings.core.open(href); - }} - role="button" - {...rest} - > - {children} - {withIcon && } - - - - - External Link -

Are you sure you want to open this link in your browser?

- - {href} - - { - if (href) - writeText(href); - - setIsOpen(false); - }, - }, - { - color: 'primary', - children: 'Open Link', - onClick: () => { - if (href) - bindings.core.open(href); - - setIsOpen(false); - }, - }, - ]} - /> -
-
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/GameBackground.tsx b/apps/oneclient/frontend/src/components/GameBackground.tsx deleted file mode 100644 index 3027312f..00000000 --- a/apps/oneclient/frontend/src/components/GameBackground.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* eslint-disable perfectionist/sort-imports -- nah */ -import type { CSSProperties } from 'react'; -import { twMerge } from 'tailwind-merge'; - -import CavesAndCliffs from '@/assets/backgrounds/CavesAndCliffs.jpg'; -import HypixelSkyblockHub from '@/assets/backgrounds/HypixelSkyblockHub.png'; - -const GameBackgrounds = { - HypixelSkyblockHub, - CavesAndCliffs, - MinecraftBuilding: HypixelSkyblockHub, -}; - -export type GameBackgroundName = keyof typeof GameBackgrounds; - -interface GameBackgroundProps { - name: GameBackgroundName; - className?: string; - style?: CSSProperties; -} - -export function GameBackground({ name, className = '', style = undefined }: GameBackgroundProps) { - const BackgroundImage = GameBackgrounds[name]; - - return ( -
- ); -} diff --git a/apps/oneclient/frontend/src/components/LaunchButton.tsx b/apps/oneclient/frontend/src/components/LaunchButton.tsx deleted file mode 100644 index 430ba0a3..00000000 --- a/apps/oneclient/frontend/src/components/LaunchButton.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import type { ButtonProps } from '@onelauncher/common/components'; -import { KillMinecraft, NoAccountPopup, Overlay } from '@/components'; -import { useIsRunning } from '@/hooks/useClusters'; -import { useLaunchCluster } from '@/hooks/useLaunchCluster'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useNavigate } from '@tanstack/react-router'; -import { useState } from 'react'; -import { tv } from 'tailwind-variants'; - -export type LaunchButtonProps = Omit & { - cluster: ClusterModel; -}; - -const launchButtonVariants = tv({ - variants: { - isRunning: { - true: 'bg-success hover:bg-success-hover pressed:bg-success-pressed disabled:bg-success-disabled pending:bg-success-disabled', - }, - }, -}); - -function PromptForOnboarding({ launch, setSkipPackagesCheck, cluster }: { launch: () => void; setSkipPackagesCheck: React.Dispatch>; cluster: ClusterModel }) { - const navigate = useNavigate(); - const onClickYes = () => { - localStorage.setItem('selectedClusters', JSON.stringify([{ mc_version: cluster.mc_version, mc_loader: cluster.mc_loader }])); - navigate({ to: `/onboarding/preferences/versionCategory` }); - }; - - const onClickLaunch = () => { - setSkipPackagesCheck(true); - launch(); - }; - - return ( - - Not Setup -
-

It seems like you haven't setup this version

-

Do you want to setup this version?

-
- -
- ); -} - -export function LaunchButton({ - cluster, - isDisabled, - className, - ...rest -}: LaunchButtonProps) { - const { data: currentAccount } = useCommandSuspense(['getDefaultUser'], () => bindings.core.getDefaultUser(true)); - const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); - const { launch: launchCluster, showDownloadWarning, setShowDownloadWarning, forceLaunch } = useLaunchCluster(cluster.id); - const isRunning = useIsRunning(cluster.id); - - const [reason, setReason] = useState<'account' | 'packages' | 'kill' | null>(null); - const [skipPackagesCheck, setSkipPackagesCheck] = useState(false); - - const launch = () => { - if (isRunning) - return setReason('kill'); - if (!currentAccount) - return setReason('account'); - if (installedPackages.length === 0 && !skipPackagesCheck) - return setReason('packages'); - - launchCluster(); - setSkipPackagesCheck(false); - setReason(null); - }; - - return ( - <> - !open && setReason(null)}> - - - - {reason === 'kill' && setReason(null)} />} - {reason === 'packages' && } - {reason === 'account' && } - - - - - - Cluster is downloading -
-

The cluster is currently downloading. Launching it now might cause issues or corruption. Are you sure you want to proceed?

-
- setShowDownloadWarning(false) }, - { - color: 'primary', - key: 'Proceed', - children: 'Proceed Anyways', - size: 'normal', - onClick: forceLaunch, - }, - ]} - /> -
-
- - ); -} diff --git a/apps/oneclient/frontend/src/components/Loader.tsx b/apps/oneclient/frontend/src/components/Loader.tsx deleted file mode 100644 index 2d32295b..00000000 --- a/apps/oneclient/frontend/src/components/Loader.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import type { SpinnerProps } from '@/components'; -import type { HTMLAttributes, ReactNode } from 'react'; -import { Spinner } from '@/components'; -import { motion } from 'motion/react'; -import { Suspense } from 'react'; -import { twMerge } from 'tailwind-merge'; - -interface LoaderProps extends HTMLAttributes { - children?: ReactNode; - spinner?: SpinnerProps; -} - -export function LoaderContainer({ - loading = false, - children, - spinner, - className, -}: LoaderProps & { - loading?: boolean; -}) { - return loading ? : {children}; -} - -export function LoaderSuspense({ - children, - spinner, - className, -}: LoaderProps) { - return ( - }> - - {children} - - - ); -} - -function Fallback({ - spinner, - className, -}: { - spinner?: SpinnerProps; - className?: string; -}) { - return ( -
- -
- ); -} - -function LoadedChildren({ - children, - className, -}: { - children: ReactNode; - className?: string; -}) { - return ( - - {children} - - ); -} diff --git a/apps/oneclient/frontend/src/components/LogViewer.module.css b/apps/oneclient/frontend/src/components/LogViewer.module.css deleted file mode 100644 index 8d472fe0..00000000 --- a/apps/oneclient/frontend/src/components/LogViewer.module.css +++ /dev/null @@ -1,56 +0,0 @@ -@reference "../styles/global.css"; - -.log_container { - @apply relative w-full whitespace-pre text-base font-mono bg-component-bg rounded-xl; -} - -.log { - @apply absolute top-0 left-0 w-full whitespace-pre text-base font-mono; -} - -.log * { - white-space: pre !important; - user-select: text !important; - -webkit-user-select: text !important; -} - -.log > span { - @apply box-content left-0 top-0 absolute h-full w-full rounded-md hover:bg-component-bg-hover; -} - -.log > span[data-level=INFO] { - @apply text-code-info; -} - -.log > span[data-level=WARN] { - @apply text-code-warn; -} - -.log > span[data-level=ERROR] { - @apply text-code-error; -} - -.log > span[data-level=DEBUG] { - @apply text-code-debug; -} - -.log > span[data-level=TRACE] { - @apply text-code-trace; -} - -.log > span > span:nth-child(1) { - @apply relative text-transparent; -} - -.log > span > span:nth-child(1):before { - content: attr(data-time); - @apply absolute h-full w-full text-center select-text text-fg-secondary opacity-100; -} - -.log > span > span:nth-child(2) { - @apply font-bold; -} - -.log > span > span[data-chat="true"] { - @apply text-white; -} diff --git a/apps/oneclient/frontend/src/components/LogViewer.tsx b/apps/oneclient/frontend/src/components/LogViewer.tsx deleted file mode 100644 index 61e3094e..00000000 --- a/apps/oneclient/frontend/src/components/LogViewer.tsx +++ /dev/null @@ -1,198 +0,0 @@ -import { useVirtualizer } from '@tanstack/react-virtual'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'; -import styles from './LogViewer.module.css'; - -export interface LogViewerProps { - content: string; - scrollRef: React.RefObject; - autoScroll?: boolean; - maxLines?: number; - onTrimmedLines?: (trimmedLines: number) => void; - ref?: React.Ref; -} - -export interface LogViewerRef { - push: (line: string) => void; - scrollToEnd: () => void; -} - -const LINE_HEIGHT = 16; -const REGEX_PATTERN = /\[((?:\S+ )?\d+:\d+:\d+(?:\.\d+)?)\] \[(.[^(\n\r/\u2028\u2029]*)\/(\w+)\]:? (?:\[(CHAT)\])?/; - -function normalizeLineLimit(maxLines?: number): number { - if (maxLines === undefined || !Number.isFinite(maxLines)) - return Number.POSITIVE_INFINITY; - - return Math.max(1, Math.floor(maxLines)); -} - -interface TrimResult { - lines: Array; - trimmedCount: number; -} - -function trimLines( - lines: Array, - lineLimit: number, -): TrimResult { - if (!Number.isFinite(lineLimit) || lines.length <= lineLimit) - return { - lines, - trimmedCount: 0, - }; - - const trimmedCount = lines.length - lineLimit; - return { - lines: lines.slice(trimmedCount), - trimmedCount, - }; -} - -export function LogViewer({ - content, - scrollRef, - autoScroll = false, - maxLines, - onTrimmedLines, - ref, -}: LogViewerProps) { - const lineLimit = normalizeLineLimit(maxLines); - const containerRef = useRef(null); - const pendingLinesRef = useRef>([]); - const frameRef = useRef(null); - const [lines, setLines] = useState>(() => trimLines(content.split('\n'), lineLimit).lines); - const linesRef = useRef>(lines); - - const virtualizer = useVirtualizer({ - count: lines.length, - estimateSize: () => LINE_HEIGHT, - getScrollElement: () => scrollRef.current ?? null, - paddingStart: 4, - paddingEnd: 4, - gap: 0, - overscan: 8, - scrollMargin: containerRef.current ? containerRef.current.offsetTop + 75 : 0, - }); - - const scrollToEnd = useCallback(() => { - requestAnimationFrame(() => scrollRef.current?.scrollTo({ top: scrollRef.current.scrollHeight })); - }, [scrollRef]); - - useEffect(() => { - pendingLinesRef.current = []; - if (frameRef.current !== null) { - cancelAnimationFrame(frameRef.current); - frameRef.current = null; - } - - const nextState = trimLines(content.split('\n'), lineLimit); - linesRef.current = nextState.lines; - setLines(nextState.lines); - - if (nextState.trimmedCount > 0) - onTrimmedLines?.(nextState.trimmedCount); - }, [content, lineLimit, onTrimmedLines]); - - useEffect(() => { - return () => { - if (frameRef.current !== null) - cancelAnimationFrame(frameRef.current); - }; - }, []); - - const appendLine = useCallback((line: string) => { - pendingLinesRef.current.push(line); - if (frameRef.current !== null) - return; - - frameRef.current = requestAnimationFrame(() => { - frameRef.current = null; - if (pendingLinesRef.current.length === 0) - return; - - const pending = pendingLinesRef.current; - pendingLinesRef.current = []; - - const nextState = trimLines(linesRef.current.concat(pending), lineLimit); - linesRef.current = nextState.lines; - setLines(nextState.lines); - - if (nextState.trimmedCount > 0) - onTrimmedLines?.(nextState.trimmedCount); - - if (autoScroll) - scrollToEnd(); - }); - }, [autoScroll, lineLimit, onTrimmedLines, scrollToEnd]); - - useImperativeHandle(ref, () => ({ - push: appendLine, - scrollToEnd, - }), [appendLine, scrollToEnd]); - - return ( -
- - - {virtualizer.getVirtualItems().map(virtualRow => ( - - ))} - - -
- ); -} - -function LogLine({ - line, - style, -}: { - line: string; - style: React.CSSProperties; -}) { - line = line.replace(/§./g, ''); // remove color codes - const groups = line.match(REGEX_PATTERN); - - if (groups === null) - return ( - - {line} -
-
- ); - - const [matched, time, threadName, level, isChat] = groups as [string, string, string, string, string | undefined]; - - return ( - - [{time}] - [{threadName}/{level}] - {isChat ? ' [CHAT]' : ' '}{line.slice(matched.length)} -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/MadeBy.tsx b/apps/oneclient/frontend/src/components/MadeBy.tsx deleted file mode 100644 index f6915378..00000000 --- a/apps/oneclient/frontend/src/components/MadeBy.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { useCopyDebugInfo } from '@/hooks/useDebugInfo'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; - -export function MadeBy() { - const { data: version } = useCommand(['getPackageVersion'], () => bindings.debug.getPackageVersion()); - const { data: isInDev } = useCommand(['isInDev'], () => bindings.debug.isInDev()); - const copyDebugInfo = useCopyDebugInfo(); - - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/ManageSkinButton.tsx b/apps/oneclient/frontend/src/components/ManageSkinButton.tsx deleted file mode 100644 index be4aba3c..00000000 --- a/apps/oneclient/frontend/src/components/ManageSkinButton.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { Button } from '@onelauncher/common/components'; -import { useNavigate } from '@tanstack/react-router'; -import { Pencil01Icon } from '@untitled-theme/icons-react'; -import { useCallback } from 'react'; - -export function ManageSkinButton({ profile }: { profile: MinecraftCredentials }) { - const navigate = useNavigate(); - const manageSkin = useCallback(() => navigate({ to: `/app/account/skins`, search: { profile, search: false } }), [profile, navigate]); - - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/Markdown.module.css b/apps/oneclient/frontend/src/components/Markdown.module.css deleted file mode 100644 index 714ab4f3..00000000 --- a/apps/oneclient/frontend/src/components/Markdown.module.css +++ /dev/null @@ -1,148 +0,0 @@ -.markdown-body h1:first-child { - margin-block-start: 0; - padding-block-start: 0; -} - .markdown-body blockquote, .markdown-body details, .markdown-body dl, .markdown-body ol, .markdown-body p, .markdown-body code, .markdown-body pre, .markdown-body table, .markdown-body ul { - margin-top: 0; - margin-bottom: 16px; -} - .markdown-body li, .markdown-body p { - padding: 0; - line-height: 1.5; -} - .markdown-body h1 { - display: block; -} - .markdown-body h1, .markdown-body h2, .markdown-body h3 { - color: var(--color-contrast); -} - .markdown-body h1, .markdown-body h2 { - padding: 10px 0 5px; - border-bottom: 1px solid var(--color-divider); -} - .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6, .markdown-body li, .markdown-body p { - word-wrap: break-word; - overflow-wrap: anywhere; -} - .markdown-body blockquote { - padding: 0 1em; - color: var(--color-base); - border-left: 0.25em solid var(--color-button-bg); - margin-inline: 0; -} - .markdown-body a { - cursor: pointer; - color: var(--color-blue); -} - .markdown-body a:focus-visible, .markdown-body a:hover { - filter: brightness(1.2); - text-decoration: none; -} - .markdown-body a:active { - filter: brightness(1.1); - text-decoration: none; -} - .markdown-body a:active > img { - scale: 0.98; -} - .markdown-body img { - max-width: 100%; - height: auto; - display: inline-block; -} - .markdown-body html:not(.dark-mode, .oled-mode)selfimg[src$='#gh-dark-mode-only'] { - display: none; -} - .markdown-body html:is(.dark-mode, .oled-mode)selfimg[src$='#gh-light-mode-only'] { - display: none; -} - .markdown-body pre { - margin-top: 1rem; - padding: 14px; - border-radius: var(--radius-sm); - background-color: var(--color-button-bg); - overflow-x: auto; -} - .markdown-body pre code { - font-size: 80%; - padding: 0; - border-radius: 0; -} - .markdown-body code { - padding: 0.2em 0.4em; - font-size: 80%; - border-radius: var(--radius-sm); - background-color: var(--color-button-bg); - color: var(--color-contrast); -} - .markdown-body hr { - margin: 20px 0; - color: var(--color-button-bg); -} - .markdown-body table { - display: block; - width: max-content; - max-width: 100%; - overflow: auto; - border-collapse: separate; - border-spacing: 0; - line-height: 1.5; - border: 0.1rem solid var(--color-button-bg); - border-radius: var(--radius-sm); -} - .markdown-body table th { - font-weight: 600; -} - .markdown-body table td, .markdown-body table th { - padding: 0.4rem 0.85rem; -} - .markdown-body table tr:nth-child(2n) { - background-color: var(--color-accent-contrast); -} - .markdown-body table td:not(:last-of-type), .markdown-body table th:not(:last-of-type) { - border-right: 0.1rem solid var(--color-button-bg); -} - .markdown-body table tr:not(:last-of-type) td, .markdown-body table th { - border-bottom: 0.1rem solid var(--color-button-bg); -} - .markdown-body details { - border: 0.15rem solid var(--color-button-bg); - border-radius: var(--radius-sm); - padding: 0.5rem 0.5rem 0; -} - .markdown-body details summary { - font-weight: bold; - margin: -0.5rem -0.5rem 0; - padding: 0.5rem 0.8rem; - cursor: pointer; - background-color: var(--color-button-bg); - border-radius: var(--radius-xs); -} - .markdown-body details summary:hover { - filter: brightness(0.85); -} - .markdown-body details[open] { - padding: 0.5rem; -} - .markdown-body details[open] summary { - margin-bottom: 0.5rem; - border-radius: var(--radius-xs) var(--radius-xs) 0 0; -} - .markdown-body details[open] > :last-child:not(summary) { - margin-bottom: 0 !important; -} - .markdown-body > :last-child { - margin-bottom: 0 !important; -} - .markdown-body iframe, .markdown-body video { - aspect-ratio: 1.7777777778; - width: 850px; - max-width: 100%; - height: auto; -} - @media screen and (max-width: 1280px) { - .markdown-body iframe, .markdown-body video { - width: 100%; - } -} - \ No newline at end of file diff --git a/apps/oneclient/frontend/src/components/Markdown.tsx b/apps/oneclient/frontend/src/components/Markdown.tsx deleted file mode 100644 index cefbea63..00000000 --- a/apps/oneclient/frontend/src/components/Markdown.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { ExternalLink } from '@/components'; -import ReactMarkdown from 'react-markdown'; -import rehypeRaw from 'rehype-raw'; -import remarkGfm from 'remark-gfm'; -import { twMerge } from 'tailwind-merge'; -import styles from './Markdown.module.css'; - -export function Markdown({ - body, - className, -}: { - body: string; - className?: string | undefined; -}) { - return ( -
- , - }} - rehypePlugins={[rehypeRaw]} - remarkPlugins={[remarkGfm]} - > - {body} - -
- ); -} diff --git a/apps/oneclient/frontend/src/components/Navbar.tsx b/apps/oneclient/frontend/src/components/Navbar.tsx deleted file mode 100644 index ee3841db..00000000 --- a/apps/oneclient/frontend/src/components/Navbar.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import type { ButtonProps } from '@onelauncher/common/components'; -import type { LinkProps, RegisteredRouter } from '@tanstack/react-router'; -import LauncherLogo from '@/assets/logos/oneclient.svg?react'; -import { AccountAvatar, AccountPopup, Overlay, SuperSecretDevOptions } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Popup } from '@onelauncher/common/components'; -import { Link, useNavigate } from '@tanstack/react-router'; -import { Window } from '@tauri-apps/api/window'; -import { MinusIcon, Settings02Icon, SquareIcon, XCloseIcon } from '@untitled-theme/icons-react'; -import { twMerge } from 'tailwind-merge'; - -export function Navbar() { - const { data: currentAccount } = useCommand(['getDefaultUser'], () => bindings.core.getDefaultUser(true)); - const { setting } = useSettings(); - const navigate = useNavigate(); - - const onMinimize = () => Window.getCurrent().minimize(); - const onMaximize = () => Window.getCurrent().toggleMaximize(); - const onClose = () => Window.getCurrent().close(); - - return ( - - ); -} - -function NavbarLink({ - to, - children, -}: LinkProps<'a', RegisteredRouter, '/app'>) { - return ( -
- - {children} - -
- ); -} - -export function NavbarButton({ - children, - color = 'ghost', - size = 'iconLarge', - onClick, - className = '', - ...rest -}: ButtonProps) { - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/Settings/SettingDropdown.tsx b/apps/oneclient/frontend/src/components/Settings/SettingDropdown.tsx deleted file mode 100644 index f88b3e13..00000000 --- a/apps/oneclient/frontend/src/components/Settings/SettingDropdown.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { TitleCase } from '@/utils/string'; -import { Dropdown } from '@onelauncher/common/components'; - -export function SettingDropdown({ setting, options }: { setting: [T, (value: T) => void]; options: Array }) { - return ( - setting[1](key as T)} selectedKey={setting[0]}> - {options.map(option => {TitleCase(option)})} - - ); -} diff --git a/apps/oneclient/frontend/src/components/Settings/SettingNumber.tsx b/apps/oneclient/frontend/src/components/Settings/SettingNumber.tsx deleted file mode 100644 index 35c9829a..00000000 --- a/apps/oneclient/frontend/src/components/Settings/SettingNumber.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { TextField } from '@onelauncher/common/components'; -import { useState } from 'react'; - -type NumberSetting = [ - number, - (value: number) => void, -]; - -export function SettingNumber({ setting, placeholder, min, max }: { setting: NumberSetting; placeholder?: string; min?: number; max?: number }) { - const [inputValue, setInputValue] = useState(String(setting[0])); - - function handleChange(event: React.ChangeEvent) { - const value = event.currentTarget.value; - setInputValue(value); - const num = Number(value); - if (!Number.isNaN(num)) - setting[1](num); - } - - function handleBlur() { - let num = Number(inputValue); - - if (Number.isNaN(num)) { - setInputValue(String(setting[0])); - return; - } - - if (min !== undefined) - num = Math.max(min, num); - if (max !== undefined) - num = Math.min(max, num); - - setInputValue(String(num)); - setting[1](num); - } - - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/Settings/SettingString.tsx b/apps/oneclient/frontend/src/components/Settings/SettingString.tsx deleted file mode 100644 index 5c047c5f..00000000 --- a/apps/oneclient/frontend/src/components/Settings/SettingString.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { TextField } from '@onelauncher/common/components'; - -type StringSetting = [ - string, - (value: string) => void, -]; - -export function SettingString({ setting, placeholder }: { setting: StringSetting; placeholder?: string }) { - return ( - setting[1](event.currentTarget.value)} - placeholder={placeholder} - value={setting[0]} - /> - ); -} diff --git a/apps/oneclient/frontend/src/components/Settings/SettingSwitch.tsx b/apps/oneclient/frontend/src/components/Settings/SettingSwitch.tsx deleted file mode 100644 index ef56acc0..00000000 --- a/apps/oneclient/frontend/src/components/Settings/SettingSwitch.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { Switch } from '@onelauncher/common/components'; - -type BooleanSetting = [ - boolean, - (value: boolean) => void, -]; - -export function SettingSwitch({ setting }: { setting: BooleanSetting }) { - return ( - setting[1](val)} - /> - ); -} diff --git a/apps/oneclient/frontend/src/components/Settings/SettingsRow.tsx b/apps/oneclient/frontend/src/components/Settings/SettingsRow.tsx deleted file mode 100644 index 0ba53b7d..00000000 --- a/apps/oneclient/frontend/src/components/Settings/SettingsRow.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import type { JSX } from 'react'; - -export interface SettingsRowProps { - title: JSX.Element | string; - description: JSX.Element | string; - icon?: JSX.Element; - disabled?: boolean; - children?: JSX.Element; -} - -export function SettingsRow({ disabled, description, icon, title, children }: SettingsRowProps) { - return ( -
- {icon && ( -
- {icon} -
- )} - -
-

{title}

-

{description}

-
- -
- {children} -
-
- ); -} - -interface SettingsRowHeaderProps { - className?: string; - children?: React.ReactNode; -} - -SettingsRow.Header = ({ className, children }: SettingsRowHeaderProps) => { - const headerClasses = `mt-4 mb-1 ml-2 text-md text-fg-secondary uppercase ${className || ''}`; - return

{children}

; -}; - -export default SettingsRow; diff --git a/apps/oneclient/frontend/src/components/Settings/index.ts b/apps/oneclient/frontend/src/components/Settings/index.ts deleted file mode 100644 index c9bcf26b..00000000 --- a/apps/oneclient/frontend/src/components/Settings/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './SettingDropdown'; -export * from './SettingNumber'; -export * from './SettingsRow'; -export * from './SettingString'; -export * from './SettingSwitch'; diff --git a/apps/oneclient/frontend/src/components/SheetPage.tsx b/apps/oneclient/frontend/src/components/SheetPage.tsx deleted file mode 100644 index 97cd8bbf..00000000 --- a/apps/oneclient/frontend/src/components/SheetPage.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import type { HTMLMotionProps, MotionValue } from 'motion/react'; -import { Button } from '@onelauncher/common/components'; -import { useCanGoBack, useRouter } from '@tanstack/react-router'; -import { ArrowLeftIcon } from '@untitled-theme/icons-react'; -import { motion, useScroll, useTransform } from 'motion/react'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import React, { useCallback, useMemo, useRef } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export interface SheetPageProps { - headerSmall: React.ReactNode; - headerLarge: React.ReactNode; - children?: React.ReactNode; - scrollContainerRef?: React.RefObject; -} - -export interface SheetPageContextApi { - scrollContainerRef: React.RefObject; -} - -const SheetPageContext = React.createContext(null); - -export function SheetPage({ - headerSmall, - headerLarge, - children, - scrollContainerRef, -}: SheetPageProps) { - const scrollContainer = useRef(null); - const headerLargeRef = useRef(null); - - const setScrollContainerRef = useCallback((el: HTMLElement | null) => { - scrollContainer.current = el; - if (scrollContainerRef) - scrollContainerRef.current = el; - }, [scrollContainerRef]); - - const { scrollYProgress } = useScroll({ - axis: 'y', - container: scrollContainer, - target: headerLargeRef, - layoutEffect: false, - offset: ['end start', 'start start'], - }); - - const smallTop = useTransform(scrollYProgress, [0, 1], ['0', '100%']); - const smallOpacity = useTransform(scrollYProgress, [0, 1], ['1', '0']); - const largeOpacity = useTransform(scrollYProgress, [0, 1], ['0', '1']); - - const context = useMemo(() => ({ - scrollContainerRef: scrollContainer, - }), [scrollContainer]); - - return ( -
- - -
-
- - - - {headerSmall} - -
- - setScrollContainerRef(ref?.osInstance()?.elements().content ?? null)}> -
- - {headerLarge} - - - - {children} - -
-
-
-
- ); -} - -export function useSheetPageContext() { - const ctx = React.useContext(SheetPageContext); - - if (!ctx) - throw new Error('useSheetPageContext must be used within a SheetPageContext.Provider'); - - return ctx; -} - -SheetPage.Content = ({ - children, - className, - ...rest -}: Omit, 'animate' | 'initial'>) => ( - - {children} - -); - -export function GoBackButton() { - const router = useRouter(); - const canGoBack = useCanGoBack(); - - if (!canGoBack) - return undefined; - - const onClick = () => { - router.navigate({ to: '/' }); - }; - - return ( - - ); -} - -function HeaderBackgrounds({ - scrollYProgress, -}: { - scrollYProgress: MotionValue; -}) { - const top = useTransform(scrollYProgress, [1, 0], ['0px', '-60px']); - - return ( - -
-
- -
-
- -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/SkinViewer.tsx b/apps/oneclient/frontend/src/components/SkinViewer.tsx deleted file mode 100644 index 4874ea0a..00000000 --- a/apps/oneclient/frontend/src/components/SkinViewer.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { getSkinUrl } from '@/utils/minecraft'; -import { useEffect, useRef } from 'react'; -import * as skinviewer from 'skinview3d'; -import { twMerge } from 'tailwind-merge'; - -export interface SkinViewerProps { - skinUrl?: string | undefined | null; - capeUrl?: string | undefined | null; - width?: number; - height?: number; - className?: string | undefined; - autoRotate?: boolean; - autoRotateSpeed?: number; - showText?: boolean; - playerRotatePhi?: number; - playerRotateTheta?: number; - translateRotateX?: number; - translateRotateY?: number; - translateRotateZ?: number; - zoom?: number; - animate?: boolean; - animation?: skinviewer.PlayerAnimation; - enableDamping?: boolean; - enableZoom?: boolean; - enableRotate?: boolean; - enablePan?: boolean; - elytra?: boolean; -} - -const defaultIdleAnimation = new skinviewer.IdleAnimation(); - -export function SkinViewer({ - skinUrl, - capeUrl, - width = 260, - height = 300, - className, - autoRotate = true, - autoRotateSpeed = 0.25, - showText = true, - playerRotatePhi = Math.PI / 3, - playerRotateTheta = -Math.PI / 6, - translateRotateX = 0, - translateRotateY = 0, - translateRotateZ = 0, - zoom = 0.9, - animate = false, - animation = defaultIdleAnimation, - enableDamping = true, - enableZoom = true, - enableRotate = true, - enablePan = true, - elytra = false, -}: SkinViewerProps) { - const canvasRef = useRef(null); - const viewerRef = useRef(null); - - useEffect(() => { - if (!canvasRef.current) - return; - - const viewer = new skinviewer.SkinViewer({ - canvas: canvasRef.current, - }); - - viewer.controls.enableDamping = enableDamping; - viewer.controls.enableZoom = enableZoom; - viewer.controls.enableRotate = enableRotate; - viewer.controls.enablePan = enablePan; - - viewer.zoom = zoom; - - const setAngle = (phi: number, theta: number) => { - const r = viewer.controls.object.position.distanceTo(viewer.controls.target); - const x = r * Math.cos(phi - Math.PI / 2) * Math.sin(theta) + viewer.controls.target.x; - const y = r * Math.sin(phi + Math.PI / 2) + viewer.controls.target.y; - const z = r * Math.cos(phi - Math.PI / 2) * Math.cos(theta) + viewer.controls.target.z; - viewer.controls.object.position.set(x, y, z); - viewer.controls.object.lookAt(viewer.controls.target); - }; - setAngle(playerRotatePhi, playerRotateTheta); - - viewer.playerWrapper.translateX(translateRotateX); - viewer.playerWrapper.translateY(translateRotateY); - viewer.playerWrapper.translateZ(translateRotateZ); - - viewer.animation = animation; - - viewer.autoRotate = autoRotate; - viewer.autoRotateSpeed = autoRotateSpeed; - - viewerRef.current = viewer; - - return () => { - viewer.dispose(); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps -- intentional mount-only initialization - }, []); - - useEffect(() => { - if (!viewerRef.current) - return; - - viewerRef.current.loadSkin(getSkinUrl(skinUrl)); - }, [skinUrl]); - - useEffect(() => { - if (!viewerRef.current) - return; - - if (capeUrl) - viewerRef.current.loadCape(capeUrl, { backEquipment: elytra ? 'elytra' : 'cape' }); - else - viewerRef.current.resetCape(); - }, [capeUrl, elytra]); - - useEffect(() => { - if (!viewerRef.current) - return; - - viewerRef.current.setSize(width, height); - }, [width, height]); - - useEffect(() => { - if (!viewerRef.current) - return; - - viewerRef.current.animation = animation; - }, [animation]); - - useEffect(() => { - if (!viewerRef.current || !viewerRef.current.animation) - return; - - viewerRef.current.animation.paused = !animate; - }, [animate]); - - return ( -
- - - {showText ? Hold to drag. Scroll to zoom in/out. : <>} -
- ); -} diff --git a/apps/oneclient/frontend/src/components/Spinner.module.css b/apps/oneclient/frontend/src/components/Spinner.module.css deleted file mode 100644 index 64878852..00000000 --- a/apps/oneclient/frontend/src/components/Spinner.module.css +++ /dev/null @@ -1,34 +0,0 @@ -@keyframes animloader { - 0% { - transform: scale(0); - opacity: 1; - } - 100% { - transform: scale(1); - opacity: 0; - } -} - -.loader { - display: inline-block; - position: relative; -} - -.loader::after, -.loader::before { - content: ''; - box-sizing: border-box; - width: 100%; - height: 100%; - border-radius: 50%; - border: 2px solid #FFF; - position: absolute; - left: 0; - top: 0; - opacity: 0; - animation: animloader 2s linear infinite; -} - -.loader::after { - animation-delay: 1s; -} diff --git a/apps/oneclient/frontend/src/components/Spinner.tsx b/apps/oneclient/frontend/src/components/Spinner.tsx deleted file mode 100644 index c451aa65..00000000 --- a/apps/oneclient/frontend/src/components/Spinner.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import type { HTMLAttributes } from 'react'; -import type { VariantProps } from 'tailwind-variants'; -import { tv } from 'tailwind-variants'; -import styles from './Spinner.module.css'; - -const spinnerVariants = tv({ - base: styles.loader, - variants: { - size: { - extraSmall: 'w-6 h-6', - small: 'w-8 h-8', - medium: 'w-12 h-12', - large: 'w-16 h-16', - }, - }, -}); - -type SpinnerVariantsProps = VariantProps; - -export interface SpinnerProps extends HTMLAttributes { - size?: SpinnerVariantsProps['size']; -}; - -export function Spinner({ - size = 'medium', - className, -}: SpinnerProps) { - return ( -
- ); -} diff --git a/apps/oneclient/frontend/src/components/Stepper.tsx b/apps/oneclient/frontend/src/components/Stepper.tsx deleted file mode 100644 index ad3a3dbc..00000000 --- a/apps/oneclient/frontend/src/components/Stepper.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { OnboardingStep } from '@/routes/onboarding/route'; -import { twMerge } from 'tailwind-merge'; - -interface VerticalStepperProps { - steps: Array; - currentStepIndex: number; -}; - -export function Stepper({ steps, currentStepIndex }: VerticalStepperProps) { - return ( -
- {steps.map((step, index) => ( -
- {step.title} -
- ))} -
- ); -} diff --git a/apps/oneclient/frontend/src/components/Tabs.tsx b/apps/oneclient/frontend/src/components/Tabs.tsx deleted file mode 100644 index 081fd766..00000000 --- a/apps/oneclient/frontend/src/components/Tabs.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import type { LinkProps } from '@tanstack/react-router'; -import { Link } from '@tanstack/react-router'; -import { twMerge } from 'tailwind-merge'; - -export function TabList({ - className, - children, - floating = false, - ref, -}: React.HTMLAttributes & { - floating?: boolean; - ref?: React.Ref; -}) { - return ( -
-
- {children} -
-
- ); -} - -export function Tab({ - to, - children, - ...rest -}: Omit) { - return ( -
- - {children} - -
- ); -} diff --git a/apps/oneclient/frontend/src/components/index.ts b/apps/oneclient/frontend/src/components/index.ts deleted file mode 100644 index d52f849c..00000000 --- a/apps/oneclient/frontend/src/components/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -export * from './AccountAvatar'; -export * from './BrowserPackageItem'; -export * from './Bundle'; -export * from './DeleteAccountButton'; -export * from './DownloadMods'; -export * from './ExternalLink'; -export * from './GameBackground'; -export * from './LaunchButton'; -export * from './Loader'; -export * from './LogViewer'; -export * from './MadeBy'; -export * from './ManageSkinButton'; -export * from './Markdown'; -export * from './Navbar'; -export * from './overlay'; -export * from './Settings'; -export * from './SheetPage'; -export * from './SkinViewer'; -export * from './Spinner'; -export * from './Stepper'; -export * from './Tabs'; diff --git a/apps/oneclient/frontend/src/components/overlay/AccountPopup.tsx b/apps/oneclient/frontend/src/components/overlay/AccountPopup.tsx deleted file mode 100644 index 399132dc..00000000 --- a/apps/oneclient/frontend/src/components/overlay/AccountPopup.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { AccountAvatar, AddAccountModal, DeleteAccountButton, ManageSkinButton, Overlay, Popup } from '@/components'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { Link } from '@tanstack/react-router'; -import { PlusIcon, Settings01Icon } from '@untitled-theme/icons-react'; -import { twMerge } from 'tailwind-merge'; - -export function AccountPopup() { - const users = useCommand(['getUsers'], bindings.core.getUsers); - const defaultUser = useCommand(['getDefaultUser'], () => bindings.core.getDefaultUser(false)); - - const setDefaultUser = async (user: MinecraftCredentials) => { - await bindings.core.setDefaultUser(user.id); - users.refetch(); - defaultUser.refetch(); - }; - - const deleteUser = async (user: MinecraftCredentials) => { - await bindings.core.removeUser(user.id); - users.refetch(); - defaultUser.refetch(); - - if (defaultUser.data && defaultUser.data.id === user.id && users.data && users.data.length > 1) { - const filtered = users.data.filter(userData => userData.id !== user.id); - if (filtered.length > 0) - setDefaultUser(filtered[0]); - } - }; - - return ( - - -
- {defaultUser.data && ( - { }} - onDelete={() => deleteUser(defaultUser.data as MinecraftCredentials)} - user={defaultUser.data} - /> - )} - - {users.data?.filter(user => user.id !== defaultUser.data?.id).map(user => ( - setDefaultUser(user)} - onDelete={() => deleteUser(user)} - user={user} - /> - ))} - -
- - - - - - - - - - - -
-
-
- ); -} - -export default AccountPopup; - -function AccountEntry({ onClick, onDelete, user, loggedIn = false }: { onClick: () => void; onDelete: () => void; user: MinecraftCredentials; loggedIn?: boolean }) { - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/AddAccountModal.tsx b/apps/oneclient/frontend/src/components/overlay/AddAccountModal.tsx deleted file mode 100644 index b493b95b..00000000 --- a/apps/oneclient/frontend/src/components/overlay/AddAccountModal.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { AccountAvatar, isMinecraftAuthError, MinecraftAuthErrorModal, Overlay } from '@/components'; -import { bindings } from '@/main'; -import { useCommandMut } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; -import { useState } from 'react'; - -export function AddAccountModal() { - return ( - - Add Account -

Add a new account to OneClient

- -
- ); -} - -export function AddAccountModalButton() { - const queryClient = useQueryClient(); - const [authError, setAuthError] = useState(null); - - const { data: profile, isPending, mutate: login } = useCommandMut(bindings.core.openMsaLogin, { - onSuccess() { - setAuthError(null); - queryClient.invalidateQueries({ - queryKey: ['getUsers'], - }); - queryClient.invalidateQueries({ - queryKey: ['getDefaultUser'], - }); - }, - onError(error) { - console.error('[auth] AddAccountModal: openMsaLogin failed', error); - if (isMinecraftAuthError(error)) - setAuthError(error); - }, - }); - - const onClick = () => { - setAuthError(null); - login(); - }; - - if (authError) - return ; - - return ( - profile - ? ( - <> - - - - ) - : - ); -} - -function AccountRow({ profile }: { profile: MinecraftCredentials }) { - return ( -
- - -
-

{profile.username}

-

{profile.id}

-
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/AuthRefreshPrompt.tsx b/apps/oneclient/frontend/src/components/overlay/AuthRefreshPrompt.tsx deleted file mode 100644 index 22ccc05e..00000000 --- a/apps/oneclient/frontend/src/components/overlay/AuthRefreshPrompt.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import { AccountAvatar, Overlay } from '@/components'; -import { bindings } from '@/main'; -import { useCommand, useCommandMut } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { - AlertTriangleIcon, - RefreshCw01Icon, -} from '@untitled-theme/icons-react'; -import { useMemo, useState } from 'react'; - -function getErrorMessage(error: unknown): string { - if (typeof error === 'string') - return error; - - if (error instanceof Error) - return error.message; - - if (typeof error === 'object' && error !== null) - return JSON.stringify(error); - - return String(error); -} - -function isExpiredRefreshError(error: unknown): boolean { - const message = getErrorMessage(error); - return ( - message.includes('invalid_grant') - || message.includes('grant is expired') - || message.includes('RefreshOAuthToken') - ); -} - -export function AuthRefreshPrompt() { - const queryClient = useQueryClient(); - const [dismissed, setDismissed] = useState(false); - - const refresh = useCommand( - ['refreshAccounts'], - bindings.core.refreshAccounts, - { - retry: false, - refetchOnWindowFocus: false, - }, - ); - const shouldPrompt = useMemo( - () => !dismissed && refresh.isError && isExpiredRefreshError(refresh.error), - [dismissed, refresh.error, refresh.isError], - ); - - const { - data: profile, - isPending, - mutate: signInAgain, - } = useCommandMut(bindings.core.openMsaLogin, { - onSuccess() { - setDismissed(true); - queryClient.invalidateQueries({ queryKey: ['getUsers'] }); - queryClient.invalidateQueries({ queryKey: ['getDefaultUser'] }); - queryClient.invalidateQueries({ queryKey: ['refreshAccounts'] }); - }, - }); - - if (!shouldPrompt) - return null; - - return ( - setDismissed(!open)} - > - -
-
- -
- Sign In Again -
- -

- Your Microsoft session expired. Sign in again to keep your account and - launch access up to date. -

- - {profile && ( -
- -
-

- {profile.username} -

-

{profile.id}

-
-
- )} - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/BundleModListModal.tsx b/apps/oneclient/frontend/src/components/overlay/BundleModListModal.tsx deleted file mode 100644 index 29d79ce4..00000000 --- a/apps/oneclient/frontend/src/components/overlay/BundleModListModal.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { ModList, Overlay, useModCardContext } from '@/components'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useState } from 'react'; - -export function BundleModListModal({ clusterId, name }: { clusterId: number; name: string }) { - const { data: cluster } = useCommandSuspense(['getClusterById'], () => bindings.core.getClusterById(clusterId)); - const { data: bundles } = useCommandSuspense(['getBundlesFor', clusterId], () => bindings.oneclient.getBundlesFor(clusterId)); - const [tab, setSelectedTab] = useState(name); - const { mods } = useModCardContext(); - - if (!cluster) - return <>; - - return ( - - - Select Content For - {' '} - {tab} - - -
-

Selected {mods?.length ?? 0} mods

- -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/DebugInfo.tsx b/apps/oneclient/frontend/src/components/overlay/DebugInfo.tsx deleted file mode 100644 index 74b24690..00000000 --- a/apps/oneclient/frontend/src/components/overlay/DebugInfo.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import type { DebugInfoArray } from '@/hooks/useDebugInfo'; -import { Overlay } from '@/components'; -import { useCopyDebugInfo, useDebugInfo } from '@/hooks/useDebugInfo'; -import { Button } from '@onelauncher/common/components'; - -export function DebugInfo() { - const debugInfo = useDebugInfo(); - return ( - - Debug Info - - - ); -} - -export function RawDebugInfo({ debugInfo }: { debugInfo: DebugInfoArray }) { - const copyDebugInfo = useCopyDebugInfo(); - return ( - <> -
- {debugInfo.map((lineData) => { - let line = ''; - if (lineData.title === 'Build Timestamp') - line = `${lineData.title}: ${new Date(Number(lineData.value) * 1000).toString()}`; - else line = `${lineData.title}: ${lineData.value}`; - - return

{line}

; - })} -
- - - ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/ImportSkinModal.tsx b/apps/oneclient/frontend/src/components/overlay/ImportSkinModal.tsx deleted file mode 100644 index 1854edfc..00000000 --- a/apps/oneclient/frontend/src/components/overlay/ImportSkinModal.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Overlay } from '@/components'; -import { Button, TextField } from '@onelauncher/common/components'; -import { useState } from 'react'; - -export function ImportSkinModal({ importFromURL, importFromUsername }: { importFromURL: (url: string) => void; importFromUsername: (username: string) => void }) { - const [input, setInput] = useState(''); - return ( - - Import - setInput(e.target.value)} /> - -
- - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/KillMinecraft.tsx b/apps/oneclient/frontend/src/components/overlay/KillMinecraft.tsx deleted file mode 100644 index d85f14c0..00000000 --- a/apps/oneclient/frontend/src/components/overlay/KillMinecraft.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { Overlay } from '@/components'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; - -export function KillMinecraft({ setOpen }: { setOpen: React.Dispatch> }) { - const { data: foundAllProcess } = useCommandSuspense(['getRunningProcesses'], () => bindings.core.getRunningProcesses()); - const kill = () => { - foundAllProcess.forEach(process => bindings.core.killProcess(process.pid)); - setOpen(false); - }; - - return ( - - Minecraft is running -

Do you want to kill minecraft?

- -
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/MigrationModal.tsx b/apps/oneclient/frontend/src/components/overlay/MigrationModal.tsx deleted file mode 100644 index db0697dd..00000000 --- a/apps/oneclient/frontend/src/components/overlay/MigrationModal.tsx +++ /dev/null @@ -1,248 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import { Overlay } from '@/components'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { bindings } from '@/main'; -import { prettifyLoader } from '@/utils/loaders'; -import { useToast } from '@/utils/toast'; -import { getOnlineClusterForVersion } from '@/utils/versionMap'; -import { useCommand } from '@onelauncher/common'; -import { Dropdown } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { Announcement01Icon } from '@untitled-theme/icons-react'; -import { useEffect, useRef, useState } from 'react'; - -interface MigrationModalProps { - isOpen: boolean; - isDebugPreview?: boolean; - onOpenChange: (open: boolean) => void; - newVersions: Array; - sourceClusters: Array; - allClusters: Array; -} - -export function MigrationModal({ - isOpen, - isDebugPreview = false, - onOpenChange, - newVersions, - sourceClusters, - allClusters, -}: MigrationModalProps) { - const [currentIndex, setCurrentIndex] = useState(0); - const prevOpen = useRef(isOpen); - - useEffect(() => { - if (isOpen && !prevOpen.current) - setCurrentIndex(0); - prevOpen.current = isOpen; - }, [isOpen]); - - const currentVersion = newVersions[currentIndex]; - - const currentClusters = allClusters.filter(c => - c.mc_version === currentVersion && c.last_played === null); - - const defaultSourceId = sourceClusters[sourceClusters.length - 1]?.id ?? null; - - const [targetId, setTargetId] = useState(null); - const [sourceId, setSourceId] = useState(defaultSourceId); - - const effectiveTargetId = targetId ?? currentClusters.at(0)?.id ?? null; - const [isMigrating, setIsMigrating] = useState(false); - const [fallbackFiles, setFallbackFiles] = useState>([]); - - const toast = useToast(); - const queryClient = useQueryClient(); - - const { data: manifest } = useCommand( - ['getVersions'], - () => bindings.oneclient.getVersions(), - ); - - const onlineCluster = manifest - ? getOnlineClusterForVersion(currentVersion, manifest) - : undefined; - const artSrc = useCachedImage(onlineCluster?.art); - const displayName = onlineCluster?.name ?? currentVersion; - - function advanceOrClose() { - if (currentIndex < newVersions.length - 1) { - setCurrentIndex(i => i + 1); - setTargetId(null); - setSourceId(defaultSourceId); - } - else { - onOpenChange(false); - } - } - - async function migrate() { - if (sourceId === null || effectiveTargetId === null) - return; - - if (isDebugPreview) { - toast({ type: 'info', title: 'Debug preview', message: 'Migration is disabled in debug preview mode.' }); - advanceOrClose(); - return; - } - - setIsMigrating(true); - try { - const result = await bindings.oneclient.copyClusterContent(sourceId, effectiveTargetId); - await Promise.all([ - queryClient.invalidateQueries({ - queryKey: ['getClusters'], - }), - queryClient.invalidateQueries({ - queryKey: ['getClusters', 'sortedByLastPlayed'], - }), - queryClient.invalidateQueries({ - queryKey: ['getClustersGroupedByMajor'], - }), - ]); - if (result.fallback_files.length > 0) - setFallbackFiles(result.fallback_files); - else - toast({ type: 'success', title: 'Migration complete', message: 'Your content has been copied to the new version.' }); - advanceOrClose(); - } - catch { - toast({ type: 'error', title: 'Migration failed', message: 'Could not copy content. Please try again.' }); - } - finally { - setIsMigrating(false); - } - } - - return ( - <> - {}}> - - {/* Art banner */} -
- {artSrc - ? ( - {`Minecraft - ) - : ( -
- )} -
- -
-
- - New version -
-

- {currentVersion} - {' '} - is now on OneClient! -

-
-
- - {/* Migration controls */} -
-

- Copy your content from a previous version to get started. -

- - {newVersions.length > 1 && ( -

- Version - {' '} - {currentIndex + 1} - {' '} - of - {' '} - {newVersions.length} -

- )} - - {currentClusters.length > 1 && ( -
-

Copy to

- setTargetId(Number(key))} - selectedKey={effectiveTargetId} - > - {currentClusters.map(c => ( - - {c.mc_version} - {' '} - {prettifyLoader(c.mc_loader)} - - ))} - -
- )} - -
-

Copy from

- setSourceId(Number(key))} - selectedKey={sourceId} - > - {sourceClusters.map(c => ( - - {c.mc_version} - {' '} - {prettifyLoader(c.mc_loader)} - - ))} - -
- - -
- - - - 0} onOpenChange={() => setFallbackFiles([])}> - - Some files could not be updated - -

- The following custom files had no compatible version available for the new Minecraft version. They have been copied over as disabled and will not load until you manually enable them. -

- -
    - {fallbackFiles.map(file => ( -
  • - {file} -
  • - ))} -
- - -
-
- - ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/MinecraftAuthErrorModal.tsx b/apps/oneclient/frontend/src/components/overlay/MinecraftAuthErrorModal.tsx deleted file mode 100644 index 9bf81a7c..00000000 --- a/apps/oneclient/frontend/src/components/overlay/MinecraftAuthErrorModal.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import type { ReactNode } from 'react'; -import type { MinecraftAuthErrorInfo } from './minecraft-auth-errors'; -import { Overlay } from '@/components'; -import { bindings } from '@/main'; -import { useCommandMut } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { AlertTriangleIcon, Copy01Icon, RefreshCw01Icon } from '@untitled-theme/icons-react'; -import { useState } from 'react'; -import { minecraftAuthErrors } from './minecraft-auth-errors'; - -/** - * Extracts an Xbox error code from a LauncherError or error string. - * Error format from backend: "Minecraft authentication error: during MSA step " - */ -export function extractXboxErrorCode(error: unknown): string | null { - const errorStr = typeof error === 'string' - ? error - : error instanceof Error - ? error.message - : typeof error === 'object' && error !== null - ? JSON.stringify(error) - : String(error); - - const match = errorStr.match(/Minecraft authentication error:\s*(\d+)/); - return match ? match[1] : null; -} - -/** - * Checks whether an error is a Minecraft/Xbox authentication error. - */ -export function isMinecraftAuthError(error: unknown): boolean { - return extractXboxErrorCode(error) !== null; -} - -function renderStepWithLinks(step: string): Array { - const anchorRegex = /]*>(.*?)<\/a>/g; - const nodes: Array = []; - let lastIndex = 0; - let match = anchorRegex.exec(step); - - while (match) { - const fullMatch = match[0]; - const href = match[1]; - const label = match[2]; - - if (match.index > lastIndex) - nodes.push(step.slice(lastIndex, match.index)); - - nodes.push( - - {label} - , - ); - - lastIndex = match.index + fullMatch.length; - match = anchorRegex.exec(step); - } - - if (lastIndex < step.length) - nodes.push(step.slice(lastIndex)); - - return nodes; -} - -function MatchedErrorContent({ - matchedError, -}: { - matchedError: MinecraftAuthErrorInfo; -}) { - return ( -
-
-

What happened

-

{matchedError.whatHappened}

-
- -
-

How to fix it

-
    - {matchedError.stepsToFix.map((step, index) => ( -
  1. - - {index + 1} - - {renderStepWithLinks(step)} -
  2. - ))} -
-
-
- ); -} - -function UnknownErrorContent() { - return ( -
-
-

Unknown error

-

- We don't recognize this error and can't recommend specific steps to resolve it. -

-

- Try visiting - {' '} - - Minecraft Login - - {' '} - and signing in, as it may prompt you with the necessary steps. -

-
-
- ); -} - -export function MinecraftAuthErrorModal({ - error, -}: { - error: unknown; -}) { - const queryClient = useQueryClient(); - const [copied, setCopied] = useState(false); - - const errorCode = extractXboxErrorCode(error); - const matchedError = errorCode - ? minecraftAuthErrors.find(e => e.errorCode === errorCode) - : null; - - const { isPending: isRetrying, mutate: retryLogin } = useCommandMut(bindings.core.openMsaLogin, { - onSuccess(data) { - console.warn('[auth] MinecraftAuthErrorModal: retry openMsaLogin succeeded', data ? `user=${data.username} id=${data.id}` : 'returned null'); - queryClient.invalidateQueries({ queryKey: ['getUsers'] }); - queryClient.invalidateQueries({ queryKey: ['getDefaultUser'] }); - }, - onError(err) { - console.error('[auth] MinecraftAuthErrorModal: retry openMsaLogin failed', err); - }, - }); - - const debugInfo = typeof error === 'string' - ? error - : error instanceof Error - ? error.message - : JSON.stringify(error, null, 2); - - const handleCopy = async () => { - try { - await navigator.clipboard.writeText(debugInfo); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - } - catch { - console.error('[auth] Failed to copy to clipboard'); - } - }; - - return ( - -
-
- -
- Sign-in Error -
- -

- Something went wrong while signing in with your Microsoft account. - {errorCode && ( - <> - {' '} - - (Error code: - {' '} - {errorCode} - ) - - - )} -

- - {matchedError ? : } - -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/NoAccountPopup.tsx b/apps/oneclient/frontend/src/components/overlay/NoAccountPopup.tsx deleted file mode 100644 index 7bb814e9..00000000 --- a/apps/oneclient/frontend/src/components/overlay/NoAccountPopup.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { AddAccountModalButton, Overlay } from '@/components'; - -export function NoAccountPopup() { - return ( - - No Account -

Please add an account before you start minecraft

- -
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/Overlay.tsx b/apps/oneclient/frontend/src/components/overlay/Overlay.tsx deleted file mode 100644 index 156012bc..00000000 --- a/apps/oneclient/frontend/src/components/overlay/Overlay.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import type { ButtonProps } from '@onelauncher/common/components'; -import type { HTMLAttributes } from 'react'; -import { Button } from '@onelauncher/common/components'; -import { XCloseIcon } from '@untitled-theme/icons-react'; -import { Dialog, DialogTrigger, Modal, ModalOverlay } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; -import { tv } from 'tailwind-variants'; - -const modalVariants = tv({ - slots: { - overlay: [ - 'fixed inset-0 z-40', - 'flex items-center justify-center', - 'bg-black/50 p-4', - - 'entering:animate-duration-150 entering:animate-fade', - 'exiting:animate-duration-100 exiting:animate-fade exiting:animate-reverse', - ], - modal: [ - 'entering:animate-duration-150 entering:animate-ease-in-out entering:animate-zoom', - 'exiting:animate-duration-100 exiting:animate-ease-in-out exiting:animate-zoom exiting:animate-reverse', - ], - dialog: [ - 'flex flex-col items-center min-w-sm min-h-32 p-4 gap-4 relative', - 'border border-component-border bg-page-elevated rounded-2xl', - ], - }, -}); - -export type OverlayProps = React.ComponentProps & { - className?: string | undefined; - children?: React.ReactNode | undefined; -}; - -export function Overlay({ - className, - children, - isDismissable, - ...rest -}: OverlayProps) { - const { overlay, modal } = modalVariants(); - - return ( - - - {children} - - {isDismissable ?

Click outside to dismiss

: <>} -
- ); -} - -Overlay.Trigger = DialogTrigger; - -Overlay.Buttons = function OverlayButtons({ - className, - buttons, -}: Omit, 'children'> & { - buttons?: Array; -}) { - return ( -
= 3 ? 'flex-col' : 'flex-row', - className, - )} - > - {buttons?.map(({ key, size, color, ...rest }) => ( -
- ); -}; - -Overlay.Dialog = function OverlayDialog({ - className, - children, - isDismissable, -}: { - className?: string | undefined; - children?: React.ReactNode | undefined; - isDismissable?: boolean | undefined; -}) { - const { dialog } = modalVariants(); - - return ( - - {isDismissable - ? ( -
- -
- ) - : <>} - - {children} -
- ); -}; - -Overlay.Title = function OverlayTitle({ children, className }: { children: React.ReactNode; className?: string | undefined }) { - return

{children}

; -}; diff --git a/apps/oneclient/frontend/src/components/overlay/Popup.tsx b/apps/oneclient/frontend/src/components/overlay/Popup.tsx deleted file mode 100644 index dd60f3ce..00000000 --- a/apps/oneclient/frontend/src/components/overlay/Popup.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import type { PopoverProps } from 'react-aria-components'; -import { Dialog, DialogTrigger, Popover } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; -import { tv } from 'tailwind-variants'; - -export interface PopupProps extends Omit { - children: React.ReactNode; - className?: string | undefined; -} - -const popupVariants = tv({ - slots: { - popover: [ - 'flex flex-col gap-0.5 rounded-lg', - - 'entering:animate-fade entering:animate-duration-75', - 'exiting:animate-fade exiting:animate-duration-75 exiting:animate-reverse', - ], - dialog: [ - 'flex flex-col items-center p-1 gap-2 relative', - 'border border-component-border-hover bg-page-elevated shadow-md rounded-xl', - ], - }, -}); - -export function Popup({ - children, - className, - ...props -}: PopupProps) { - const { popover, dialog } = popupVariants(); - - return ( - - - {children} - - - ); -} - -Popup.Trigger = DialogTrigger; diff --git a/apps/oneclient/frontend/src/components/overlay/RemoveAccountModal.tsx b/apps/oneclient/frontend/src/components/overlay/RemoveAccountModal.tsx deleted file mode 100644 index 9a8e224a..00000000 --- a/apps/oneclient/frontend/src/components/overlay/RemoveAccountModal.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { AccountAvatar, Overlay } from '@/components'; -import { Button } from '@onelauncher/common/components'; - -export function RemoveAccountModal({ - profile, - onPress, -}: { - profile: MinecraftCredentials; - onPress: () => void; -}) { - return ( - - Are you sure? - -

- Do you want to remove - {' '} - {profile.username} - {' '} - from your accounts list? -

-

This cannot be undone

- - - -
- ); -} - -function AccountRow({ - profile, -}: { - profile: MinecraftCredentials; -}) { - return ( -
- - -
-

{profile.username}

-

{profile.id}

-
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/RemoveSkinCapeModal.tsx b/apps/oneclient/frontend/src/components/overlay/RemoveSkinCapeModal.tsx deleted file mode 100644 index d677a837..00000000 --- a/apps/oneclient/frontend/src/components/overlay/RemoveSkinCapeModal.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Overlay } from '@/components'; -import { Button } from '@onelauncher/common/components'; - -export function RemoveSkinCapeModal({ onPress }: { onPress: () => void }) { - return ( - - Are you sure? - -

This cannot be undone

- - -
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/SuperSecretDevOptions.tsx b/apps/oneclient/frontend/src/components/overlay/SuperSecretDevOptions.tsx deleted file mode 100644 index ecd5b819..00000000 --- a/apps/oneclient/frontend/src/components/overlay/SuperSecretDevOptions.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { Overlay, SettingsRow, SettingSwitch } from '@/components'; -import { useCopyDebugInfo } from '@/hooks/useDebugInfo'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { Button } from '@onelauncher/common/components'; -import { Link, useNavigate } from '@tanstack/react-router'; - -export function SuperSecretDevOptions() { - const { createSetting, setSetting } = useSettings(); - const copyDebugInfo = useCopyDebugInfo(); - const navigate = useNavigate(); - - const handleSkipOnboarding = () => { - setSetting('seen_onboarding', true); - navigate({ to: '/app' }); - }; - - return ( - - Super Secret Dev Options - -
- - - - - - - - -
- - - - - - - - - - -
- -
-
- ); -} diff --git a/apps/oneclient/frontend/src/components/overlay/Toasts.module.css b/apps/oneclient/frontend/src/components/overlay/Toasts.module.css deleted file mode 100644 index d34f61a4..00000000 --- a/apps/oneclient/frontend/src/components/overlay/Toasts.module.css +++ /dev/null @@ -1,57 +0,0 @@ -:root { - --toastify-color-light: transparent; - --toastify-color-dark: transparent; - --toastify-color-info: var(--toastify-color-dark); - --toastify-color-success: var(--color-success); - --toastify-color-warning: var(--color-warning); - --toastify-color-error: var(--color-error); - --toastify-color-transparent: rgba(255, 255, 255, 0.7); - - --toastify-icon-color-info: var(--color-code-info); - --toastify-icon-color-success: var(--color-code-success); - --toastify-icon-color-warning: var(--color-code-warning); - --toastify-icon-color-error: var(--color-code-error); - - --toastify-container-width: fit-content; - --toastify-toast-width: 320px; - --toastify-toast-offset: 16px; - --toastify-toast-top: max(var(--toastify-toast-offset), env(safe-area-inset-top)); - --toastify-toast-right: max(var(--toastify-toast-offset), env(safe-area-inset-right)); - --toastify-toast-left: max(var(--toastify-toast-offset), env(safe-area-inset-left)); - --toastify-toast-bottom: max(var(--toastify-toast-offset), env(safe-area-inset-bottom)); - --toastify-toast-padding: 0px; - --toastify-toast-min-height: 0px; - --toastify-toast-max-height: 800px; - --toastify-toast-bd-radius: 0px; - --toastify-toast-shadow: var(--shadow-lg); - --toastify-font-family: var(--font-sans); - --toastify-z-index: 9999; - --toastify-text-color-light: var(--color-fg-primary); - --toastify-text-color-dark: var(--color-fg-primary); - - /* Used only for colored theme */ - --toastify-text-color-info: #fff; - --toastify-text-color-success: #fff; - --toastify-text-color-warning: #fff; - --toastify-text-color-error: #fff; - - --toastify-spinner-color: #616161; - --toastify-spinner-color-empty-area: #e0e0e0; - --toastify-color-progress-light: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55); - --toastify-color-progress-dark: #bb86fc; - --toastify-color-progress-info: var(--toastify-color-info); - --toastify-color-progress-success: var(--toastify-color-success); - --toastify-color-progress-warning: var(--toastify-color-warning); - --toastify-color-progress-error: var(--toastify-color-error); - /* used to control the opacity of the progress trail */ - --toastify-color-progress-bgo: 0.2; -} - -@keyframes custom-anim-progress-bar { - 0% { - width: 0%; - } - 100% { - width: 100%; - } -} diff --git a/apps/oneclient/frontend/src/components/overlay/Toasts.tsx b/apps/oneclient/frontend/src/components/overlay/Toasts.tsx deleted file mode 100644 index d883771a..00000000 --- a/apps/oneclient/frontend/src/components/overlay/Toasts.tsx +++ /dev/null @@ -1,227 +0,0 @@ -import type { IngressType } from '@/bindings.gen'; -import type { ToastData, ToastId } from '@/utils/toast'; -import type { HTMLAttributes } from 'react'; -import type { ToastContentProps, ToastOptions } from 'react-toastify'; -import { Spinner } from '@/components'; -import { bindings } from '@/main'; -import { toastUpdate, useToast } from '@/utils/toast'; -import { Button } from '@onelauncher/common/components'; -import { AlertCircleIcon, AlertTriangleIcon, CheckCircleIcon, InfoCircleIcon, XCloseIcon } from '@untitled-theme/icons-react'; -import { useEffect, useRef } from 'react'; -import { cssTransition, ToastContainer } from 'react-toastify'; -import { tv } from 'tailwind-variants'; -import styles from './Toasts.module.css'; - -const toastVariants = tv({ - slots: { - container: [ - 'relative h-full flex flex-row w-full justify-start items-center gap-3 py-4 px-4 rounded-lg overflow-hidden', - 'inset-ring inset-ring-component-border bg-component-bg', - ], - closeBtn: [ - 'absolute top-2 right-2', - ], - }, - variants: { - clickable: { - true: { - container: [ - 'hover:bg-component-bg-hover active:bg-component-bg-pressed', - ], - }, - false: { - container: [], - }, - }, - }, -}); - -export function Toast({ - closeToast, - data, - toastProps, - isPaused, -}: ToastContentProps) { - const { container, closeBtn } = toastVariants({ - clickable: toastProps.closeOnClick || typeof toastProps.onClick !== 'undefined', - }); - - return ( -
- - -
-

{data.title}

- {data.message &&

{data.message}

} -
- -
- -
- -
- -
-
- ); -} - -function ToastProgressBar({ - isPaused, - toastProps, - closeToast, - data, -}: { - toastProps: ToastOptions; - isPaused: boolean; - closeToast: () => void; - data: ToastData; -}) { - let progress = toastProps.progress; - - if (data.shouldAutoClose === false) { - isPaused = true; - progress = 0; - } - - const attrs: HTMLAttributes = {}; - - if (typeof progress === 'number') { - attrs.style = { - transition: 'width 0.2s ease-in-out', - width: `${progress * 100}%`, - }; - - if (progress >= 1) - attrs.onTransitionEnd = closeToast; - } - else { - attrs.style = { - animationName: styles['custom-anim-progress-bar'], - animationDuration: `${toastProps.autoClose}ms`, - animationPlayState: isPaused ? 'paused' : 'running', - animationTimingFunction: 'linear', - animationDelay: '500ms', - }; - - attrs.onAnimationEnd = closeToast; - } - - return ( -
-
- ); -} - -type UnionToIntersection = - (T extends any ? (x: T) => void : never) extends ((x: infer I) => void) ? I : never; - -const ingressNames: Record<(IngressType & string) | (keyof UnionToIntersection), string> = { - JavaPrepare: 'Preparing Java', - JavaCheck: 'Checking Java', - JavaLocate: 'Locating Java', - MinecraftDownload: 'Downloading Minecraft', - Download: 'Downloading', - PrepareCluster: 'Preparing Cluster', -}; - -export function Toasts() { - const toastIngressMapRef = useRef(new Map()); - const listenerRef = useRef(false); - const toast = useToast(); - - useEffect(() => { - if (listenerRef.current) - return; - - listenerRef.current = true; - - let unlisten: (() => void) | undefined; - - bindings.events.ingress.on((e) => { - const toastIngressMap = toastIngressMapRef.current; - - const ingressType = typeof e.ingress_type === 'string' - ? e.ingress_type - : Object.keys(e.ingress_type)[0] ?? 'Info'; - - const title = ingressNames[ingressType as keyof typeof ingressNames] ?? ingressType; - - const existingToastId = toastIngressMap.get(e.id); - - if (existingToastId) { - toastUpdate(existingToastId, { - progress: e.percent ?? 1, - isLoading: true, - message: e.message, - title, - }); - } - else { - const toastId = toast({ - type: 'info', - title, - progress: e.percent ?? 1, - isLoading: true, - message: e.message, - }); - - toastIngressMap.set(e.id, toastId); - } - }).then((fn) => { - unlisten = fn; - }); - - return () => { - if (unlisten) - unlisten(); - }; - }, [toast]); - - return ( - - ); -} - -function ToastIcon({ - isLoading, - type, -}: { - isLoading: boolean | undefined; - type: ToastData['type']; -}) { - if (isLoading) - return ; - - switch (type) { - case 'success': - return ; - case 'warning': - return ; - case 'error': - return ; - case 'info': - default: - return ; - } -} diff --git a/apps/oneclient/frontend/src/components/overlay/index.ts b/apps/oneclient/frontend/src/components/overlay/index.ts deleted file mode 100644 index f0d882cc..00000000 --- a/apps/oneclient/frontend/src/components/overlay/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -export * from './AccountPopup'; -export * from './AddAccountModal'; -export * from './AuthRefreshPrompt'; -export * from './BundleModListModal'; -export * from './DebugInfo'; -export * from './ImportSkinModal'; -export * from './KillMinecraft'; -export * from './minecraft-auth-errors'; -export * from './MinecraftAuthErrorModal'; -export * from './NoAccountPopup'; -export * from './Overlay'; -export * from './Popup'; -export * from './RemoveAccountModal'; -export * from './RemoveSkinCapeModal'; -export * from './SuperSecretDevOptions'; -export * from './Toasts'; diff --git a/apps/oneclient/frontend/src/components/overlay/minecraft-auth-errors.ts b/apps/oneclient/frontend/src/components/overlay/minecraft-auth-errors.ts deleted file mode 100644 index bd96365f..00000000 --- a/apps/oneclient/frontend/src/components/overlay/minecraft-auth-errors.ts +++ /dev/null @@ -1,90 +0,0 @@ -export interface MinecraftAuthErrorInfo { - errorCode: string; - whatHappened: string; - stepsToFix: Array; -} - -export const minecraftAuthErrors: Array = [ - { - errorCode: '2148916222', - whatHappened: - 'Your Minecraft/Xbox Live account requires age verification to comply with UK regulations. You must complete this before signing in.', - stepsToFix: [ - 'Go to the Minecraft Login page and sign in', - 'Follow the instructions to verify your age', - 'Once verified, try signing in again', - 'For additional help, visit UK age verification on Xbox', - ], - }, - { - errorCode: '2148916233', - whatHappened: `This account doesn't have an Xbox profile set up or doesn't own Minecraft.`, - stepsToFix: [ - 'Make sure Minecraft is purchased on this account', - 'Visit Minecraft Login and sign in', - 'Complete Xbox profile setup if prompted', - 'Once finished, try signing in again', - ], - }, - { - errorCode: '2148916235', - whatHappened: `Xbox Live isn't available in your region, so sign-in is blocked.`, - stepsToFix: [ - 'Xbox services must be supported in your country before you can sign in', - 'Check Xbox Availability for supported regions', - ], - }, - { - errorCode: '2148916236', - whatHappened: 'This account requires adult verification under South Korean regulations.', - stepsToFix: [ - 'Visit Xbox and sign in', - 'Complete the identity verification process', - 'Once finished, try signing in again', - ], - }, - { - errorCode: '2148916237', - whatHappened: 'This account requires adult verification under South Korean regulations.', - stepsToFix: [ - 'Visit Xbox and sign in', - 'Complete the identity verification process', - 'Once finished, try signing in again', - ], - }, - { - errorCode: '2148916238', - whatHappened: 'This account is underage and not linked to a Microsoft family group.', - stepsToFix: [ - 'Review the Family Setup Guide', - 'Join or create a family group as instructed', - 'Once finished, try signing in again', - ], - }, - { - errorCode: '2148916227', - whatHappened: 'This account was suspended for violating Xbox Community Standards.', - stepsToFix: [ - 'Visit Xbox Support and review the enforcement details', - 'Submit an appeal if one is available', - ], - }, - { - errorCode: '2148916229', - whatHappened: `This account is restricted and doesn't have permission to play online.`, - stepsToFix: [ - 'Have a guardian sign in to Microsoft Family', - 'Update online play permissions', - 'Once finished, try signing in again', - ], - }, - { - errorCode: '2148916234', - whatHappened: `This account hasn't accepted Xbox's Terms of Service.`, - stepsToFix: [ - 'Visit Xbox and sign in', - 'Accept the Terms if prompted', - 'Once finished, try signing in again', - ], - }, -]; diff --git a/apps/oneclient/frontend/src/constants/onboardingTipsBackup.ts b/apps/oneclient/frontend/src/constants/onboardingTipsBackup.ts deleted file mode 100644 index ee26cb87..00000000 --- a/apps/oneclient/frontend/src/constants/onboardingTipsBackup.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const ONBOARDING_TIPS_BACKUP = [ - '418 I\'m a teapot', - 'Floors 8 through 10 of the Catacombs were originally planned for release, but portions of it were later merged into Floor 7 and its Master Mode counterpart.', - 'At one point, Feather Client was willing to pay $300 USD to add Skytils, a popular SkyBlock mod.', - 'Grass is a plant with narrow leaves growing from the base. [...]\nGrasses are monocotyledon, herbaceous plants.', - 'In Canada, Santa\'s postal code is H0H 0H0.', - 'Guvf vf abg na vzcbegnag fragrapr.', - 'Vs lbh qrpvcure guvf, lbh fubhyq yvfgra gb Mrgihr\'f zhfvp.', - 'Try to do something creative! It could be music, art, coding...\nYou won\'t know how much you like it until you try it, so give it a shot :)', - 'At one point in Minecraft, there was a rare chance of Snow Golems naturally spawning.', - 'W[h]yvest', - 'RUMOUR. Open your ears; 9r"5j5&?OWTY Z0d', - 'Make sure to drink water! You never know if you might be dehydrated.', - 'People asking you to "test their mod" are likely trying to hack you.\nThe only ones you can trust are ones widely trusted by the community.', - 'Have a great day!', - 'You can sleep through a thunderstorm, even during the day', -]; diff --git a/apps/oneclient/frontend/src/fonts.ts b/apps/oneclient/frontend/src/fonts.ts deleted file mode 100644 index bc81d9d9..00000000 --- a/apps/oneclient/frontend/src/fonts.ts +++ /dev/null @@ -1,14 +0,0 @@ -import '@fontsource/poppins/300.css'; -import '@fontsource/poppins/300-italic.css'; -import '@fontsource/poppins/400.css'; -import '@fontsource/poppins/400-italic.css'; -import '@fontsource/poppins/500.css'; -import '@fontsource/poppins/500-italic.css'; -import '@fontsource/poppins/600.css'; -import '@fontsource/poppins/600-italic.css'; -import '@fontsource/poppins/700.css'; -import '@fontsource/poppins/700-italic.css'; -import '@fontsource/poppins/800.css'; -import '@fontsource/poppins/800-italic.css'; -import '@fontsource/poppins/900.css'; -import '@fontsource/poppins/900-italic.css'; diff --git a/apps/oneclient/frontend/src/hooks/useCachedImage.ts b/apps/oneclient/frontend/src/hooks/useCachedImage.ts deleted file mode 100644 index 53cfcbd2..00000000 --- a/apps/oneclient/frontend/src/hooks/useCachedImage.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { bindings } from '@/main'; -import { convertFileSrc } from '@tauri-apps/api/core'; -import { useEffect, useState } from 'react'; - -// Track which paths have already been refreshed this session so we only -// hit the network once per path, not on every component mount. -const refreshedPaths: Set = new Set(); -const prefetchedPaths: Set = new Set(); - -function normalizePaths(paths: Array): Array { - return Array.from(new Set(paths.filter((path): path is string => Boolean(path)))); -} - -/** - * Eagerly caches a list of art paths with bounded concurrency. - * This is intended for onboarding prefetch so version cards can render - * immediately from disk cache instead of waiting for per-card fetches. - */ -export async function prefetchCachedImages( - paths: Array, - options?: { concurrency?: number }, -): Promise { - const normalizedPaths = normalizePaths(paths).filter(path => !prefetchedPaths.has(path)); - if (normalizedPaths.length === 0) - return; - - const concurrency = Math.max(1, options?.concurrency ?? 4); - let nextIndex = 0; - - const worker = async () => { - while (nextIndex < normalizedPaths.length) { - const index = nextIndex++; - const path = normalizedPaths[index]; - if (!path) - continue; - - prefetchedPaths.add(path); - try { - await bindings.oneclient.cacheArt(path); - if (!refreshedPaths.has(path)) { - refreshedPaths.add(path); - bindings.oneclient.refreshArt(path).catch(() => {}); - } - } - catch { - // Keep failures non-fatal and allow retry in a future prefetch call. - prefetchedPaths.delete(path); - } - } - }; - - await Promise.all(Array.from({ length: Math.min(concurrency, normalizedPaths.length) }, worker)); -} - -/** - * Returns the best URL for an art image at the given relative path (e.g. `/versions/art/Foo.png`). - * - * - If the image is already cached on disk, returns the local `asset://` URL immediately. - * - If not cached, downloads it first, then returns the local URL. - * - After the cached version is shown, triggers a one-per-session background refresh that - * overwrites the on-disk cache with any updated version — applied on the next app start. - */ -export function useCachedImage(path: string | null | undefined): string | undefined { - const [src, setSrc] = useState(undefined); - - useEffect(() => { - setSrc(undefined); - if (!path) - return; - - let cancelled = false; - - bindings.oneclient.cacheArt(path) - .then((localPath: string) => { - if (cancelled) - return; - - setSrc(convertFileSrc(localPath)); - - // One background refresh per path per session — no UI update, just overwrites disk - if (!refreshedPaths.has(path)) { - refreshedPaths.add(path); - bindings.oneclient.refreshArt(path).catch(() => {}); - } - }) - .catch(() => { - // Not cached and offline — nothing to show - }); - - return () => { - cancelled = true; - }; - }, [path]); - - return src; -} diff --git a/apps/oneclient/frontend/src/hooks/useClusterDirWatch.ts b/apps/oneclient/frontend/src/hooks/useClusterDirWatch.ts deleted file mode 100644 index 30ae072c..00000000 --- a/apps/oneclient/frontend/src/hooks/useClusterDirWatch.ts +++ /dev/null @@ -1,257 +0,0 @@ -import type { DebouncedWatchOptions, WatchEvent } from '@tauri-apps/plugin-fs'; -import { useLastPlayedClusters } from '@/hooks/useClusters'; -import { bindings } from '@/main'; -import { useQueryClient } from '@tanstack/react-query'; -import { invoke, SERIALIZE_TO_IPC_FN, transformCallback } from '@tauri-apps/api/core'; -import { useEffect, useMemo } from 'react'; - -const WATCH_DELAY_MS = 1000; -const SYNC_DEBOUNCE_MS = 1000; -const STALE_WATCH_CALLBACK_TTL_MS = 30_000; - -interface WatchTarget { - id: number; - folderName: string; -} - -interface ChannelMessage { - message: T; - index: number; -} - -interface ChannelEndMessage { - end: true; - index: number; -} - -type RawChannelMessage = ChannelMessage | ChannelEndMessage; - -class WatchChannel { - private readonly callbackId: number; - private disposed = false; - - constructor(onMessage: (message: T) => void) { - this.callbackId = transformCallback((rawMessage: RawChannelMessage) => { - if (this.disposed) - return; - - if (!('message' in rawMessage)) - return; - - onMessage(rawMessage.message); - }, false); - } - - [SERIALIZE_TO_IPC_FN]() { - return `__CHANNEL__:${this.callbackId}`; - } - - toJSON() { - return this[SERIALIZE_TO_IPC_FN](); - } - - scheduleCleanup() { - const callbackKey = `_${this.callbackId}`; - const callbacks = window as unknown as Record; - this.disposed = true; - - // Keep a noop callback briefly after unwatch to absorb late native events. - callbacks[callbackKey] = () => {}; - window.setTimeout(() => { - Reflect.deleteProperty(window, callbackKey); - }, STALE_WATCH_CALLBACK_TTL_MS); - } -} - -async function watchSafely( - path: string, - callback: (event: WatchEvent) => void, - options: DebouncedWatchOptions, -) { - const onEvent: WatchChannel = new WatchChannel(callback); - const rid = await invoke('plugin:fs|watch', { - paths: [path], - options: { - recursive: false, - delayMs: 2000, - ...options, - }, - onEvent, - }); - - let closed = false; - - return () => { - if (closed) - return; - - closed = true; - void invoke('plugin:fs|unwatch', { rid }).finally(() => { - onEvent.scheduleCleanup(); - }); - }; -} - -function normalizePath(path: string): string { - return path.replaceAll('\\', '/').toLowerCase(); -} - -function isStructuralChange(event: WatchEvent): boolean { - if (typeof event.type === 'string') - return false; - - return 'create' in event.type || 'remove' in event.type; -} - -function shouldIgnoreEvent(event: WatchEvent): boolean { - // Ignore plain file edits (modify/metadata/data writes). Sync only on - // structural changes (add/remove file or folder). - if (!isStructuralChange(event)) - return true; - - if (event.paths.length === 0) - return false; - - return event.paths.every((rawPath) => { - const path = normalizePath(rawPath); - return path.includes('/logs/') - || path.includes('/crash-reports/') - || path.includes('/saves/') - || path.endsWith('/latest.log'); - }); -} - -/** - * Watches ALL cluster directories for file-system changes (files added, - * removed, renamed). Should be mounted once at the app root so that syncing - * happens regardless of which page the user is on. - */ -export function useAllClusterDirWatch() { - const { data: clusters } = useLastPlayedClusters(); - const queryClient = useQueryClient(); - const watchTargets: Array = useMemo( - () => clusters.map(cluster => ({ - id: cluster.id, - folderName: cluster.folder_name, - })), - [clusters], - ); - - useEffect(() => { - if (watchTargets.length === 0) - return; - - const lifecycle = { - disposed: false, - }; - const unwatchers: Array<() => void> = []; - const pendingTimeouts: Map = new Map(); - const syncInFlight: Set = new Set(); - const syncQueued: Set = new Set(); - - const clearPendingSync = (clusterId: number) => { - const timeoutId = pendingTimeouts.get(clusterId); - if (timeoutId === undefined) - return; - - window.clearTimeout(timeoutId); - pendingTimeouts.delete(clusterId); - }; - - const runSync = async (clusterId: number) => { - if (lifecycle.disposed) - return; - - if (syncInFlight.has(clusterId)) { - syncQueued.add(clusterId); - return; - } - - syncInFlight.add(clusterId); - try { - // Skip sync while the backend is applying bundle updates to avoid - // race conditions (watcher would re-sync mid-download). - const bundleSyncing = await bindings.oneclient.isBundleSyncing().catch(() => false); - if (bundleSyncing) - return; - - // Skip sync while cluster is running to avoid constant scans while - // the game is actively writing files. - const running = await bindings.core.isClusterRunning(clusterId).catch(() => false); - if (running) - return; - - await bindings.core.syncCluster(clusterId); - await queryClient.invalidateQueries({ queryKey: ['getLinkedPackages', clusterId] }); - } - catch (e) { - console.error('[watch] sync failed for cluster', clusterId, ':', e); - } - finally { - syncInFlight.delete(clusterId); - if (syncQueued.has(clusterId)) { - syncQueued.delete(clusterId); - scheduleSync(clusterId); - } - } - }; - - const scheduleSync = (clusterId: number) => { - if (lifecycle.disposed) - return; - - clearPendingSync(clusterId); - const timeoutId = window.setTimeout(() => { - pendingTimeouts.delete(clusterId); - void runSync(clusterId); - }, SYNC_DEBOUNCE_MS); - pendingTimeouts.set(clusterId, timeoutId); - }; - - const isDisposed = () => lifecycle.disposed; - - const registerWatch = async (target: WatchTarget) => { - try { - const clusterDir = await bindings.folders.fromCluster(target.folderName); - if (isDisposed()) - return; - - const unwatch = await watchSafely( - clusterDir, - (event) => { - if (isDisposed() || shouldIgnoreEvent(event)) - return; - - scheduleSync(target.id); - }, - { delayMs: WATCH_DELAY_MS, recursive: true }, - ); - - if (isDisposed()) { - unwatch(); - return; - } - - unwatchers.push(unwatch); - } - catch (e) { - console.error('[watch] failed to register watch:', e); - } - }; - - for (const target of watchTargets) - void registerWatch(target); - - return () => { - lifecycle.disposed = true; - for (const timeoutId of pendingTimeouts.values()) - window.clearTimeout(timeoutId); - pendingTimeouts.clear(); - syncQueued.clear(); - syncInFlight.clear(); - - for (const unwatch of unwatchers) - unwatch(); - }; - }, [queryClient, watchTargets]); -} diff --git a/apps/oneclient/frontend/src/hooks/useClusters.ts b/apps/oneclient/frontend/src/hooks/useClusters.ts deleted file mode 100644 index ad87320e..00000000 --- a/apps/oneclient/frontend/src/hooks/useClusters.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { bindings } from '@/main'; -import useAppShellStore from '@/stores/appShellStore'; -import { useAsyncEffect, useCommand, useCommandSuspense } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; -import { useEffect } from 'react'; - -export function useLastPlayedClusters() { - return useCommandSuspense( - ['getClusters', 'sortedByLastPlayed'], - bindings.core.getClusters, - { - select: data => data - .sort((a, b) => { - if (a.last_played && b.last_played) - return new Date(b.last_played).getTime() - new Date(a.last_played).getTime(); - else if (a.last_played) - return -1; // a has last_played, b does not - else if (b.last_played) - return 1; // b has last_played, a does not - - const aVersion = a.mc_version.replaceAll('.', ''); - const bVersion = b.mc_version.replaceAll('.', ''); - return Number.parseInt(bVersion) - Number.parseInt(aVersion); - }), - }, - ); -} - -export function useActiveCluster() { - const clusterId = useAppShellStore(state => state.activeClusterId); - - const { data: clusters } = useLastPlayedClusters(); - - return clusters.find(c => c.id === clusterId) ?? clusters[0]; -} - -export function useIsRunning(clusterId: number | undefined | null) { - const queryClient = useQueryClient(); - const enabled = clusterId !== null && clusterId !== undefined; - const queryClusterId = clusterId ?? -1; - const { data: running } = useCommand( - ['isClusterRunning', queryClusterId], - () => bindings.core.isClusterRunning(queryClusterId), - { - enabled, - staleTime: 0, - gcTime: 0, - refetchOnWindowFocus: true, - refetchInterval: 2000, - refetchIntervalInBackground: true, - }, - ); - - useEffect(() => { - if (!enabled) - return; - - // Keep state accurate when the game is force-closed and a process event - // is delayed/missed. - const interval = window.setInterval(() => { - queryClient.invalidateQueries({ - queryKey: ['isClusterRunning', queryClusterId], - }); - }, 2000); - - return () => { - window.clearInterval(interval); - }; - }, [enabled, queryClient, queryClusterId]); - - useAsyncEffect(async () => { - if (!enabled) - return; - - const unlisten = await bindings.events.process.on((e) => { - if (e.cluster_id !== queryClusterId) - return; - - const isRunning = e.kind.type !== 'Stopped'; - queryClient.setQueryData(['isClusterRunning', queryClusterId], isRunning); - }); - - return () => { - unlisten(); - }; - }, [enabled, queryClient, queryClusterId]); - - return enabled ? Boolean(running) : false; -} diff --git a/apps/oneclient/frontend/src/hooks/useCustomBundle.ts b/apps/oneclient/frontend/src/hooks/useCustomBundle.ts deleted file mode 100644 index 4d25b366..00000000 --- a/apps/oneclient/frontend/src/hooks/useCustomBundle.ts +++ /dev/null @@ -1,119 +0,0 @@ -import type { ClusterModel, ManagedVersion, ModpackArchive, ModpackFile, PackageModel, PackageType } from '@/bindings.gen'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; -import { useMemo } from 'react'; - -/** Finds packages that are installed in the cluster but not part of any bundle, filtered by type. */ -export function findCustomPackages( - bundles: Array, - installedPackages: Array, - packageType: PackageType, - excludeDependencies: boolean = false, -): Array { - const bundleKeys: Set = new Set(); - const bundleHashes: Set = new Set(); - // Collect dependency project IDs to exclude hidden bundle deps (mods only). - // e.g. fabric-language-kotlin is hidden in the PolyMrPack manifest but - // listed as a required dependency of visible bundle mods. - const bundleDependencyIds: Set = new Set(); - - bundles.forEach((b) => { - b.manifest.files.forEach((f) => { - if ('Managed' in f.kind) { - bundleKeys.add(`${f.kind.Managed[0].provider}:${f.kind.Managed[0].id}`); - if (excludeDependencies) - f.kind.Managed[1].dependencies.forEach((dep) => { - if (dep.project_id != null) - bundleDependencyIds.add(dep.project_id); - }); - } - else { - bundleHashes.add(f.kind.External.sha1); - } - }); - }); - - return installedPackages.filter((pkg) => { - if (pkg.package_type !== packageType) - return false; - if (bundleKeys.has(`${pkg.provider}:${pkg.package_id}`) || bundleHashes.has(pkg.hash)) - return false; - if (excludeDependencies && bundleDependencyIds.has(pkg.package_id)) - return false; - return true; - }); -} - -/** - * Builds a synthetic "[Custom]" ModpackArchive for installed packages that are - * not part of any bundle. Batch-fetches Modrinth metadata so icons/descriptions - * are available. - */ -export function useCustomBundle( - bundles: Array, - installedPackages: Array, - cluster: ClusterModel, - packageType: PackageType, -): ModpackArchive | null { - const customInstalledPackages = useMemo( - () => findCustomPackages(bundles, installedPackages, packageType, packageType === 'mod'), - [bundles, installedPackages, packageType], - ); - - const modrinthIds = useMemo( - () => customInstalledPackages.filter(p => p.provider === 'Modrinth').map(p => p.package_id), - [customInstalledPackages], - ); - - const { data: fetchedManagedPackages } = useCommandSuspense( - ['getMultiplePackages', 'Modrinth', modrinthIds], - () => bindings.core.getMultiplePackages('Modrinth', modrinthIds), - ); - - return useMemo(() => { - if (customInstalledPackages.length === 0) - return null; - - const managedPackageMap = new Map(fetchedManagedPackages.map(mp => [mp.id, mp])); - - const files: Array = customInstalledPackages.map((pkg) => { - const managed = managedPackageMap.get(pkg.package_id); - if (managed) { - const stubVersion: ManagedVersion = { - version_id: pkg.version_id, - project_id: pkg.package_id, - display_name: pkg.display_name, - display_version: pkg.display_version, - changelog: null, - dependencies: [], - mc_versions: pkg.mc_versions, - release_type: 'release', - loaders: pkg.mc_loader, - published: pkg.published_at, - downloads: 0, - files: [{ sha1: pkg.hash, url: '', file_name: pkg.file_name, primary: true, size: 0 }], - }; - return { enabled: true, kind: { Managed: [managed, stubVersion] as [typeof managed, ManagedVersion] }, overrides: null }; - } - return { - enabled: true, - kind: { External: { name: pkg.file_name, url: '', sha1: pkg.hash, size: 0, package_type: pkg.package_type } }, - overrides: { name: pkg.display_name, icon: pkg.icon ?? null, authors: null, description: null }, - }; - }); - - return { - path: '__custom__', - format: 'PolyMrPack', - manifest: { - name: '[Custom]', - version: '0.0.0', - loader: cluster.mc_loader, - loader_version: cluster.mc_loader_version ?? '', - mc_version: cluster.mc_version, - enabled: true, - files, - }, - }; - }, [customInstalledPackages, fetchedManagedPackages, cluster]); -} diff --git a/apps/oneclient/frontend/src/hooks/useDebugInfo.ts b/apps/oneclient/frontend/src/hooks/useDebugInfo.ts deleted file mode 100644 index 7897b4d8..00000000 --- a/apps/oneclient/frontend/src/hooks/useDebugInfo.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { DebugInfoParsedLine } from '@/bindings.gen'; -import type { ShortcutEvent } from '@tauri-apps/plugin-global-shortcut'; -import { bindings } from '@/main'; -import { useToast } from '@/utils/toast'; -import { writeText } from '@tauri-apps/plugin-clipboard-manager'; -import { register } from '@tauri-apps/plugin-global-shortcut'; -import { useCallback, useEffect, useState } from 'react'; - -export type DebugInfoArray = Array; -export function useDebugInfo(): DebugInfoArray { - const [debugInfo, setDebugInfo] = useState([]); - - useEffect(() => { - const fetchDevInfo = async () => { - const info = await bindings.debug.getFullDebugInfoParsed(); - setDebugInfo(info); - }; - - void fetchDevInfo(); - }, []); - - return debugInfo; -} - -export function useCopyDebugInfo() { - const toast = useToast(); - - return async function copyDebugInfo() { - const info = await bindings.debug.getFullDebugInfoParsedString(); - writeText(info); - toast({ - type: 'info', - title: 'Debug Info', - message: 'Debug info has been copied to clipboard', - }); - }; -} - -export function useDebugKeybind() { - const copyDebugInfo = useCopyDebugInfo(); - const handleKeybind = useCallback((event: ShortcutEvent) => { - if (event.state !== 'Pressed') - return; - copyDebugInfo(); - }, [copyDebugInfo]); - - useEffect(() => { - void (async () => { - await register('CommandOrControl+Shift+D', handleKeybind); - await register('Alt+F12', handleKeybind); - })(); - }, [handleKeybind]); -} diff --git a/apps/oneclient/frontend/src/hooks/useDiscordRPC.ts b/apps/oneclient/frontend/src/hooks/useDiscordRPC.ts deleted file mode 100644 index 994ee14c..00000000 --- a/apps/oneclient/frontend/src/hooks/useDiscordRPC.ts +++ /dev/null @@ -1,65 +0,0 @@ -import type { ToOptions } from '@tanstack/react-router'; -import { bindings } from '@/main'; -import { ReplaceVariables } from '@/utils/string'; -import { useCommand } from '@onelauncher/common'; -import { useLocation } from '@tanstack/react-router'; -import { useEffect } from 'react'; - -type URLPath = Exclude; -export const ResolvedPathNames: Record = { - '.': 'UNKNOWN', - '..': 'UNKNOWN', - '/': 'Viewing Home', - '/app': 'Viewing Homepage', - '/app/account': 'Viewing Account', - '/app/account/skins': 'Viewing Skin Manager', - '/app/cluster': 'Viewing Versions', - '/app/cluster/browser': 'Viewing {clusterName}\'s mods', - '/app/cluster/browser/package': 'Browsing {packageName}', - '/app/cluster/datapacks': 'Viewing {clusterName}\'s data packs', - '/app/cluster/logs': 'Viewing {clusterName}\'s logs', - '/app/cluster/mods': 'Viewing {clusterName}\'s mods', - '/app/cluster/process': 'Viewing {clusterName}', - '/app/cluster/resource-packs': 'Viewing {clusterName}\'s resource packs', - '/app/cluster/settings': 'Viewing {clusterName}\'s settings', - '/app/cluster/shaders': 'Viewing {clusterName}\'s shaders', - '/app/settings': 'Viewing Settings', - '/app/settings/appearance': 'Viewing Settings', - '/app/settings/changelog': 'Viewing Settings', - '/app/settings/developer': 'Viewing Settings', - '/app/settings/minecraft': 'Viewing Settings', - '/app/accounts': 'Viewing Accounts', - '/app/clusters': 'Viewing Versions', - '/app/debug': 'Viewing Debug', - '/onboarding': 'Preparing OneClient', - '/onboarding/preferences/version': 'Preparing OneClient', - '/onboarding/preferences/versionCategory': 'Preparing OneClient', - '/onboarding/preferences': 'Preparing OneClient', - '/onboarding/account': 'Preparing OneClient', - '/onboarding/downloading': 'Preparing OneClient', - '/onboarding/language': 'Preparing OneClient', -}; - -export function useDiscordRPC() { - const location = useLocation(); - const clusterId = location.search.clusterId ?? 0; - const provider = location.search.provider ?? null; - const packageId = location.search.packageId ?? null; - const { data: cluster } = useCommand(['getClusterById', clusterId], () => bindings.core.getClusterById(clusterId)); - - const { data: managedPackage } = useCommand( - ['getPackage', provider, packageId], - () => { - if (provider == null || packageId == null) - return Promise.reject(new Error('Missing parameters')); - return bindings.core.getPackage(provider, packageId); - }, - { enabled: provider != null && packageId != null }, - ); - - useEffect(() => { - const template = ResolvedPathNames[location.pathname as URLPath]; - if (template) - bindings.core.setDiscordRPCMessage(ReplaceVariables(template, { clusterName: cluster?.name ?? 'UNKNOWN', packageName: managedPackage?.name ?? 'UNKNOWN' })); - }, [location.pathname, location.search.clusterId, cluster?.name, managedPackage?.name]); -} diff --git a/apps/oneclient/frontend/src/hooks/useLaunchCluster.ts b/apps/oneclient/frontend/src/hooks/useLaunchCluster.ts deleted file mode 100644 index 99a5371d..00000000 --- a/apps/oneclient/frontend/src/hooks/useLaunchCluster.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { bindings } from '@/main'; -import { useToast } from '@/utils/toast'; -import { getMessageFromError, isLauncherError } from '@onelauncher/common'; -import { useNavigate } from '@tanstack/react-router'; -import { useCallback, useState } from 'react'; - -export function useLaunchCluster(): { launch: (clusterId: number | undefined | null) => void; showDownloadWarning: boolean; setShowDownloadWarning: (show: boolean) => void; forceLaunch: () => void }; -export function useLaunchCluster(clusterId: number | undefined | null): { launch: () => void; showDownloadWarning: boolean; setShowDownloadWarning: (show: boolean) => void; forceLaunch: () => void }; - -export function useLaunchCluster(clusterId?: number | undefined | null) { - const toast = useToast(); - const navigate = useNavigate(); - const [showDownloadWarning, setShowDownloadWarning] = useState(false); - const [lastAttemptedId, setLastAttemptedId] = useState(null); - - const launch = useCallback( - async (id?: number | null) => { - const targetId = clusterId ?? id; // prefer the one from hook arg - - if (!targetId) - return; - - setLastAttemptedId(targetId); - - try { - await bindings.core.launchCluster(targetId, null, false); - - navigate({ - to: '/app/cluster/process', - search: { clusterId: targetId }, - }); - } - catch (err: any) { - if (err.type === 'ClusterError' && err.data.type === 'ClusterDownloading') { - setShowDownloadWarning(true); - return; - } - - if (isLauncherError(err)) - toast({ - type: 'error', - title: 'Launch Error', - message: getMessageFromError(err), - }); - } - }, - [clusterId, navigate, toast], - ); - - const forceLaunch = useCallback(async () => { - if (!lastAttemptedId) - return; - // @ts-ignore - ignoring - await bindings.core.setClusterStage(lastAttemptedId, 'notready'); - setShowDownloadWarning(false); - launch(lastAttemptedId); - }, [lastAttemptedId, launch]); - - return { launch, showDownloadWarning, setShowDownloadWarning, forceLaunch }; -} diff --git a/apps/oneclient/frontend/src/hooks/usePlayerProfile.ts b/apps/oneclient/frontend/src/hooks/usePlayerProfile.ts deleted file mode 100644 index 52993c91..00000000 --- a/apps/oneclient/frontend/src/hooks/usePlayerProfile.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { MojangPlayerProfile } from '@/bindings.gen'; -import type { QueryKey } from '@tanstack/react-query'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; - -type PartialUuid = string | undefined | null; - -export function usePlayerProfile(uuid: (() => PartialUuid) | PartialUuid) { - const id = typeof uuid === 'function' ? uuid() : uuid; - const queryKey: QueryKey = ['fetchMinecraftProfile', id]; - - const queryClient = useQueryClient(); - const state = queryClient.getQueryState(queryKey); - - const shouldFetch = (state?.fetchFailureCount ?? 0) < 1; - - return useCommand( - queryKey, - () => { - if (!id) - throw new Error('No player ID provided'); - - return bindings.core.fetchMinecraftProfile(id); - }, - { - placeholderData: { - username: 'Player', - uuid: '00000000-0000-0000-0000-000000000000', - is_slim: false, - cape_url: null, - skin_url: null, - }, - enabled: shouldFetch, - staleTime: Infinity, - }, - ); -} diff --git a/apps/oneclient/frontend/src/hooks/usePopState.ts b/apps/oneclient/frontend/src/hooks/usePopState.ts deleted file mode 100644 index 5714b47c..00000000 --- a/apps/oneclient/frontend/src/hooks/usePopState.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useLocation } from '@tanstack/react-router'; -import { useEffect, useRef } from 'react'; - -export default function usePopState(onRouteChange: void | any) { - const location = useLocation(); - const prevLocationRef = useRef(location); - - useEffect(() => { - const prevLocation = prevLocationRef.current; - - // Only run if the pathname actually changed - if (prevLocation.pathname !== location.pathname) - onRouteChange?.({ - from: prevLocation, - to: location, - }); - - prevLocationRef.current = location; - }, [location, onRouteChange]); -} diff --git a/apps/oneclient/frontend/src/hooks/useSettings.ts b/apps/oneclient/frontend/src/hooks/useSettings.ts deleted file mode 100644 index 14725db9..00000000 --- a/apps/oneclient/frontend/src/hooks/useSettings.ts +++ /dev/null @@ -1,76 +0,0 @@ -import type { ClusterModel, ProfileUpdate, Settings } from '@/bindings.gen'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; -import { useEffect, useMemo, useState } from 'react'; - -export function useSettings() { - const settings = useCommandSuspense(['readSettings'], bindings.core.readSettings); - const setting = useMemo(() => { - return function setting(key: TKey) { - return settings.data[key]; - }; - }, [settings]); - - const setSetting = useMemo(() => { - return async function setSetting(key: TKey, value: Settings[TKey]) { - await bindings.core.writeSettings({ - ...settings.data, - [key]: value, - }); - await settings.refetch(); - }; - }, [settings]); - - type Setter = (value: Settings[TKey]) => void; - - const createSetting = useMemo(() => { - return function createSetting(key: TKey): [Settings[TKey], Setter] { - return [setting(key), value => setSetting(key, value)]; - }; - }, [setting, setSetting]); - - return { setting, setSetting, createSetting }; -} - -const emptyUpdate: ProfileUpdate = { - res: null, - force_fullscreen: null, - mem_max: null, - launch_args: null, - launch_env: null, - hook_pre: null, - hook_wrapper: null, - hook_post: null, -}; - -export function useClusterProfile(cluster: ClusterModel) { - const [profileName, setProfileName] = useState(cluster.setting_profile_name); - const profileSrc = useCommandSuspense(['getProfileOrDefault', profileName], () => bindings.core.getProfileOrDefault(profileName)); - const [profile, setProfile] = useState(profileSrc.data); - - useEffect(() => { - setProfile(profileSrc.data); - }, [profileSrc.data]); - - const updateProfile = useMemo(() => - async (update: Partial) => { - setProfile(profile => ({ ...profile, ...update })); - let name = profileName; - if (!profileName || profileSrc.data.name !== profileName) { - name = globalThis.crypto.randomUUID(); - await bindings.core.createSettingsProfile(name); - await bindings.core.updateClusterById(cluster.id, { - setting_profile_name: name, - name: null, - icon_url: null, - }); - setProfileName(name); - } - if (!name) - throw new Error('No settings profile name'); - await bindings.core.updateClusterProfile(name, { ...emptyUpdate, ...update }); - profileSrc.refetch(); - }, [profileName, cluster.id, profileSrc]); - // const updateProfile = useMemo(() => (update: Partial) => setProfile({ ...profile.data, ...update }), [setProfile, profile.data]); - return { profile, setProfile, updateProfile }; -} diff --git a/apps/oneclient/frontend/src/hooks/useUpdater.ts b/apps/oneclient/frontend/src/hooks/useUpdater.ts deleted file mode 100644 index 0f88aa1f..00000000 --- a/apps/oneclient/frontend/src/hooks/useUpdater.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { UnlistenFn } from '@tauri-apps/api/event'; -import { bindings } from '@/main'; -import { listen } from '@tauri-apps/api/event'; -import { useEffect } from 'react'; - -export interface Update { - version: string; -} - -export type UpdateEvent = - | { status: 'loading' } - | { status: 'error'; error: string } - | { status: 'updateAvailable'; update: Update } - | { status: 'noUpdateAvailable' } - | { status: 'installing' }; - -export async function checkForUpdate(): Promise { - return await bindings.oneclient.checkForUpdate(); -} - -export async function installUpdate(): Promise { - await bindings.oneclient.installUpdate(); -} - -export async function listenForUpdateEvents( - callback: (event: UpdateEvent) => void, -): Promise { - return await listen('updater', (event) => { - callback(event.payload); - }); -} - -export function useAutoUpdater() { - useEffect(() => { - void (async () => { - try { - const update = await checkForUpdate(); - if (!update) - return; - - // eslint-disable-next-line no-console -- Used for debugging - aka important - console.log('Update found on initial check:', update.version); - - try { - await installUpdate(); - } - catch (e) { - console.error('Failed to install update:', e); - } - } - catch (e) { - console.error('Failed to check for update:', e); - } - })(); - }, []); -} diff --git a/apps/oneclient/frontend/src/hooks/useVersionMigration.ts b/apps/oneclient/frontend/src/hooks/useVersionMigration.ts deleted file mode 100644 index 720d7dcb..00000000 --- a/apps/oneclient/frontend/src/hooks/useVersionMigration.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { bindings } from '@/main'; -import useMigrationStore from '@/stores/migrationStore'; -import { useCommandSuspense } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; -import { useEffect } from 'react'; - -const DEFAULT_SEEN_VERSIONS = ['1.21.1', '1.21.10', '1.21.11'] as const; - -function areStringArraysEqual(left: Array, right: Array): boolean { - return left.length === right.length && left.every((value, index) => value === right[index]); -} - -function areClustersEqual( - left: Array<{ id: number; mc_version: string; mc_loader: string; last_played: string | null }>, - right: Array<{ id: number; mc_version: string; mc_loader: string; last_played: string | null }>, -): boolean { - return left.length === right.length - && left.every((cluster, index) => { - const other = right[index]; - return cluster.id === other.id - && cluster.mc_version === other.mc_version - && cluster.mc_loader === other.mc_loader - && cluster.last_played === other.last_played; - }); -} - -export function useVersionMigration() { - const queryClient = useQueryClient(); - const { data: grouped } = useCommandSuspense( - ['getClustersGroupedByMajor'], - bindings.oneclient.getClustersGroupedByMajor, - ); - const { data: settingsData } = useCommandSuspense(['readSettings'], bindings.core.readSettings); - const isOpen = useMigrationStore(state => state.isOpen); - const isDebugPreview = useMigrationStore(state => state.isDebugPreview); - const newVersions = useMigrationStore(state => state.newVersions); - const sourceClusters = useMigrationStore(state => state.sourceClusters); - const allClusters = useMigrationStore(state => state.allClusters); - const setAllClusters = useMigrationStore(state => state.setAllClusters); - const setMigrationCandidates = useMigrationStore(state => state.setMigrationCandidates); - const setIsOpen = useMigrationStore(state => state.setIsOpen); - const openForDebug = useMigrationStore(state => state.openForDebug); - - useEffect(() => { - const settings = settingsData; - const storedSeenVersions = Array.isArray(settings.seen_versions) ? settings.seen_versions : []; - const seenVersions = [ - ...new Set([ - ...DEFAULT_SEEN_VERSIONS, - ...storedSeenVersions, - ]), - ]; - const nextAllClusters = Object.values(grouped) - .flat() - .filter((cluster): cluster is NonNullable => Boolean(cluster)); - const currentVersions = [...new Set(nextAllClusters.map(c => c.mc_version))]; - - const unseen = currentVersions.filter(v => !seenVersions.includes(v)); - const unseenUnplayed = unseen.filter(v => - nextAllClusters.some(c => c.mc_version === v && c.last_played === null)); - - // Clusters not belonging to any new version — candidates to copy from - const sources = nextAllClusters.filter(c => !unseenUnplayed.includes(c.mc_version)); - const migrationState = useMigrationStore.getState(); - - if (!areClustersEqual(migrationState.allClusters, nextAllClusters)) - setAllClusters(nextAllClusters); - - const migrationCandidatesChanged - = !areStringArraysEqual(migrationState.newVersions, unseenUnplayed) - || !areClustersEqual(migrationState.sourceClusters, sources); - - // Keep active modal data stable while it is open. - if (migrationCandidatesChanged && !migrationState.isOpen) - setMigrationCandidates(unseenUnplayed, sources); - - if (unseenUnplayed.length > 0 && sources.length > 0 && !migrationState.isOpen && settings.seen_onboarding) - setIsOpen(true); - - const nextSeenVersions = [...new Set([...currentVersions, ...DEFAULT_SEEN_VERSIONS])].sort(); - const normalizedStoredSeenVersions = [...storedSeenVersions].sort(); - const hasSeenVersionsChanged - = !areStringArraysEqual(nextSeenVersions, normalizedStoredSeenVersions); - - if (hasSeenVersionsChanged) { - const nextSettings = { - ...settings, - seen_versions: nextSeenVersions, - } as typeof settingsData; - - queryClient.setQueryData(['readSettings'], nextSettings); - void bindings.core.writeSettings(nextSettings); - } - }, [grouped, queryClient, setAllClusters, setIsOpen, setMigrationCandidates, settingsData]); - - return { isOpen, isDebugPreview, setIsOpen, newVersions, sourceClusters, allClusters, openForDebug }; -} diff --git a/apps/oneclient/frontend/src/main.tsx b/apps/oneclient/frontend/src/main.tsx deleted file mode 100644 index 37bba811..00000000 --- a/apps/oneclient/frontend/src/main.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { isDev, registerDevExperience, registerNativeExperience } from '@onelauncher/common'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { createHashHistory, createRouter, RouterProvider } from '@tanstack/react-router'; -import { StrictMode } from 'react'; -import ReactDOM from 'react-dom/client'; -import { createTauRPCProxy } from './bindings.gen'; -import { routeTree } from './routeTree.gen'; - -import './fonts'; -import 'overlayscrollbars/overlayscrollbars.css'; -import './styles/global.css'; - -// Tauri bindings -export const bindings = createTauRPCProxy(); - -// Tanstack Query Client -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - enabled: false, - staleTime: 1000 * 60 * 1, // 1 minute - }, - }, -}); - -const hashHistory = createHashHistory(); - -// Tanstack Router -const router = createRouter({ - routeTree, - context: { - queryClient, - }, - history: hashHistory, - defaultPreload: 'intent', - scrollRestoration: true, - defaultStructuralSharing: true, - defaultPreloadStaleTime: 0, - defaultNotFoundComponent: () =>
Not Found
, -}); - -declare module '@tanstack/react-router' { - interface Register { - router: typeof router; - } -} - -// Register UX changes -if (isDev) - registerDevExperience(); - -registerNativeExperience(); - -// Render the app -const rootElement = document.getElementById('app'); -if (rootElement && !rootElement.innerHTML) { - const root = ReactDOM.createRoot(rootElement); - root.render( - - - - - , - ); -} diff --git a/apps/oneclient/frontend/src/routes/__root.tsx b/apps/oneclient/frontend/src/routes/__root.tsx deleted file mode 100644 index 15c9fe6d..00000000 --- a/apps/oneclient/frontend/src/routes/__root.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import type { QueryClient } from '@tanstack/react-query'; -import type { NavigateOptions, ToOptions } from '@tanstack/react-router'; -import { AuthRefreshPrompt, Toasts } from '@/components'; -import { MigrationModal } from '@/components/overlay/MigrationModal'; -import { useDebugKeybind } from '@/hooks/useDebugInfo'; -import { useDiscordRPC } from '@/hooks/useDiscordRPC'; -import { useSettings } from '@/hooks/useSettings'; -import { useAutoUpdater } from '@/hooks/useUpdater'; -import { useVersionMigration } from '@/hooks/useVersionMigration'; -import { TanStackDevtools } from '@tanstack/react-devtools'; -import { ReactQueryDevtoolsPanel } from '@tanstack/react-query-devtools'; -import { createRootRouteWithContext, Outlet, useRouter } from '@tanstack/react-router'; -import { TanStackRouterDevtoolsPanel } from '@tanstack/react-router-devtools'; -import { RouterProvider } from 'react-aria-components'; - -interface AppRouterContext { - queryClient: QueryClient; -} - -declare module 'react-aria-components' { - interface RouterConfig { - href: ToOptions['to']; - routerOptions: Omit; - } -} - -export const Route = createRootRouteWithContext()({ - component: RootRoute, -}); - -function RootRoute() { - const router = useRouter(); - const { setting } = useSettings(); - useDiscordRPC(); - useAutoUpdater(); - useDebugKeybind(); - - const migration = useVersionMigration(); - - return ( - router.navigate({ to, ...options })} - useHref={to => router.buildLocation({ to }).href} - > - {setting('show_tanstack_dev_tools') && } - -
- -
- - - - - {setting('seen_onboarding') && ( - - )} -
- ); -} - -function DevTools() { - return ( - , - }, - { - name: 'Tanstack Router', - render: , - }, - ]} - /> - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/account/route.tsx b/apps/oneclient/frontend/src/routes/app/account/route.tsx deleted file mode 100644 index d092b610..00000000 --- a/apps/oneclient/frontend/src/routes/app/account/route.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { LoaderSuspense } from '@/components'; -import { bindings } from '@/main'; -import { MissingAccountData } from '@/routes/app/account/skins'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; - -export interface AccountsRouteSearchParams { - profile: MinecraftCredentials | undefined; - search: boolean; -} - -export const Route = createFileRoute('/app/account')({ - component: RouteComponent, - validateSearch: (search): AccountsRouteSearchParams => { - return { - profile: search.profile as MinecraftCredentials | undefined, - search: search.profile === undefined, - }; - }, - async beforeLoad({ context, search }) { - // TODO instead replace this with a refresh access_token function. Waiting on binding from @LynithDev - const { profile, search: validSearch } = search as AccountsRouteSearchParams; - - if (!profile) - return { profileData: null, profile: null, validSearch, playerData: null }; - - const query = context.queryClient.ensureQueryData({ - queryKey: ['fetchLoggedInProfile', profile.access_token], - queryFn: () => bindings.core.fetchLoggedInProfile(profile.access_token), - }); - - const profileData = await query; - - const playerDataQuery = context.queryClient.ensureQueryData({ - queryKey: ['fetchMinecraftProfile', profileData.id], - queryFn: () => bindings.core.fetchMinecraftProfile(profileData.id), - }); - - const playerData = await playerDataQuery; - - return { - profileData, - profile, - validSearch, - playerData, - }; - }, -}); - -function RouteComponent() { - const { profileData, validSearch } = Route.useRouteContext(); - - return ( - <> - - {profileData === null ? : } - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/account/skins.tsx b/apps/oneclient/frontend/src/routes/app/account/skins.tsx deleted file mode 100644 index 99aa84c8..00000000 --- a/apps/oneclient/frontend/src/routes/app/account/skins.tsx +++ /dev/null @@ -1,485 +0,0 @@ -import type { PlayerAnimation } from 'skinview3d'; -import { ImportSkinModal, Overlay, RemoveSkinCapeModal, SheetPage, SkinViewer } from '@/components'; -import { bindings } from '@/main'; -import { getSkinUrl } from '@/utils/minecraft'; -import { useToast } from '@/utils/toast'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { dataDir, downloadDir, join } from '@tauri-apps/api/path'; -import { save } from '@tauri-apps/plugin-dialog'; -import { exists, mkdir, readTextFile, writeFile, writeTextFile } from '@tauri-apps/plugin-fs'; -import { Download01Icon, PlusIcon, Trash01Icon } from '@untitled-theme/icons-react'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useEffect, useMemo, useState } from 'react'; -import { CrouchAnimation, FlyingAnimation, HitAnimation, IdleAnimation, WalkingAnimation } from 'skinview3d'; - -interface Skin { - is_slim: boolean; - skin_url: string; - cape_url?: string; -} - -interface Cape { - url: string; - id: string; -} - -export const Route = createFileRoute('/app/account/skins')({ - component: RouteComponent, -}); - -async function getSkinHistory(): Promise> { - const parentDir = await join(await dataDir(), 'OneClient', 'metadata', 'history'); - const skinsPath = await join(parentDir, 'skins.json'); - try { - const dirExists = await exists(parentDir); - if (!dirExists) - await mkdir(parentDir, { recursive: true }); - const fileExists = await exists(skinsPath); - if (!fileExists) { - await writeTextFile(skinsPath, JSON.stringify([])); - return []; - } - const contents = await readTextFile(skinsPath); - return JSON.parse(contents) as Array; - } - catch (error) { - console.error(error); - await writeTextFile(skinsPath, JSON.stringify([])); - return []; - } -} - -async function saveSkinHistory(skins: Array): Promise { - const parentDir = await join(await dataDir(), 'OneClient', 'metadata', 'history'); - const skinsPath = await join(parentDir, 'skins.json'); - try { - const dirExists = await exists(parentDir); - if (!dirExists) - await mkdir(parentDir, { recursive: true }); - await writeTextFile(skinsPath, JSON.stringify(skins)); - } - catch (error) { - console.error(error); - } -} - -const animations = [ - { name: 'Idle', animation: new IdleAnimation(), speed: 0.1 }, - { name: 'Walking', animation: new WalkingAnimation(), speed: 0.1 }, - { name: 'Flying', animation: new FlyingAnimation(), speed: 0.2 }, - { name: 'Crouch', animation: new CrouchAnimation(), speed: 0.025 }, - { name: 'Hit', animation: new HitAnimation(), speed: 0.1 }, -]; - -function useSkinHistory() { - const [skins, setSkinsState] = useState>([]); - const [loaded, setLoaded] = useState(false); - useEffect(() => { - (async () => { - const history = await getSkinHistory(); - setSkinsState(history); - setLoaded(true); - })(); - }, []); - const setSkins = (updater: (prev: Array) => Array) => { - setSkinsState((prev) => { - const newSkins = updater(prev); - const dedupedSkins: Array = []; - const seen: Set = new Set(); - for (const skin of newSkins) - if (!seen.has(skin.skin_url)) { - seen.add(skin.skin_url); - dedupedSkins.push(skin); - } - - saveSkinHistory(dedupedSkins); - return dedupedSkins; - }); - }; - - return [skins, setSkins, loaded] as const; -} - -export function MissingAccountData({ validSearch }: { validSearch: boolean }) { - return ( - } headerSmall={<>}> -

{validSearch ? 'Please select an account before going to the skins page' : 'Missing Profile auth. Please log out and log back in'}

-
- ); -} - -function RouteComponent() { - const { profileData, profile, queryClient, validSearch, playerData } = Route.useRouteContext(); - const toast = useToast(); - - const [capes, setCapes] = useState>([]); - const [selectedCape, setSelectedCape] = useState(''); - const [shouldShowElytra, setShouldShowElytra] = useState(false); - - useEffect(() => { - if (!profileData) - return; - setCapes([{ url: '', id: '' }, ...profileData.capes.map(cape => ({ url: cape.url, id: cape.id }))]); - }, [profileData]); - - const [skins, setSkins, loaded] = useSkinHistory(); - const [selectedSkin, setSelectedSkin] = useState({ skin_url: getSkinUrl(null), is_slim: false }); - const skinData: Skin = useMemo(() => ({ is_slim: profileData?.skins[0].variant === 'slim', skin_url: getSkinUrl(profileData?.skins[0].url), cape_url: playerData?.cape_url ?? '' }), [playerData?.cape_url, profileData?.skins]); - - useEffect(() => { - if (!loaded) - return; - - setSkins(prev => [...prev, skinData]); - setSelectedSkin(skinData); - setSelectedCape(skinData.cape_url ?? ''); - }, [loaded, setSkins, skinData]); - - const importFromURL = (url: string) => { - setSkins(prev => [...prev, { is_slim: false, skin_url: url }]); - }; - - const importFromUsername = async (username: string) => { - toast({ - type: 'info', - title: 'Import Skin', - message: `Importing skin from ${username}`, - }); - const { id } = await bindings.core.convertUsernameUUID(username); - if (id === '') - return toast({ - type: 'error', - title: 'Import Skin', - message: `${username} doesn't exist`, - }); - const playerProfile = await bindings.core.fetchMinecraftProfile(id); - if (playerProfile.skin_url) { - setSkins(prev => [...prev, { is_slim: playerProfile.is_slim, skin_url: getSkinUrl(playerProfile.skin_url) }]); - toast({ - type: 'success', - title: 'Import Skin', - message: `Imported skin from ${username}`, - }); - } - }; - - const saveSkinToAccount = async () => { - try { - if (!profile) - return; - await bindings.core.changeSkin(profile.access_token, selectedSkin.skin_url, selectedSkin.is_slim ? 'slim' : 'classic'); - if (selectedCape === '') { - await bindings.core.removeCape(profile.access_token); - } - else { - const capeData = capes.find(cape => cape.url === selectedCape); - if (!capeData) - return; - await bindings.core.changeCape(profile.access_token, capeData.id); - } - queryClient.invalidateQueries({ - queryKey: ['getDefaultUser'], - }); - queryClient.invalidateQueries({ - queryKey: ['fetchLoggedInProfile'], - }); - queryClient.invalidateQueries({ - queryKey: ['fetchMinecraftProfile'], - }); - } - catch (error) { - console.error(error); - } - }; - - animations[0].animation.speed = animations[0].speed; - const [animation, setAnimation] = useState(animations[0].animation); - const [animationName, setAnimationName] = useState(animations[0].name); - - const getNextAnimationData = () => { - const animationIndex = animations.findIndex(animationData => animationData.name === animationName); - if (animationIndex === -1 || animationIndex === animations.length - 1) - return animations[0]; - else - return animations[animationIndex + 1]; - }; - - const changeSelectedAnimation = () => { - const data = getNextAnimationData(); - data.animation.speed = data.speed; - if (data.name === 'Walking') - (data.animation as WalkingAnimation).headBobbing = false; - setAnimation(data.animation); - setAnimationName(data.name); - }; - - if (profileData === null) - return ; - - return ( - - )} - headerSmall={} - > - -
-
-

Current Skin

- - - -
- -
- -
- - - -
- - setShouldShowElytra(!shouldShowElytra)} - shouldShowElytra={shouldShowElytra} - skinURL={selectedSkin.skin_url} - /> - -
- -
-
-
- ); -} - -function SkinHistoryRow({ selected, animation, setSelectedSkin, skins, setSkins, importFromURL, importFromUsername, capeURL, shouldShowElytra }: { selected: Skin; animation: PlayerAnimation; setSelectedSkin: (skin: Skin) => void; skins: Array; setSkins: (updater: (prev: Array) => Array) => void; importFromURL: (url: string) => void; importFromUsername: (username: string) => void; capeURL: string; shouldShowElytra: boolean }) { - return ( -
-
-

Skin History

-
- - -
- - - - - - - {skins.map(skinData => ( - - ))} -
-
- -
- ); -} - -function RenderSkin({ skin, selected, animation, setSelectedSkin, setSkins, capeURL, shouldShowElytra }: { skin: Skin; selected: Skin; animation: PlayerAnimation; setSelectedSkin: (skin: Skin) => void; setSkins: (updater: (prev: Array) => Array) => void; capeURL: string; shouldShowElytra: boolean }) { - const exportSkin = async () => { - try { - if (!skin.skin_url) - return; - const filePath = await save({ - title: 'Skin Export Location', - filters: [ - { - name: 'Images', - extensions: ['png'], - }, - ], - defaultPath: await join(await downloadDir(), `${skin.skin_url.split('/').reverse()[0]}.png`), - }); - - if (!filePath) - return; - - const response = await fetch(skin.skin_url); - const buffer = await response.arrayBuffer(); - - await writeFile(filePath, new Uint8Array(buffer)); - } - catch (error) { - console.error(error); - } - }; - if (!skin.skin_url) - return <>; - return ( - - - - setSkins(prev => prev.filter(skinData => skinData.skin_url !== skin.skin_url))} /> - - - )} - - - ); -} - -function CapeRow({ selected, animation, setSelectedCape, capes, shouldShowElytra, setShouldShowElytra, skinURL }: { selected: string | null; animation: PlayerAnimation; setSelectedCape: (cape: string) => void; capes: Array; shouldShowElytra: boolean; setShouldShowElytra: () => void; skinURL: string }) { - return ( -
- -
- {capes.map(cape => ( - - ))} -
-
- - -
-

Cape History

- -
-
- ); -} - -function RenderCape({ selected, animation, setSelectedCape, cape, shouldShowElytra, skinURL }: { selected: string | null; animation: PlayerAnimation; setSelectedCape: (cape: string) => void; cape: string; shouldShowElytra: boolean; skinURL: string }) { - return ( - - ); -} - -function HeaderLarge({ username, save }: { username: string; save: () => void }) { - return ( -
-
-

{`${username}'s Skins`}

- -
- -
-
-
- ); -} - -function HeaderSmall() { - return ( -
-

Accounts

-
- ); -} - -function Viewer({ skinURL, capeURL, height = 400, width = 250, showText = true, animation, enableControls = false, flip = false, shouldShowElytra }: { skinURL: string; capeURL: string; height?: number; width?: number; showText?: boolean; animation?: PlayerAnimation; enableControls?: boolean; flip?: boolean; shouldShowElytra: boolean }) { - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/accounts.tsx b/apps/oneclient/frontend/src/routes/app/accounts.tsx deleted file mode 100644 index b4761c57..00000000 --- a/apps/oneclient/frontend/src/routes/app/accounts.tsx +++ /dev/null @@ -1,177 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import type { ButtonProps } from '@onelauncher/common/components'; -import { AccountAvatar, AddAccountModal, DeleteAccountButton, ManageSkinButton, Overlay, SheetPage, SkinViewer } from '@/components'; -import { usePlayerProfile } from '@/hooks/usePlayerProfile'; -import { bindings } from '@/main'; -import { useCommandMut, useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { createFileRoute } from '@tanstack/react-router'; -import { Button as AriaButton } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/app/accounts')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - } - headerSmall={} - > - -
- - -
- - -
-
-
- ); -} - -function HeaderLarge() { - return ( -
-
-

Accounts

-

Manage your Minecraft accounts in one place. Your selected account will be used across all versions.

-
- - -
- ); -} - -function HeaderSmall() { - return ( -
-

Accounts

- - -
- ); -} - -function Viewer() { - const { data: currentAccount } = useCommandSuspense(['getDefaultUser'], () => bindings.core.getDefaultUser(true)); - const { data: profile } = usePlayerProfile(currentAccount?.id); - - return ( - - ); -} - -function AccountList() { - const { data: accounts } = useCommandSuspense(['getUsers'], () => bindings.core.getUsers()); - const { data: currentAccount } = useCommandSuspense(['getDefaultUser'], () => bindings.core.getDefaultUser(true)); - - const queryClient = useQueryClient(); - const { mutate: setDefaultUser } = useCommandMut(bindings.core.setDefaultUser, { - onSuccess() { - queryClient.invalidateQueries({ - queryKey: ['getDefaultUser'], - }); - }, - }); - const { mutate: removeUser } = useCommandMut(bindings.core.removeUser, { - onSuccess() { - queryClient.invalidateQueries({ - queryKey: ['getDefaultUser'], - }); - queryClient.invalidateQueries({ - queryKey: ['getUsers'], - }); - }, - }); - - return ( -
- {accounts.map(account => ( - removeUser(account.id)} - onPress={() => setDefaultUser(account.id)} - profile={account} - selected={currentAccount?.id === account.id} - /> - ))} - - {accounts.length === 0 && ( -

No accounts found.

- )} -
- ); -} - -function AccountRow({ - selected = false, - profile, - onPress, - onDelete, -}: { - selected?: boolean; - profile: MinecraftCredentials; - onPress: () => void; - onDelete: () => void; -}) { - const { isError } = usePlayerProfile(profile.id); - - return ( - -
-
- - -
-

- {profile.username} - {isError && (Error fetching online profile)} -

-

{profile.id}

-
-
- -
- - -
-
-
- ); -} - -function AddAccountButton({ - size, -}: { - size: ButtonProps['size']; -}) { - return ( - - - - - - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/browser/index.tsx b/apps/oneclient/frontend/src/routes/app/cluster/browser/index.tsx deleted file mode 100644 index 3f53f4bf..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/browser/index.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import type { Filters, PackageCategories, PackageType, Provider, Sort } from '@/bindings.gen'; -import { LoaderSuspense, PackageGrid } from '@/components'; -import { bindings } from '@/main'; -import { browserCategories, categoryNameFromId } from '@/utils/browser'; -import { useCommandSuspense, usePagination } from '@onelauncher/common'; -import { Dropdown, TextField } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { SearchMdIcon } from '@untitled-theme/icons-react'; -import { useEffect, useMemo, useRef, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -interface BrowserSearchRouteSearchParams { - query?: string; - packageType: PackageType; - categories: Array; - page: number; -} - -export const Route = createFileRoute('/app/cluster/browser/')({ - component: RouteComponent, - validateSearch: (search): BrowserSearchRouteSearchParams => { - return { - query: (search.query ?? '') as string, - packageType: search.packageType as PackageType, - categories: (search.categories ?? []) as Array, - page: Math.max(Number(search.page || 1), 1), - }; - }, -}); - -// const PROVIDERS: Array = ['Modrinth', 'CurseForge', 'SkyClient']; -// I don't think SkyClient will get implemented due to hypixel removing 1.8 support and SkyClient is only really for old 1.8 mods that aren't on a provider -// High chance we can just one day nuke the entire unfinished implementation -const PROVIDERS: Array = ['Modrinth', 'CurseForge']; - -function RouteComponent() { - return ( - // -
-
-
-

Browser

- - {/*
*/} -
- -
- - -
-
- - - -
-
-
-
-
- // - ); -} - -function BrowserCategories() { - const { categories, packageType } = Route.useSearch(); - - const navigate = Route.useNavigate(); - const navRef = useRef(navigate); - - const switchCategory = useMemo(() => (category: string) => { - const newCategories = categories.includes(category) - ? categories.filter(element => element !== category) - : [...categories, category]; - - navRef.current({ - search: prev => ({ - ...prev, - categories: newCategories, - }), - }); - }, [categories]); - - return ( -
-
-
-
Categories
- {browserCategories[categoryNameFromId[packageType]].map(category => ( -

switchCategory(category)} - > - {category} -

- ))} -
-
-
- ); -} - -function BrowserToolbar() { - const search = Route.useSearch(); - const { provider, query } = search; - const navigate = Route.useNavigate(); - - const setQuery = (query: string) => { - navigate({ search: { ...search, query } }); - }; - - const [searchBar, setSearchBar] = useState(query); - - return ( -
-
- navigate({ search: { ...search, provider: id as Provider } })} - placeholder="Select a Provider" - selectedKey={provider} - > - {PROVIDERS.map(provider => ( - -
- {/* */} - {provider} -
-
- ))} -
-
- -
- } - onChange={e => setSearchBar(e.currentTarget.value)} - onKeyDown={(e) => { - if (e.key !== 'Enter') - return; - e.preventDefault(); - setQuery(e.currentTarget.value); - }} - placeholder="Search for content" - value={searchBar} - /> -
-
- ); -} - -interface SearchQuery { - query: string | null; - offset: number | null; - limit: number; - sort: Sort; - filters: Filters | null; -} - -const itemsPerPage = 25; - -function SearchResults() { - const search = Route.useSearch(); - const { cluster } = Route.useRouteContext(); - const navigate = Route.useNavigate(); - const navRef = useRef(navigate); - - const query = useMemo(() => ({ - query: search.query ?? null, - offset: (search.page - 1) * itemsPerPage, - limit: itemsPerPage, - sort: 'Relevance', - filters: { - game_versions: [cluster.mc_version], - categories: { [categoryNameFromId[search.packageType]]: search.categories } as PackageCategories, - loaders: [cluster.mc_loader], - package_type: search.packageType, - }, - }), [cluster, search]); - - const results = useCommandSuspense(['searchPackages', search], () => bindings.core.searchPackages( - search.provider, - query, - )); - - const pagination = usePagination({ - itemsPerPage: query.limit, - itemsCount: results.data.total, - }); - - const oldTotal = useRef(pagination.totalPages); - const paginationRef = useRef(pagination); - - useEffect(() => { - navRef.current({ search: prev => ({ ...prev, page: pagination.page }) }); - }, [pagination.page]); - - useEffect(() => { - if (pagination.totalPages === oldTotal.current) - return; - - paginationRef.current.reset(); - oldTotal.current = pagination.totalPages; - }, [pagination.totalPages]); - - return ( -
-
- -
- - -
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/browser/package.tsx b/apps/oneclient/frontend/src/routes/app/cluster/browser/package.tsx deleted file mode 100644 index 5fb95a0e..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/browser/package.tsx +++ /dev/null @@ -1,383 +0,0 @@ -import type { ManagedPackage, ManagedUser, ManagedVersion, PackageDonationUrl } from '@/bindings.gen'; -import { ExternalLink, LoaderSuspense, Markdown } from '@/components'; -import { bindings } from '@/main'; -import { abbreviateNumber, formatAsRelative, upperFirst, useCommand, useCommandMut, useCommandSuspense } from '@onelauncher/common'; -import { Button, Show, Tooltip } from '@onelauncher/common/components'; -import { createFileRoute, redirect } from '@tanstack/react-router'; -import { CalendarIcon, CheckIcon, ClockRewindIcon, Download01Icon, File02Icon, Loading02Icon, XIcon } from '@untitled-theme/icons-react'; -import { useMemo } from 'react'; -import { Cell, Column, Row, Tab, Table, TableBody, TableHeader, TabList, TabPanel, Tabs } from 'react-aria-components'; - -export interface PackageRouteSearchParams { - packageId: string; -} - -export const Route = createFileRoute('/app/cluster/browser/package')({ - component: RouteComponent, - validateSearch: (search): PackageRouteSearchParams => ({ - packageId: search.packageId as string, - }), - async beforeLoad({ search }) { - if (!search.packageId) - throw redirect({ to: '/app/cluster', from: '/app/cluster/browser/package', search }); - - const managedPackage = await bindings.core.getPackage(search.provider, search.packageId); - - return { managedPackage }; - }, -}); - -function RouteComponent() { - const { managedPackage } = Route.useRouteContext(); - - return ( -
- - - - - About - Versions - {/* Gallery */} - - - - - - - - - - - - - - - - - {/* {managedPackage.gallery.map(item => ( - - -
- - {item.title &&
{item.title}
} -
-
- - - -
- ))} */} - -
-
-
- ); -} - -function BodyPanel() { - const { provider } = Route.useSearch(); - const { managedPackage } = Route.useRouteContext(); - - const { data: body } = useCommandSuspense(['getPackageBody', provider, managedPackage.body], () => bindings.core.getPackageBody(provider, managedPackage.body)); - - return ( -
-
- -
-
- ); -} - -function getPackageUrl(pkg: ManagedPackage): string { - switch (pkg.provider) { - case 'Modrinth': return `https://modrinth.com/project/${pkg.slug}`; - case 'CurseForge': return `https://www.curseforge.com/minecraft/${pkg.package_type}s/${pkg.slug}`; - case 'SkyClient': return ``; - case 'Local': return ``; - } -} - -function BrowserSidebar({ package: pkg }: { package: ManagedPackage }) { - const { provider } = Route.useSearch(); - - const createdAt = useMemo(() => pkg.created ? new Date(pkg.created) : null, [pkg.created]); - const updatedAt = useMemo(() => pkg.updated ? new Date(pkg.updated) : null, [pkg.updated]); - - const authors = useCommand(['getUsersFromAuthor', pkg.author], () => bindings.core.getUsersFromAuthor(provider, pkg.author)); - - return ( -
-
-
- {`Icon - {`Icon -
-
-
-

{pkg.name}

-

- {pkg.package_type} - {' '} - on - {' '} - {pkg.provider} -

-
- -

{pkg.short_desc}

- -
- {pkg.provider !== 'SkyClient' && ( -
- - {abbreviateNumber(pkg.downloads)} -
- )} -
-
-
- - - -
-

Links

-
- - {provider} - {' '} - Page - - {(Object.entries(pkg.links) as Array<[keyof typeof pkg.links, typeof pkg.links[keyof typeof pkg.links]]>).filter(a => a[1]).map(link => - typeof link[1] == 'string' - ? ( - - ) - : (link[1] as Array).map(donationLink => ( - - )))} -
-
- -
-

Authors

- { - authors.isSuccess - ? authors.data.map(author => ) - :

Loading...

- } - -
- -
-

Details

- {pkg.license !== null && ( -
- - License - - {pkg.license.name || pkg.license.id || 'Unknown'} - -
- )} - - {createdAt !== null && ( - -
- - Created - - {formatAsRelative(createdAt.getTime(), 'en', 'long')} - -
-
- )} - - {updatedAt !== null && ( - -
- - Last Updated - - {formatAsRelative(updatedAt.getTime(), 'en', 'long')} - -
-
- )} -
- -
- ); -} - -function usePackageVersions() { - const { provider, packageId } = Route.useSearch(); - const { cluster } = Route.useRouteContext(); - const { data: versions } = useCommandSuspense( - ['getPackageVersions', provider, packageId, cluster.mc_version, cluster.mc_loader], - () => bindings.core.getPackageVersions(provider, packageId, cluster.mc_version, cluster.mc_loader, 0, 64), - ); - - return versions; -} - -function InstallButton() { - const { cluster, managedPackage } = Route.useRouteContext(); - const packageVersions = usePackageVersions(); - - const { provider } = Route.useSearch(); - const download = useCommandMut(() => bindings.core.downloadPackage(provider, managedPackage.id, packageVersions.items[0].version_id, cluster.id, true)); - return ( - - ); -} - -function Author({ author }: { author: ManagedUser }) { - return ( - - {`${author.username}'s -
- {author.username} - - {author.is_organization_user && ( - Organization - )} - - {author.role !== null && ( - {author.role} - )} -
-
- - ); -} - -function colorForType(type: string) { - switch (type.toLowerCase()) { - case 'release': - return 'bg-code-trace/30'; - case 'snapshot': - return 'bg-code-debug/30'; - case 'beta': - return 'bg-code-warn/30'; - case 'alpha': - return 'bg-code-error/30'; - default: - return 'bg-border/30'; - } -} - -function Versions() { - // const { provider } = Route.useSearch(); - // const [offset, setOffset] = useState(0); - - // const { data: versions } = usePackageVersions(provider, id, { - // limit: 20, - // offset, - // }); - - const versions = usePackageVersions(); - - // const pagination = usePagination({ - // itemsCount: versions?.total as unknown as number, - // itemsPerPage: versions?.limit as unknown as number, - // }); - // const paginationRef = useRef(pagination); - // useEffect(() => { - // setOffset(pagination.offset); - // }, [pagination.offset]); - // useEffect(() => { - // paginationRef.current.reset(); - // }, [versions?.total]); - return ( -
-
- {/* */} -
- - - - Name - Game Versions - Loaders - Created - Downloads - - - - {versions.items.map(item => - )} - -
-
- ); -} -function VersionRow({ version }: { version: ManagedVersion }) { - const { cluster } = Route.useRouteContext(); - const { provider } = Route.useSearch(); - const download = useCommandMut(() => bindings.core.downloadPackage(provider, version.project_id, version.version_id, cluster.id, true)); - return ( - - - -
- {version.release_type.charAt(0).toUpperCase()} -
-
-
- {version.display_name} - {version.mc_versions.join(', ')} - {version.loaders.map(upperFirst).join(', ')} - {formatAsRelative(Date.parse(version.published))} - {version.downloads} - - - - -
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/browser/route.tsx b/apps/oneclient/frontend/src/routes/app/cluster/browser/route.tsx deleted file mode 100644 index b9aa0929..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/browser/route.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { Provider } from '@/bindings.gen'; -import { SheetPage } from '@/components'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; - -export interface BrowserRouteSearchParams { - provider: Provider; -} - -export const Route = createFileRoute('/app/cluster/browser')({ - component: RouteComponent, - validateSearch: (search): BrowserRouteSearchParams => { - return { - provider: (search.provider || 'Modrinth') as Provider, - }; - }, -}); - -function RouteComponent() { - return ( - - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/datapacks.tsx b/apps/oneclient/frontend/src/routes/app/cluster/datapacks.tsx deleted file mode 100644 index 6b393b8b..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/datapacks.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import type { ModCardContextApi } from '@/components'; -import { ModCardContext, ModList } from '@/components'; -import { useCustomBundle } from '@/hooks/useCustomBundle'; -import { bindings } from '@/main'; -import { getFilePackageType } from '@/routes/app/cluster/mods'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useMemo } from 'react'; - -export const Route = createFileRoute('/app/cluster/datapacks')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { data: bundles } = useCommandSuspense(['getBundlesFor', cluster.id], () => bindings.oneclient.getBundlesFor(cluster.id)); - const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); - - const filteredBundles = useMemo(() => - bundles.map(b => ({ - ...b, - manifest: { ...b.manifest, files: b.manifest.files.filter(f => getFilePackageType(f) === 'datapack') }, - })), [bundles]); - - const customBundle = useCustomBundle(bundles, installedPackages, cluster, 'datapack'); - - const allBundles = useMemo(() => - customBundle !== null ? [...filteredBundles, customBundle] : filteredBundles, [filteredBundles, customBundle]); - - const customTogglePaths = useMemo(() => new Set(['__custom__']), []); - - const context = useMemo(() => ({ - enableClickToDownload: true, - installedPackages, - }), [installedPackages]); - - if (allBundles.every(b => b.manifest.files.length === 0)) - return

No data packs found in {cluster.name}

; - - return ( - -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/logs.tsx b/apps/oneclient/frontend/src/routes/app/cluster/logs.tsx deleted file mode 100644 index 8f3d8a5f..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/logs.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import type { Key } from 'react-aria-components'; -import { LoaderContainer, LogViewer, SheetPage, useSheetPageContext } from '@/components'; -import { bindings } from '@/main'; -import { getMessageFromError, useCommand, useCommandSuspense } from '@onelauncher/common'; -import { Dropdown } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { useState } from 'react'; - -export const Route = createFileRoute('/app/cluster/logs')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { scrollContainerRef } = useSheetPageContext(); - - const { data: fileNames } = useCommandSuspense(['getLogs', cluster.id], () => bindings.core.getLogs(cluster.id)); - - const [activeFileName, setActiveFileName] = useState(fileNames[0] || null); - - return ( - -
-
-

Logs

- -
- setActiveFileName(e)} selectedKey={activeFileName}> - {fileNames.map(fileName => ( - - {fileName} - - ))} - -
-
- - {activeFileName && ()} -
-
- ); -} - -function LogContent({ - fileName, - scrollRef, -}: { - fileName: string; - scrollRef: React.RefObject; -}) { - const { cluster } = Route.useRouteContext(); - - const { data: content, error, isLoading } = useCommand( - ['getLogByName', cluster.id, fileName], - () => bindings.core.getLogByName(cluster.id, fileName), - { - gcTime: 1000 * 60 * 1, // 1 minute - }, - ); - - return ( - - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/mods.tsx b/apps/oneclient/frontend/src/routes/app/cluster/mods.tsx deleted file mode 100644 index 0a7e2257..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/mods.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import type { ModpackFile } from '@/bindings.gen'; -import type { ModCardContextApi } from '@/components'; -import { ModCardContext, ModList } from '@/components'; -import { useCustomBundle } from '@/hooks/useCustomBundle'; -import { bindings } from '@/main'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useMemo } from 'react'; - -export const Route = createFileRoute('/app/cluster/mods')({ - component: RouteComponent, -}); - -export function getFilePackageType(file: ModpackFile) { - if ('Managed' in file.kind) - return file.kind.Managed[0].package_type; - return file.kind.External.package_type; -} - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { data: bundles } = useCommandSuspense(['getBundlesFor', cluster.id], () => bindings.oneclient.getBundlesFor(cluster.id)); - const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); - - const filteredBundles = useMemo(() => - bundles.map(b => ({ - ...b, - manifest: { ...b.manifest, files: b.manifest.files.filter(f => getFilePackageType(f) === 'mod') }, - })), [bundles]); - - const customBundle = useCustomBundle(bundles, installedPackages, cluster, 'mod'); - - const allBundles = useMemo(() => - customBundle !== null ? [...filteredBundles, customBundle] : filteredBundles, [filteredBundles, customBundle]); - - const customTogglePaths = useMemo(() => new Set(['__custom__']), []); - - const context = useMemo(() => ({ - enableClickToDownload: true, - installedPackages, - }), [installedPackages]); - - if (allBundles.every(b => b.manifest.files.length === 0)) - return

No mods found in {cluster.name}

; - - return ( - -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/process.tsx b/apps/oneclient/frontend/src/routes/app/cluster/process.tsx deleted file mode 100644 index 65607858..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/process.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import type { LogViewerRef } from '@/components'; -import { LoaderContainer, LogViewer, SheetPage, useSheetPageContext } from '@/components'; -import { bindings } from '@/main'; -import { getMessageFromError, useAsyncEffect, useCommand } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { useRef } from 'react'; - -export const Route = createFileRoute('/app/cluster/process')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { scrollContainerRef } = useSheetPageContext(); - - return ( - -
-
-

Game Log

-
- - -
-
- ); -} - -function LogContent({ - scrollRef, -}: { - scrollRef: React.RefObject; -}) { - const { cluster } = Route.useRouteContext(); - const logViewerRef = useRef(null); - - const { data: tail, error, isLoading, refetch } = useCommand( - ['getProcessLogTail', cluster.id, 0], - () => bindings.core.getProcessLogTail(cluster.id, 0), - { - staleTime: 0, - gcTime: 0, - refetchOnWindowFocus: false, - refetchOnReconnect: false, - }, - ); - - useAsyncEffect(async () => { - const unlisten = await bindings.events.process.on((e) => { - if (e.cluster_id !== cluster.id) - return; - - if (e.kind.type === 'Started') { - refetch(); - return; - } - - if (e.kind.type !== 'Output') - return; - - const outputLines = e.kind.output.split('\n'); - for (const line of outputLines) - logViewerRef.current?.push(line); - }); - - return () => { - unlisten(); - }; - }, []); - - return ( - - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/resource-packs.tsx b/apps/oneclient/frontend/src/routes/app/cluster/resource-packs.tsx deleted file mode 100644 index 593586f4..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/resource-packs.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import type { ModCardContextApi } from '@/components'; -import { ModCardContext, ModList } from '@/components'; -import { useCustomBundle } from '@/hooks/useCustomBundle'; -import { bindings } from '@/main'; -import { getFilePackageType } from '@/routes/app/cluster/mods'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useMemo } from 'react'; - -export const Route = createFileRoute('/app/cluster/resource-packs')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { data: bundles } = useCommandSuspense(['getBundlesFor', cluster.id], () => bindings.oneclient.getBundlesFor(cluster.id)); - const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); - - const filteredBundles = useMemo(() => - bundles.map(b => ({ - ...b, - manifest: { ...b.manifest, files: b.manifest.files.filter(f => getFilePackageType(f) === 'resourcepack') }, - })), [bundles]); - - const customBundle = useCustomBundle(bundles, installedPackages, cluster, 'resourcepack'); - - const allBundles = useMemo(() => - customBundle !== null ? [...filteredBundles, customBundle] : filteredBundles, [filteredBundles, customBundle]); - - const customTogglePaths = useMemo(() => new Set(['__custom__']), []); - - const context = useMemo(() => ({ - enableClickToDownload: true, - installedPackages, - skipCompatibilityChecks: true, - }), [installedPackages]); - - if (allBundles.every(b => b.manifest.files.length === 0)) - return

No resource packs found in {cluster.name}

; - - return ( - -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/route.tsx b/apps/oneclient/frontend/src/routes/app/cluster/route.tsx deleted file mode 100644 index 02148b23..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/route.tsx +++ /dev/null @@ -1,166 +0,0 @@ -import { LaunchButton, LoaderSuspense, SheetPage, Tab, TabList } from '@/components'; -import { useIsRunning } from '@/hooks/useClusters'; -import { bindings } from '@/main'; -import { prettifyLoader } from '@/utils/loaders'; -import { getVersionInfoOrDefault } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { createFileRoute, Outlet, redirect } from '@tanstack/react-router'; -import { FolderIcon } from '@untitled-theme/icons-react'; -import { useMotionValueEvent, useScroll } from 'motion/react'; -import { useEffect, useRef, useState } from 'react'; - -export interface ClusterRouteSearchParams { - clusterId: number; -} - -export const Route = createFileRoute('/app/cluster')({ - component: RouteComponent, - validateSearch: (search): ClusterRouteSearchParams => { - return { - clusterId: Number(search.clusterId), - }; - }, - async beforeLoad({ context, search }) { - if (!search.clusterId) - throw redirect({ to: '/app/clusters', from: '/app/cluster' }); - - const query = context.queryClient.ensureQueryData({ - queryKey: ['getClusterById', search.clusterId], - queryFn: () => bindings.core.getClusterById(search.clusterId), - }); - - const cluster = await query; - if (!cluster) - throw redirect({ to: '/app/clusters', from: '/app/cluster' }); - - return { - cluster, - }; - }, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const tabListRef = useRef(null); - const scrollContainerRef = useRef(null); - - const isRunning = useIsRunning(cluster.id); - - const { scrollYProgress } = useScroll({ - axis: 'y', - container: scrollContainerRef, - target: tabListRef, - layoutEffect: false, - offset: ['end end', 'start start'], - }); - - const [floating, setFloating] = useState(false); - useMotionValueEvent(scrollYProgress, 'change', (v) => { - setFloating(v >= 0.9); - }); - - const search = Route.useSearch(); - - // Prefetch data so that app/cluster/mods is fast - const queryClient = useQueryClient(); - useEffect(() => { - queryClient.prefetchQuery({ - queryKey: ['getBundlesFor', cluster.id], - queryFn: () => bindings.oneclient.getBundlesFor(cluster.id), - }); - }, [cluster, queryClient]); - - return ( - } - headerSmall={} - scrollContainerRef={scrollContainerRef} - > - - Mods - Resource Packs - Shaders - Data Packs - Logs - Browser - Settings - {isRunning && } - {isRunning && Process} - - -
- - - -
-
- ); -} - -function HeaderLarge() { - const { cluster } = Route.useRouteContext(); - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - const versionInfo = getVersionInfoOrDefault(cluster.mc_version, versions); - - const openFolder = () => bindings.folders.openCluster(cluster.folder_name); - - return ( -
-
-
- {versionInfo.tags.map(tag => ( - - {tag} - - ))} -
-

{prettifyLoader(cluster.mc_loader)} {cluster.mc_version}

-

{versionInfo.longDescription}

-
- -
- - - -
-
- ); -} - -function HeaderSmall() { - const { cluster } = Route.useRouteContext(); - - const openFolder = () => bindings.folders.openCluster(cluster.folder_name); - - return ( -
-

{prettifyLoader(cluster.mc_loader)} {cluster.mc_version}

- -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx b/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx deleted file mode 100644 index 81cc2e5d..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/settings.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { SettingsRow, SheetPage } from '@/components'; -import { useClusterProfile } from '@/hooks/useSettings'; -import { Switch, TextField } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { Database01Icon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, TerminalIcon, XIcon } from '@untitled-theme/icons-react'; - -export const Route = createFileRoute('/app/cluster/settings')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { profile, updateProfile } = useClusterProfile(cluster); - return ( - -

Settings

- Process - - } - title="Pre-Launch Command" - > - updateProfile({ hook_pre: e.currentTarget.value })} - placeholder="echo 'Game started'" - value={profile.hook_pre ?? undefined} - /> - - - } - title="Wrapper Command" - > - updateProfile({ hook_wrapper: e.currentTarget.value })} - placeholder="gamescope" - value={profile.hook_wrapper ?? undefined} - /> - - - } - title="Post-Exit Command" - > - updateProfile({ hook_post: e.currentTarget.value })} - placeholder="echo 'Game exited'" - value={profile.hook_post ?? undefined} - /> - - - Game - - } - title="Force Fullscreen" - > - updateProfile({ force_fullscreen: val })} - /> - - - } - title="Resolution" - > -
- { - const width = Math.max(1, Number(e.currentTarget.value)); - updateProfile({ res: { width, height: profile.res?.height ?? 480 } }); - }} - type="number" - value={profile.res?.width ?? 854} - /> - - { - const height = Math.max(1, Number(e.currentTarget.value)); - updateProfile({ res: { width: profile.res?.width ?? 854, height } }); - }} - type="number" - value={profile.res?.height ?? 480} - /> -
-
- - } - title="Memory" - > -
-
- { - updateProfile({ mem_max: profile.mem_max ?? 0 }); - }} - onChange={(e) => { - const raw = e.currentTarget.value; - updateProfile({ mem_max: raw === '' ? undefined : Math.max(0, Number(raw)) }); - }} - type="number" - value={profile.mem_max ?? ''} - /> -
-

MB

-
-
-
-
- - } - title="JVM Arguments" - > - updateProfile({ launch_args: e.currentTarget.value || null })} - placeholder="-XX:+UseG1GC -Xss1M" - value={profile.launch_args ?? ''} - /> - -
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/cluster/shaders.tsx b/apps/oneclient/frontend/src/routes/app/cluster/shaders.tsx deleted file mode 100644 index 69e0baa9..00000000 --- a/apps/oneclient/frontend/src/routes/app/cluster/shaders.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import type { ModCardContextApi } from '@/components'; -import { ModCardContext, ModList } from '@/components'; -import { useCustomBundle } from '@/hooks/useCustomBundle'; -import { bindings } from '@/main'; -import { getFilePackageType } from '@/routes/app/cluster/mods'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useMemo } from 'react'; - -export const Route = createFileRoute('/app/cluster/shaders')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { cluster } = Route.useRouteContext(); - const { data: bundles } = useCommandSuspense(['getBundlesFor', cluster.id], () => bindings.oneclient.getBundlesFor(cluster.id)); - const { data: installedPackages } = useCommandSuspense(['getLinkedPackages', cluster.id], () => bindings.core.getLinkedPackages(cluster.id)); - - const filteredBundles = useMemo(() => - bundles.map(b => ({ - ...b, - manifest: { ...b.manifest, files: b.manifest.files.filter(f => getFilePackageType(f) === 'shader') }, - })), [bundles]); - - const customBundle = useCustomBundle(bundles, installedPackages, cluster, 'shader'); - - const allBundles = useMemo(() => - customBundle !== null ? [...filteredBundles, customBundle] : filteredBundles, [filteredBundles, customBundle]); - - const customTogglePaths = useMemo(() => new Set(['__custom__']), []); - - const context = useMemo(() => ({ - enableClickToDownload: true, - installedPackages, - }), [installedPackages]); - - if (allBundles.every(b => b.manifest.files.length === 0)) - return

No shaders found in {cluster.name}

; - - return ( - -
- - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/clusters.tsx b/apps/oneclient/frontend/src/routes/app/clusters.tsx deleted file mode 100644 index 4cbb3d51..00000000 --- a/apps/oneclient/frontend/src/routes/app/clusters.tsx +++ /dev/null @@ -1,338 +0,0 @@ -import type { GameLoader, OnlineClusterManifest } from '@/bindings.gen'; -import { GameBackground, LaunchButton, SheetPage } from '@/components'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { bindings } from '@/main'; -import useClusterStore from '@/stores/clusterStore'; -import { prettifyLoader } from '@/utils/loaders'; -import { formatMcVersion, getVersionInfoOrDefault, parseMcVersion } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button, Dropdown } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { ArrowRightIcon } from '@untitled-theme/icons-react'; -import { useCallback, useMemo, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/app/clusters')({ - component: RouteComponent, -}); - -function RouteComponent() { - const prevMinorVersions = useClusterStore(state => state.minorVersions); - const setMinorVersion = useClusterStore(state => state.setMinorVersion); - const modLoaders = useClusterStore(state => state.modLoaders); - const setModLoader = useClusterStore(state => state.setModLoader); - - const navigate = Route.useNavigate(); - - const { data: clusters } = useCommandSuspense(['getClustersGroupedByMajor'], bindings.oneclient.getClustersGroupedByMajor); - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - - const loadMinorVersion = useCallback((major: number) => { - const existing = prevMinorVersions.find(v => v.major === major); - if (existing) - return existing.minor; - return undefined; - }, [prevMinorVersions]); - - const [majorVersion, setMajorVersion] = useState(() => { - const keys = Object.keys(clusters); - if (keys.length === 0) - return 0; - - return Number.parseInt(keys[0]); - }); - - const [activeMinorVersion, setActiveMinorVersion] = useState(); - - const minorVersions = useMemo(() => { - const list = clusters[majorVersion]; - if (!list || list.length === 0) - return []; - - const versions = list.map(c => parseMcVersion(c.mc_version)?.minor).filter((v): v is number => v !== undefined); - return Array.from(new Set(versions)).sort((a, b) => a - b); - }, [clusters, majorVersion]); - - // Derive effective minor version without side effects in useMemo - const effectiveMinorVersion = useMemo(() => { - if (minorVersions.length === 0) - return undefined; - - // If user has explicitly selected a minor version valid for this major, use it - if (activeMinorVersion !== undefined && minorVersions.includes(activeMinorVersion)) - return activeMinorVersion; - - // Otherwise fall back to stored version or first available - const storedMinor = loadMinorVersion(majorVersion); - if (storedMinor !== undefined && minorVersions.includes(storedMinor)) - return storedMinor; - - return minorVersions[0]; - }, [minorVersions, activeMinorVersion, loadMinorVersion, majorVersion]); - - const modLoader = useMemo(() => { - if (!effectiveMinorVersion) - return undefined; - - return modLoaders[`${majorVersion}.${effectiveMinorVersion}`]; - }, [modLoaders, majorVersion, effectiveMinorVersion]); - - const loaders = useMemo(() => { - const list = clusters[majorVersion]; - if (!list || list.length === 0) - return []; - - const loadersSet: Set = new Set(); - for (const cluster of list) - if (cluster.mc_loader !== 'vanilla') - loadersSet.add(cluster.mc_loader); - - return Array.from(loadersSet).sort(); - }, [clusters, majorVersion]); - - const cluster = useMemo(() => { - const list = clusters[majorVersion]; - if (effectiveMinorVersion === undefined) - return list?.[0]; - - return list?.find((c) => { - const parsed = parseMcVersion(c.mc_version); - const versionMatch = parsed?.minor === effectiveMinorVersion; - const loaderCheck = modLoader ? c.mc_loader === modLoader : true; - return versionMatch && loaderCheck; - }); - }, [clusters, majorVersion, effectiveMinorVersion, modLoader]); - - const selectedMinorArtPath = useMemo(() => { - const onlineCluster = versions.clusters.find(c => c.major_version === majorVersion); - if (!onlineCluster) - return undefined; - - const selectedMinor = parseMcVersion(cluster?.mc_version)?.minor; - if (selectedMinor === undefined) - return onlineCluster.art; - - const loaderMatchedEntry = onlineCluster.entries.find(entry => entry.minor_version === selectedMinor && entry.loader === cluster?.mc_loader); - const minorMatchedEntry = onlineCluster.entries.find(entry => entry.minor_version === selectedMinor); - - return loaderMatchedEntry?.art ?? minorMatchedEntry?.art ?? onlineCluster.art; - }, [versions.clusters, majorVersion, cluster?.mc_version, cluster?.mc_loader]); - - const selectedMinorArtSrc = useCachedImage(selectedMinorArtPath); - - const versionInfo = useMemo(() => getVersionInfoOrDefault(cluster?.mc_version, versions), [cluster, versions]); - - const view = useCallback(() => { - if (!cluster) - return; - - navigate({ - to: `/app/cluster/mods`, - search: { - clusterId: cluster.id, - }, - }); - }, [cluster, navigate]); - - if (!cluster) - return ( - } - headerSmall={} - > -
- -

Something wen't wrong while getting a version

-

Please reload and if this does not work please contact support

-
-
-
- ); - - return ( - } - headerSmall={} - > -
-
- -
- {Object.keys(clusters).map((majorStr) => { - const major = Number.parseInt(majorStr, 10); - const isSelected = major === majorVersion; - const onlineCluster = versions.clusters.find(c => c.major_version === major); - - return ( - setMajorVersion(major)} - tags={[...new Set(clusters[major]?.flatMap(c => prettifyLoader(c.mc_loader)))]} - versions={versions} - /> - ); - })} -
-
- - - {selectedMinorArtSrc - ? ( - {`Minecraft - ) - : ( - - )} - -
-

Version {cluster.mc_version}

-

{versionInfo.longDescription}

- - {minorVersions.length > 1 && ( -
-

Minor Version

- - { - setActiveMinorVersion(Number(selected)); - setMinorVersion(majorVersion, Number(selected)); - }} - selectedKey={effectiveMinorVersion} - > - {minorVersions.map((minorVersion) => { - const fullVer = formatMcVersion(majorVersion, minorVersion); - return ( - - {fullVer} - - ); - })} - -
- )} - - {loaders.length > 1 && ( -
-

Mod Loader

- { - if (!effectiveMinorVersion) - return; - - setModLoader(`${majorVersion}.${effectiveMinorVersion}`, selected as GameLoader); - }} - selectedKey={effectiveMinorVersion ? (modLoaders[`${majorVersion}.${effectiveMinorVersion}`] ?? loaders[0]) : loaders[0]} - > - {loaders.map(loader => ( - - {prettifyLoader(loader)} - - ))} - -
- )} - -
- - - -
- -
-
-
-
- ); -} - -function HeaderLarge() { - return ( -
-
-

Versions

-

Configure your preferred version and launch directly from here.

-
-
- ); -} - -function HeaderSmall() { - return ( -

Versions

- ); -} - -function ClusterEntry({ - artPath, - isSelected, - major_version, - onClick, - tags, - versions, -}: { - artPath: string | null | undefined; - isSelected: boolean; - major_version: number; - onClick: () => unknown; - tags: Array; - versions: OnlineClusterManifest; -}) { - const artSrc = useCachedImage(artPath); - const info = getVersionInfoOrDefault(major_version, versions); - - return ( -
- {artSrc - ? ( - {`Minecraft - ) - : ( - - )} -
-
- -
- {info.tags.concat(tags).map(tag => ( -
- {tag} -
- ))} -
- -

Version {info.prettyName}

-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/debug.tsx b/apps/oneclient/frontend/src/routes/app/debug.tsx deleted file mode 100644 index 7bf92e1a..00000000 --- a/apps/oneclient/frontend/src/routes/app/debug.tsx +++ /dev/null @@ -1,234 +0,0 @@ -import type { ToastData, ToastOptions } from '@/utils/toast'; -import { MinecraftAuthErrorModal, minecraftAuthErrors, Overlay, RawDebugInfo, SettingNumber, SettingsRow, SettingSwitch, SheetPage } from '@/components'; -import { useDebugInfo } from '@/hooks/useDebugInfo'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import useMigrationStore from '@/stores/migrationStore'; -import { TitleCase } from '@/utils/string'; -import { ToastPositions, ToastTypes, useToast } from '@/utils/toast'; -import { Button, Dropdown, TextField } from '@onelauncher/common/components'; -import { createFileRoute, useNavigate } from '@tanstack/react-router'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { useEffect, useState } from 'react'; - -export const Route = createFileRoute('/app/debug')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - } - headerSmall={} - > - -
- - -
- -
- -
- -
- - -
- -
-
- ); -} - -function AuthError() { - const [errorInput, setErrorInput] = useState('Some unknown auth error occurred'); - const [previewError, setPreviewError] = useState(null); - - return ( - <> -
-

Auth Error Preview

-
-

Custom Input:

- setErrorInput(e.target.value)} value={errorInput} /> -
-
- {minecraftAuthErrors.map(err => ( - - ))} - -
-
- - {previewError && ( - { - if (!open) - setPreviewError(null); - }} - > - - - )} - - ); -} - -function Toasts() { - const [title, setTitle] = useState('Title'); - const [message, setMessage] = useState('Message'); - const [type, setType] = useState('info'); - const [position, setPosition] = useState('undefined'); - const [duration, setDuration] = useState(5000); - const [autoClose, setAutoClose] = useState(true); - const toast = useToast(); - - const sendToast = () => toast({ - type, - title, - message, - position: position === 'undefined' ? undefined : position, - autoClose: autoClose ? duration : false, - }); - - return ( -
-

Toasts

-
-

Title:

- setTitle(e.target.value)} value={title} /> -
-
-

Message:

- setMessage(e.target.value)} value={message} /> -
- -
-

Type:

- setType(key as ToastData['type'])} selectedKey={type}> - {ToastTypes.map(type => {TitleCase(type)})} - -
-
-

Position:

- setPosition(key as ToastOptions['position'])} selectedKey={position}> - Config - {ToastPositions.map(type => {TitleCase(type)})} - -
-
-

Duration:

- setDuration(value)]} /> -
-
-

Auto Close:

- setAutoClose(value)]} /> -
- - -
- ); -} - -function Settings() { - const { createSetting } = useSettings(); - - return ( -
-

Settings

-
- - - - - - - - - - - - - - - - -
-
- ); -} - -function Other() { - const [launcherDir, setLauncherDir] = useState(''); - const openMigrationGui = useMigrationStore(state => state.openForDebug); - const navigate = useNavigate({ from: '/app/debug' }); - useEffect(() => { - (async () => { - setLauncherDir(await join(await dataDir(), 'OneClient')); - })(); - }, []); - - const openLauncherDir = () => bindings.core.open(launcherDir); - - const logRunningProcesses = () => { - (async () => { - const running = await bindings.core.getRunningProcesses(); - // eslint-disable-next-line no-console -- Designed to log - console.log(running); - })(); - }; - - return ( -
-

Other

-
- - - - - -
-
- ); -} - -function Info() { - const debugInfo = useDebugInfo(); - - return ( -
-

Info

-
- -
-
- ); -} - -function HeaderLarge() { - return ( -
-
-

Debug

-

The end user won't really be looking at this page. Design skills go out the window

-
-
- ); -} - -function HeaderSmall() { - return ( -
-

Debug

-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/index.tsx b/apps/oneclient/frontend/src/routes/app/index.tsx deleted file mode 100644 index 1f8bccbc..00000000 --- a/apps/oneclient/frontend/src/routes/app/index.tsx +++ /dev/null @@ -1,239 +0,0 @@ -import type { ClusterModel, GameLoader, OnlineClusterManifest } from '@/bindings.gen'; -import type { ButtonProps } from 'react-aria-components'; -import { GameBackground, LaunchButton } from '@/components'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { useActiveCluster, useLastPlayedClusters } from '@/hooks/useClusters'; -import { bindings } from '@/main'; -import useAppShellStore from '@/stores/appShellStore'; -import { prettifyLoader } from '@/utils/loaders'; -import { animations } from '@/utils/motion'; -import { getOnlineClusterForVersion, getOnlineEntryForVersion, getVersionInfo, getVersionInfoOrDefault } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute, useNavigate } from '@tanstack/react-router'; -import { DotsGridIcon, Settings04Icon } from '@untitled-theme/icons-react'; -import { motion } from 'motion/react'; -import { Button as AriaButton } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/app/')({ - component: RouteComponent, -}); - -function getCreatedAtMs(createdAt: string): number | null { - const parsed = Date.parse(createdAt); - if (Number.isFinite(parsed)) - return parsed; - - // Normalize high-precision RFC3339 fractions for stricter engines. - const normalized = createdAt.replace(/\.(\d{3})\d+(?=(?:Z|[+-]\d{2}:\d{2})$)/, '.$1'); - const normalizedParsed = Date.parse(normalized); - return Number.isFinite(normalizedParsed) ? normalizedParsed : null; -} - -function getBoostedCreatedAtMs(cluster: ClusterModel, now: number, boostWindowMs: number): number | null { - if (cluster.last_played !== null) - return null; - - const createdAtMs = getCreatedAtMs(cluster.created_at); - if (createdAtMs === null) - return null; - - return (now - createdAtMs) < boostWindowMs ? createdAtMs : null; -} - -function RouteComponent() { - // Preload the clusters for version page - useCommandSuspense(['getClustersGroupedByMajor'], bindings.oneclient.getClustersGroupedByMajor); - - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - const { data: lastPlayedClusters } = useLastPlayedClusters(); - - const setActiveClusterId = useAppShellStore(state => state.setActiveClusterId); - const activeCluster = useActiveCluster(); - - const navigate = useNavigate({ - from: Route.id, - }); - - const BOOST_WINDOW_MS = 7 * 24 * 60 * 60 * 1000; - const now = Date.now(); - const displayClusters = [...lastPlayedClusters].sort((a, b) => { - const aBoostedCreatedAtMs = getBoostedCreatedAtMs(a, now, BOOST_WINDOW_MS); - const bBoostedCreatedAtMs = getBoostedCreatedAtMs(b, now, BOOST_WINDOW_MS); - - if (aBoostedCreatedAtMs !== null && bBoostedCreatedAtMs === null) - return -1; - if (bBoostedCreatedAtMs !== null && aBoostedCreatedAtMs === null) - return 1; - if (aBoostedCreatedAtMs !== null && bBoostedCreatedAtMs !== null) - return bBoostedCreatedAtMs - aBoostedCreatedAtMs; - - return 0; - }).slice(0, 3); - - return ( -
- - - - {displayClusters.map(cluster => ( - setActiveClusterId(cluster.id)} - version={cluster.mc_version} - versions={versions} - /> - ))} - - navigate({ to: '/app/clusters' })} - > - - - -
- ); -} - -function ActiveClusterInfo({ cluster, versions }: { cluster: ClusterModel; versions: OnlineClusterManifest }) { - const versionInfo = getVersionInfoOrDefault(cluster.mc_version, versions); - const entry = getOnlineEntryForVersion(cluster.mc_version, versions); - const navigate = useNavigate({ from: Route.id }); - - const viewCluster = () => { - navigate({ - to: '/app/cluster/mods', - search: { - clusterId: cluster.id, - }, - }); - }; - - const subtitle = entry?.name ?? versionInfo.shortDescription; - - return ( - -

{cluster.mc_version} {prettifyLoader(cluster.mc_loader)}

-

{subtitle}

- -
- - - -
-
- ); -} - -interface RecentsCardProps { - version: string; - loader: GameLoader; - onPress: () => void; - active: boolean; - versions: OnlineClusterManifest; -} - -function RecentsCard({ - version, - loader, - onPress, - active, - versions, -}: RecentsCardProps) { - const versionInfo = getVersionInfo(version, versions); - const backgroundName = versionInfo?.backgroundName ?? 'MinecraftBuilding'; - const entry = getOnlineEntryForVersion(version, versions); - const onlineCluster = getOnlineClusterForVersion(version, versions); - - const artPath = entry?.art ?? onlineCluster?.art; - const artSrc = useCachedImage(artPath); - - if (!versionInfo && !artPath) - return ( - -

Unknown Version

-
- ); - - return ( - -
- {artSrc - ? ( - {`Minecraft - ) - : ( - - )} - -
-
- -

{version} {prettifyLoader(loader)}

-
-
- ); -} - -const BLUR = '30px'; -function Card({ - blur = true, - children, - className, - style, - onPress, -}: { - blur?: boolean; - className?: string | undefined; -} & ButtonProps & React.RefAttributes) { - return ( - - {children} - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/route.tsx b/apps/oneclient/frontend/src/routes/app/route.tsx deleted file mode 100644 index 27e9ade5..00000000 --- a/apps/oneclient/frontend/src/routes/app/route.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import type { PropsWithChildren } from 'react'; -import { GameBackground, LoaderSuspense, Navbar } from '@/components'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { useAllClusterDirWatch } from '@/hooks/useClusterDirWatch'; -import { useActiveCluster } from '@/hooks/useClusters'; -import { bindings } from '@/main'; -import { getOnlineClusterForVersion, getOnlineEntryForVersion, getVersionInfoOrDefault } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { motion } from 'motion/react'; -import { MouseParallax } from 'react-just-parallax'; - -export const Route = createFileRoute('/app')({ - component: RouteComponent, -}); - -function RouteComponent() { - useAllClusterDirWatch(); - - return ( - - -
- {/* */} - -
-
-
- ); -} - -function AppShell({ - children, -}: PropsWithChildren) { - return ( -
- - - - -
- {children} -
-
- ); -} - -function BackgroundGradient() { - const cluster = useActiveCluster(); - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - const versionInfo = getVersionInfoOrDefault(cluster.mc_version, versions); - - const entry = getOnlineEntryForVersion(cluster.mc_version, versions); - const onlineCluster = getOnlineClusterForVersion(cluster.mc_version, versions); - const artPath = entry?.art ?? onlineCluster?.art; - const artSrc = useCachedImage(artPath); - - return ( -
- {/* Linear black gradient: left -> right */} -
-
- - {/* Radial black gradient */} -
-
- - {/* Linear black gradient: bottom -> 200 px up */} -
-
- - - - {artSrc - ? ( - - ) - : ( - - )} - - -
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/appearance.tsx b/apps/oneclient/frontend/src/routes/app/settings/appearance.tsx deleted file mode 100644 index 49af12e1..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/appearance.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { SettingDropdown, SettingNumber, SettingsRow, SettingSwitch } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { Sidebar } from '@/routes/app/settings/route'; -import { ToastPositions, useToast } from '@/utils/toast'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/app/settings/appearance')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { createSetting } = useSettings(); - const toast = useToast(); - - const previewToast = () => toast({ type: 'info', title: 'Preview Toast', message: 'This is an preview of what a toast would look like' }); - - return ( - -
-

Appearance

- - Toasts - - - - - - - - - - - - - - - - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/changelog.tsx b/apps/oneclient/frontend/src/routes/app/settings/changelog.tsx deleted file mode 100644 index 56b3ee9d..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/changelog.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import { bindings } from '@/main'; -import { Sidebar } from '@/routes/app/settings/route'; -import { useCommand } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { ChevronDownIcon } from '@untitled-theme/icons-react'; -import { useEffect, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/app/settings/changelog')({ - component: RouteComponent, -}); - -interface VersionDropdownProps { - version: string; - changes: Array; - active?: boolean; - current?: boolean; -} - -function VersionDropdown({ version, changes, active, current }: VersionDropdownProps) { - const [isOpen, setIsOpen] = useState(current ?? active ?? false); - - return ( -
-
setIsOpen(prev => !prev)}> -

{version}{current ? ' (Currently Installed)' : ''}

- -
- -
- {isOpen && ( -
- {changes.length > 0 - ? ( -
    - {changes.map(change => ( -
  • - {change} -
  • - ))} -
- ) - :

No changes recorded for this version.

} -
- )} -
-
- ); -}; - -interface ChangelogGroup { - version: string; - changes: Array; -} - -function RouteComponent() { - const [data, setData] = useState(''); - const [isLoading, setIsLoading] = useState(true); - const [error, setError] = useState(null); - const { data: version } = useCommand(['getPackageVersion'], () => bindings.debug.getPackageVersion()); - - useEffect(() => { - const getData = async () => { - try { - const response = await fetch('https://raw.githubusercontent.com/Polyfrost/DataStorage/refs/heads/main/oneclient/CHANGE_LOG.md'); - if (!response.ok) - throw new Error('Failed to fetch changelog'); - - const data = await response.text(); - setData(data); - } - catch (error: unknown) { - if (error instanceof Error) - setError(error.message); - else - setError('An unknown error occurred'); - } - finally { - setIsLoading(false); - } - }; - - getData(); - }, []); - - if (isLoading) - return
Loading...
; - - if (error) - return
Error: {error}
; - - const changelogGroups = data.split('\n').reduce>((acc, line) => { - if (line.startsWith('# ')) { - acc.push({ version: line.replaceAll('# ', '').trim(), changes: [] }); - } - else if (line.startsWith('- ')) { - if (acc.length > 0) - acc[acc.length - 1].changes.push(line.slice(2).trim()); - } - else if (line === '###') { - return acc; - } - return acc; - }, []); - - return ( - -
- {changelogGroups.map((group, groupIndex) => ( - group.version - ? ( - - ) - : null - ))} -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/developer.tsx b/apps/oneclient/frontend/src/routes/app/settings/developer.tsx deleted file mode 100644 index 87d6c86b..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/developer.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import { DebugInfo, Overlay, SettingsRow, SettingSwitch } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { Sidebar } from '@/routes/app/settings/route'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/app/settings/developer')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { createSetting } = useSettings(); - - return ( - -
-

Developer Options

- - - - - - - - - - - - Dev Tools - - - - - - - - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/index.tsx b/apps/oneclient/frontend/src/routes/app/settings/index.tsx deleted file mode 100644 index edb269fb..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/index.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { SettingsRow, SettingSwitch } from '@/components'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { Sidebar } from '@/routes/app/settings/route'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { FolderIcon, Link03Icon, LinkExternal01Icon } from '@untitled-theme/icons-react'; -import { useEffect, useState } from 'react'; - -export const Route = createFileRoute('/app/settings/')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { createSetting } = useSettings(); - const [launcherDir, setLauncherDir] = useState(''); - - useEffect(() => { - (async () => { - setLauncherDir(await join(await dataDir(), 'OneClient')); - })(); - }, []); - - const openLauncherDir = () => bindings.core.open(launcherDir); - - return ( - -
-

General

- - } - title="Discord RPC" - > - - - - {/* } - title="Hide Close Dialog" - > - - - - } - title="Error Analytics" - > - !(settings().disable_analytics ?? false)} - onChecked={value => settings().disable_analytics = !value} - /> - */} - - Folders and Files - } - title="Launcher Folder" - > - - -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx b/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx deleted file mode 100644 index f3dd31ee..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/minecraft.tsx +++ /dev/null @@ -1,201 +0,0 @@ -import type { SettingProfileModel } from '@/bindings.gen'; -import { SettingsRow } from '@/components'; -import usePopState from '@/hooks/usePopState'; -import { useSettings } from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { Sidebar } from '@/routes/app/settings/route'; -import { useCommandMut, useCommandSuspense } from '@onelauncher/common'; -import { Switch, TextField } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { Database01Icon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, XIcon } from '@untitled-theme/icons-react'; -import { useMemo } from 'react'; - -export const Route = createFileRoute('/app/settings/minecraft')({ - component: RouteComponent, -}); - -function RouteComponent() { - const result = useCommandSuspense(['readSettings'], bindings.core.readSettings); - - const save = useCommandMut(() => bindings.core.writeSettings(result.data)); - - usePopState(() => { - save.mutate(); - }); - - return ( - - {/* */} -
-

Minecraft Settings

- - - - {/* */} - - -
- {/*
*/} -
- ); -} - -export function GameSettings() { - const { createSetting } = useSettings(); - - const [gameSettings, setGameSettings] = createSetting('global_game_settings'); - - // const getSetting = useMemo(()=>(key: TKey)=>gameSettings[key], [gameSettings]) - - const setSetting = useMemo(() => (key: TKey, value: SettingProfileModel[TKey]) => { - setGameSettings({ - ...gameSettings, - [key]: value, - }); - }, [gameSettings, setGameSettings]); - - return ( - <> - Game - - } - title="Force Fullscreen" - > - setSetting('force_fullscreen', val)} - /> - - - } - title="Resolution" - > -
- { - const width = Math.max(1, Number(e.currentTarget.value)); - setSetting('res', { width, height: gameSettings.res?.height ?? 480 }); - }} - type="number" - value={gameSettings.res?.width ?? 854} - /> - - { - const height = Math.max(1, Number(e.currentTarget.value)); - setSetting('res', { width: gameSettings.res?.width ?? 854, height }); - }} - type="number" - value={gameSettings.res?.height ?? 480} - /> -
-
- - } - title="Memory" - > -
-
- { - setSetting('mem_max', gameSettings.mem_max ?? 0); - }} - onChange={(e) => { - const raw = e.currentTarget.value; - setSetting('mem_max', raw === '' ? null : Math.max(0, Number(raw))); - }} - type="number" - value={gameSettings.mem_max ?? ''} - /> -
-

MB

-
-
-
-
- - ); -} - -// function LauncherSettings() { -// return ( -// <> -// Launcher -// } -// title="Hide On Launch" -// > -// -// -// -// ); -// } - -export function ProcessSettings() { - const { createSetting } = useSettings(); - - const [gameSettings, setGameSettings] = createSetting('global_game_settings'); - - // const getSetting = useMemo(()=>(key: TKey)=>gameSettings[key], [gameSettings]) - - const setSetting = useMemo(() => (key: TKey, value: SettingProfileModel[TKey]) => { - setGameSettings({ - ...gameSettings, - [key]: value, - }); - }, [gameSettings, setGameSettings]); - - return ( - <> - Process - - } - title="Pre-Launch Command" - > - setSetting('hook_pre', e.currentTarget.value)} - placeholder="echo 'Game started'" - value={gameSettings.hook_pre ?? undefined} - /> - - - } - title="Wrapper Command" - > - setSetting('hook_wrapper', e.currentTarget.value)} - placeholder="gamescope" - value={gameSettings.hook_wrapper ?? undefined} - /> - - - } - title="Post-Exit Command" - > - setSetting('hook_post', e.currentTarget.value)} - placeholder="echo 'Game exited'" - value={gameSettings.hook_post ?? undefined} - /> - - - ); -} diff --git a/apps/oneclient/frontend/src/routes/app/settings/route.tsx b/apps/oneclient/frontend/src/routes/app/settings/route.tsx deleted file mode 100644 index f335a7d1..00000000 --- a/apps/oneclient/frontend/src/routes/app/settings/route.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import type { JSX } from 'react'; -import { MadeBy, SheetPage } from '@/components'; -import { createFileRoute, Outlet, useNavigate, useRouterState } from '@tanstack/react-router'; -import { Brush01Icon, CodeSnippet02Icon, RefreshCcw02Icon, Rocket02Icon, Sliders04Icon } from '@untitled-theme/icons-react'; -import { useEffect } from 'react'; - -export const Route = createFileRoute('/app/settings')({ - component: RouteComponent, -}); - -function HeaderLarge() { - return ( -
-
-

Settings

-

Adjust the Launcher Settings

-
-
- ); -} - -function HeaderSmall() { - return

Settings

; -} - -function RouteComponent() { - return ( - } headerSmall={}> - -
-
- , 'General', '/'], - [, 'Appearance', '/appearance'], - // [, 'APIs', '/apis'], - // [, 'Language', '/language'], - ], - 'Game Settings': [ - [, 'Minecraft settings', '/minecraft'], - ], - 'About': [ - [, 'Changelog', '/changelog'], - // [, 'Feedback', '/'], - [, 'Developer Options', '/developer'], - ], - }} - - /> - -
- -
- -
-
-
- ); -} - -interface SidebarProps { - base: string; - links: Record>; - exact?: boolean; -} - -export function Sidebar(props: SidebarProps) { - const { base, links, exact } = props; - - const navigate = useNavigate(); - const routerState = useRouterState(); - - const location = routerState.location.pathname; - - useEffect(() => { - if (base.endsWith('/')) - throw new Error('Base should not end with a slash'); - }); - - function goto(href: string, params?: URLSearchParams) { - const currParams = new URLSearchParams(location); - if (params) - for (const [key, value] of params) - currParams.set(key, value); - - const url = `${base}${href}`; - navigate({ to: url }); - } - - function isActive(link: string, params: URLSearchParams | undefined, exact: boolean = false) { - const fullBasePath = `${base}${link}`; - const pathnameMatch = exact - ? location === fullBasePath || `${location}/` === fullBasePath - : location.startsWith(fullBasePath) || `${location}/`.startsWith(fullBasePath); - - if (!params) - return pathnameMatch; - - const searchParams = new URLSearchParams(routerState.location.searchStr); - for (const [key, value] of params) - if (searchParams.get(key) !== value) - return false; - - return pathnameMatch; - } - - return ( -
- {Object.keys(links).map(section => ( -
-
-

{section.toUpperCase()}

-
- {links[section].map((entry) => { - if (!entry) - return ''; - - const [Component, label, link, params] = entry; - - return ( - goto(link, params)} - > - - {Component} - {label} - - - ); - })} -
-
-
- ))} -
- ); -} - -interface SidebarPageProps { - className?: string; - children: JSX.Element | Array; -} - -Sidebar.Page = function (props: SidebarPageProps) { - return ( -
- {props.children} -
- ); -}; - -export default Sidebar; diff --git a/apps/oneclient/frontend/src/routes/index.tsx b/apps/oneclient/frontend/src/routes/index.tsx deleted file mode 100644 index bc128785..00000000 --- a/apps/oneclient/frontend/src/routes/index.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useSettings } from '@/hooks/useSettings'; -import { createFileRoute, Navigate } from '@tanstack/react-router'; - -export const Route = createFileRoute('/')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { setting } = useSettings(); - if (setting('seen_onboarding') === false) - return ; - - return ; -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/account.tsx b/apps/oneclient/frontend/src/routes/onboarding/account.tsx deleted file mode 100644 index aed8540a..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/account.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import { AccountAvatar, isMinecraftAuthError, MinecraftAuthErrorModal, Overlay, SkinViewer } from '@/components'; -import { usePlayerProfile } from '@/hooks/usePlayerProfile'; -import { bindings } from '@/main'; -import { OnboardingNavigation } from '@/routes/onboarding/route'; -import { useCommandMut, useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { createFileRoute } from '@tanstack/react-router'; -import { useState } from 'react'; - -export const Route = createFileRoute('/onboarding/account')({ - component: RouteComponent, -}); - -function Viewer({ - credentials, -}: { - credentials: MinecraftCredentials; -}) { - const { data: profile } = usePlayerProfile(credentials.id); - return ( - - ); -} - -function AccountPreview({ - profile, -}: { - profile: MinecraftCredentials; -}) { - return ( -
-
- -
-
- -
-

{profile.username}

-

{profile.id}

-
-
-
- ); -} - -function RouteComponent() { - const queryClient = useQueryClient(); - const [authError, setAuthError] = useState(null); - const { data: currentAccount } = useCommandSuspense(['getDefaultUser'], () => { - return bindings.core.getDefaultUser(true); - }); - const { data: profile, isPending, mutate: login } = useCommandMut(bindings.core.openMsaLogin, { - onSuccess() { - setAuthError(null); - queryClient.invalidateQueries({ - queryKey: ['getDefaultUser'], - }); - }, - onError(error) { - console.error('[auth] onboarding/account: openMsaLogin failed', error); - if (isMinecraftAuthError(error)) - setAuthError(error); - }, - }); - - const onClick = () => { - setAuthError(null); - login(); - }; - - return ( - <> -
-
-

Account

-

Before you continue, we require you to own a copy of Minecraft: Java Edition.

-
- {currentAccount - ? ( - <> - - - ) - : ( - <> - {profile - ? ( - <> - - - ) - : ( - - )} - - )} -
- - - {authError && ( - { - if (!open) - setAuthError(null); - }} - > - - - )} - - ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/downloading.tsx b/apps/oneclient/frontend/src/routes/onboarding/downloading.tsx deleted file mode 100644 index 392c2d4e..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/downloading.tsx +++ /dev/null @@ -1,368 +0,0 @@ -import type { ModData } from '@/components'; -import { buildModDataArray, downloadModsParallel, isManagedMod } from '@/components'; -import { bindings } from '@/main'; -import useDownloadStore from '@/stores/downloadStore'; -import { getCachedOnboardingTips, loadOnboardingTips } from '@/utils/onboardingFunFacts'; -import { useToast } from '@/utils/toast'; -import { getMessageFromError, isLauncherError, useCommandSuspense } from '@onelauncher/common'; -import { useQueryClient } from '@tanstack/react-query'; -import { createFileRoute, useNavigate } from '@tanstack/react-router'; -import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; - -export const Route = createFileRoute('/onboarding/downloading')({ - component: RouteComponent, -}); - -// Navbar in onboarding is h-20 = 80px -const NAVBAR_HEIGHT = 80; -// How long the fade-out takes before navigating to /app -const FADE_DURATION_MS = 700; - -interface DownloadFailure { - mod: ModData; - reason: string; - index: number; - clusterVersion: string; -} - -function getErrorMessage(error: unknown): string { - if (isLauncherError(error)) - return getMessageFromError(error); - - if (error instanceof Error) - return error.message; - - if (typeof error === 'string') - return error; - - try { - return JSON.stringify(error); - } - catch { - return 'Unknown download error'; - } -} - -function RouteComponent() { - const navigate = useNavigate(); - const queryClient = useQueryClient(); - const { modsPerCluster, isFinishingOnboarding } = useDownloadStore(); - const clearStore = useDownloadStore(s => s.clear); - const markOnboardingFinishing = useDownloadStore(s => s.markOnboardingFinishing); - const toast = useToast(); - const { data: clusters } = useCommandSuspense(['getClusters'], () => bindings.core.getClusters()); - const { data: settings } = useCommandSuspense(['readSettings'], bindings.core.readSettings); - const [tips, setTips] = useState>(getCachedOnboardingTips); - - const clusterVersionById = useMemo(() => { - return new Map(clusters.map(cluster => [cluster.id, cluster.mc_version])); - }, [clusters]); - - const tip = useMemo(() => tips[Math.floor(Math.random() * tips.length)], [tips]); - - useEffect(() => { - let cancelled = false; - - const loadTips = async () => { - try { - const loadedTips = await loadOnboardingTips(); - if (!cancelled && loadedTips.length > 0) - setTips(loadedTips); - } - catch (error) { - console.warn('[onboarding/downloading] Falling back to backup fun facts.', error); - } - }; - - void loadTips(); - - return () => { - cancelled = true; - }; - }, []); - - // Only redirect on initial mount if store was already empty (safety net for direct navigation). - // Must NOT re-run when clearStore() empties the store at the end of downloads. - const initiallyEmpty = useRef(Object.keys(modsPerCluster).length === 0); - - useEffect(() => { - if (!initiallyEmpty.current) - return; - - if (isFinishingOnboarding) - return; - - navigate({ to: '/onboarding/preferences/versionCategory' }); - }, [isFinishingOnboarding, navigate]); - - const mods = useMemo(() => buildModDataArray(modsPerCluster), [modsPerCluster]); - const onboardingInstalledVersions = useMemo(() => { - const versions = new Set(clusters.map(cluster => cluster.mc_version)); - return [...versions].sort(); - }, [clusters]); - - const [processedMods, setProcessedMods] = useState(0); - const [successfulMods, setSuccessfulMods] = useState(0); - const [failedMods, setFailedMods] = useState>([]); - const [batchError, setBatchError] = useState(null); - const [retryQueue, setRetryQueue] = useState>([]); - const [currentBatchTotal, setCurrentBatchTotal] = useState(0); - const [isRunningBatch, setIsRunningBatch] = useState(false); - const [isComplete, setIsComplete] = useState(false); - const [isLeaving, setIsLeaving] = useState(false); - const hasStarted = useRef(false); - const finishTimerRef = useRef(null); - - const percentage = currentBatchTotal > 0 ? Math.round((processedMods / currentBatchTotal) * 100) : 0; - const finishOnboarding = useCallback(() => { - if (isLeaving) - return; - - markOnboardingFinishing(); - - setIsLeaving(true); - - if (finishTimerRef.current !== null) - window.clearTimeout(finishTimerRef.current); - - finishTimerRef.current = window.setTimeout(() => { - void (async () => { - try { - const storedSeenVersions = Array.isArray(settings.seen_versions) ? settings.seen_versions : []; - const nextSeenVersions = [ - ...new Set([...onboardingInstalledVersions, ...storedSeenVersions]), - ].sort(); - const nextSettings = { - ...settings, - seen_onboarding: true, - seen_versions: nextSeenVersions, - }; - - await bindings.core.writeSettings(nextSettings); - queryClient.setQueryData(['readSettings'], nextSettings); - } - catch (error) { - console.error('[onboarding/downloading] Failed to persist seen_onboarding before continue; navigating anyway.', error); - } - - navigate({ to: '/app', replace: true }); - clearStore(); - })(); - }, FADE_DURATION_MS); - }, [ - clearStore, - isLeaving, - markOnboardingFinishing, - navigate, - onboardingInstalledVersions, - queryClient, - settings, - ]); - - useEffect(() => { - return () => { - if (finishTimerRef.current !== null) - window.clearTimeout(finishTimerRef.current); - }; - }, []); - - const downloadMod = async (mod: ModData): Promise => { - if (isManagedMod(mod) && mod.bundleName) { - await bindings.oneclient.downloadPackageFromBundle(mod.fileKind, mod.clusterId, mod.bundleName, true); - return; - } - - if (isManagedMod(mod)) { - await bindings.core.downloadPackage(mod.provider, mod.id, mod.versionId, mod.clusterId, true); - return; - } - - if (mod.bundleName) - await bindings.oneclient.downloadPackageFromBundle(mod.fileKind, mod.clusterId, mod.bundleName, true); - else - await bindings.core.downloadExternalPackage(mod.package, mod.clusterId, null, null); - }; - - const startDownloadBatch = async (batchMods: Array) => { - setIsRunningBatch(true); - setBatchError(null); - setFailedMods([]); - setRetryQueue([]); - setIsComplete(false); - setProcessedMods(0); - setSuccessfulMods(0); - setCurrentBatchTotal(batchMods.length); - - try { - const results = await downloadModsParallel(batchMods, 10, async (mod) => { - try { - await downloadMod(mod); - setSuccessfulMods(prev => prev + 1); - } - finally { - setProcessedMods(prev => prev + 1); - } - }); - - const failures = results - .filter(result => !result.ok) - .map((result) => { - return { - mod: result.mod, - reason: getErrorMessage(result.error), - index: result.index, - clusterVersion: clusterVersionById.get(result.mod.clusterId) ?? 'Unknown version', - }; - }); - - if (failures.length > 0) { - setFailedMods(failures); - setRetryQueue(failures.map(failure => failure.mod)); - toast({ - type: 'error', - title: 'Some mods failed to download', - message: `${failures.length} of ${batchMods.length} failed. Review the summary and retry.`, - }); - } - } - catch (error) { - const message = getErrorMessage(error); - setBatchError(message); - setRetryQueue(batchMods); - toast({ - type: 'error', - title: 'Download batch crashed', - message, - }); - } - finally { - setIsRunningBatch(false); - setIsComplete(true); - } - }; - - useEffect(() => { - if (hasStarted.current || mods.length === 0) - return; - hasStarted.current = true; - void startDownloadBatch(mods); - // eslint-disable-next-line react-hooks/exhaustive-deps -- startDownloadBatch closes over mutable progress state; this effect intentionally runs once per mods snapshot. - }, [mods]); - - useEffect(() => { - if (!isComplete || failedMods.length > 0 || batchError !== null) - return; - - // Brief pause at 100%, then fade out, then navigate straight to /app. - const pauseTimer = setTimeout(() => { - finishOnboarding(); - }, 400); - - return () => clearTimeout(pauseTimer); - }, [batchError, failedMods.length, finishOnboarding, isComplete]); - - const handleRetryFailed = () => { - if (retryQueue.length === 0 || isRunningBatch) - return; - - void startDownloadBatch(retryQueue); - }; - - const hasFailures = failedMods.length > 0 || batchError !== null; - const heading = hasFailures ? 'Download issues found' : 'Downloading...'; - - return ( -
- {/* Top left: title */} -

- {heading} -

- - {hasFailures && isComplete - ? ( -
-

Some mods could not be downloaded.

-

- Successful: {successfulMods} / {currentBatchTotal} -

- {batchError - ?

Batch error: {batchError}

- : null} - {failedMods.length > 0 - ? ( -
- {failedMods.slice(0, 8).map((failure) => { - return ( -

- {failure.mod.name} (MC {failure.clusterVersion}, cluster {failure.mod.clusterId}): {failure.reason} -

- ); - })} - {failedMods.length > 8 - ?

+{failedMods.length - 8} more failures

- : null} -
- ) - : null} -
- - -
-
- ) - : null} - - {/* Spacer — pushes bottom content to the bottom */} -
- - {/* Bottom row: percentage+bar on left, tip on right */} -
- {/* Left: percentage + progress bar */} -
- - {percentage} - % - - - Processed: {processedMods} / {currentBatchTotal} - -
-
-
-
- - {/* Right: tip */} -
-

Tip

-

{tip}

-
-
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/index.tsx b/apps/oneclient/frontend/src/routes/onboarding/index.tsx deleted file mode 100644 index 75d55f23..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/index.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - <> -
-

OneClient

-
- - ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/language.tsx b/apps/oneclient/frontend/src/routes/onboarding/language.tsx deleted file mode 100644 index 5d6f9951..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/language.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import Illustration from '@/assets/illustrations/onboarding/language.svg'; -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/language')({ - component: RouteComponent, -}); - -// placeholder -interface Language { - lang: string; - code: string; - percentage: number; -} - -// placeholder -const languageList: Array = [ - { - lang: 'English', - code: 'en', - percentage: 100, - }, -]; - -function RouteComponent() { - return ( -
-
- Language selection illustration -
- -
-

Language

-

Choose your preferred language.

- -
-
- {languageList.map(lang => ( -
-
-

{lang.lang}

-
-
-

{lang.percentage}%

-
-
- ))} -
-
-
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/preferences/index.tsx b/apps/oneclient/frontend/src/routes/onboarding/preferences/index.tsx deleted file mode 100644 index f8d037c7..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/preferences/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/preferences/')({ - component: RouteComponent, -}); - -function RouteComponent() { - return
Hello "/onboarding/preferences/"!
; -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/preferences/version.tsx b/apps/oneclient/frontend/src/routes/onboarding/preferences/version.tsx deleted file mode 100644 index 59877b12..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/preferences/version.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import type { GameLoader, OnlineCluster, OnlineClusterEntry } from '@/bindings.gen'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { bindings } from '@/main'; -import { OnboardingNavigation } from '@/routes/onboarding/route'; -import { formatMcVersion } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { ArrowLeftIcon, ArrowRightIcon } from '@untitled-theme/icons-react'; -import { useEffect, useMemo, useState } from 'react'; -import { Button as AriaButton } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; - -export interface StrippedCluster { - mc_version: string; - mc_loader: GameLoader; -} - -interface VersionSlide { - cluster: OnlineCluster; - entry: OnlineClusterEntry; - fullVersionName: string; -} - -export const Route = createFileRoute('/onboarding/preferences/version')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - - const slides = useMemo>(() => { - return versions.clusters.flatMap(cluster => - cluster.entries.map(entry => ({ - cluster, - entry, - fullVersionName: formatMcVersion(cluster.major_version, entry.minor_version), - }))); - }, [versions.clusters]); - - useEffect(() => { - const allClusters: Array = slides.map(s => ({ - mc_version: s.fullVersionName, - mc_loader: s.entry.loader, - })); - localStorage.setItem('selectedClusters', JSON.stringify(allClusters)); - }, [slides]); - - const [currentIndex, setCurrentIndex] = useState(0); - - const goLeft = () => setCurrentIndex(i => Math.max(0, i - 1)); - const goRight = () => setCurrentIndex(i => Math.min(slides.length - 1, i + 1)); - - if (slides.length === 0) - return ; - - const current = slides[currentIndex]; - - return ( - <> -
-
-
-

Available Versions

-

- These are the versions OneClient will set up for you. Browse through to see what's available. -

- -
-
- - - - - - - - - -
- -
- {slides.map((slide, i) => ( - setCurrentIndex(i)} - /> - ))} -
- - - {currentIndex + 1} - {' '} - / - {' '} - {slides.length} - -
-
-
-
- - - - ); -} - -function CarouselSlide({ cluster, version, fullVersionName, className }: { cluster: OnlineCluster; version: OnlineClusterEntry; fullVersionName: string; className?: string }) { - const artPath = version.art ?? cluster.art; - const artSrc = useCachedImage(artPath); - - return ( -
-
- {artSrc - ? ( - {`Minecraft - ) - : ( -
- )} - -
- {version.tags.map(tag => ( -
- {tag} -
- ))} -
- -
- {fullVersionName} -
-
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/preferences/versionCategory.tsx b/apps/oneclient/frontend/src/routes/onboarding/preferences/versionCategory.tsx deleted file mode 100644 index d5631ca7..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/preferences/versionCategory.tsx +++ /dev/null @@ -1,477 +0,0 @@ -import type { ClusterModel, ModpackArchive, ModpackFile, OnlineClusterManifest } from '@/bindings.gen'; -import type { ModCardContextApi, ModWithBundle, onClickOnMod } from '@/components'; -import { ModCardContext, ModList, Overlay } from '@/components'; -import { useCachedImage } from '@/hooks/useCachedImage'; -import { bindings } from '@/main'; -import { OnboardingNavigation } from '@/routes/onboarding/route'; -import useDownloadStore from '@/stores/downloadStore'; -import { getOnlineClusterForVersion, parseMcVersion } from '@/utils/versionMap'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { DotsVerticalIcon } from '@untitled-theme/icons-react'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useCallback, useEffect, useMemo, useState } from 'react'; -import { Button as AriaButton } from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/onboarding/preferences/versionCategory')({ - component: RouteComponent, -}); - -interface OverrideExtractionFailure { - clusterId: number; - bundleName: string; - reason: string; -} - -function extractDisplayName(manifestName: string): string { - return manifestName.match(/\[(.*?)\]/)?.[1] ?? manifestName; -} - -function resolveArt(cluster: ClusterModel, versions: OnlineClusterManifest): string { - const onlineCluster = getOnlineClusterForVersion(cluster.mc_version, versions); - const parsed = parseMcVersion(cluster.mc_version); - const entry = parsed?.minor !== undefined - ? onlineCluster?.entries.find(e => e.minor_version === parsed.minor) - : undefined; - return entry?.art ?? onlineCluster?.art ?? '/versions/art/Horse_Update.jpg'; -} - -interface ClusterWithBundles { - cluster: ClusterModel; - bundles: Array; -} - -interface UnifiedBundle { - displayName: string; - art: string; - modCount: number; - clustersWithBundle: Array; -} - -const BUNDLE_CARD_CONTEXT: ModCardContextApi = { useVerticalGridLayout: true }; - -function HandleCluster(cluster: ClusterModel): Array { - const { data: bundle } = useCommandSuspense(['getBundlesFor', cluster.id], () => bindings.oneclient.getBundlesFor(cluster.id)); - return bundle; -} - -function RouteComponent() { - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - const { data: clusters } = useCommandSuspense(['getClusters'], () => bindings.core.getClusters()); - const bundleQueries = clusters.map(cluster => HandleCluster(cluster)); - - // Use ALL local clusters — no filter against selectedClusters. - const allClusters = useMemo>(() => { - return clusters.map((cluster, i) => ({ cluster, bundles: bundleQueries[i] })); - }, [clusters, bundleQueries]); - - const bundlesPerCluster = useMemo(() => { - const result: Record> = {}; - for (const { cluster, bundles } of allClusters) - result[cluster.id] = bundles; - return result; - }, [allClusters]); - - // Collect all unique bundle names from every cluster. - const unifiedBundles = useMemo>(() => { - const seen: Map = new Map(); - for (const cwb of allClusters) - for (const archive of cwb.bundles) { - const name = extractDisplayName(archive.manifest.name); - if (!seen.has(name)) { - const visibleEnabled = archive.manifest.files.filter(f => f.enabled && !f.hidden); - seen.set(name, { - displayName: name, - art: resolveArt(cwb.cluster, versions), - modCount: visibleEnabled.length, - clustersWithBundle: [], - }); - } - seen.get(name)!.clustersWithBundle.push(cwb); - } - return [...seen.values()]; - }, [allClusters, versions]); - - useEffect(() => { - if (!import.meta.env.DEV) - return; - - const clusterDiagnostics = allClusters.map(({ cluster, bundles }) => ({ - clusterId: cluster.id, - clusterName: cluster.name, - mcVersion: cluster.mc_version, - mcLoader: cluster.mc_loader, - bundleCount: bundles.length, - bundles: bundles.map(bundle => ({ - rawName: bundle.manifest.name, - displayName: extractDisplayName(bundle.manifest.name), - enabled: bundle.manifest.enabled, - totalFiles: bundle.manifest.files.length, - enabledFiles: bundle.manifest.files.filter(file => file.enabled).length, - visibleEnabledFiles: bundle.manifest.files.filter(file => file.enabled && !file.hidden).length, - })), - })); - - console.warn('[onboarding/preferences/versionCategory] bundle discovery diagnostics', { - clusters: clusterDiagnostics, - unifiedDisplayNames: unifiedBundles.map(bundle => bundle.displayName), - }); - }, [allClusters, unifiedBundles]); - - // modsPerCluster is full state, pre-seeded with all enabled mods from all enabled bundles. - const [modsPerCluster, setModsPerCluster] = useState>>(() => { - return clusters.reduce((acc, cluster, i) => { - const bundles = bundleQueries[i]; - const enabledMods = bundles - .filter(bundle => bundle.manifest.enabled) - .flatMap(bundle => bundle.manifest.files - .filter(file => file.enabled) - .map(file => ({ file, bundleName: bundle.manifest.name }))); - acc[cluster.id] = enabledMods; - return acc; - }, {} as Record>); - }); - - // Card-level toggle: select/deselect all mods for this bundle across every cluster that has it. - const toggleBundle = (ub: UnifiedBundle) => { - setModsPerCluster((prev) => { - const next = { ...prev }; - const firstCluster = ub.clustersWithBundle[0]; - const firstArchive = firstCluster.bundles.find(a => extractDisplayName(a.manifest.name) === ub.displayName); - if (!firstArchive) - return next; - - const visibleEnabled = firstArchive.manifest.files.filter(f => f.enabled && !f.hidden); - const currentMods = prev[firstCluster.cluster.id]; - const isCurrentlySelected = visibleEnabled.length > 0 - && visibleEnabled.every(f => currentMods.some(m => m.file === f && m.bundleName === firstArchive.manifest.name)); - - for (const cwb of ub.clustersWithBundle) { - const archive = cwb.bundles.find(a => extractDisplayName(a.manifest.name) === ub.displayName); - if (!archive) - continue; - const enabledFiles = archive.manifest.files.filter(f => f.enabled); - const clusterMods = prev[cwb.cluster.id]; - if (isCurrentlySelected) { - next[cwb.cluster.id] = clusterMods.filter(m => m.bundleName !== archive.manifest.name || !enabledFiles.includes(m.file)); - } - else { - const toAdd = enabledFiles - .filter(f => !clusterMods.some(m => m.file === f && m.bundleName === archive.manifest.name)) - .map(f => ({ file: f, bundleName: archive.manifest.name })); - next[cwb.cluster.id] = [...toAdd, ...clusterMods]; - } - } - return next; - }); - }; - - const anySelected = Object.values(modsPerCluster).some(mods => mods.length > 0); - - const setDownloadData = useDownloadStore(s => s.setDownloadData); - const [isPreparingNext, setIsPreparingNext] = useState(false); - const [overrideFailures, setOverrideFailures] = useState>([]); - - function toErrorMessage(error: unknown): string { - if (error instanceof Error) - return error.message; - - if (typeof error === 'string') - return error; - - try { - return JSON.stringify(error); - } - catch { - return 'Unknown override extraction error'; - } - } - - const handleBeforeNext = async (): Promise => { - setIsPreparingNext(true); - setOverrideFailures([]); - const failures: Array = []; - - for (const [clusterId, bundles] of Object.entries(bundlesPerCluster)) - for (const bundle of bundles) { - const selectedMods = modsPerCluster[clusterId] ?? []; - const hasSelectedBundleContent = selectedMods.some(mod => mod.bundleName === bundle.manifest.name); - if (!hasSelectedBundleContent) - continue; - - try { - await bindings.oneclient.extractBundleOverrides(bundle.path, Number(clusterId)); - } - catch (e) { - console.error(`Failed to extract overrides for bundle ${bundle.manifest.name}:`, e); - failures.push({ - clusterId: Number(clusterId), - bundleName: bundle.manifest.name, - reason: toErrorMessage(e), - }); - } - } - - setIsPreparingNext(false); - if (failures.length > 0) { - setOverrideFailures(failures); - return false; - } - - setDownloadData(modsPerCluster, bundlesPerCluster); - return true; - }; - - return ( - <> -
-
- -
-

Bundles

-

- Choose which mod bundles to install. Your selection will be applied across all available versions. -

- {overrideFailures.length > 0 - ? ( -
-

Some bundle overrides failed to extract.

-

Fix or retry before continuing.

-
- {overrideFailures.map((failure) => { - return ( -

- Cluster {failure.clusterId} / {failure.bundleName}: {failure.reason} -

- ); - })} -
-
- ) - : null} - -
- {unifiedBundles.map((ub) => { - const firstCwb = ub.clustersWithBundle[0]; - const firstArchive = firstCwb.bundles.find(a => extractDisplayName(a.manifest.name) === ub.displayName); - const visibleEnabled = firstArchive?.manifest.files.filter(f => f.enabled && !f.hidden) ?? []; - const currentMods = modsPerCluster[firstCwb.cluster.id]; - const isSelected = visibleEnabled.length > 0 - && visibleEnabled.every(f => currentMods.some(m => m.file === f && m.bundleName === firstArchive?.manifest.name)); - - return ( - toggleBundle(ub)} - setModsPerCluster={setModsPerCluster} - /> - ); - })} -
-
-
-
-
- - - ); -} - -function BundleCard({ displayName, art, modCount, isSelected, onToggle, clustersWithBundle, modsPerCluster, setModsPerCluster }: { - displayName: string; - art: string; - modCount: number; - isSelected: boolean; - onToggle: () => void; - clustersWithBundle: Array; - modsPerCluster: Record>; - setModsPerCluster: React.Dispatch>>>; -}) { - const artSrc = useCachedImage(art); - - return ( - -
- {artSrc - ? ( - {`${displayName} - ) - : ( -
- )} - -
-
- {modCount} - {' '} - Mods - {' '} - {isSelected ? 'Selected' : ''} -
-
- - - - - - - - - - - -
- {displayName} -
-
- - ); -} - -function BundleDetailModal({ displayName, clustersWithBundle, modsPerCluster, setModsPerCluster }: { - displayName: string; - clustersWithBundle: Array; - modsPerCluster: Record>; - setModsPerCluster: React.Dispatch>>>; -}) { - const [selectedClusterId, setSelectedClusterId] = useState(clustersWithBundle[0].cluster.id); - - const selected = clustersWithBundle.find(cwb => cwb.cluster.id === selectedClusterId) ?? clustersWithBundle[0]; - const matchingArchive = selected.bundles.find(a => extractDisplayName(a.manifest.name) === displayName); - - const hiddenEnabledFiles: Array = useMemo(() => { - if (!matchingArchive) - return []; - return matchingArchive.manifest.files.filter(f => f.enabled && f.hidden); - }, [matchingArchive]); - - const bundleName = matchingArchive?.manifest.name ?? ''; - - const onClickOnModCb: onClickOnMod = useCallback((file: ModpackFile) => { - setModsPerCluster((prev) => { - const prevMods = prev[selectedClusterId]; - const existingIndex = prevMods.findIndex(m => m.file === file && m.bundleName === bundleName); - const nextMods = existingIndex >= 0 - ? prevMods.filter((_, i) => i !== existingIndex) - : [{ file, bundleName }, ...prevMods]; - - const hasVisibleSelection = nextMods.some(mod => ( - mod.bundleName === bundleName - && mod.file.enabled - && !mod.file.hidden - )); - - const synced = !hasVisibleSelection - ? nextMods.filter(mod => mod.bundleName !== bundleName || !hiddenEnabledFiles.includes(mod.file)) - : [ - ...hiddenEnabledFiles - .filter(hf => !nextMods.some(m => m.file === hf && m.bundleName === bundleName)) - .map(hf => ({ file: hf, bundleName })), - ...nextMods, - ]; - - return { ...prev, [selectedClusterId]: synced }; - }); - }, [selectedClusterId, bundleName, hiddenEnabledFiles, setModsPerCluster]); - - const visibleMods = useMemo(() => { - return modsPerCluster[selectedClusterId].filter(m => !m.file.hidden).map(m => m.file); - }, [modsPerCluster, selectedClusterId]); - - const context = useMemo(() => ({ - onClickOnMod: onClickOnModCb, - useVerticalGridLayout: true, - mods: visibleMods, - }), [onClickOnModCb, visibleMods]); - - return ( - - - Mods for - {' '} - {displayName} - - - {clustersWithBundle.length > 1 && ( -
- {clustersWithBundle.map(cwb => ( - setSelectedClusterId(cwb.cluster.id)} - > - {cwb.cluster.mc_version} - - ))} -
- )} - - - - - -
-

- Selected - {' '} - {visibleMods.length} - {' '} - mods -

- -
-
- ); -} diff --git a/apps/oneclient/frontend/src/routes/onboarding/route.tsx b/apps/oneclient/frontend/src/routes/onboarding/route.tsx deleted file mode 100644 index 0f6da41d..00000000 --- a/apps/oneclient/frontend/src/routes/onboarding/route.tsx +++ /dev/null @@ -1,325 +0,0 @@ -import type { PropsWithChildren } from 'react'; -import LauncherLogo from '@/assets/logos/oneclient.svg?react'; -import { GameBackground, LoaderSuspense, MadeBy, NavbarButton, Overlay, Stepper, SuperSecretDevOptions } from '@/components'; -import { prefetchCachedImages } from '@/hooks/useCachedImage'; -import { bindings } from '@/main'; -import { preloadOnboardingTips } from '@/utils/onboardingFunFacts'; -import { useCommandSuspense } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { createFileRoute, Link, Outlet, useLocation, useNavigate } from '@tanstack/react-router'; -import { Window } from '@tauri-apps/api/window'; -import { MinusIcon, SquareIcon, XCloseIcon } from '@untitled-theme/icons-react'; -import { motion } from 'motion/react'; -import { useEffect } from 'react'; -import { Button as AriaButton } from 'react-aria-components'; -import { MouseParallax } from 'react-just-parallax'; - -export const Route = createFileRoute('/onboarding')({ - component: RouteComponent, - loader: ({ location }) => { - const currentStepIndex = ONBOARDING_STEPS.findIndex((step) => { - if (step.path === location.pathname) - return true; - - if (step.subSteps) - return step.subSteps.some(sub => sub.path === location.pathname); - - return false; - }); - const currentLinearStepIndex = LINEAR_ONBOARDING_STEPS.findIndex( - step => step.path === location.pathname, - ); - - const isFirstStep = currentLinearStepIndex === 0; - const isLastStep = currentLinearStepIndex === LINEAR_ONBOARDING_STEPS.length - 1; - const isDownloadingStep = location.pathname === '/onboarding/downloading'; - - return { - isFirstStep, - isLastStep, - isDownloadingStep, - previousPath: - currentLinearStepIndex > 0 - ? LINEAR_ONBOARDING_STEPS[currentLinearStepIndex - 1]?.path - : undefined, - nextPath: - currentLinearStepIndex < LINEAR_ONBOARDING_STEPS.length - 1 - ? LINEAR_ONBOARDING_STEPS[currentLinearStepIndex + 1]?.path - : undefined, - currentLinearStepIndex, - currentStepIndex, - }; - }, -}); - -export interface OnboardingStep { - path: string; - title: string; - subSteps?: Array; - hideNavigationButtons?: boolean; -}; - -const ONBOARDING_STEPS: Array = [ - { - path: '/onboarding', - title: 'Welcome', - }, - { - path: '/onboarding/language', - title: 'Set Language', - }, - { - path: '/onboarding/account', - title: 'Account', - hideNavigationButtons: true, - }, - { - path: '/onboarding/preferences/', - title: 'Preferences', - subSteps: [ - { - path: '/onboarding/preferences/version', - title: 'Versions', - hideNavigationButtons: true, - }, - { - path: '/onboarding/preferences/versionCategory', - title: 'Versions Category', - hideNavigationButtons: true, - }, - { - path: '/onboarding/downloading', - title: 'Downloading', - hideNavigationButtons: true, - }, - ], - }, -]; - -function getLinearSteps(steps: Array): Array> { - return steps.flatMap(step => (step.subSteps ? step.subSteps : step)); -} - -const LINEAR_ONBOARDING_STEPS = getLinearSteps(ONBOARDING_STEPS); - -function RouteComponent() { - const location = useLocation(); - - // Prefetch data so that onboarding/preferences/versionCategory is fast - const queryClient = useQueryClient(); - const { data: clusters } = useCommandSuspense(['getClusters'], () => bindings.core.getClusters()); - const { data: versions } = useCommandSuspense(['getVersions'], () => bindings.oneclient.getVersions()); - useEffect(() => { - clusters.forEach((cluster) => { - queryClient.prefetchQuery({ - queryKey: ['getBundlesFor', cluster.id], - queryFn: () => bindings.oneclient.getBundlesFor(cluster.id), - }); - }); - }, [clusters, queryClient]); - useEffect(() => { - const artPaths: Array = ['/versions/art/Horse_Update.jpg']; - for (const cluster of versions.clusters) { - artPaths.push(cluster.art); - for (const entry of cluster.entries) - artPaths.push(entry.art); - } - - void prefetchCachedImages(artPaths); - }, [versions.clusters]); - - useEffect(() => { - void preloadOnboardingTips(); - }, []); - - const { currentLinearStepIndex } = Route.useLoaderData(); - - return ( - // - -
- - - - - - - - - - {LINEAR_ONBOARDING_STEPS[currentLinearStepIndex].hideNavigationButtons ? <> : } - -
-
- //
- ); -} - -function AppShell({ - children, -}: PropsWithChildren) { - const { isFirstStep, isDownloadingStep, currentStepIndex } = Route.useLoaderData(); - - return ( -
- - -
-
-
-
- - - - - - - - - -
-
- - - -
- -
- {children} -
-
-
- ); -} - -function BackgroundGradient() { - // const background = useAppShellStore(state => state.background); - - // if (background === 'none') - // return undefined; - - return ( -
- {/* Linear black gradient: left -> right */} -
-
- - {/* Radial black gradient */} -
-
- - {/* Linear black gradient: bottom -> 200 px up */} -
-
- - - - -
- ); -} - -export function OnboardingNavigation({ disableNext, onBeforeNext }: { disableNext?: boolean; onBeforeNext?: () => Promise | boolean | void }) { - const navigate = useNavigate(); - const { isFirstStep, previousPath, nextPath } = Route.useLoaderData(); - - async function handleNextClick() { - if (disableNext) - return; - - if (onBeforeNext) { - const shouldContinue = await onBeforeNext(); - if (shouldContinue === false) - return; - } - - navigate({ to: nextPath ?? '/app' }); - } - - return ( -
-
- {!isFirstStep && previousPath && ( - - - - )} -
-
- -
-
- ); -} - -export function Navbar() { - const onMinimize = () => Window.getCurrent().minimize(); - const onMaximize = () => Window.getCurrent().toggleMaximize(); - const onClose = () => Window.getCurrent().close(); - - return ( - - ); -} diff --git a/apps/oneclient/frontend/src/stores/appShellStore.ts b/apps/oneclient/frontend/src/stores/appShellStore.ts deleted file mode 100644 index 4d19126a..00000000 --- a/apps/oneclient/frontend/src/stores/appShellStore.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { create } from 'zustand'; - -export interface AppShellStore { - activeClusterId: number; -} - -export interface AppShellStoreActions { - setActiveClusterId: (cluster: AppShellStore['activeClusterId']) => void; -} - -export const useAppShellStore = create()(set => ({ - activeClusterId: 0, - - setActiveClusterId: cluster => set({ activeClusterId: cluster }), -})); - -export default useAppShellStore; diff --git a/apps/oneclient/frontend/src/stores/clusterStore.ts b/apps/oneclient/frontend/src/stores/clusterStore.ts deleted file mode 100644 index 2e6535be..00000000 --- a/apps/oneclient/frontend/src/stores/clusterStore.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { GameLoader } from '@/bindings.gen'; -import type { ParsedMcVersion } from '@/utils/versionMap'; -import { create } from 'zustand'; -import { persist } from 'zustand/middleware'; - -export type MajorVersion = number; -export type MinorVersion = number; - -export interface ClusterStore { - modLoaders: Record<`${MajorVersion}.${MinorVersion}`, GameLoader>; - minorVersions: Array; -} - -export interface ClusterStoreActions { - setModLoader: (version: `${MajorVersion}.${MinorVersion}`, loader: GameLoader) => void; - setMinorVersion: (major: number, minor: number) => void; -} - -export const useClusterStore = create()(persist( - set => ({ - modLoaders: {}, - minorVersions: [], - - setModLoader: (version, loader) => set(state => ({ - modLoaders: { - ...state.modLoaders, - [version]: loader, - }, - })), - setMinorVersion: (major, minor) => set((state) => { - const existing = state.minorVersions.find(v => v.major === major); - if (existing) - existing.minor = minor; - else - state.minorVersions.push({ major, minor }); - - return { minorVersions: [...state.minorVersions] }; - }), - }), - { - name: 'oneclient:cluster_list', - }, -)); - -export default useClusterStore; diff --git a/apps/oneclient/frontend/src/stores/downloadStore.ts b/apps/oneclient/frontend/src/stores/downloadStore.ts deleted file mode 100644 index 57056b3d..00000000 --- a/apps/oneclient/frontend/src/stores/downloadStore.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { ModpackArchive } from '@/bindings.gen'; -import type { ModWithBundle } from '@/components'; -import { create } from 'zustand'; - -export interface DownloadStore { - modsPerCluster: Record>; - bundlesPerCluster: Record>; - isFinishingOnboarding: boolean; -} - -export interface DownloadStoreActions { - setDownloadData: (modsPerCluster: Record>, bundlesPerCluster: Record>) => void; - markOnboardingFinishing: () => void; - resetOnboardingFinishing: () => void; - clear: () => void; -} - -export const useDownloadStore = create()(set => ({ - modsPerCluster: {}, - bundlesPerCluster: {}, - isFinishingOnboarding: false, - - setDownloadData: (modsPerCluster, bundlesPerCluster) => set({ - modsPerCluster, - bundlesPerCluster, - isFinishingOnboarding: false, - }), - markOnboardingFinishing: () => set({ isFinishingOnboarding: true }), - resetOnboardingFinishing: () => set({ isFinishingOnboarding: false }), - clear: () => set(state => ({ - modsPerCluster: {}, - bundlesPerCluster: {}, - isFinishingOnboarding: state.isFinishingOnboarding, - })), -})); - -export default useDownloadStore; diff --git a/apps/oneclient/frontend/src/stores/migrationStore.ts b/apps/oneclient/frontend/src/stores/migrationStore.ts deleted file mode 100644 index 6abfe966..00000000 --- a/apps/oneclient/frontend/src/stores/migrationStore.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import { create } from 'zustand'; - -export interface MigrationStore { - isOpen: boolean; - isDebugPreview: boolean; - newVersions: Array; - sourceClusters: Array; - allClusters: Array; -} - -export interface MigrationStoreActions { - setAllClusters: (clusters: Array) => void; - setMigrationCandidates: (newVersions: Array, sourceClusters: Array) => void; - setIsOpen: (open: boolean) => void; - openForDebug: () => void; -} - -function getUniqueVersions(clusters: Array): Array { - return [...new Set(clusters.map(cluster => cluster.mc_version))]; -} - -export const useMigrationStore = create()(set => ({ - isOpen: false, - isDebugPreview: false, - newVersions: [], - sourceClusters: [], - allClusters: [], - - setAllClusters: clusters => set({ allClusters: clusters }), - setMigrationCandidates: (newVersions, sourceClusters) => set({ newVersions, sourceClusters, isDebugPreview: false }), - setIsOpen: open => set(state => ({ - isOpen: open, - isDebugPreview: open ? state.isDebugPreview : false, - })), - openForDebug: () => set((state) => { - if (state.allClusters.length === 0) - return state; - - const unplayedClusters = state.allClusters.filter(cluster => cluster.last_played === null); - const unplayedVersions = getUniqueVersions(unplayedClusters); - const allVersions = getUniqueVersions(state.allClusters); - const targetVersions = unplayedVersions.length > 0 ? unplayedVersions : allVersions; - const sourceClusters = state.allClusters.filter(cluster => !targetVersions.includes(cluster.mc_version)); - - return { - isOpen: true, - isDebugPreview: true, - newVersions: targetVersions, - sourceClusters: sourceClusters.length > 0 ? sourceClusters : state.allClusters, - }; - }), -})); - -export default useMigrationStore; diff --git a/apps/oneclient/frontend/src/styles/animations.css b/apps/oneclient/frontend/src/styles/animations.css deleted file mode 100644 index 4267444c..00000000 --- a/apps/oneclient/frontend/src/styles/animations.css +++ /dev/null @@ -1,15 +0,0 @@ -@layer utilities { - @keyframes custom-anim-zoom { - 0% { - transform: scale(0); - } - 100% { - transform: scale(1); - } - } -} - -@utility animate-zoom { - transform: scale(0); - animation: custom-anim-zoom var(--default-animation-duration, 1s) var(--default-animation-timing-function, cubic-bezier(0, 0, 0.2, 1)) var(--default-animation-delay, 0s) forwards; -} diff --git a/apps/oneclient/frontend/src/styles/global.css b/apps/oneclient/frontend/src/styles/global.css deleted file mode 100644 index a6721aa3..00000000 --- a/apps/oneclient/frontend/src/styles/global.css +++ /dev/null @@ -1,56 +0,0 @@ -@import "tailwindcss"; -@plugin "tailwindcss-react-aria-components"; -@plugin "tailwindcss-animated"; -@plugin "@tailwindcss/typography"; -@import "../../node_modules/@onelauncher/common/dist/theme.css"; -@import "./animations.css"; - -@utility partial-underline-* { - position: relative; - - &::after { - content: ""; - background: none repeat scroll 0 0 currentColor; - bottom: 1px; - display: block; - height: 3px; - position: absolute; - width: --spacing(--value(integer)); - width: --value(percentage, [percentage]); - border-radius: 10px; - } -} - -@utility partial-leftline-* { - position: relative; - - &::after { - content: ""; - background: currentColor; - position: absolute; - left: 0; - top: 0; - width: 3px; - height: --spacing(--value(integer)); - height: --value(percentage, [percentage]); - } -} - -@theme { - /** border */ - --color-component-border: #ffffff1A; - - /** rounding */ - --radius-sm: 0.25rem; - --radius-md: 0.438rem; - --radius-lg: 0.625rem; - --radius-xl: 1rem; - --radius-2xl: 1.5rem; - --radius-3xl: 2rem; -} - -.prose-invert { - --tw-prose-body: var(--color-fg-primary); - --tw-prose-headings: var(--color-fg-primary); - --tw-prose-bold: var(--color-fg-primary); -} diff --git a/apps/oneclient/frontend/src/types/global.d.ts b/apps/oneclient/frontend/src/types/global.d.ts deleted file mode 100644 index c054607a..00000000 --- a/apps/oneclient/frontend/src/types/global.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { LauncherError } from '@/bindings.gen'; -import type { bindings } from '@/main'; - -export type BindingCommands = (keyof typeof bindings)[keyof typeof bindings]; - -declare module '@onelauncher/common' { - interface Register { - commands: Array; - defaultError: LauncherError; - } -} diff --git a/apps/oneclient/frontend/src/utils/browser.ts b/apps/oneclient/frontend/src/utils/browser.ts deleted file mode 100644 index 0c222e48..00000000 --- a/apps/oneclient/frontend/src/utils/browser.ts +++ /dev/null @@ -1,117 +0,0 @@ -import type { PackageCategories } from '@/bindings.gen'; - -export const BROWSER_VIEWS: Array = ['grid', 'list'] as const; - -type Key = T extends Record ? K : never; - -const ModCategories = [ - 'Adventure', - 'Library', - 'Equipment', - 'Patches', - 'Cosmetic', - 'Food', - 'Magic', - 'Information', - 'Misc', - 'Performance', - 'Redstone', - 'ServerUtil', - 'Storage', - 'Technology', - 'Farming', - 'Automation', - 'Transport', - 'Utility', - 'QoL', - 'WorldGen', - 'Mobs', - 'Economy', - 'Social', -] as const; - -const ModpackCategories = [ - 'Technology', - 'Quests', - 'Optimization', - 'Multiplayer', - 'Magic', - 'LightWeight', - 'Combat', - 'Challenging', - 'Adventure', -] as const; - -const ResourcePackCategories = [ - 'X8', - 'X16', - 'X32', - 'X48', - 'X64', - 'X128', - 'X256', - 'X512', - 'VanillaLike', - 'Utility', - 'Tweaks', - 'Themed', - 'Simplistic', - 'Realistic', - 'Modded', - 'Decoration', - 'Cursed', - 'Combat', - 'Audio', - 'Blocks', - 'CoreShaders', - 'Gui', - 'Fonts', - 'Equipment', - 'Environment', - 'Entities', - 'Items', - 'Locale', - 'Models', -] as const; - -const ShaderCategories = [ - 'VanillaLike', - 'SemiRealistic', - 'Realistic', - 'Fantasy', - 'Cursed', - 'Cartoon', - 'Bloom', - 'Atmosphere', - 'Reflections', - 'Shadows', - 'PBR', - 'PathTracing', - 'Foliage', - 'ColoredLightning', - 'Potato', - 'Low', - 'Medium', - 'High', - 'Ultra', -] as const; - -export const browserCategories = { - Mod: ModCategories, - ResourcePack: ResourcePackCategories, - ModPack: ModpackCategories, - Shader: ShaderCategories, - DataPack: ModCategories, -} as const satisfies Record, ReadonlyArray>; - -type CategoryIdMap = { - [K in keyof typeof browserCategories as Lowercase]: K -}; - -export const categoryNameFromId: CategoryIdMap = { - mod: 'Mod', - resourcepack: 'ResourcePack', - modpack: 'ModPack', - shader: 'Shader', - datapack: 'DataPack', -}; diff --git a/apps/oneclient/frontend/src/utils/loaders.ts b/apps/oneclient/frontend/src/utils/loaders.ts deleted file mode 100644 index 27a433e7..00000000 --- a/apps/oneclient/frontend/src/utils/loaders.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { GameLoader } from '@/bindings.gen'; - -export function prettifyLoader(loader: GameLoader): string { - switch (loader) { - case 'fabric': - return 'Fabric'; - case 'forge': - return 'Forge'; - case 'neoforge': - return 'NeoForge'; - case 'quilt': - return 'Quilt'; - case 'vanilla': - return 'Vanilla'; - case 'legacyfabric': - return 'Legacy Fabric'; - } -} diff --git a/apps/oneclient/frontend/src/utils/minecraft.ts b/apps/oneclient/frontend/src/utils/minecraft.ts deleted file mode 100644 index 5fc6d7f7..00000000 --- a/apps/oneclient/frontend/src/utils/minecraft.ts +++ /dev/null @@ -1,5 +0,0 @@ -import SteveSkin from '@onelauncher/common/assets/skin/steve.png'; - -export function getSkinUrl(skinUrl: string | undefined | null) { - return skinUrl || SteveSkin; -} diff --git a/apps/oneclient/frontend/src/utils/motion.ts b/apps/oneclient/frontend/src/utils/motion.ts deleted file mode 100644 index f290de54..00000000 --- a/apps/oneclient/frontend/src/utils/motion.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { MotionProps } from 'motion/react'; - -export const transitions = { - spring: { - duration: 0.3, - bounce: 0.1, - power: 0.2, - type: 'spring', - }, -} as const satisfies Record; - -export const animations = { - slideInRight: { - initial: { - right: '-100%', - }, - animate: { - right: '0', - }, - transition: transitions.spring, - }, - - slideInLeft: { - initial: { - position: 'relative', - left: '-100%', - }, - animate: { - position: 'relative', - left: '0', - }, - }, - - slideInUp: { - initial: { - position: 'relative', - bottom: '-100%', - }, - animate: { - position: 'relative', - bottom: '0', - }, - }, - - fadeIn: { - initial: { - opacity: 0, - }, - animate: { - opacity: 1, - }, - }, -} as const satisfies Record; diff --git a/apps/oneclient/frontend/src/utils/onboardingFunFacts.ts b/apps/oneclient/frontend/src/utils/onboardingFunFacts.ts deleted file mode 100644 index aac381bf..00000000 --- a/apps/oneclient/frontend/src/utils/onboardingFunFacts.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { ONBOARDING_TIPS_BACKUP } from '@/constants/onboardingTipsBackup'; - -const FUN_FACTS_URL = 'https://raw.githubusercontent.com/Polyfrost/DataStorage/main/oneclient/funfacts.txt'; - -let cachedOnboardingTips: Array | null = null; -let onboardingTipsPromise: Promise> | null = null; - -function normalizeLineBreakMarkers(value: string): string { - return value - .replaceAll('/n', '\n') - .replaceAll('\\n', '\n'); -} - -function parseFunFacts(text: string): Array { - return text - .split(/\r?\n/) - .map(line => line.trim()) - .filter(Boolean) - .map(normalizeLineBreakMarkers); -} - -async function fetchOnboardingTips(): Promise> { - const response = await fetch(FUN_FACTS_URL, { cache: 'no-store' }); - if (!response.ok) - throw new Error(`Failed to fetch onboarding fun facts: ${response.status}`); - - const tips = parseFunFacts(await response.text()); - if (tips.length === 0) - throw new Error('Fetched onboarding fun facts were empty.'); - - return tips; -} - -export function getCachedOnboardingTips(): Array { - return (cachedOnboardingTips ?? ONBOARDING_TIPS_BACKUP).map(normalizeLineBreakMarkers); -} - -export async function loadOnboardingTips(): Promise> { - if (cachedOnboardingTips) - return cachedOnboardingTips; - - if (!onboardingTipsPromise) - onboardingTipsPromise = fetchOnboardingTips() - .then((tips) => { - cachedOnboardingTips = tips; - return tips; - }) - .finally(() => { - onboardingTipsPromise = null; - }); - - return onboardingTipsPromise; -} - -export async function preloadOnboardingTips(): Promise { - try { - await loadOnboardingTips(); - } - catch (error) { - console.warn('[onboarding] Failed to preload fun facts, using backup facts.', error); - } -} diff --git a/apps/oneclient/frontend/src/utils/string.ts b/apps/oneclient/frontend/src/utils/string.ts deleted file mode 100644 index 4d975ba5..00000000 --- a/apps/oneclient/frontend/src/utils/string.ts +++ /dev/null @@ -1,21 +0,0 @@ -// Credit - https://github.com/DuckySoLucky/hypixel-discord-chat-bridge/blob/d3ea84a26ebf094c8191d50b4954549e2dd4dc7f/src/contracts/helperFunctions.js#L216-L225 -export function ReplaceVariables(template: string, variables: Record) { - return template.replace(/\{(\w+)\}/g, (match: any, name: string | number) => variables[name] ?? match); -} - -// Credit - https://github.com/DuckySoLucky/hypixel-discord-chat-bridge/blob/52887f12fce3bc9ebe91befaf394f289abd234a1/src/contracts/helperFunctions.js#L260-L278 -export function TitleCase(str: string): string { - if (!str) - return ''; - - if (typeof str !== 'string') - return ''; - - return str - .toLowerCase() - .replaceAll('_', ' ') - .replaceAll('-', ' ') - .split(' ') - .map(word => word.charAt(0).toUpperCase() + word.slice(1)) - .join(' '); -} diff --git a/apps/oneclient/frontend/src/utils/theming.ts b/apps/oneclient/frontend/src/utils/theming.ts deleted file mode 100644 index 56a08beb..00000000 --- a/apps/oneclient/frontend/src/utils/theming.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const DEFAULT_THEME = 'OneLauncher-Dark'; -export const THEMES = { - OneLauncher: { - variants: [ - { - name: 'Dark', - type: 'dark', - }, - { - name: 'Light', - type: 'light', - }, - ], - }, -} as const satisfies Record; - -export interface Theme { - variants: Array; -} - -export type ThemeTypes = 'dark' | 'light'; - -export interface ThemeVariant { - type: ThemeTypes; - name: string; -}; diff --git a/apps/oneclient/frontend/src/utils/toast.ts b/apps/oneclient/frontend/src/utils/toast.ts deleted file mode 100644 index 3013bf5d..00000000 --- a/apps/oneclient/frontend/src/utils/toast.ts +++ /dev/null @@ -1,85 +0,0 @@ -import type { ToastPosition } from '@/bindings.gen'; -import type { UpdateOptions } from 'react-toastify'; -import { Toast } from '@/components/overlay'; -import { useSettings } from '@/hooks/useSettings'; -import { toast as toastify } from 'react-toastify'; - -export type ToastId = string | number; - -export interface ToastData { - type: 'info' | 'success' | 'warning' | 'error'; - title: string; - message?: string | undefined; - shouldAutoClose?: boolean | undefined; -} -export const ToastTypes: Array = ['info', 'success', 'warning', 'error']; - -export interface ToastOptions extends ToastData { - progress?: number; - isLoading?: boolean | undefined; - autoClose?: number | false | undefined; - position?: ToastPosition; -} -export const ToastPositions: Array> = ['top-right', 'top-left', 'bottom-right', 'bottom-left']; - -export function useToast() { - const { setting } = useSettings(); - - return function toast({ - progress, - isLoading, - autoClose, - position, - ...data - }: ToastOptions): ToastId { - if (position === undefined) - position = setting('toast_position'); - - if (autoClose === undefined) - autoClose = setting('toast_duration'); - - if (autoClose === false) - data.shouldAutoClose = false; - else - data.shouldAutoClose = setting('toast_auto_close'); - - return toastify(Toast, { - data, - progress, - isLoading, - autoClose, - closeOnClick: false, - closeButton: false, - hideProgressBar: true, - icon: false, - position, - }); - }; -} - -export function toastUpdate( - toastId: ToastId, - { - progress, - isLoading, - autoClose, - ...data - }: Partial, -) { - const objData: UpdateOptions> = { - progress, - isLoading, - }; - - for (const [key, value] of Object.entries(data)) { - if (value === undefined || value === null) - continue; - - if (!objData.data) - objData.data = {}; - - objData.data[key] = value; - } - - toastify.update(toastId, objData); -} diff --git a/apps/oneclient/frontend/src/utils/versionMap.ts b/apps/oneclient/frontend/src/utils/versionMap.ts deleted file mode 100644 index 497df0fc..00000000 --- a/apps/oneclient/frontend/src/utils/versionMap.ts +++ /dev/null @@ -1,152 +0,0 @@ -import type { OnlineCluster, OnlineClusterEntry, OnlineClusterManifest } from '@/bindings.gen'; -import type { GameBackgroundName } from '@/components'; - -export interface VersionInfo { - backgroundName: GameBackgroundName; - prettyName: string; - shortDescription: string; - longDescription: string; - tags: Array; -} - -const DEFAULT_VERSION_INFO: VersionInfo = { - backgroundName: 'MinecraftBuilding', - prettyName: '?', - shortDescription: 'Unknown Version', - longDescription: 'This version is not recognized or does not have specific information available.', - tags: [], -}; - -export function getVersionInfoFromCluster(cluster: OnlineCluster): VersionInfo { - const { major_version } = cluster; - return { - backgroundName: 'MinecraftBuilding', - prettyName: major_version >= 26 ? `${major_version}` : `1.${major_version}`, - shortDescription: cluster.name, - longDescription: cluster.long_description ?? '', - tags: cluster.tags, - }; -} - -export function getVersionInfo( - version: number | string | null | undefined, - manifest: OnlineClusterManifest, -): VersionInfo | undefined { - const cluster = getOnlineClusterForVersion(version, manifest); - if (!cluster) - return undefined; - return getVersionInfoFromCluster(cluster); -} - -export function getVersionInfoOrDefault( - version: number | string | null | undefined, - manifest: OnlineClusterManifest, -): VersionInfo { - return getVersionInfo(version, manifest) ?? DEFAULT_VERSION_INFO; -} - -export function getOnlineClusterForVersion( - version: number | string | null | undefined, - versions: OnlineClusterManifest, -): OnlineCluster | undefined { - let major: number | undefined; - if (typeof version === 'string') - major = parseMcVersion(version)?.major; - else if (typeof version === 'number') - major = version; - if (major === undefined) - return undefined; - return versions.clusters.find(c => c.major_version === major); -} - -export function getOnlineEntryForVersion( - version: string | null | undefined, - versions: OnlineClusterManifest, -): OnlineClusterEntry | undefined { - const parsed = parseMcVersion(version); - if (!parsed || parsed.minor === undefined) - return undefined; - const cluster = versions.clusters.find(c => c.major_version === parsed.major); - if (!cluster) - return undefined; - return cluster.entries.find(e => e.minor_version === parsed.minor); -} - -export interface ParsedMcVersion { - major: number; - minor: number | undefined; - /** - * Patch component of the new (year-based) scheme, e.g. the `2` in `26.1.2`. - * `undefined` for two-part new versions (`26.1`) and for all old `1.X.Y` versions - * (whose third component is the `minor`, not a patch). - */ - patch?: number | undefined; -} - -/** - * The major version at and above which Minecraft uses the new year-based scheme - * (`YY.N[.P]`, e.g. `26.1` / `26.1.2`). Below it, the legacy `1.X[.Y]` scheme is used. - * - * Kept as a single named constant so every formatter/parser agrees on the boundary — - * an inconsistent boundary is how malformed strings like `1.26` get produced. - */ -export const NEW_SCHEME_MAJOR = 26; - -function toNumberOrUndefined(value: string | undefined): number | undefined { - if (value === undefined) - return undefined; - const parsed = Number.parseInt(value, 10); - return Number.isNaN(parsed) ? undefined : parsed; -} - -export function parseMcVersion(version: string | null | undefined): ParsedMcVersion | undefined { - if (version === undefined || version === null) - return undefined; - - const parts = version.split('.'); - - // New format: YY.N[.P] (e.g. "26.1", "26.1.1", "26.1.2") — no "1." prefix. - if (parts[0] !== '1') { - if (parts.length < 2) - return undefined; - const major = toNumberOrUndefined(parts[0]); - if (major === undefined) - return undefined; - return { - major, - minor: toNumberOrUndefined(parts[1]), - // Preserve the patch component instead of silently dropping it, so a - // "26.1.2" cluster is parsed in full rather than collapsing to "26.1". - patch: toNumberOrUndefined(parts[2]), - }; - } - - // Old format: 1.X[.Y] (e.g. "1.21.5") - if (parts.length <= 1) - return undefined; - - const major = toNumberOrUndefined(parts[1]); - if (major === undefined) - return undefined; - - return { - major, - minor: toNumberOrUndefined(parts[2]), - patch: undefined, - }; -} - -/** - * Constructs a Minecraft version string from a major+minor[+patch] tuple. - * Versions from {@link NEW_SCHEME_MAJOR} onward use the new `YY.N[.P]` format; - * older versions use `1.X.Y`. - * - * The `major >= NEW_SCHEME_MAJOR` check MUST stay in sync with {@link parseMcVersion}'s - * `parts[0] !== '1'` rule: a `major` of 26 must never be formatted with a `1.` prefix - * (which would yield bogus strings like `1.26`). - */ -export function formatMcVersion(major: number, minor: number, patch?: number): string { - if (major >= NEW_SCHEME_MAJOR) - return patch === undefined ? `${major}.${minor}` : `${major}.${minor}.${patch}`; - return `1.${major}.${minor}`; -} diff --git a/apps/oneclient/frontend/src/utils/versionMap.verify.mts b/apps/oneclient/frontend/src/utils/versionMap.verify.mts deleted file mode 100644 index 93a0c27c..00000000 --- a/apps/oneclient/frontend/src/utils/versionMap.verify.mts +++ /dev/null @@ -1,53 +0,0 @@ -/* eslint-disable no-console, node/prefer-global/process -- standalone dev verification script, not app code */ -/** - * Standalone verification for {@link ./versionMap.ts} parsing/formatting. - * - * No test runner is wired into this app, so this is a runnable assertion script: - * npx tsx src/utils/versionMap.verify.mts - * - * Confirms (Bug 3): - * 1. OneClient parses the new year-based version "26.1.2" (and "26.1") correctly. - * 2. No code path emits the malformed "1.26" string for a 2026-era version. - */ -import { formatMcVersion, parseMcVersion } from './versionMap.ts'; - -let failures = 0; -function check(label: string, actual: unknown, expected: unknown): void { - const a = JSON.stringify(actual); - const e = JSON.stringify(expected); - if (a === e) { - console.log(` ok ${label}`); - } - else { - failures++; - console.error(` FAIL ${label}\n expected ${e}\n actual ${a}`); - } -} - -console.log('parseMcVersion:'); -check('26.1.2 -> full parse with patch', parseMcVersion('26.1.2'), { major: 26, minor: 1, patch: 2 }); -check('26.1 -> no patch', parseMcVersion('26.1'), { major: 26, minor: 1, patch: undefined }); -check('26.1.1 -> patch 1', parseMcVersion('26.1.1'), { major: 26, minor: 1, patch: 1 }); -check('1.21.5 -> old scheme', parseMcVersion('1.21.5'), { major: 21, minor: 5, patch: undefined }); -check('1.21.1 -> old scheme', parseMcVersion('1.21.1'), { major: 21, minor: 1, patch: undefined }); -check('null -> undefined', parseMcVersion(null), undefined); -check('"26" -> undefined (no minor)', parseMcVersion('26'), undefined); - -console.log('formatMcVersion:'); -check('(26,1,2) -> 26.1.2', formatMcVersion(26, 1, 2), '26.1.2'); -check('(26,1) -> 26.1', formatMcVersion(26, 1), '26.1'); -check('(21,5) -> 1.21.5', formatMcVersion(21, 5), '1.21.5'); - -console.log('round-trip (must never produce "1.26"):'); -for (const v of ['26.1', '26.1.2', '26.1.1']) { - const p = parseMcVersion(v)!; - const out = formatMcVersion(p.major, p.minor!, p.patch); - check(`${v} round-trips to ${out}`, out, v); - check(`${v} never yields a "1." prefix`, out.startsWith('1.'), false); -} - -if (failures > 0) { - console.error(`\n${failures} check(s) FAILED`); - process.exit(1); -} -console.log('\nAll version parsing checks passed.'); diff --git a/apps/oneclient/frontend/src/vite-env.d.ts b/apps/oneclient/frontend/src/vite-env.d.ts deleted file mode 100644 index ee9857a6..00000000 --- a/apps/oneclient/frontend/src/vite-env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/apps/oneclient/frontend/tsconfig.json b/apps/oneclient/frontend/tsconfig.json deleted file mode 100644 index bb407a80..00000000 --- a/apps/oneclient/frontend/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - - "compilerOptions": { - "target": "ES2022", - "jsx": "react-jsx", - "lib": ["ES2022", "DOM", "DOM.Iterable"], - "baseUrl": ".", - "module": "ESNext", - - /* Bundler mode */ - "moduleResolution": "bundler", - "paths": { - "@/*": ["./src/*"] - }, - "types": ["vite/client"], - "allowImportingTsExtensions": true, - "strict": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noEmit": true, - "verbatimModuleSyntax": true, - - /* Linting */ - "skipLibCheck": true, - "noUncheckedSideEffectImports": true - }, - "include": ["**/*.ts", "**/*.tsx", "vite.config.ts", "../../../packages/web_common/src/utils/error.ts", "src/components/AccountAvatar.tsx"] -} diff --git a/apps/oneclient/frontend/vite.config.ts b/apps/oneclient/frontend/vite.config.ts deleted file mode 100644 index 00c299d6..00000000 --- a/apps/oneclient/frontend/vite.config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { resolve } from 'node:path'; - -import process from 'node:process'; -import tailwindcss from '@tailwindcss/vite'; - -import { TanStackRouterVite } from '@tanstack/router-plugin/vite'; -import viteReact from '@vitejs/plugin-react'; -import { defineConfig } from 'vite'; -import svgr from 'vite-plugin-svgr'; - -export default defineConfig({ - plugins: [ - svgr(), - TanStackRouterVite({ autoCodeSplitting: true }), - viteReact(), - tailwindcss(), - ], - clearScreen: false, - server: { - port: 8001, - strictPort: true, - }, - resolve: { - alias: { - '@': resolve(__dirname, './src'), - }, - }, - envPrefix: ['VITE_', 'TAURI_ENV_'], - build: { - target: process.env.TAURI_ENV_PLATFORM === 'windows' ? 'chrome105' : 'safari13', - minify: !process.env.TAURI_ENV_DEBUG ? 'esbuild' : false, - sourcemap: !!process.env.TAURI_ENV_DEBUG, - }, -}); diff --git a/apps/onelauncher/desktop/.gitignore b/apps/onelauncher/desktop/.gitignore deleted file mode 100644 index 787194aa..00000000 --- a/apps/onelauncher/desktop/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Generated by Tauri -.cargo/ -/gen diff --git a/apps/onelauncher/desktop/App.entitlements b/apps/onelauncher/desktop/App.entitlements deleted file mode 100644 index 48f4264c..00000000 --- a/apps/onelauncher/desktop/App.entitlements +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - com.apple.security.cs.disable-library-validation - - - com.apple.security.cs.allow-dyld-environment-variables - - - com.apple.security.device.audio-input - - - com.apple.security.device.camera - - - diff --git a/apps/onelauncher/desktop/Cargo.toml b/apps/onelauncher/desktop/Cargo.toml deleted file mode 100644 index 5e3f9265..00000000 --- a/apps/onelauncher/desktop/Cargo.toml +++ /dev/null @@ -1,92 +0,0 @@ -[package] -name = "onelauncher_gui" -default-run = "onelauncher_gui" -description = "Next-generation open source Minecraft launcher" -version = { workspace = true } -license = { workspace = true } -edition = { workspace = true } -repository = { workspace = true } -documentation = { workspace = true } -readme = { workspace = true } -homepage = { workspace = true } -authors = { workspace = true } - -[lib] -name = "onelauncher_gui" -crate-type = [ - "staticlib", - "cdylib", - "lib" -] - -[lints] -workspace = true - -[build-dependencies] -tauri-build = { workspace = true } - -[dependencies] -# core -onelauncher_core = { workspace = true, features = [ "tauri" ] } -interfrost = { workspace = true } - -# tauri -tauri-plugin-window-state = { workspace = true } -tauri-plugin-single-instance = { workspace = true } -tauri-plugin-updater = { workspace = true } -tauri-plugin-clipboard-manager = { workspace = true } -tauri-plugin-dialog = { workspace = true } -tauri-plugin-deep-link = { workspace = true } -tauri-plugin-opener = { workspace = true } -tauri-plugin-os = { workspace = true } - -# code gen -taurpc = { workspace = true } -specta = { workspace = true } -specta-typescript = { workspace = true } -strum = { workspace = true } - -# logging -tracing = { workspace = true } -tracing-error = { workspace = true } - -# serialization & text -serde = { workspace = true } -serde_json = { workspace = true } -chrono = { workspace = true } -uuid = { workspace = true } - -# io -tokio = { workspace = true } - -# utils -thiserror = { workspace = true } -anyhow = { workspace = true } - -[dependencies.tauri] -workspace = true -features = [ - "macos-private-api", - "image-ico", - "image-png", - "protocol-asset", - "specta" -] - -[features] -default = [ - "custom-protocol", - "devtools" -] -devtools = [ "tauri/devtools" ] -custom-protocol = [ "tauri/custom-protocol" ] - -[target.'cfg(target_os = "macos")'.dependencies] -objc2 = "0.6.3" -objc2-app-kit = { version = "0.3.2", features = [ - "NSWindow", - "NSButton", - "NSControl", - "NSView" -] } -objc2-foundation = { version = "0.3.2", features = [ "NSObject" ] } diff --git a/apps/onelauncher/desktop/Info.plist b/apps/onelauncher/desktop/Info.plist deleted file mode 100644 index a2f70cdb..00000000 --- a/apps/onelauncher/desktop/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - CFBundleURLTypes - - - CFBundleURLName - OneLauncher - CFBundleURLSchemes - - onelauncher - - - - - NSCameraUsageDescription - A Minecraft mod is requesting access to your camera. - - NSMicrophoneUsageDescription - A Minecraft mod is requesting access to your microphone. - - diff --git a/apps/onelauncher/desktop/build.rs b/apps/onelauncher/desktop/build.rs deleted file mode 100644 index 106b7123..00000000 --- a/apps/onelauncher/desktop/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build(); -} diff --git a/apps/onelauncher/desktop/capabilities/default.json b/apps/onelauncher/desktop/capabilities/default.json deleted file mode 100644 index 232bc50b..00000000 --- a/apps/onelauncher/desktop/capabilities/default.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "capabilities for the main window", - "windows": [ - "*" - ], - "permissions": [ - "core:app:default", - "core:webview:default", - "core:image:default", - "core:menu:default", - "core:path:default", - "core:resources:default", - "core:tray:default", - "core:window:default", - "core:window:allow-close", - "core:window:allow-create", - "core:window:allow-destroy", - "core:window:allow-start-dragging", - "core:window:allow-minimize", - "core:window:allow-maximize", - "core:window:allow-toggle-maximize", - "core:window:allow-internal-toggle-maximize", - "core:window:allow-set-decorations", - "core:window:allow-set-title-bar-style", - "core:webview:allow-internal-toggle-devtools", - "core:event:default", - "clipboard-manager:allow-write-text", - "dialog:allow-open", - "dialog:allow-save", - "dialog:allow-confirm", - "deep-link:default", - "updater:default", - { - "identifier": "opener:allow-open-path", - "allow": [ - { - "path": "$DATA/OneLauncher/**" - }, - { - "path": "$DATA/OneLauncher" - } - ] - }, - "opener:allow-open-url", - "opener:default", - - "os:allow-arch", - "os:deny-exe-extension", - "os:allow-family", - "os:deny-hostname", - "os:allow-locale", - "os:allow-os-type", - "os:allow-platform", - "os:allow-version" - ] -} diff --git a/apps/onelauncher/desktop/package.json b/apps/onelauncher/desktop/package.json deleted file mode 100644 index f0c2bb2b..00000000 --- a/apps/onelauncher/desktop/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@onelauncher/desktop", - "type": "module", - "version": "1.1.7", - "private": true, - "description": "Next-generation open source Minecraft launcher", - "license": "GPL-3.0-only", - "repository": { - "type": "git", - "url": "git@github.com:polyfrost/onelauncher", - "directory": "apps/desktop" - }, - "bugs": "https://github.com/polyfrost/onelauncher/issues", - "sideEffects": false, - "scripts": { - "build": "tauri build", - "dev": "tauri dev", - "tauri": "tauri", - "tauri-ext": "pnpm --filter @onelauncher/scripts -- tauri" - }, - "dependencies": { - "@onelauncher/frontend": "workspace:*" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.0.4" - } -} diff --git a/apps/onelauncher/desktop/src/api/commands.rs b/apps/onelauncher/desktop/src/api/commands.rs deleted file mode 100644 index 0b73e846..00000000 --- a/apps/onelauncher/desktop/src/api/commands.rs +++ /dev/null @@ -1,38 +0,0 @@ -use onelauncher_core::error::{DaoError, LauncherResult}; -use tauri::Runtime; - -#[taurpc::procedures(path = "onelauncher", export_to = "../frontend/src/bindings.gen.ts")] -pub trait OneLauncherApi { - async fn return_error() -> LauncherResult<()>; - - async fn open_dev_tools(webview_window: tauri::WebviewWindow); - - async fn set_window_style( - webview_window: tauri::WebviewWindow, - decorations: bool, - ); -} - -#[taurpc::ipc_type] -pub struct OneLauncherApiImpl; - -#[taurpc::resolvers] -impl OneLauncherApi for OneLauncherApiImpl { - async fn return_error(self) -> LauncherResult<()> { - let err = DaoError::NotFound.into(); - Err(err) - } - - async fn open_dev_tools(self, webview_window: tauri::WebviewWindow) { - #[cfg(feature = "devtools")] - webview_window.open_devtools(); - } - - async fn set_window_style( - self, - webview_window: tauri::WebviewWindow, - decorations: bool, - ) { - webview_window.set_decorations(decorations).ok(); - } -} diff --git a/apps/onelauncher/desktop/src/api/mod.rs b/apps/onelauncher/desktop/src/api/mod.rs deleted file mode 100644 index 5bfa754f..00000000 --- a/apps/onelauncher/desktop/src/api/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod commands; -pub mod statics; diff --git a/apps/onelauncher/desktop/src/api/statics.rs b/apps/onelauncher/desktop/src/api/statics.rs deleted file mode 100644 index ea54474d..00000000 --- a/apps/onelauncher/desktop/src/api/statics.rs +++ /dev/null @@ -1,26 +0,0 @@ -use onelauncher_core::constants::{NATIVE_ARCH, TARGET_OS}; -use onelauncher_core::store::Core; -use serde::Serialize; -use specta::Type; - -#[derive(Serialize, Type)] -pub struct ProgramInfo { - launcher_version: String, - webview_version: String, - tauri_version: String, - dev_build: bool, - platform: String, - arch: String, -} - -#[must_use] -pub fn get_program_info() -> ProgramInfo { - ProgramInfo { - launcher_version: Core::get().launcher_version.clone(), - webview_version: tauri::webview_version().unwrap_or_else(|_| "UNKNOWN".into()), - tauri_version: tauri::VERSION.into(), - dev_build: tauri::is_dev(), - platform: TARGET_OS.into(), - arch: NATIVE_ARCH.into(), - } -} diff --git a/apps/onelauncher/desktop/src/constants.rs b/apps/onelauncher/desktop/src/constants.rs deleted file mode 100644 index 6ccdf0c6..00000000 --- a/apps/onelauncher/desktop/src/constants.rs +++ /dev/null @@ -1,3 +0,0 @@ -// === API === -pub const CURSEFORGE_API_KEY: &str = "$2a$10$6utA1UNSmFPrE/Lh7b7ndeeGmiOkjKNY8kpFB0fsmE/d42ZAfFgCe"; -pub const DISCORD_CLIENT_ID: &str = "1274084193193955408"; diff --git a/apps/onelauncher/desktop/src/error.rs b/apps/onelauncher/desktop/src/error.rs deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/onelauncher/desktop/src/ext/mod.rs b/apps/onelauncher/desktop/src/ext/mod.rs deleted file mode 100644 index 864c0b2a..00000000 --- a/apps/onelauncher/desktop/src/ext/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod specta; -pub mod updater; diff --git a/apps/onelauncher/desktop/src/ext/specta.rs b/apps/onelauncher/desktop/src/ext/specta.rs deleted file mode 100644 index 624414b6..00000000 --- a/apps/onelauncher/desktop/src/ext/specta.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::io; -use std::path::Path; -use std::process::Command; - -pub fn formatter(file: &Path) -> io::Result<()> { - let result = Command::new("pnpm") - .arg("eslint") - .arg("--flag") - .arg("unstable_ts_config") - .arg("--fix") - .arg(file) - .output(); - - match result { - Ok(_) => Ok(()), - Err(e) => { - eprintln!("error running formatter on {}: {}", file.display(), e); - Ok(()) - } - } -} - -const _: specta_typescript::FormatterFn = formatter; diff --git a/apps/onelauncher/desktop/src/ext/updater.rs b/apps/onelauncher/desktop/src/ext/updater.rs deleted file mode 100644 index 22ec0b57..00000000 --- a/apps/onelauncher/desktop/src/ext/updater.rs +++ /dev/null @@ -1,117 +0,0 @@ -// use onelauncher_core::store::Core; -// use tauri::plugin::TauriPlugin; -// use tauri::{Emitter, Runtime}; -// use tauri_plugin_updater::{Update as TauriPluginUpdate, UpdaterExt}; -// use tokio::sync::Mutex; - -// #[derive(Debug, Clone, specta::Type, serde::Serialize)] -// pub struct Update { -// pub version: String, -// } - -// impl Update { -// fn new(update: &TauriPluginUpdate) -> Self { -// Self { -// version: update.version.clone(), -// } -// } -// } - -// #[derive(Default)] -// pub struct State { -// install_lock: Mutex<()>, -// } - -// async fn get_update(app: tauri::AppHandle) -> Result, String> { -// app.updater_builder() -// .header("X-OneLauncher-Version", "stable") -// .map_err(|e| e.to_string())? -// .build() -// .map_err(|e| e.to_string())? -// .check() -// .await -// .map_err(|e| e.to_string()) -// } - -// #[derive(Debug, Clone, serde::Serialize, specta::Type, tauri_specta::Event)] -// #[serde(rename_all = "camelCase", tag = "status")] -// pub enum UpdateEvent { -// Loading, -// Error(String), -// UpdateAvailable { update: Update }, -// NoUpdateAvailable, -// Installing, -// } - -// #[tauri::command] -// #[specta::specta] -// pub async fn check_for_update(app: tauri::AppHandle) -> Result, String> { -// app.emit("updater", UpdateEvent::Loading).ok(); - -// let update = match get_update(app.clone()).await { -// Ok(update) => update, -// Err(e) => { -// app.emit("updater", UpdateEvent::Error(e.clone())).ok(); -// return Err(e); -// } -// }; - -// let update = update.map(|u| Update::new(&u)); - -// app.emit( -// "updater", -// update.clone().map_or(UpdateEvent::NoUpdateAvailable, |u| { -// UpdateEvent::UpdateAvailable { update: u } -// }), -// ) -// .ok(); - -// Ok(update) -// } - -// #[tauri::command] -// #[specta::specta] -// pub async fn install_update( -// app: tauri::AppHandle, -// state: tauri::State<'_, State>, -// ) -> Result<(), String> { -// let Ok(lock) = state.install_lock.try_lock() else { -// return Err("Update already installing".into()); -// }; - -// app.emit("updater", UpdateEvent::Installing).ok(); - -// get_update(app.clone()) -// .await? -// .ok_or_else(|| "No update required".to_string())? -// .download_and_install(|_, _| {}, || {}) -// .await -// .map_err(|e| e.to_string())?; - -// drop(lock); - -// Ok(()) -// } - -// #[must_use] -// pub fn plugin() -> TauriPlugin { -// tauri::plugin::Builder::new("onelauncher-updater") -// .on_page_load(|window, _| { -// #[cfg(target_os = "linux")] -// let updater_available = false; - -// #[cfg(not(target_os = "linux"))] -// let updater_available = true; - -// if updater_available { -// window -// .eval("window.__LAUNCHER_UPDATER__ = true;") -// .expect("Failed to inject updater JS"); -// } -// }) -// .js_init_script(format!( -// r#"window.__ONELAUNCHER_VERSION__ = "{}";"#, -// Core::get().launcher_version, -// )) -// .build() -// } diff --git a/apps/onelauncher/desktop/src/lib.rs b/apps/onelauncher/desktop/src/lib.rs deleted file mode 100644 index f0f4703b..00000000 --- a/apps/onelauncher/desktop/src/lib.rs +++ /dev/null @@ -1,185 +0,0 @@ -use onelauncher_core::api::proxy::ProxyTauri; -use onelauncher_core::api::tauri::{TauriLauncherApi, TauriLauncherEventApi}; -use onelauncher_core::error::LauncherResult; -use onelauncher_core::store::proxy::ProxyState; -use onelauncher_core::store::semaphore::SemaphoreStore; -use onelauncher_core::store::{Core, CoreOptions, Dirs, State}; -use tauri::{Emitter, Manager}; - -use crate::api::commands::OneLauncherApi; - -pub mod api; -pub mod constants; -pub mod ext; - -#[derive(Clone, serde::Serialize)] -pub struct SingleInstancePayload { - args: Vec, - cwd: String, -} - -#[tracing::instrument] -async fn initialize_core() -> LauncherResult<()> { - let level = if cfg!(debug_assertions) { - tracing::Level::DEBUG - } else { - tracing::Level::INFO - }; - - let opts = CoreOptions { - curseforge_api_key: Some(constants::CURSEFORGE_API_KEY.to_string()), - launcher_name: "OneLauncher".to_string(), - launcher_version: env!("CARGO_PKG_VERSION").to_string(), - launcher_website: "https://polyfrost.org/".to_string(), - discord_client_id: Some(constants::DISCORD_CLIENT_ID.to_string()), - fetch_attempts: 3, - logger_filter: Some(format!( - "{}={level},onelauncher_core={level}", - env!("CARGO_PKG_NAME") - )), - ..Default::default() - }; - - Core::initialize(opts).await?; - Dirs::get().await?; - onelauncher_core::start_logger().await; - SemaphoreStore::get().await; - tracing::info!("initialized core modules"); - - Ok(()) -} - -#[tracing::instrument(skip_all)] -#[allow(clippy::large_stack_frames)] -async fn initialize_tauri(builder: tauri::Builder) -> LauncherResult { - let router = taurpc::Router::new() - .export_config( - specta_typescript::Typescript::default() - .bigint(specta_typescript::BigIntExportBehavior::BigInt) - .formatter(ext::specta::formatter) - .header("// @ts-nocheck \n"), - ) - .merge(api::commands::OneLauncherApiImpl.into_handler()) - .merge(onelauncher_core::api::tauri::TauriLauncherApiImpl.into_handler()) - .merge(onelauncher_core::api::tauri::TauriLauncherEventApiImpl.into_handler()); - - let launcher_path = Dirs::get().await?.base_dir(); - let builder = builder - .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { - println!("{}, {argv:?}, {cwd}", app.package_info().name); - app.emit("single-instance", SingleInstancePayload { args: argv, cwd }) - .unwrap(); - })) - // .plugin(tauri_plugin_updater::Builder::new().build()) - .plugin(tauri_plugin_clipboard_manager::init()) - .plugin(tauri_plugin_dialog::init()) - .plugin(tauri_plugin_deep_link::init()) - .plugin(tauri_plugin_opener::init()); - - #[cfg(not(target_os = "linux"))] - let builder = builder.menu(tauri::menu::Menu::default); - - let builder = builder - .invoke_handler(router.into_handler()) - .setup(move |app| { - app.asset_protocol_scope() - .allow_directory(launcher_path, true) - .unwrap(); - - setup_window(app.handle()).expect("failed to setup main window"); - Ok(()) - }); - - let app = builder - .build(tauri::generate_context!()) - .expect("failed to build tauri application"); - - Ok(app) -} - -#[tracing::instrument(skip_all)] -async fn initialize_state(handle: &tauri::AppHandle) -> LauncherResult<()> { - let proxy = ProxyTauri::new(handle.clone()); - ProxyState::initialize(proxy).await?; - - State::get().await?; - - onelauncher_core::api::credentials::refresh_accounts().await?; - - tracing::info!("initialized launcher successfully"); - Ok(()) -} - -pub async fn run() { - initialize_core().await.expect("failed to initialize core"); - - let app = initialize_tauri(tauri::Builder::default()) - .await - .expect("failed to initialize tauri"); - - initialize_state(app.handle()) - .await - .expect("failed to initialize state"); - - app.run(|_, _| {}); -} - -fn setup_window(handle: &tauri::AppHandle) -> Result<(), Box> { - let win = handle - .get_webview_window("main") - .ok_or_else(|| anyhow::anyhow!("no window called main was found"))?; - - // Initialize window decorations based on settings - let win_clone = win; - #[allow(unused_variables)] - let app_handle = handle.clone(); - tokio::task::spawn(async move { - if let Ok(state) = State::get().await { - #[allow(unused_variables)] - let settings = state.settings.read().await; - // native_window_frame=true means use native decorations - // native_window_frame=false means use custom frame (no decorations) - #[cfg(target_os = "macos")] - { - win_clone.set_decorations(true).ok(); - let win_weak = win_clone.clone(); - app_handle - .run_on_main_thread(move || { - #[cfg(target_os = "macos")] - { - use objc2_app_kit::{NSWindow, NSWindowButton}; - - if let Ok(ns_window_ptr) = win_weak.ns_window() { - let ns_window = ns_window_ptr.cast::(); - unsafe { - let ns_window = &*ns_window; - if let Some(btn) = - ns_window.standardWindowButton(NSWindowButton::CloseButton) - { - btn.setHidden(true); - } - if let Some(btn) = ns_window - .standardWindowButton(NSWindowButton::MiniaturizeButton) - { - btn.setHidden(true); - } - if let Some(btn) = - ns_window.standardWindowButton(NSWindowButton::ZoomButton) - { - btn.setHidden(true); - } - } - } - } - }) - .ok(); - } - - #[cfg(not(target_os = "macos"))] - win_clone.set_decorations(settings.native_window_frame).ok(); - } - win_clone.show().ok(); - }); - - Ok(()) -} diff --git a/apps/onelauncher/desktop/src/main.rs b/apps/onelauncher/desktop/src/main.rs deleted file mode 100644 index 9b80960f..00000000 --- a/apps/onelauncher/desktop/src/main.rs +++ /dev/null @@ -1,7 +0,0 @@ -// Prevents additional console window on Windows in release, DO NOT REMOVE!! -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -#[tokio::main] -async fn main() { - onelauncher_gui::run().await; -} diff --git a/apps/onelauncher/desktop/tauri.conf.json b/apps/onelauncher/desktop/tauri.conf.json deleted file mode 100644 index fe9e7c86..00000000 --- a/apps/onelauncher/desktop/tauri.conf.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/tauri-apps/tauri/dev/crates/tauri-cli/schema.json", - "productName": "OneLauncher", - "identifier": "org.polyfrost.launcher", - "app": { - "withGlobalTauri": true, - "macOSPrivateApi": true, - "security": { - "csp": null, - "assetProtocol": { - "enable": true, - "scope": { - "allow": [ - "$DATA/OneLauncher/**", - "$RESOURCE/**" - ] - } - }, - "capabilities": [] - }, - "windows": [ - { - "title": "OneLauncher", - "titleBarStyle": "Overlay", - "hiddenTitle": true, - "width": 1280, - "height": 802, - "minWidth": 1020, - "minHeight": 600, - "resizable": true, - "center": true, - "decorations": false, - "fullscreen": false, - "shadow": true, - "visible": false - } - ] - }, - "build": { - "beforeDevCommand": "pnpm --filter @onelauncher/frontend run dev", - "beforeBuildCommand": "pnpm --filter @onelauncher/frontend run build", - "frontendDist": "../frontend/dist", - "devUrl": "http://localhost:8001" - }, - "bundle": { - "active": true, - "createUpdaterArtifacts": false, - "targets": [ - "app", - "dmg", - "deb", - "rpm", - "appimage", - "nsis" - ], - "category": "Game", - "icon": [ - "../distribution/icons/32x32.png", - "../distribution/icons/128x128.png", - "../distribution/icons/128x128@2x.png", - "../distribution/icons/icon.icns", - "../distribution/icons/icon.ico" - ], - "copyright": "© 2026 Polyfrost Inc.", - "publisher": "Polyfrost", - "license": "GPL-3.0-only", - "homepage": "https://polyfrost.org/", - "longDescription": "Next-generation open source Minecraft launcher", - "resources": [], - "externalBin": [], - "linux": { - "deb": { - "depends": [], - "desktopTemplate": "../distribution/linux/org.polyfrost.launcher.desktop.template" - }, - "rpm": { - "desktopTemplate": "../distribution/linux/org.polyfrost.launcher.desktop.template" - }, - "appimage": { - - } - }, - "shortDescription": "OneLauncher", - "macOS": { - "entitlements": "App.entitlements", - "exceptionDomain": null, - "frameworks": [], - "dmg": { - "appPosition": { - "x": 190, - "y": 190 - }, - "applicationFolderPosition": { - "x": 470, - "y": 190 - } - }, - "providerShortName": null, - "signingIdentity": null, - "minimumSystemVersion": "10.15" - }, - "windows": { - "certificateThumbprint": null, - "webviewInstallMode": { - "silent": true, - "type": "downloadBootstrapper" - }, - "digestAlgorithm": "sha256", - "timestampUrl": "https://timestamp.digicert.com" - } - }, - "plugins": { - "updater": { - "active": false, - "endpoints": ["https://polyfrost.org/releases/tauri/{{current_version}}/{{target}}/{{arch}}"] - }, - "deep-link": { - "mobile": [], - "desktop": { - "schemes": ["onelauncher"] - } - } - } -} diff --git a/apps/onelauncher/distribution/aur/bin/PKGBUILD b/apps/onelauncher/distribution/aur/bin/PKGBUILD deleted file mode 100644 index b7088bdf..00000000 --- a/apps/onelauncher/distribution/aur/bin/PKGBUILD +++ /dev/null @@ -1,28 +0,0 @@ -pkgname=onelauncher-bin -pkgver=1.0.3 -pkgrel=1 -pkgdesc='Next-generation open source Minecraft launcher' -url='https://polyfrost.org/projects/onelauncher' -arch=('x86_64') -license=('GPL-3.0-only') - -depends=( - 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -optdepends=( - 'xorg-xrandr: very legacy minecraft versions' -) -provides=('onelauncher') -conflicts=('onelauncher') -source=("https://github.com/Polyfrost/OneLauncher/releases/download/onelauncher-${pkgver}/onelauncher_${pkgver}_amd64.deb") -sha256sums=('SKIP') - -build() { - cd "$srcdir/" - tar xf data.tar.gz -} - -package() { - cp -r "${srcdir}/usr/" "${pkgdir}" -} diff --git a/apps/onelauncher/distribution/aur/source/PKGBUILD b/apps/onelauncher/distribution/aur/source/PKGBUILD deleted file mode 100644 index bfd3ca23..00000000 --- a/apps/onelauncher/distribution/aur/source/PKGBUILD +++ /dev/null @@ -1,49 +0,0 @@ -pkgname=onelauncher -pkgver=1.0.3 -pkgrel=1 -pkgdesc='Next-generation open source Minecraft launcher' -url='https://polyfrost.org/projects/onelauncher' -arch=('x86_64') -license=('GPL-3.0-only') - -makedepends=('rust' 'pnpm' 'nodejs' 'clang' 'nasm' 'perl') -depends=( - 'openssl' 'dbus' 'gtk3' 'libayatana-appindicator' 'librsvg' 'webkit2gtk-4.1' - 'libgl' 'libpulse' 'libx11' 'libxcursor' 'libxext' 'libxxf86vm' -) -optdepends=( - 'xorg-xrandr: very legacy minecraft versions' -) -conflicts=('onelauncher-bin') -source=("$pkgname-$pkgver.tar.gz::https://github.com/Polyfrost/OneLauncher/archive/refs/tags/onelauncher-${pkgver}.tar.gz") -sha256sums=('SKIP') -options=('!lto') - -prepare() { - cd "OneLauncher-onelauncher-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo fetch --locked --target "$CARCH-unknown-linux-gnu" - pnpm install --frozen-lockfile - pnpm prep -} - -build() { - cd "OneLauncher-onelauncher-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - pnpm --filter @onelauncher/frontend build - cargo build --frozen --release -p onelauncher_gui -} - -check() { - cd "OneLauncher-onelauncher-${pkgver}" - export RUSTUP_TOOLCHAIN=stable - cargo test --frozen -p onelauncher_gui -} - -package() { - cd "OneLauncher-onelauncher-${pkgver}" - install -Dm755 "target/release/onelauncher_gui" "$pkgdir/usr/bin/onelauncher" - install -Dm644 "apps/onelauncher/distribution/icons/128x128.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/org.polyfrost.launcher.png" - install -Dm644 "apps/onelauncher/distribution/icons/512x512.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/org.polyfrost.launcher.png" - install -Dm644 "apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.desktop" "$pkgdir/usr/share/applications/org.polyfrost.launcher.desktop" -} diff --git a/apps/onelauncher/distribution/brew/onelauncher.rb b/apps/onelauncher/distribution/brew/onelauncher.rb deleted file mode 100644 index f0d995a2..00000000 --- a/apps/onelauncher/distribution/brew/onelauncher.rb +++ /dev/null @@ -1,28 +0,0 @@ -cask "onelauncher" do - version "0.1.0" - sha256 "" - - url "https://launcher.polyfrost.org/versions/#{version}/macos/OneLauncher_#{version}_universal.dmg" - name "OneLauncher" - desc "Next-generation open source Minecraft launcher" - homepage "https://polyfrost.org" - - livecheck do - url "https://polyfrost.org/launcher" - regex("/OneLauncher[._-]v(\d+(?:\.\d+)+)[._-]universal\.dmg/i") - end - - auto_updated true - depends_on macos: ">= :high_sierra" - - app "OneLauncher.app" - - uninstall quit: "OneLauncher" - - zap trash: [ - "~/Library/Application Support/OneLauncher", - "~/Library/Caches/OneLauncher", - "~/Library/Saved Application State/OneLauncher.savedState", - "~/Library/WebKit/OneLauncher", - ] -end diff --git a/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.desktop b/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.desktop deleted file mode 100644 index ce1428e7..00000000 --- a/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=OneLauncher -Comment=Next-generation open source Minecraft launcher -Exec=onelauncher -Icon=org.polyfrost.launcher -Type=Application -Terminal=false -StartupNotify=true -Categories=Game; -Keywords=game;launcher;mc;minecraft; -StartupWMClass=OneLauncher -Version=1.4 diff --git a/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.metainfo.xml b/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.metainfo.xml deleted file mode 100644 index 0483218d..00000000 --- a/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.metainfo.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.yml b/apps/onelauncher/distribution/flatpak/org.polyfrost.launcher.yml deleted file mode 100644 index e69de29b..00000000 diff --git a/apps/onelauncher/distribution/icons/128x128.png b/apps/onelauncher/distribution/icons/128x128.png deleted file mode 100644 index da7f6efb..00000000 Binary files a/apps/onelauncher/distribution/icons/128x128.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/128x128@2x.png b/apps/onelauncher/distribution/icons/128x128@2x.png deleted file mode 100644 index 928b5db3..00000000 Binary files a/apps/onelauncher/distribution/icons/128x128@2x.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/32x32.png b/apps/onelauncher/distribution/icons/32x32.png deleted file mode 100644 index 8f359046..00000000 Binary files a/apps/onelauncher/distribution/icons/32x32.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/512x512.png b/apps/onelauncher/distribution/icons/512x512.png deleted file mode 100644 index bac8bde3..00000000 Binary files a/apps/onelauncher/distribution/icons/512x512.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square107x107Logo.png b/apps/onelauncher/distribution/icons/Square107x107Logo.png deleted file mode 100644 index 1c59cf41..00000000 Binary files a/apps/onelauncher/distribution/icons/Square107x107Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square142x142Logo.png b/apps/onelauncher/distribution/icons/Square142x142Logo.png deleted file mode 100644 index baec0a83..00000000 Binary files a/apps/onelauncher/distribution/icons/Square142x142Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square150x150Logo.png b/apps/onelauncher/distribution/icons/Square150x150Logo.png deleted file mode 100644 index 94bcd0ba..00000000 Binary files a/apps/onelauncher/distribution/icons/Square150x150Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square284x284Logo.png b/apps/onelauncher/distribution/icons/Square284x284Logo.png deleted file mode 100644 index 84e5d051..00000000 Binary files a/apps/onelauncher/distribution/icons/Square284x284Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square30x30Logo.png b/apps/onelauncher/distribution/icons/Square30x30Logo.png deleted file mode 100644 index 9d48b6b7..00000000 Binary files a/apps/onelauncher/distribution/icons/Square30x30Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square310x310Logo.png b/apps/onelauncher/distribution/icons/Square310x310Logo.png deleted file mode 100644 index e0f40fc8..00000000 Binary files a/apps/onelauncher/distribution/icons/Square310x310Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square44x44Logo.png b/apps/onelauncher/distribution/icons/Square44x44Logo.png deleted file mode 100644 index 7ee77886..00000000 Binary files a/apps/onelauncher/distribution/icons/Square44x44Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square71x71Logo.png b/apps/onelauncher/distribution/icons/Square71x71Logo.png deleted file mode 100644 index b3bf70e8..00000000 Binary files a/apps/onelauncher/distribution/icons/Square71x71Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/Square89x89Logo.png b/apps/onelauncher/distribution/icons/Square89x89Logo.png deleted file mode 100644 index 0552a2c8..00000000 Binary files a/apps/onelauncher/distribution/icons/Square89x89Logo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/StoreLogo.png b/apps/onelauncher/distribution/icons/StoreLogo.png deleted file mode 100644 index b863a641..00000000 Binary files a/apps/onelauncher/distribution/icons/StoreLogo.png and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/icon.icns b/apps/onelauncher/distribution/icons/icon.icns deleted file mode 100644 index 74c6b99a..00000000 Binary files a/apps/onelauncher/distribution/icons/icon.icns and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/icon.ico b/apps/onelauncher/distribution/icons/icon.ico deleted file mode 100644 index bbad83f3..00000000 Binary files a/apps/onelauncher/distribution/icons/icon.ico and /dev/null differ diff --git a/apps/onelauncher/distribution/icons/icon.png b/apps/onelauncher/distribution/icons/icon.png deleted file mode 100644 index 00b8274e..00000000 Binary files a/apps/onelauncher/distribution/icons/icon.png and /dev/null differ diff --git a/apps/onelauncher/distribution/linux/org.polyfrost.launcher.desktop.template b/apps/onelauncher/distribution/linux/org.polyfrost.launcher.desktop.template deleted file mode 100644 index 7ab2d6d3..00000000 --- a/apps/onelauncher/distribution/linux/org.polyfrost.launcher.desktop.template +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Name=OneLauncher -Comment=Next-generation open source Minecraft launcher -Exec={{exec}} -Icon={{icon}} -Type=Application -Terminal=false -StartupNotify=true -Categories=Game;ActionGame;AdventureGame;Simulation; -Keywords=mc;minecraft;game -StartupWMClass={{exec}} -Version=1.4 diff --git a/apps/onelauncher/distribution/scoop/onelauncher.json b/apps/onelauncher/distribution/scoop/onelauncher.json deleted file mode 100644 index 73bddd53..00000000 --- a/apps/onelauncher/distribution/scoop/onelauncher.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "version": "0.1.0", - "homepage": "https://polyfrost.org/launcher", - "description": "Next-generation open source Minecraft launcher", - "license": "GPL-3.0-only", - "architecture": { - "64bit": { - "url": "https://launcher.polyfrost.org/versions/0.1.0/windows/OneLauncher_0.1.0_x64_en-US.msi", - "hash": "hhjgskdfghskfdlafjdshjadlk" - } - }, - "shortcuts": [ - [ - "PFiles\\OneLauncher\\OneLauncher.exe", - "OneLauncher" - ] - ], - "checkver": { - "github": "https://github.com/polyfrost/onelauncher" - }, - "autoupdat": { - "architecture": { - "64bit": { - "url": "https://launcher.polyfrost.org/versions/$version/windows/OneLauncher_$version_x64_en-US.msi" - } - } - } -} diff --git a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.installer.yaml b/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.installer.yaml deleted file mode 100644 index cfcc69e1..00000000 --- a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.installer.yaml +++ /dev/null @@ -1,13 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneLauncher -PackageVersion: 0.1.0 -InstallerLocale: en-US -InstallerType: wix -ProductCode: '{}' -Installers: - - Architecture: x64 - InstallerUrl: https://launcher.polyfrost.org/versions/0.1.0/windows/OneLauncher_0.1.0_x64_en-US.msi - InstallerSha256: '1111111111111111111111111111318274823726424624666666666666666666666666666666661111E1235666' -ManifestType: installer -ManifestVersion: 1.5.0 diff --git a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.locale.en-US.yaml b/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.locale.en-US.yaml deleted file mode 100644 index 603f13ab..00000000 --- a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.locale.en-US.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneLauncher -PackageVersion: 0.1.0 -PackageLocale: en-US -Publisher: Polyfrost -PackageName: OneLauncher -License: GPL-3.0 -ShortDescription: Next-generation open source Minecraft launcher -ManifestType: defaultLocale -ManifestVersion: 1.5.0 diff --git a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.yaml b/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.yaml deleted file mode 100644 index 09889a9c..00000000 --- a/apps/onelauncher/distribution/winget/Polyfrost.OneLauncher.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.5.0.schema.json - -PackageIdentifier: Polyfrost.OneLauncher -PackageVersion: 0.1.0 -DefaultLocale: en-US -ManifestType: version -ManifestVersion: 1.5.0 diff --git a/apps/onelauncher/frontend/.gitignore b/apps/onelauncher/frontend/.gitignore deleted file mode 100644 index ed5e068a..00000000 --- a/apps/onelauncher/frontend/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules -.DS_Store -dist -dist-ssr -*.local - -# **/*.gen.ts -routeTree.gen.ts diff --git a/apps/onelauncher/frontend/index.html b/apps/onelauncher/frontend/index.html deleted file mode 100644 index a91f8b3a..00000000 --- a/apps/onelauncher/frontend/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - OneLauncher - - -
- - - diff --git a/apps/onelauncher/frontend/package.json b/apps/onelauncher/frontend/package.json deleted file mode 100644 index 09f0ddd0..00000000 --- a/apps/onelauncher/frontend/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "@onelauncher/frontend", - "type": "module", - "private": true, - "scripts": { - "dev": "vite", - "start": "vite", - "build": "vite build && tsc", - "serve": "vite preview", - "lint": "eslint", - "check": "eslint --fix" - }, - "dependencies": { - "@fontsource/poppins": "catalog:", - "@onelauncher/common": "workspace:*", - "@tailwindcss/vite": "catalog:", - "@tanstack/match-sorter-utils": "catalog:", - "@tanstack/react-query": "catalog:", - "@tanstack/react-query-devtools": "catalog:", - "@tanstack/react-router": "catalog:", - "@tanstack/react-router-devtools": "catalog:", - "@tanstack/react-table": "catalog:", - "@tanstack/router-plugin": "catalog:", - "@tauri-apps/api": "catalog:", - "@tauri-apps/plugin-clipboard-manager": "catalog:", - "@tauri-apps/plugin-dialog": "catalog:", - "@tauri-apps/plugin-opener": "catalog:", - "@tauri-apps/plugin-shell": "catalog:", - "@untitled-theme/icons-react": "catalog:", - "motion": "catalog:", - "overlayscrollbars": "catalog:", - "overlayscrollbars-react": "catalog:", - "react": "catalog:", - "react-aria-components": "catalog:", - "react-dom": "catalog:", - "react-markdown": "^10.1.0", - "rehype-raw": "^7.0.0", - "remark-gfm": "^4.0.1", - "tailwind-merge": "catalog:", - "tailwind-variants": "catalog:", - "tailwindcss": "catalog:", - "tailwindcss-animated": "catalog:", - "tailwindcss-react-aria-components": "catalog:", - "taurpc": "catalog:", - "valtio": "catalog:" - }, - "devDependencies": { - "@tailwindcss/typography": "^0.5.16", - "@tanstack/eslint-config": "catalog:", - "@types/react": "catalog:", - "@types/react-dom": "catalog:", - "@vitejs/plugin-react": "catalog:", - "typescript": "catalog:", - "vite": "catalog:" - } -} diff --git a/apps/onelauncher/frontend/src/assets/illustrations/onboarding/import_from_others.svg b/apps/onelauncher/frontend/src/assets/illustrations/onboarding/import_from_others.svg deleted file mode 100644 index 7ab893e1..00000000 --- a/apps/onelauncher/frontend/src/assets/illustrations/onboarding/import_from_others.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/illustrations/onboarding/language.svg b/apps/onelauncher/frontend/src/assets/illustrations/onboarding/language.svg deleted file mode 100644 index bc60266c..00000000 --- a/apps/onelauncher/frontend/src/assets/illustrations/onboarding/language.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/images/default_banner.png b/apps/onelauncher/frontend/src/assets/images/default_banner.png deleted file mode 100644 index 94ec4dda..00000000 Binary files a/apps/onelauncher/frontend/src/assets/images/default_banner.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/images/default_instance_cover.jpg b/apps/onelauncher/frontend/src/assets/images/default_instance_cover.jpg deleted file mode 100644 index 6de5d7af..00000000 Binary files a/apps/onelauncher/frontend/src/assets/images/default_instance_cover.jpg and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/images/default_world.png b/apps/onelauncher/frontend/src/assets/images/default_world.png deleted file mode 100644 index 0de32741..00000000 Binary files a/apps/onelauncher/frontend/src/assets/images/default_world.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/images/steve.jpg b/apps/onelauncher/frontend/src/assets/images/steve.jpg deleted file mode 100644 index 31e53111..00000000 Binary files a/apps/onelauncher/frontend/src/assets/images/steve.jpg and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/curseforge.svg b/apps/onelauncher/frontend/src/assets/logos/curseforge.svg deleted file mode 100644 index 7d2e9bd9..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/curseforge.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/discord.svg b/apps/onelauncher/frontend/src/assets/logos/discord.svg deleted file mode 100644 index e5e50cad..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/discord.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/atlauncher.svg b/apps/onelauncher/frontend/src/assets/logos/launchers/atlauncher.svg deleted file mode 100644 index fa2799c8..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/launchers/atlauncher.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/ftb.svg b/apps/onelauncher/frontend/src/assets/logos/launchers/ftb.svg deleted file mode 100644 index 2d3fee4b..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/launchers/ftb.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/gdlauncher.png b/apps/onelauncher/frontend/src/assets/logos/launchers/gdlauncher.png deleted file mode 100644 index 091e698c..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/launchers/gdlauncher.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/multimc.png b/apps/onelauncher/frontend/src/assets/logos/launchers/multimc.png deleted file mode 100644 index 891852eb..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/launchers/multimc.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/prismlauncher.svg b/apps/onelauncher/frontend/src/assets/logos/launchers/prismlauncher.svg deleted file mode 100644 index 1249b4f5..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/launchers/prismlauncher.svg +++ /dev/null @@ -1,52 +0,0 @@ - - Prism Launcher Logo - - - - Prism Launcher Logo - 19/10/2022 - - - Prism Launcher - - - - - AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke - - - https://github.com/PrismLauncher/PrismLauncher - - - Prism Launcher - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/technic.png b/apps/onelauncher/frontend/src/assets/logos/launchers/technic.png deleted file mode 100644 index a8cb9e49..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/launchers/technic.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/launchers/tlauncher.png b/apps/onelauncher/frontend/src/assets/logos/launchers/tlauncher.png deleted file mode 100644 index c515d2f5..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/launchers/tlauncher.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/loaders/fabric.png b/apps/onelauncher/frontend/src/assets/logos/loaders/fabric.png deleted file mode 100644 index 4ab8370f..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/loaders/fabric.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/loaders/forge.png b/apps/onelauncher/frontend/src/assets/logos/loaders/forge.png deleted file mode 100644 index 5b8e835c..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/loaders/forge.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/loaders/neoforge.png b/apps/onelauncher/frontend/src/assets/logos/loaders/neoforge.png deleted file mode 100644 index 963f36da..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/loaders/neoforge.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/loaders/quilt.png b/apps/onelauncher/frontend/src/assets/logos/loaders/quilt.png deleted file mode 100644 index d67ff6e9..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/loaders/quilt.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/microsoft.svg b/apps/onelauncher/frontend/src/assets/logos/microsoft.svg deleted file mode 100644 index dc4e8c6e..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/microsoft.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/minecraft.png b/apps/onelauncher/frontend/src/assets/logos/minecraft.png deleted file mode 100644 index d7062ad2..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/minecraft.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/assets/logos/modrinth.svg b/apps/onelauncher/frontend/src/assets/logos/modrinth.svg deleted file mode 100644 index e076a359..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/modrinth.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/oneconfig.svg b/apps/onelauncher/frontend/src/assets/logos/oneconfig.svg deleted file mode 100644 index c1330f3b..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/oneconfig.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/onelauncher.svg b/apps/onelauncher/frontend/src/assets/logos/onelauncher.svg deleted file mode 100644 index 38a41821..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/onelauncher.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/onelauncher_full.svg b/apps/onelauncher/frontend/src/assets/logos/onelauncher_full.svg deleted file mode 100644 index bf21199f..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/onelauncher_full.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/onelauncher_text.svg b/apps/onelauncher/frontend/src/assets/logos/onelauncher_text.svg deleted file mode 100644 index af57a651..00000000 --- a/apps/onelauncher/frontend/src/assets/logos/onelauncher_text.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/apps/onelauncher/frontend/src/assets/logos/skyclient.png b/apps/onelauncher/frontend/src/assets/logos/skyclient.png deleted file mode 100644 index 1879366c..00000000 Binary files a/apps/onelauncher/frontend/src/assets/logos/skyclient.png and /dev/null differ diff --git a/apps/onelauncher/frontend/src/bindings.gen.ts b/apps/onelauncher/frontend/src/bindings.gen.ts deleted file mode 100644 index 621edb4e..00000000 --- a/apps/onelauncher/frontend/src/bindings.gen.ts +++ /dev/null @@ -1,270 +0,0 @@ -// @ts-nocheck -// This file has been generated by Specta. DO NOT EDIT. - -import { createTauRPCProxy as createProxy, type InferCommandOutput } from 'taurpc' -type TAURI_CHANNEL = (response: T) => void - - -export type ClusterError = { type: "InvalidVersion"; data: string } | { type: "MismatchedVersion"; data: string } | { type: "MismatchedLoader"; data: string } | { type: "MissingJavaVersion"; data: string } | { type: "ClusterDownloading"; data: string } | { type: "ClusterAlreadyRunning"; data: string } - -export type ClusterModel = { id: bigint; folder_name: string; stage: ClusterStage; created_at: string; group_id: bigint | null; name: string; mc_version: string; mc_loader: GameLoader; mc_loader_version: string | null; last_played: string | null; overall_played: bigint | null; icon_url: Icon | null; setting_profile_name: string | null; linked_modpack_hash: string | null } - -export type ClusterStage = "notready" | "downloading" | "repairing" | "ready" - -export type ClusterUpdate = { name: string | null; icon_url: Icon | null } - -export type CreateCluster = { name: string; mc_version: string; mc_loader: GameLoader; mc_loader_version: string | null; icon: Icon | null } - -export type CryptoError = { type: "InvalidHash"; data: string } | { type: "InvalidAlgorithm"; data: string } - -export type DaoError = { type: "NotFound"; data: string } | { type: "AlreadyExists"; data: string } | { type: "InvalidValue"; data: string } - -export type DbVec = T[] - -export type DirectoryError = { type: "BaseDir"; data: string } - -export type DiscordError = { type: "MissingClientId"; data: string } | { type: "ConnectError"; data: string } - -export type Filters = { game_versions: string[] | null; loaders: GameLoader[] | null; categories: PackageCategories | null; package_type: PackageType | null } - -export type GameLoader = "vanilla" | "forge" | "neoforge" | "quilt" | "fabric" | "legacyfabric" - -export type IOError = { type: "InvalidAbsolutePath"; data: string } | { type: "FileNotFoundInZip"; data: string } | { type: "IOErrorWrapper"; data: string } | { type: "IOError"; data: string } | { type: "DeserializeError"; data: string } | { type: "AsyncZipError"; data: string } - -export type Icon = string - -export type IncompatiblePackageType = { type: "McVersion"; data: string } | { type: "Loader"; data: string } - -export type IngressError = { type: "NotFound"; data: string } - -export type IngressPayload = { id: string; message: string; ingress_type: IngressType; percent: number | null; total: number } - -export type IngressType = { Download: { file_name: string } } | "JavaPrepare" | "JavaCheck" | "JavaLocate" | "MinecraftDownload" | { PrepareCluster: { cluster_name: string } } - -export type JavaError = { type: "ParseVersion"; data: string } | { type: "Execute"; data: string } | { type: "MissingJava"; data: string } - -export type LauncherError = { type: "DirError"; data: DirectoryError } | { type: "IOError"; data: IOError } | { type: "IngressError"; data: IngressError } | { type: "JavaError"; data: JavaError } | { type: "CryptoError"; data: CryptoError } | { type: "DiscordError"; data: DiscordError } | { type: "MetadataError"; data: MetadataError } | { type: "ClusterError"; data: ClusterError } | { type: "MinecraftAuthError"; data: MinecraftAuthError } | { type: "ProcessError"; data: ProcessError } | { type: "PackageError"; data: PackageError } | { type: "DaoError"; data: DaoError } | { type: "SerdeError"; data: string } | { type: "AnyhowError"; data: string } | { type: "DbError"; data: string } | { type: "ReqwestError"; data: string } | { type: "InterfrostError"; data: string } | { type: "RegexError"; data: string } | { type: "SemaphoreError"; data: string } | { type: "UrlError"; data: string } | { type: "TauriError"; data: string } - -export type ManagedPackage = { id: string; slug: string; provider: Provider; package_type: PackageType; name: string; short_desc: string; body: ManagedPackageBody; -/** - * Won't have all versions for some providers, like CurseForge. - * Try making a request to get the versions if needed - */ -version_ids: string[]; mc_versions: string[]; loaders: GameLoader[]; icon_url: string | null; created: string; updated: string; client: PackageSide; server: PackageSide; categories: PackageCategories; license: PackageLicense | null; author: PackageAuthor; links: PackageLinks; status: PackageStatus; downloads: bigint; gallery: PackageGallery[] } - -export type ManagedPackageBody = { Url: string } | { Raw: string } - -export type ManagedUser = { id: string; username: string; url?: string | null; avatar_url?: string | null; bio?: string | null; is_organization_user?: boolean; role?: string | null } - -export type ManagedVersion = { version_id: string; project_id: string; display_name: string; display_version: string; changelog: string | null; dependencies: ManagedVersionDependency[]; mc_versions: string[]; release_type: PackageReleaseType; loaders: GameLoader[]; published: string; downloads: bigint; files: ManagedVersionFile[] } - -export type ManagedVersionDependency = { version_id: string | null; project_id: string | null; file_name: string | null; dependency_type: PackageDependencyType } - -export type ManagedVersionFile = { sha1: string; url: string; file_name: string; primary: boolean; size: bigint } - -export type MessageLevel = "Info" | "Warn" | "Error" - -export type MessagePayload = { level: MessageLevel; message: string } - -export type MetadataError = { type: "FetchError"; data: string } | { type: "NotModdedManifest"; data: string } | { type: "NotVanillaManifest"; data: string } | { type: "ParseError"; data: string } | { type: "NoMatchingLoader"; data: string } | { type: "NoMatchingVersion"; data: string } - -export type MinecraftAuthError = { type: "PublicKeyReading"; data: string } | { type: "PKCS8Error"; data: string } | { type: "SerializeError"; data: string } | { type: "DeserializeError"; data: string } | { type: "RequestError"; data: string } | { type: "SigningError"; data: string } | { type: "HashError"; data: string } | { type: "SessionIdError"; data: string } - -/** - * A structure of all needed Minecraft credentials for logging in and account management. - */ -export type MinecraftCredentials = { -/** - * The uuid of the credentials. - */ -id: string; -/** - * The username of the Minecraft account. - */ -username: string; -/** - * The access token as a String. - */ -access_token: string; -/** - * The refresh token as a string for [`MinecraftState#refresh`]. - */ -refresh_token: string; -/** - * The time that the access token expires as a [`DateTime`]. - */ -expires: string } - -export type PackageAuthor = { Team: { team_id: string; org_id: string | null } } | { Users: ManagedUser[] } - -export type PackageCategories = { Mod: PackageModCategory[] } | { ResourcePack: PackageResourcePackCategory[] } | { Shader: PackageShaderCategory[] } | { DataPack: PackageModCategory[] } | { ModPack: PackageModPackCategory[] } - -export type PackageDependencyType = "required" | "optional" | "embedded" | "incompatible" - -/** - * - */ -export type PackageDonationPlatform = "patreon" | "buymeacoffee" | "paypal" | "github" | "kofi" | "other" - -export type PackageDonationUrl = { id: PackageDonationPlatform; url: string } - -export type PackageError = { type: "NoPrimaryFile"; data: string } | { type: "IsNotModPack"; data: string } | { type: "Incompatible"; data: IncompatiblePackageType } | { type: "MissingApiKey"; data: string } | { type: "UnsupportedBodyType"; data: string } | { type: "UnsupportedAuthorType"; data: string } | { type: "UnsupportedModpackFormat"; data: string } - -export type PackageGallery = { url: string; thumbnail_url: string; title: string | null; description: string | null; featured: boolean | null } - -/** - * - */ -export type PackageLicense = { id: string; name: string; url: string | null } - -/** - * - */ -export type PackageLinks = { website: string | null; issues: string | null; source: string | null; wiki: string | null; donation: PackageDonationUrl[] | null; discord: string | null } - -export type PackageModCategory = "Adventure" | "Library" | "Equipment" | "Patches" | "Cosmetic" | "Food" | "Magic" | "Information" | "Misc" | "Performance" | "Redstone" | "ServerUtil" | "Storage" | "Technology" | "Farming" | "Automation" | "Transport" | "Utility" | "QoL" | "WorldGen" | "Mobs" | "Economy" | "Social" - -export type PackageModPackCategory = "Technology" | "Quests" | "Optimization" | "Multiplayer" | "Magic" | "LightWeight" | "Combat" | "Challenging" | "Adventure" - -export type PackageModel = { hash: string; file_name: string; version_id: string; published_at: string; display_name: string; display_version: string; package_type: PackageType; provider: Provider; package_id: string; mc_versions: DbVec; mc_loader: DbVec; icon: Icon | null } - -export type PackageReleaseType = "release" | "beta" | "alpha" - -export type PackageResourcePackCategory = "X8" | "X16" | "X32" | "X48" | "X64" | "X128" | "X256" | "X512" | "VanillaLike" | "Utility" | "Tweaks" | "Themed" | "Simplistic" | "Realistic" | "Modded" | "Decoration" | "Cursed" | "Combat" | "Audio" | "Blocks" | "CoreShaders" | "Gui" | "Fonts" | "Equipment" | "Environment" | "Entities" | "Items" | "Locale" | "Models" - -export type PackageShaderCategory = "VanillaLike" | "SemiRealistic" | "Realistic" | "Fantasy" | "Cursed" | "Cartoon" | "Bloom" | "Atmosphere" | "Reflections" | "Shadows" | "PBR" | "PathTracing" | "Foliage" | "ColoredLightning" | "Potato" | "Low" | "Medium" | "High" | "Ultra" - -export type PackageSide = "unknown" | "required" | "optional" | "unsupported" - -export type PackageStatus = "active" | "abandoned" - -export type PackageType = "mod" | "resourcepack" | "shader" | "datapack" | "modpack" - -export type Paginated = { total: bigint; offset: bigint; limit: bigint; items: T[] } - -export type Process = { pid: number; started_at: string; cluster_id: bigint; post_hook: string | null; account_id: string } - -export type ProcessError = { type: "HookUnsuccessful"; data: string } | { type: "NoPid"; data: string } - -export type ProcessPayload = { type: "Starting"; command: string } | { type: "Started"; process: Process } | { type: "Stopped"; pid: number; exit_code: number } | { type: "Output"; pid: number; output: string } - -export type ProfileUpdate = { res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null } - -export type Provider = "Modrinth" | "CurseForge" | "SkyClient" - -export type Resolution = { width: number; height: number } - -export type SearchQuery = { query: string | null; offset: bigint | null; limit: bigint | null; sort: Sort | null; filters: Filters | null } - -export type SearchResult = { project_id: string; package_type: PackageType; slug: string; author: string; title: string; description: string; categories: PackageCategories; mc_versions: string[]; downloads: bigint; icon_url: string; date_created: string; date_modified: string; latest_version: string; license: string | null; client_side: PackageSide; server_side: PackageSide; -/** - * List of URLs to images - */ -gallery: string[] } - -export type SettingProfileModel = { name: string; java_id: bigint | null; res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null; os_extra: SettingsOsExtra | null } - -export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; max_concurrent_requests: bigint; settings_version: number; native_window_frame: boolean } - -export type SettingsOsExtra = Record - -export type Sort = "Relevance" | "Downloads" | "Newest" | "Updated" - -/** - * A game version of Minecraft - */ -export type Version = { -/** - * A unique identifier of the version - */ -id: string; -/** - * The release type of the version - */ -type: VersionType; -/** - * A link to additional information about the version - */ -url: string; -/** - * The latest time a file in this version was updated - */ -time: string; -/** - * The time this version was released - */ -releaseTime: string; -/** - * The SHA1 hash of the additional information about the version - */ -sha1: string; -/** - * Whether the version supports the latest player safety features - */ -complianceLevel: number; -/** - * The SHA1 hash of the original unmodified Minecraft version's JSON - * This is only available when using the Pulseflow mirror - */ -originalSha1?: string | null } - -/** - * The version type of Minecraft - */ -export type VersionType = -/** - * A major version, which is stable for all players to use - */ -"release" | -/** - * An experimental version, which is unstable and used for feature previews and beta testing - */ -"snapshot" | -/** - * The oldest versions before the game was released - */ -"old_alpha" | -/** - * Early versions of the game - */ -"old_beta" - -const ARGS_MAP = { 'onelauncher':'{"open_dev_tools":[],"set_window_style":["decorations"],"return_error":[]}', 'core':'{"getClusters":[],"searchPackages":["provider","query"],"getLoadersForVersion":["mc_version"],"getUsers":[],"getScreenshots":["id"],"getMultiplePackages":["provider","slugs"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"getUsersFromAuthor":["provider","author"],"updateClusterProfile":["name","profile"],"updateClusterById":["id","request"],"getPackageBody":["provider","body"],"getDefaultUser":["fallback"],"removeCluster":["id"],"removeUser":["uuid"],"createCluster":["options"],"openMsaLogin":[],"readSettings":[],"getGameVersions":[],"launchCluster":["id","uuid"],"writeSettings":["setting"],"getProfileOrDefault":["name"],"getPackage":["provider","slug"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getClusterById":["id"],"getWorlds":["id"],"getGlobalProfile":[],"getUser":["uuid"],"setDefaultUser":["uuid"]}', 'events':'{"ingress":["event"],"message":["event"],"process":["event"]}' } -export type Router = { 'onelauncher': { return_error: () => Promise, -open_dev_tools: () => Promise, -set_window_style: (decorations: boolean) => Promise }, -'core': { getClusters: () => Promise, -getClusterById: (id: bigint) => Promise, -removeCluster: (id: bigint) => Promise, -createCluster: (options: CreateCluster) => Promise, -launchCluster: (id: bigint, uuid: string | null) => Promise, -updateClusterById: (id: bigint, request: ClusterUpdate) => Promise, -getScreenshots: (id: bigint) => Promise, -getWorlds: (id: bigint) => Promise, -getProfileOrDefault: (name: string | null) => Promise, -getGlobalProfile: () => Promise, -updateClusterProfile: (name: string, profile: ProfileUpdate) => Promise, -getGameVersions: () => Promise, -getLoadersForVersion: (mcVersion: string) => Promise, -getUsers: () => Promise, -getUser: (uuid: string) => Promise, -removeUser: (uuid: string) => Promise, -getDefaultUser: (fallback: boolean | null) => Promise, -setDefaultUser: (uuid: string | null) => Promise, -openMsaLogin: () => Promise, -readSettings: () => Promise, -writeSettings: (setting: Settings) => Promise, -searchPackages: (provider: Provider, query: SearchQuery) => Promise>, -getPackage: (provider: Provider, slug: string) => Promise, -getPackageBody: (provider: Provider, body: ManagedPackageBody) => Promise, -getMultiplePackages: (provider: Provider, slugs: string[]) => Promise, -getPackageVersions: (provider: Provider, slug: string, mcVersion: string | null, loader: GameLoader | null, offset: bigint, limit: bigint) => Promise>, -downloadPackage: (provider: Provider, packageId: string, versionId: string, clusterId: bigint, skipCompatibility: boolean | null) => Promise, -getUsersFromAuthor: (provider: Provider, author: PackageAuthor) => Promise }, -'events': { ingress: (event: IngressPayload) => Promise, -message: (event: MessagePayload) => Promise, -process: (event: ProcessPayload) => Promise } }; - - -export type { InferCommandOutput } -export const createTauRPCProxy = () => createProxy(ARGS_MAP) diff --git a/apps/onelauncher/frontend/src/components/Navbar.tsx b/apps/onelauncher/frontend/src/components/Navbar.tsx deleted file mode 100644 index 601d6e96..00000000 --- a/apps/onelauncher/frontend/src/components/Navbar.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import type { ToOptions } from '@tanstack/react-router'; -import useNotifications from '@/hooks/useNotification'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Popup } from '@onelauncher/common/components'; -import { Link } from '@tanstack/react-router'; -import { Bell01Icon, Cloud01Icon, TerminalBrowserIcon } from '@untitled-theme/icons-react'; -import OneLauncherText from '../assets/logos/onelauncher_text.svg'; -import PlayerHead from './content/PlayerHead'; -import AccountPopup from './overlay/popups/AccountPopup'; -import NotificationPopup from './overlay/popups/NotificationPopup'; - -function Navbar() { - const defaultUser = useCommand('getDefaultUser', () => bindings.core.getDefaultUser(false)); - const { list } = useNotifications(); - const notificationCount = Object.keys(list).length; - - return ( -
-
-
- {/* */} - -
-
-
- - - -
-
- - - - - {/* Notification Manager Button */} -
- - - - - - - -
- - - - - - - - -
-
- ); -} - -export default Navbar; - -function NavbarLink({ - path, - label, -}: { - path: ToOptions['to']; - label: string; -}) { - return ( - - {label} - - ); -} diff --git a/apps/onelauncher/frontend/src/components/ScrollableContainer.tsx b/apps/onelauncher/frontend/src/components/ScrollableContainer.tsx deleted file mode 100644 index e21f49f7..00000000 --- a/apps/onelauncher/frontend/src/components/ScrollableContainer.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; - -interface ScrollableContainerProps { - children: React.ReactNode; -} - -function ScrollableContainer({ children }: ScrollableContainerProps) { - return ( -
- -
- {children} -
-
-
- ); -} - -export default ScrollableContainer; diff --git a/apps/onelauncher/frontend/src/components/SettingsRow.tsx b/apps/onelauncher/frontend/src/components/SettingsRow.tsx deleted file mode 100644 index 4bfe7435..00000000 --- a/apps/onelauncher/frontend/src/components/SettingsRow.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import type { JSX } from 'react'; - -export interface SettingsRowProps { - title: JSX.Element | string; - description: JSX.Element | string; - icon: JSX.Element; - disabled?: boolean; - children?: JSX.Element; -} - -function SettingsRow({ disabled, description, icon, title, children }: SettingsRowProps) { - return ( -
-
- {icon} -
- -
-

{title}

-

{description}

-
- -
- {children} -
-
- ); -} - -interface SettingsRowHeaderProps { - className?: string; - children?: React.ReactNode; -} - -SettingsRow.Header = ({ className, children }: SettingsRowHeaderProps) => { - const headerClasses = `mt-4 mb-1 ml-2 text-md text-fg-secondary uppercase ${className || ''}`; - return

{children}

; -}; - -export default SettingsRow; diff --git a/apps/onelauncher/frontend/src/components/WindowFrame.tsx b/apps/onelauncher/frontend/src/components/WindowFrame.tsx deleted file mode 100644 index 0c65c922..00000000 --- a/apps/onelauncher/frontend/src/components/WindowFrame.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import type { ComponentType, JSX } from 'react'; -import type { PressEvent } from 'react-aria-components'; -import useSettings from '@/hooks/useSettings'; -import { Button, Show } from '@onelauncher/common/components'; -import { Window } from '@tauri-apps/api/window'; -import { ChevronLeftIcon, Maximize02Icon, Minimize01Icon, MinusIcon, XCloseIcon } from '@untitled-theme/icons-react'; -import { useEffect, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -function WindowFrame() { - const [isMaximized, setIsMaximized] = useState(false); - const { settings } = useSettings(); - - const back = () => history.back(); - const minimize = () => Window.getCurrent().minimize(); - const toggleMaximize = () => Window.getCurrent().toggleMaximize(); - const quit = () => Window.getCurrent().close(); - - useEffect(() => { - let unlisten: (() => void) | undefined; - - (async () => { - unlisten = await Window.getCurrent().onResized(() => { - Window.getCurrent().isMaximized().then(setIsMaximized); - }); - })(); - - return () => unlisten?.(); - }, []); - - return ( - -
-
- -
- -
- - - -
-
-
- ); -} - -export default WindowFrame; - -function TitlebarButton({ - icon: Icon, - onClick, - danger = false, -}: { - icon: ComponentType; - onClick: (e: PressEvent) => void; - danger?: boolean; -}) { - return ( - - ); -} diff --git a/apps/onelauncher/frontend/src/components/content/LauncherIcon.tsx b/apps/onelauncher/frontend/src/components/content/LauncherIcon.tsx deleted file mode 100644 index c2a32f0e..00000000 --- a/apps/onelauncher/frontend/src/components/content/LauncherIcon.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { ImgHTMLAttributes, JSX } from 'react'; -import { Show } from '@onelauncher/common/components'; -import CurseForgeIcon from '../../assets/logos/curseforge.svg'; -import AtLauncherIcon from '../../assets/logos/launchers/atlauncher.svg'; -import FTBIcon from '../../assets/logos/launchers/ftb.svg'; -import GDLauncherImage from '../../assets/logos/launchers/gdlauncher.png'; -import MultiMCImage from '../../assets/logos/launchers/multimc.png'; -import PrismIcon from '../../assets/logos/launchers/prismlauncher.svg'; -import TechnicImage from '../../assets/logos/launchers/technic.png'; -import TLauncherImage from '../../assets/logos/launchers/tlauncher.png'; -import UnknownImage from '../../assets/logos/minecraft.png'; -import ModrinthIcon from '../../assets/logos/modrinth.svg'; - -type ElementType = (props: any) => JSX.Element; - -// i dont know what ImportType is so i assume it is a string -export function getLauncherLogoElement(launcher: string): ElementType { - const providerName = launcher.toLowerCase() as Lowercase; - - const image = (src: string, props: any) => {providerName}; - - // [provider logo, is svg] - const mapping: Record, ElementType | string> = { - modrinth: ModrinthIcon, - curseforge: CurseForgeIcon, - prismlauncher: PrismIcon, - atlauncher: AtLauncherIcon, - gdlauncher: GDLauncherImage, - ftblauncher: FTBIcon, - multimc: MultiMCImage, - tlauncher: TLauncherImage, - technic: TechnicImage, - unknown: UnknownImage, - }; - - const logo = mapping[providerName] || UnknownImage; - if (typeof logo === 'function') - return logo; - - return props => image(logo, props); -} - -type LauncherIconProps = ImgHTMLAttributes & { - launcher: string | undefined; -}; - -function LauncherIcon({ - launcher, - ...props -}: LauncherIconProps) { - return ( - - )} - when={launcher !== undefined} - /> - ); -} - -export default LauncherIcon; diff --git a/apps/onelauncher/frontend/src/components/content/PackageItem.tsx b/apps/onelauncher/frontend/src/components/content/PackageItem.tsx deleted file mode 100644 index 8cd40969..00000000 --- a/apps/onelauncher/frontend/src/components/content/PackageItem.tsx +++ /dev/null @@ -1,100 +0,0 @@ -import type { Provider, SearchResult } from '@/bindings.gen'; -import { getCategories } from '@/hooks/useBrowser'; -import { abbreviateNumber, LOADERS, upperFirst } from '@/utils'; -import { categoryNameFromId } from '@/utils/browser'; -import { Show, Tooltip } from '@onelauncher/common/components'; -import { Link } from '@tanstack/react-router'; -import { Download01Icon } from '@untitled-theme/icons-react'; -import { useMemo } from 'react'; -import { Focusable } from 'react-aria-components'; -import { FlatLoaderIcon } from '../launcher/FlatLoaderIcon'; - -function includes(list: { includes: (arg0: TArray) => boolean }, element: T): element is TArray { - return list.includes(element as unknown as TArray); -} - -export function PackageGrid({ items, provider }: { items: Array; provider: Provider }) { - return ( -
- {items.map(item => ( - - ))} -
- ); -} - -export function PackageItem({ provider, ...item }: SearchResult & { provider: Provider }) { - const categoryName = categoryNameFromId[item.package_type]; - if (!(categoryName in item.categories)) - throw new Error('invalid categories'); - const loaders = useMemo(() => getCategories(item.categories).filter(cat => includes(LOADERS, cat)), [item.categories]); - - return ( - -
- - )} - when={item.icon_url} - > - {`Icon - {`Icon - - - -
- {loaders.toSpliced(loaders.length > 3 ? 2 : 3).map(loader => )} - {loaders.length > 3 && ( -
- - + - {loaders.length - 2} - -
- )} -
-
-
-
-
-
-

{item.title}

-

- By - {' '} - {item.author} - {' '} - on - {' '} - {provider} -

-
- -

{item.description}

- -
- -
- - {abbreviateNumber(item.downloads)} -
-
-
-
- - ); -} diff --git a/apps/onelauncher/frontend/src/components/content/PlayerHead.tsx b/apps/onelauncher/frontend/src/components/content/PlayerHead.tsx deleted file mode 100644 index bd895519..00000000 --- a/apps/onelauncher/frontend/src/components/content/PlayerHead.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import type { ImgHTMLAttributes } from 'react'; -import SteveHead from '@/assets/images/steve.jpg'; -import { useMemo } from 'react'; - -interface PlayerHeadProps { - uuid?: string | undefined | null; -} - -function PlayerHead({ - uuid, - src: _src, // ignore src prop to prevent overriding the generated src - ...rest -}: PlayerHeadProps & ImgHTMLAttributes) { - const src = useMemo(() => { - return uuid - ? `https://crafatar.com/avatars/${uuid}?overlay&size=64` - : SteveHead; - }, [uuid]); - - return ( - Player Head { - (e.target as HTMLImageElement).src = SteveHead; - }} - src={src} - style={{ imageRendering: 'pixelated' }} - /> - ); -} - -export default PlayerHead; diff --git a/apps/onelauncher/frontend/src/components/content/ProviderIcon.tsx b/apps/onelauncher/frontend/src/components/content/ProviderIcon.tsx deleted file mode 100644 index ba226f26..00000000 --- a/apps/onelauncher/frontend/src/components/content/ProviderIcon.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import type { ImgHTMLAttributes, RefAttributes } from 'react'; -import CurseForgeIcon from '@/assets/logos/curseforge.svg'; -import VanillaImage from '@/assets/logos/minecraft.png'; -import ModrinthIcon from '@/assets/logos/modrinth.svg'; -import SkyClientImage from '@/assets/logos/skyclient.png'; - -export function getProviderLogoSrc(provider: string): string { - const providerName = provider.toLowerCase(); - - const mapping: Record = { - modrinth: ModrinthIcon, - curseforge: CurseForgeIcon, - skyclient: SkyClientImage, - }; - - return mapping[providerName]; -} - -type ProviderIconProp = ImgHTMLAttributes & RefAttributes & { - provider: string | undefined; -}; - -function ProviderIcon({ - provider, - src: _src, - alt: _alt, - ...rest -}: ProviderIconProp) { - return ( - {`${provider}'s - ); -} - -export default ProviderIcon; diff --git a/apps/onelauncher/frontend/src/components/content/WorldIcon.tsx b/apps/onelauncher/frontend/src/components/content/WorldIcon.tsx deleted file mode 100644 index 19874292..00000000 --- a/apps/onelauncher/frontend/src/components/content/WorldIcon.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import DefaultWorld from '@/assets/images/default_world.png'; -import { convertFileSrc } from '@tauri-apps/api/core'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { useEffect, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -export interface WorldIconProps { - world_name: string; - cluster_name: string; - className?: string; -} - -export default function WorldIcon(props: WorldIconProps) { - const { world_name, cluster_name, className } = props; - const [imagePath, setImagePath] = useState(''); - - useEffect(() => { - async function loadImagePath() { - const iconPath = await join(await dataDir(), 'OneLauncher', 'clusters', cluster_name, 'saves', world_name, 'icon.png'); - setImagePath(convertFileSrc(iconPath)); - } - - loadImagePath().catch(console.error); - }, [cluster_name, world_name]); - - return ( - {`${world_name} { - e.currentTarget.src = DefaultWorld; - }} - src={imagePath} - /> - ); -} diff --git a/apps/onelauncher/frontend/src/components/launcher/ClusterCover.tsx b/apps/onelauncher/frontend/src/components/launcher/ClusterCover.tsx deleted file mode 100644 index a17d302b..00000000 --- a/apps/onelauncher/frontend/src/components/launcher/ClusterCover.tsx +++ /dev/null @@ -1,9 +0,0 @@ -// function ClusterCover({ -// cluster, -// }: { -// cluster: -// }) { - -// } - -// export default ClusterCover; diff --git a/apps/onelauncher/frontend/src/components/launcher/FlatLoaderIcon.tsx b/apps/onelauncher/frontend/src/components/launcher/FlatLoaderIcon.tsx deleted file mode 100644 index c6d4b10c..00000000 --- a/apps/onelauncher/frontend/src/components/launcher/FlatLoaderIcon.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import type { GameLoader } from '@/bindings.gen'; -import type { HTMLAttributes, RefAttributes } from 'react'; - -function IconSvg({ loader }: { loader: GameLoader }) { - switch (loader) { - case 'vanilla': return ( - - - - - ); - case 'forge': return ( - - - - - - ); - case 'neoforge': return ( - - - - - - - - - - - - - - ); - case 'quilt': return ( - - - - - - - - - - - - - ); - case 'fabric': return ( - - - - - - ); - case 'legacyfabric': return ( - - - - - - ); - } -} - -export function FlatLoaderIcon({ loader, className }: { loader: GameLoader } & HTMLAttributes) { - return ( -
- -
- ); -} diff --git a/apps/onelauncher/frontend/src/components/launcher/LoaderIcon.tsx b/apps/onelauncher/frontend/src/components/launcher/LoaderIcon.tsx deleted file mode 100644 index b69ca3b9..00000000 --- a/apps/onelauncher/frontend/src/components/launcher/LoaderIcon.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { ClusterModel, GameLoader } from '@/bindings.gen'; -import type { ImgHTMLAttributes, RefAttributes } from 'react'; -import FabricImage from '@/assets/logos/loaders/fabric.png'; -import ForgeImage from '@/assets/logos/loaders/forge.png'; -import NeoForgeImage from '@/assets/logos/loaders/neoforge.png'; -import QuiltImage from '@/assets/logos/loaders/quilt.png'; -import VanillaImage from '@/assets/logos/minecraft.png'; - -export function getLoaderLogoSrc(loader: ClusterModel | GameLoader): string { - const loaderName = (typeof loader === 'string' ? loader : loader.mc_loader).toLowerCase() as GameLoader; - - const mapping: Record = { - vanilla: VanillaImage, - fabric: FabricImage, - legacyfabric: FabricImage, - forge: ForgeImage, - neoforge: NeoForgeImage, - quilt: QuiltImage, - }; - - return mapping[loaderName]; -} - -type LoaderIconProp = ImgHTMLAttributes & RefAttributes & { - loader: GameLoader | undefined; -}; - -function LoaderIcon({ - loader, - src: _src, - alt: _alt, - ...rest -}: LoaderIconProp) { - return ( - {`${loader}'s - ); -} - -export default LoaderIcon; diff --git a/apps/onelauncher/frontend/src/components/launcher/cluster/ClusterCreation.tsx b/apps/onelauncher/frontend/src/components/launcher/cluster/ClusterCreation.tsx deleted file mode 100644 index 29dbc97a..00000000 --- a/apps/onelauncher/frontend/src/components/launcher/cluster/ClusterCreation.tsx +++ /dev/null @@ -1,465 +0,0 @@ -import type { GameLoader, Version } from '@/bindings.gen'; -import type { JSX, RefAttributes } from 'react'; -import DefaultBanner from '@/assets/images/default_banner.png'; -import LauncherIcon from '@/components/content/LauncherIcon'; -import Modal from '@/components/overlay/Modal'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import { bindings } from '@/main'; -import { LAUNCHER_IMPORT_TYPES, LOADERS, upperFirst } from '@/utils'; -import { useCommand, useCommandMut } from '@onelauncher/common'; -import { Button, Dropdown, SelectList, TextField } from '@onelauncher/common/components'; -import { useQueryClient } from '@tanstack/react-query'; -import { ArrowRightIcon, PlusIcon, SearchMdIcon, Server01Icon, TextInputIcon, User03Icon } from '@untitled-theme/icons-react'; -import { useCallback, useMemo, useState } from 'react'; -import { Checkbox } from 'react-aria-components'; -import LoaderIcon from '../LoaderIcon'; - -const STEPS = [ - { - id: 'loader' as const, - title: 'Select Provider', - }, - { - id: 'info' as const, - title: 'Game Setup', - }, -] as const; - -interface ClusterFormData { - loader: GameLoader; - clusterName: string; - clusterVersion: string; - clusterProvider: string; -} - -interface FormValidation { - isProviderValid: boolean; - isNameValid: boolean; - isVersionValid: boolean; -} - -export function NewClusterCreate() { - const queryClient = useQueryClient(); - const [currentStepIndex, setCurrentStepIndex] = useState(0); - const [isModalOpen, setIsModalOpen] = useState(false); - const [formData, setFormData] = useState({ - loader: 'vanilla', - clusterName: '', - clusterVersion: '', - clusterProvider: '', - }); - - const validation = useMemo((): FormValidation => ({ - isProviderValid: Boolean(formData.clusterProvider), - isNameValid: Boolean(formData.clusterName.trim()), - isVersionValid: Boolean(formData.clusterVersion.trim()), - }), [formData.clusterProvider, formData.clusterName, formData.clusterVersion]); - - const create = useCommandMut(() => bindings.core.createCluster({ - icon: null, - mc_loader: formData.loader, - mc_loader_version: null, - mc_version: formData.clusterVersion, - name: formData.clusterName, - }), { - onSuccess: () => { - queryClient.invalidateQueries({ queryKey: ['getClusters'] }); - // Modal'ı kapat ve formu sıfırla - setIsModalOpen(false); - setCurrentStepIndex(0); - setFormData({ - loader: 'vanilla', - clusterName: '', - clusterVersion: '', - clusterProvider: '', - }); - }, - }); - - const handleCreate = useCallback(() => { - if (!validation.isNameValid || !validation.isVersionValid) { - console.warn('Form validation failed'); - return; - } - - create.mutate(); - }, [create, validation.isNameValid, validation.isVersionValid]); - - const handleNext = useCallback(() => { - if (currentStepIndex === STEPS.length - 1) { - handleCreate(); - return; - } - - if (currentStepIndex < STEPS.length - 1) - setCurrentStepIndex(prev => prev + 1); - }, [currentStepIndex, handleCreate]); - - const handleBack = useCallback(() => { - if (currentStepIndex > 0) - setCurrentStepIndex(prev => prev - 1); - }, [currentStepIndex]); - - const formHandlers = useMemo(() => ({ - onProviderChange: (provider: string) => - setFormData(prev => ({ ...prev, clusterProvider: provider })), - onLoaderChange: (loader: GameLoader) => - setFormData(prev => ({ ...prev, loader })), - onNameChange: (name: string) => - setFormData(prev => ({ ...prev, clusterName: name })), - onVersionChange: (version: string) => - setFormData(prev => ({ ...prev, clusterVersion: version })), - }), []); - - const currentStepConfig = STEPS[currentStepIndex]; - - const stepContent = useMemo((): JSX.Element => { - switch (currentStepConfig.id) { - case 'loader': - return ( - - ); - case 'info': - return ( - - ); - default: - return
Unknown step
; - } - }, [currentStepConfig.id, formData, formHandlers]); - - const isFirstStep = currentStepIndex === 0; - const isLastInputStep = currentStepIndex === STEPS.length - 1; - const nextButtonText = isLastInputStep ? 'Create' : 'Next'; - - const isNextDisabled = useMemo(() => { - switch (currentStepConfig.id) { - case 'loader': - return !validation.isProviderValid; - case 'info': - return !validation.isNameValid || !validation.isVersionValid; - default: - return false; - } - }, [currentStepConfig.id, validation]); - - return ( -
-
- } - placeholder="Search for something..." - /> -
- - - - -
- - -
-
- {stepContent} -
- - -
-
-
-
- ); -} - -interface ModalHeaderProps { - currentStep: typeof STEPS[number]; -} - -function ModalHeader({ currentStep }: ModalHeaderProps) { - return ( -
-
- Header Image -
-
- -
-

New Cluster

- {currentStep.title} -
-
-
- ); -} - -interface ModalFooterProps { - isFirstStep: boolean; - isNextDisabled: boolean; - nextButtonText: string; - onBack: () => void; - onNext: () => void; -} - -function ModalFooter({ - isFirstStep, - isNextDisabled, - nextButtonText, - onBack, - onNext, -}: ModalFooterProps) { - return ( -
- - -
- ); -} - -interface ClusterLoaderProps { - selectedProvider: string; - onSelectProvider: (provider: string) => void; -} - -function ClusterLoader({ selectedProvider, onSelectProvider }: ClusterLoaderProps) { - const providers = useMemo(() => [ - { id: 'new', name: 'New', icon: }, - ...LAUNCHER_IMPORT_TYPES.map(data => ({ - id: data, - name: data, - icon: , - })), - ], []); - - return ( -
- {providers.map(provider => ( - onSelectProvider(provider.id)} - selected={selectedProvider === provider.id} - /> - ))} -
- ); -} - -interface ProviderCardProps { - onSelect: () => void; - selected: boolean; - icon: JSX.Element; - name: string; -} - -function ProviderCard({ selected, onSelect, icon, name }: ProviderCardProps) { - const cardClassName = useMemo(() => { - const baseClasses = 'flex flex-col justify-center items-center gap-y-3 py-2 px-4 hover:bg-component-bg-hover active:bg-component-bg-pressed rounded-lg cursor-pointer transition-colors'; - return selected ? `${baseClasses} bg-component-bg` : baseClasses; - }, [selected]); - - return ( -
{ - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - onSelect(); - } - }} - role="button" - tabIndex={0} - > -
- {icon} -
- {name} -
- ); -} - -interface ClusterInformationProps { - clusterName: string; - onClusterNameChange: (name: string) => void; - clusterVersion: string; - onClusterVersionChange: (version: string) => void; - clusterLoader: GameLoader; - onClusterLoaderChange: (loader: GameLoader) => void; -} - -function ClusterInformation({ - clusterName, - onClusterNameChange, - clusterVersion, - onClusterVersionChange, - clusterLoader, - onClusterLoaderChange, -}: ClusterInformationProps) { - const versions = useCommand('getGameVersions', bindings.core.getGameVersions); - - return ( -
- - - - - -
- ); -} - -interface VersionSelectorProps { - versions: Array | undefined; - selectedVersion: string | Array; - onChange: (value: string | Array) => void; -} - -interface VersionReleaseFilters { - old_alpha: boolean; - old_beta: boolean; - release: boolean; - snapshot: boolean; -} - -const DEFAULT_FILTERS: VersionReleaseFilters = { - old_alpha: false, - old_beta: false, - release: true, - snapshot: false, -}; - -function VersionSelector({ versions, selectedVersion, onChange }: VersionSelectorProps) { - const [filters, setFilters] = useState(DEFAULT_FILTERS); - - const filteredVersions = useMemo(() => { - if (!versions) - return []; - - if (Object.values(filters).every(value => !value)) - return versions; - - return versions.filter(version => filters[version.type]); - }, [versions, filters]); - - const toggleFilter = useCallback((name: keyof VersionReleaseFilters) => { - setFilters(prev => ({ - ...prev, - [name]: !prev[name], - })); - }, []); - - const filterEntries = useMemo(() => - Object.entries(filters) as Array<[keyof VersionReleaseFilters, boolean]>, [filters]); - - return ( -
- - - {filteredVersions.map(version => ( - - {version.id} - - ))} - - - -
- {filterEntries.map(([filterName, isSelected]) => ( - toggleFilter(filterName)} - > - {filterName.replace('_', ' ')} - - ))} -
-
- ); -} - -type OptionProps = { - header: string; - children?: JSX.Element | Array; -} & RefAttributes; - -function Option({ header, children, ...divProps }: OptionProps) { - return ( -
-

- {header} -

- {children} -
- ); -} diff --git a/apps/onelauncher/frontend/src/components/overlay/Modal.tsx b/apps/onelauncher/frontend/src/components/overlay/Modal.tsx deleted file mode 100644 index 3f6a0e81..00000000 --- a/apps/onelauncher/frontend/src/components/overlay/Modal.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import type { DialogProps } from 'react-aria-components'; -import type { VariantProps } from 'tailwind-variants'; -import { - Dialog as AriaDialog, - Modal as AriaModal, - DialogTrigger, - ModalOverlay, -} from 'react-aria-components'; -import { twMerge } from 'tailwind-merge'; -import { tv } from 'tailwind-variants'; - -const modalVariants = tv({ - slots: { - overlay: [ - 'fixed inset-0 z-50', - 'flex items-center justify-center', - 'bg-black/50 p-4', - - 'data-[entering]:animate-in data-[entering]:fade-in data-[entering]:duration-200', - 'data-[exiting]:animate-out data-[exiting]:fade-out data-[exiting]:duration-150', - ], - modal: [ - 'data-[entering]:animate-in data-[entering]:zoom-in-95 data-[entering]:duration-200', - 'data-[exiting]:animate-out data-[exiting]:zoom-out-95 data-[exiting]:duration-150', - ], - dialog: [ - 'outline-none', - ], - }, -}); - -export interface ModalProps extends DialogProps, VariantProps { - isOpen?: boolean; - onOpenChange?: (isOpen: boolean) => void; - isDismissable?: boolean; - overlayClassName?: string; - modalClassName?: string; -} - -function Modal({ - className, - isOpen, - onOpenChange, - isDismissable = true, - overlayClassName, - modalClassName, - ...props -}: ModalProps) { - const { overlay, modal, dialog } = modalVariants(); - - const isControlled = isOpen !== undefined || onOpenChange !== undefined; - - const overlayProps = { - className: twMerge(overlay(), overlayClassName), - isDismissable, - ...(isControlled && { isOpen, onOpenChange }), - }; - - return ( - - - - - - ); -} - -Modal.Trigger = DialogTrigger; - -export default Modal; diff --git a/apps/onelauncher/frontend/src/components/overlay/NotificationToasts.tsx b/apps/onelauncher/frontend/src/components/overlay/NotificationToasts.tsx deleted file mode 100644 index ca4d6e16..00000000 --- a/apps/onelauncher/frontend/src/components/overlay/NotificationToasts.tsx +++ /dev/null @@ -1,127 +0,0 @@ -import type { NotificationData } from '@/hooks/useNotification'; -import useNotifications from '@/hooks/useNotification'; -import { Button, Show } from '@onelauncher/common/components'; -import { InfoCircleIcon, XIcon } from '@untitled-theme/icons-react'; -import { useCallback, useEffect, useState } from 'react'; -import { twMerge } from 'tailwind-merge'; - -interface ToastNotification extends NotificationData { - id: string; - timestamp: number; -} - -interface NotificationToastProps { - notification: ToastNotification; - onRemove: (id: string) => void; -} - -const fractionEnded = (fraction: number | undefined) => fraction !== undefined && fraction >= 0.97; - -export function NotificationToast({ notification, onRemove }: NotificationToastProps) { - const [isVisible, setIsVisible] = useState(false); - const [isRemoving, setIsRemoving] = useState(false); - - const handleRemove = useCallback(() => { - setIsRemoving(true); - setTimeout(() => { - onRemove(notification.id); - }, 300); - }, [notification.id, onRemove]); - - useEffect(() => { - // Trigger entrance animation - const timer = setTimeout(() => setIsVisible(true), 50); - return () => clearTimeout(timer); - }, []); - - useEffect(() => { - // Auto-remove after 5 seconds if no progress indicator - if (notification.fraction === undefined) { - const timer = setTimeout(handleRemove, 5000); - return () => clearTimeout(timer); - } - }, [notification.fraction, handleRemove]); - - return ( -
-
- - -
- {notification.title} - {notification.message} -
- -
- - -
-
-
- -
- ); -} - -function NotificationToasts() { - const { list } = useNotifications(); - const [toasts, setToasts] = useState>([]); - - useEffect(() => { - const currentToasts = Object.entries(list).map(([id, data]) => ({ - id, - ...data, - timestamp: Date.now(), - })); - - setToasts((prev) => { - const existingIds = new Set(prev.map(t => t.id)); - const newToasts = currentToasts.filter(toast => !existingIds.has(toast.id)); - - const updatedToasts = prev.map((toast) => { - const updated = currentToasts.find(t => t.id === toast.id); - return updated ? { ...toast, ...updated } : toast; - }); - - const currentIds = new Set(currentToasts.map(t => t.id)); - const filteredToasts = updatedToasts.filter(toast => currentIds.has(toast.id)); - - return [...filteredToasts, ...newToasts]; - }); - }, [list]); - - const removeToast = (id: string) => { - setToasts(prev => prev.filter(toast => toast.id !== id)); - }; - - if (toasts.length === 0) - return null; - - return ( -
-
- {toasts.map(toast => ( - - ))} -
-
- ); -} - -export default NotificationToasts; diff --git a/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx b/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx deleted file mode 100644 index e59b3836..00000000 --- a/apps/onelauncher/frontend/src/components/overlay/popups/AccountPopup.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import PlayerHead from '@/components/content/PlayerHead'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button } from '@onelauncher/common/components'; -import { Link } from '@tanstack/react-router'; -import { PlusIcon, Settings01Icon } from '@untitled-theme/icons-react'; -import { twMerge } from 'tailwind-merge'; - -function AccountPopup() { - const users = useCommand('getUsers', bindings.core.getUsers); - const defaultUser = useCommand('getDefaultUser', () => bindings.core.getDefaultUser(false)); - - const addAccount = useCommand('openMsaLogin', bindings.core.openMsaLogin, { - enabled: false, - subscribed: false, - }); - - const setDefaultUser = (user: MinecraftCredentials) => { - bindings.core.setDefaultUser(user.id); - }; - - return ( -
- {defaultUser.data && ( -
- { }} - user={defaultUser.data} - /> -
- )} - - {users.data.filter(user => user.id !== defaultUser.data?.id).map(user => ( -
- setDefaultUser(user)} - user={user} - /> -
- ))} - -
-
- -
-
- - - -
-
-
- ); -} - -export default AccountPopup; - -function AccountEntry({ - onClick, - user, - loggedIn = false, -}: { - onClick: () => void; - user: MinecraftCredentials; - loggedIn?: boolean; -}) { - return ( -
-
- -
-
-

{user.username}

- {loggedIn &&

Logged in

} -
-
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/components/overlay/popups/NotificationPopup.tsx b/apps/onelauncher/frontend/src/components/overlay/popups/NotificationPopup.tsx deleted file mode 100644 index 35c5927b..00000000 --- a/apps/onelauncher/frontend/src/components/overlay/popups/NotificationPopup.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import useNotifications from '@/hooks/useNotification'; -import { Button } from '@onelauncher/common/components'; -import { InfoCircleIcon, Trash01Icon } from '@untitled-theme/icons-react'; - -function NotificationPopup() { - const { list, clear } = useNotifications(); - const notificationEntries = Object.entries(list); - - if (notificationEntries.length === 0) - return ( -
-

No notifications

-
- ); - - return ( -
-
-
-

Notifications

-
- -
- {notificationEntries.map(([id, data]) => ( -
-
- -
- -
-

- {data.title} -

-

- {data.message} -

-
- -
-
-
-
- ))} -
- -
- - {notificationEntries.length > 0 && ( -
- - {/* */} -
- )} -
-
- ); -} - -export default NotificationPopup; diff --git a/apps/onelauncher/frontend/src/fonts.ts b/apps/onelauncher/frontend/src/fonts.ts deleted file mode 100644 index bc81d9d9..00000000 --- a/apps/onelauncher/frontend/src/fonts.ts +++ /dev/null @@ -1,14 +0,0 @@ -import '@fontsource/poppins/300.css'; -import '@fontsource/poppins/300-italic.css'; -import '@fontsource/poppins/400.css'; -import '@fontsource/poppins/400-italic.css'; -import '@fontsource/poppins/500.css'; -import '@fontsource/poppins/500-italic.css'; -import '@fontsource/poppins/600.css'; -import '@fontsource/poppins/600-italic.css'; -import '@fontsource/poppins/700.css'; -import '@fontsource/poppins/700-italic.css'; -import '@fontsource/poppins/800.css'; -import '@fontsource/poppins/800-italic.css'; -import '@fontsource/poppins/900.css'; -import '@fontsource/poppins/900-italic.css'; diff --git a/apps/onelauncher/frontend/src/hooks/useBrowser.tsx b/apps/onelauncher/frontend/src/hooks/useBrowser.tsx deleted file mode 100644 index 5fe811ae..00000000 --- a/apps/onelauncher/frontend/src/hooks/useBrowser.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import type { ClusterModel, GameLoader, ManagedPackage, ManagedVersion, PackageCategories, Paginated, Provider, SearchQuery, SearchResult } from '@/bindings.gen'; -import type { BindingCommands } from '@/types/global'; -import type { UndefinedInitialDataOptions } from '@tanstack/react-query'; -import type { Dispatch, SetStateAction } from 'react'; -import { bindings } from '@/main'; -import { PROVIDERS } from '@/utils'; -import { useCommand, useCommandMut } from '@onelauncher/common'; -import { useNavigate } from '@tanstack/react-router'; -import { createContext, useContext, useEffect, useMemo, useState } from 'react'; - -export interface BrowserControllerType { - cluster: ClusterModel | undefined; - setCluster: Dispatch>; - provider: Provider; - setProvider: Dispatch>; - query: SearchQuery; - setQuery: Dispatch>; - search: () => void; -} - -const BrowserContext = createContext(null); - -export function useBrowserContext() { - const context = useContext(BrowserContext); - if (!context) - throw new Error('useBrowserContext must be used within a BrowserProvider'); - return context; -} - -export function BrowserProvider(props: any) { - const { children } = props; - const [cluster, setCluster] = useState(undefined); - const [provider, setProvider] = useState(PROVIDERS[0]); - const navigate = useNavigate(); - const [query, setQuery] = useState({ - filters: { - categories: null, - game_versions: null, - loaders: null, - package_type: 'mod', - }, - query: null, - limit: 18 as unknown as bigint, - offset: null, - sort: null, - }); - - useEffect(() => { - if (query.filters?.categories || query.query) - navigate({ to: '/app/browser/search' }); - }, [navigate, query]); - - const context = useMemo(() => ({ - cluster, - setCluster, - provider, - setProvider, - query, - setQuery, - search: () => {}, - }), [cluster, provider, query]); - - return ( - - {children} - - ); -} - -export function getCategories(categories: PackageCategories) { - if ('Mod' in categories) - return categories.Mod; - if ('ResourcePack' in categories) - return categories.ResourcePack; - if ('Shader' in categories) - return categories.Shader; - if ('DataPack' in categories) - return categories.DataPack; - if ('ModPack' in categories) - return categories.ModPack; - return []; -} - -export function useBrowserSearch(provider: Provider, query: SearchQuery, options?: Omit>, 'queryKey' | 'queryFn'> | undefined) { - const validFilters = useMemo(() => Object.values(query.filters ?? {}).filter(a => a).length > 0, [query.filters]); - return useCommand(`search.${provider}`, () => bindings.core.searchPackages(provider, validFilters ? query : { ...query, filters: null }), options); -} - -export function usePackageData(provider: Provider, slug: string, options?: Omit, 'queryKey' | 'queryFn'> | undefined, key: false | BindingCommands | (string & {}) = `getPackage.${provider}.${slug}`) { - return useCommand(key, () => bindings.core.getPackage(provider, slug), options); -} - -export function usePackageVersions(provider: Provider, slug: string, { mc_version, loader, offset, limit, ...options }: { mc_version?: string | null; loader?: GameLoader | null; offset?: number; limit: number } & Omit>, 'queryKey' | 'queryFn'>, key: false | BindingCommands | (string & {}) = `getPackageVersions.${provider}.${slug}.${mc_version}.${loader}.${offset}`) { - return useCommand(key, () => bindings.core.getPackageVersions(provider, slug, mc_version ?? null, loader ?? null, (offset ?? 0) as unknown as bigint, limit as unknown as bigint), options); -} - -export function useDownloadPackage(cluster: ClusterModel, provider: Provider, version: ManagedVersion, skipCompatibility = false) { - return useCommandMut(() => bindings.core.downloadPackage(provider, version.project_id, version.version_id, cluster.id, skipCompatibility)); -} diff --git a/apps/onelauncher/frontend/src/hooks/useCluster.tsx b/apps/onelauncher/frontend/src/hooks/useCluster.tsx deleted file mode 100644 index 3d1a3549..00000000 --- a/apps/onelauncher/frontend/src/hooks/useCluster.tsx +++ /dev/null @@ -1,167 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import type { ModalProps } from '@/components/overlay/Modal'; -import Modal from '@/components/overlay/Modal'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Dropdown } from '@onelauncher/common/components'; -import { useEffect, useState } from 'react'; -import { Heading } from 'react-aria-components'; - -export function useRecentCluster() { - const result = useCommand('getClusters', bindings.core.getClusters); - const [cluster, setCluster] = useState(); - - useEffect(() => { - if (!result.isSuccess) - return; - - let mostRecentCluster: ClusterModel | undefined; - - for (const c of result.data) { - if (!mostRecentCluster) { - mostRecentCluster = c; - continue; - } - - const currentPlayed = mostRecentCluster.last_played; - const newPlayed = c.last_played; - - if (typeof currentPlayed !== 'string' && typeof newPlayed === 'string') { - mostRecentCluster = c; - } - else if (typeof currentPlayed === 'string' && typeof newPlayed === 'string') { - const playedAt = new Date(currentPlayed); - const clusterPlayedAt = new Date(newPlayed); - - if (clusterPlayedAt > playedAt) - mostRecentCluster = c; - } - } - - setCluster(mostRecentCluster); - }, [result.data, result.isSuccess]); - - return cluster; -} - -export function useClusters() { - const result = useCommand('getClusters', bindings.core.getClusters); - const [clusters, setClusters] = useState | undefined>(); - - useEffect(() => { - if (!result.isSuccess) - return; - setClusters(result.data); - }, [result.data, result.isSuccess]); - - return clusters; -} - -type ChooseClusterModalProps = ModalProps & { - clusters?: Array; - confirmText?: string; - selected?: (clusters: Array) => number; - onSelected?: (cluster: ClusterModel) => void; -}; - -export function ChooseClusterModal({ clusters: clusterList, selected: defaultSelected, onSelected, confirmText, ...props }: ChooseClusterModalProps) { - const clusters = useClusters(); - const [selected, setSelected] = useState(0); - - useEffect(() => { - if (!clusters) - return; - - const newSelected = defaultSelected?.(clusters); - - if (newSelected) - setSelected(newSelected); - }, [clusters, defaultSelected]); - - function chooseCluster() { - if (clusters !== undefined) { - const cluster = clusters[selected] as ClusterModel | undefined; - if (cluster !== undefined) - onSelected?.(cluster); - } - } - - return ( - -
- - Select a Cluster - { - setSelected(index as number); - }} - selectedKey={selected} - > - {clusters?.map((cluster, index) => ( - - {cluster.name} - - ))} - - -
-
-
-
- ); - - // return ( - // , - // -
-
- )} - - ); -} - -export function useSettings(): SettingsControllerType { - const context = useContext(SettingsContext); - - if (!context) - throw new Error('useSettings should be called inside its SettingsProvider'); - - return context; -} - -export default useSettings; diff --git a/apps/onelauncher/frontend/src/main.tsx b/apps/onelauncher/frontend/src/main.tsx deleted file mode 100644 index 547eea8b..00000000 --- a/apps/onelauncher/frontend/src/main.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { isDev, registerDevExperience, registerNativeExperience } from '@onelauncher/common'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { createHashHistory, createRouter, RouterProvider } from '@tanstack/react-router'; -import { StrictMode } from 'react'; -import ReactDOM from 'react-dom/client'; -import { createTauRPCProxy } from './bindings.gen'; -import { NotificationProvider } from './hooks/useNotification'; - -import { SettingsProvider } from './hooks/useSettings'; -import { routeTree } from './routeTree.gen'; -import './fonts'; -import 'overlayscrollbars/overlayscrollbars.css'; -import './styles/global.css'; - -// Tauri bindings -export const bindings = createTauRPCProxy(); - -// Tanstack Query Client -const queryClient = new QueryClient({ - defaultOptions: { - queries: { - retry: false, - enabled: false, - }, - }, -}); - -const hashHistory = createHashHistory(); - -// Tanstack Router -const router = createRouter({ - routeTree, - context: { - queryClient, - }, - defaultPreload: 'intent', - scrollRestoration: true, - defaultStructuralSharing: true, - defaultPreloadStaleTime: 0, - defaultNotFoundComponent: () =>
Not Found
, - history: hashHistory, -}); - -declare module '@tanstack/react-router' { - interface Register { - router: typeof router; - } -} - -// Register UX changes -if (isDev) - registerDevExperience(); - -registerNativeExperience(); - -// Render the app -const rootElement = document.getElementById('app'); -if (rootElement && !rootElement.innerHTML) { - const root = ReactDOM.createRoot(rootElement); - root.render( - - - - - - - - - , - ); -} diff --git a/apps/onelauncher/frontend/src/routes/__root.tsx b/apps/onelauncher/frontend/src/routes/__root.tsx deleted file mode 100644 index 66e31747..00000000 --- a/apps/onelauncher/frontend/src/routes/__root.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import type { QueryClient } from '@tanstack/react-query'; -import type { NavigateOptions, ToOptions } from '@tanstack/react-router'; -import NotificationToasts from '@/components/overlay/NotificationToasts'; -import WindowFrame from '@/components/WindowFrame'; -import { AnimatedOutletProvider } from '@onelauncher/common/components'; -import { createRootRouteWithContext, Outlet, useRouter } from '@tanstack/react-router'; -import { TanStackRouterDevtools } from '@tanstack/react-router-devtools'; -import { RouterProvider } from 'react-aria-components'; - -interface MyRouterContext { - queryClient: QueryClient; -} - -declare module 'react-aria-components' { - interface RouterConfig { - href: ToOptions['to']; - routerOptions: Omit; - } -} - -export const Route = createRootRouteWithContext()({ - component: RootRoute, -}); - -function RootRoute() { - const router = useRouter(); - return ( - - router.navigate({ to, ...options })} - useHref={to => router.buildLocation({ to }).href} - > -
- - - - - - -
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx b/apps/onelauncher/frontend/src/routes/app/browser/index.tsx deleted file mode 100644 index 3dae0e40..00000000 --- a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import type { Provider } from '@/bindings.gen'; -import OneConfigLogo from '@/assets/logos/oneconfig.svg'; -import { PackageGrid } from '@/components/content/PackageItem'; -import { useBrowserSearch, usePackageData } from '@/hooks/useBrowser'; -import { PROVIDERS } from '@/utils'; -import { Button, Show } from '@onelauncher/common/components'; -import { createFileRoute, useNavigate } from '@tanstack/react-router'; -import { ChevronRightIcon } from '@untitled-theme/icons-react'; -import { useMemo, useState } from 'react'; -import { BrowserLayout } from './route'; - -export const Route = createFileRoute('/app/browser/')({ - component: RouteComponent, - -}); - -function RouteComponent() { - return ( - -
- - -
-
- ); -} - -function Featured() { - // const context = useBrowserContext(); - const [provider, slug] = useMemo<[Provider, string]>(() => ['Modrinth', 'iris'], []); - const featuredPackage = usePackageData(provider, slug, {}); - const navigate = useNavigate(); - const featuredImageIndex = useMemo(() => featuredPackage.data.gallery.findIndex(image => image.featured), [featuredPackage.data]); - const [selectedImage, setSelectedImage] = useState(featuredImageIndex === -1 ? 0 : featuredImageIndex); - - return ( - -
-
Featured
-
-
- thumbnail -
-
-

{featuredPackage.data.name}

- - -
- OneConfig Logo - OneConfig Integrated -
-
- -

{featuredPackage.data.short_desc}

- -
- {featuredPackage.data.gallery.map( - (image, index) => ( - setSelectedImage(index)} - src={image.url} - /> - ), - )} -
- -
- -
-
-
-
-
- ); -} - -function Lists() { - return ( -
- {PROVIDERS.map(provider => ( - - ))} -
- ); -} - -function List({ provider }: { provider: Provider }) { - const search = useBrowserSearch(provider, { - filters: null, - limit: 24 as unknown as bigint, - offset: null, - query: null, - sort: null, - }); - const [expanded, setExpanded] = useState(false); - return ( -
-
{provider}
-
- {search.isSuccess - ? - :

Loading...

} - -
- -
-
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/browser/package.$provider.$id.tsx b/apps/onelauncher/frontend/src/routes/app/browser/package.$provider.$id.tsx deleted file mode 100644 index eb01eacb..00000000 --- a/apps/onelauncher/frontend/src/routes/app/browser/package.$provider.$id.tsx +++ /dev/null @@ -1,489 +0,0 @@ -import type { ClusterModel, ManagedPackage, ManagedUser, ManagedVersion, PackageDonationUrl, Provider } from '@/bindings.gen'; -import type { HTMLProps } from 'react'; -import Modal from '@/components/overlay/Modal'; -import { useBrowserContext, useDownloadPackage, usePackageData, usePackageVersions } from '@/hooks/useBrowser'; -import { ChooseClusterModal, useClusters } from '@/hooks/useCluster'; -import { bindings } from '@/main'; -import { abbreviateNumber, formatAsRelative, includes, PROVIDERS, upperFirst } from '@/utils'; -import { useCommand, usePagination } from '@onelauncher/common'; -import { Button, Show, Tooltip } from '@onelauncher/common/components'; -import { createFileRoute, Link } from '@tanstack/react-router'; -import { openUrl } from '@tauri-apps/plugin-opener'; -import { CalendarIcon, ChevronDownIcon, ChevronUpIcon, ClockRewindIcon, Download01Icon, File02Icon, LinkExternal01Icon } from '@untitled-theme/icons-react'; -import { createContext, useEffect, useMemo, useRef, useState } from 'react'; -import { Cell, Collection, Column, ListBox, ListBoxItem, Popover, Pressable, Row, Select, Tab, Table, TableBody, TableHeader, TabList, TabPanel, Tabs } from 'react-aria-components'; -import Markdown from 'react-markdown'; -import rehypeRaw from 'rehype-raw'; -import remarkGfm from 'remark-gfm'; -import { twMerge } from 'tailwind-merge'; - -export const Route = createFileRoute('/app/browser/package/$provider/$id')({ - component: RouteComponent, -}); - -function CustomA({ href, children, includeIcon, className, ...rest }: { href: string; children: any; includeIcon?: boolean } & HTMLProps) { - return ( - { - e.preventDefault(); - openUrl(href); - }} - {...rest} - > - {children} - {includeIcon && } - - ); -} - -interface PackageContextType { - pkg: ManagedPackage | undefined; -} - -const PackageContext = createContext({ - pkg: undefined, -}); - -function RouteComponent() { - const { provider, id } = Route.useParams(); - if (!includes(PROVIDERS, provider)) - throw new Error('Invalid provider'); - const packageData = usePackageData(provider, id, {}); - const { data: packageBody } = useCommand('getPackageBody', () => bindings.core.getPackageBody(provider, packageData.data.body)); - const packageContextValue = useMemo(() => ({ - pkg: packageData.data, - }), [packageData.data]); - - return ( - - -
- - - - - About - Versions - Gallery - - -
- , - }} - rehypePlugins={[rehypeRaw]} - remarkPlugins={[remarkGfm]} - > - {packageBody} - -
-
- - - - - - {packageData.data.gallery.map(item => ( - - -
- - {item.title &&
{item.title}
} -
-
- - - -
- ))} - -
-
- -
-
-
- ); -} - -function getPackageUrl(pkg: ManagedPackage): string { - switch (pkg.provider) { - case 'Modrinth': return `https://modrinth.com/project/${pkg.slug}`; - case 'CurseForge': return `https://www.curseforge.com/minecraft/${pkg.package_type}s/${pkg.slug}`; - case 'SkyClient': return ``; - } -} - -function BrowserSidebar({ package: pkg }: { package: ManagedPackage }) { - const { provider } = Route.useParams(); - - const createdAt = useMemo(() => pkg.created ? new Date(pkg.created) : null, [pkg.created]); - const updatedAt = useMemo(() => pkg.updated ? new Date(pkg.updated) : null, [pkg.updated]); - - const authors = useCommand('getUsersFromAuthor', () => bindings.core.getUsersFromAuthor(provider as Provider, pkg.author)); - - return ( -
-
-
- {`Icon - {`Icon -
-
-
-

{pkg.name}

-

- {pkg.package_type} - {' '} - on - {' '} - {pkg.provider} -

-
- -

{pkg.short_desc}

- -
- -
- - {abbreviateNumber(pkg.downloads)} -
-
-
-
-
- - - -
-

Links

-
- - {provider} - {' '} - Page - - {(Object.entries(pkg.links) as Array<[keyof typeof pkg.links, typeof pkg.links[keyof typeof pkg.links]]>).filter(a => a[1]).map(link => - typeof link[1] == 'string' - ? ( - - ) - : (link[1] as Array).map(donationLink => ( - - )))} -
-
- -
-

Authors

- { - authors.isSuccess - ? authors.data.map(author => ) - :

Loading...

- } - -
- -
-

Details

- -
- - License - - {pkg.license?.name || pkg.license?.id || 'Unknown'} - -
-
- - - -
- - Created - - {formatAsRelative(createdAt!.getTime(), 'en', 'long')} - -
-
-
- - - -
- - Last Updated - - {formatAsRelative(updatedAt!.getTime(), 'en', 'long')} - -
-
-
-
- -
- ); -} - -function InstallButton() { - const triggerRef = useRef(null); - const { provider, id } = Route.useParams(); - if (!includes(PROVIDERS, provider)) - throw new Error('invalid provider'); - const [open, setOpen] = useState(false); - const clusters = useClusters(); - const browserContext = useBrowserContext(); - const { data: versions, isLoading: versionsLoading } = usePackageVersions(provider, id, { - mc_version: browserContext.cluster ? browserContext.cluster.mc_version : null, - loader: browserContext.cluster ? browserContext.cluster.mc_loader : null, - limit: 1, - }); - const version = useMemo(() => { - if (!browserContext.cluster) - return undefined; - return versions.items[0]; - }, [browserContext.cluster, versions]); - - const download = useDownloadPackage( - (browserContext.cluster || {}) as ClusterModel, - provider, - (version || {}) as ManagedVersion, - true, - ); - const downloadRef = useRef(download); - useEffect(() => { - downloadRef.current.reset(); - }, [browserContext.cluster]); - - // function download() { - // if (!version || !browserContext.cluster || !includes(PROVIDERS, provider)) - // return false; - // downloadPackage(browserContext.cluster, provider, version); - // } - - return ( - -
- - - - -
- - ); -} - -function Author({ author }: { author: ManagedUser }) { - // TODO: onclick and fallback avatar url - return ( - { - if (author.url) - openUrl(author.url); - }} - > - {`${author.username}'s -
- {author.username} - - - Organization - - - - {author.role} - -
- -
- - ); -} - -function colorForType(type: string) { - switch (type.toLowerCase()) { - case 'release': - return 'bg-code-trace/30'; - case 'snapshot': - return 'bg-code-debug/30'; - case 'beta': - return 'bg-code-warn/30'; - case 'alpha': - return 'bg-code-error/30'; - default: - return 'bg-border/30'; - } -} - -function Versions() { - const { provider, id } = Route.useParams(); - if (!includes(PROVIDERS, provider)) - throw new Error('invalid provider'); - const [offset, setOffset] = useState(0); - - const { data: versions } = usePackageVersions(provider, id, { - limit: 20, - offset, - }); - - const pagination = usePagination({ - itemsCount: versions.total as unknown as number, - itemsPerPage: versions.limit as unknown as number, - }); - const paginationRef = useRef(pagination); - useEffect(() => { - setOffset(pagination.offset); - }, [pagination.offset]); - useEffect(() => { - paginationRef.current.reset(); - }, [versions.total]); - return ( -
-
- -
- - - - Name - Game Versions - Loaders - Created - Downloads - - - - {versions.items.map(item => - )} - -
-
- ); -} - -function VersionRow({ version }: { version: ManagedVersion }) { - const { provider } = Route.useParams(); - if (!includes(PROVIDERS, provider)) - throw new Error('invalid provider'); - return ( - - - -
- {version.release_type.charAt(0).toUpperCase()} -
-
-
- {version.display_name} - {version.mc_versions.join(', ')} - {version.loaders.map(upperFirst).join(', ')} - {formatAsRelative(Date.parse(version.published))} - {version.downloads} - - - - )} - description="Edit the cluster name and cover image." - icon={} - title="Edit Cluster" - /> - - )} - description="Delete this cluster and all its data." - disabled={false} - icon={} - title="Delete Cluster" - /> - - )} - description="Verifies whether all assets, libraries and natives were properly installed." - icon={} - title="Verify Cluster" - /> -
- - - ); -} - -interface BannerProps { - cluster: ClusterModel | null | undefined; - editMode: boolean; - newName: string; - setNewName: Dispatch>; - newCover: string; - setNewCover: Dispatch>; - refetch: () => void; -} - -function Banner({ - cluster, - editMode, - newCover, - setNewName, - setNewCover, -}: BannerProps) { - const { set } = useNotifications(); - - async function launchFilePicker() { - const selected = await open({ - multiple: false, - directory: false, - filters: [{ - name: 'Image', - extensions: ['png', 'jpg', 'jpeg', 'webp'], - }], - }); - - if (selected === null) - return; - - setNewCover(selected); - } - - const launch = useCommand('launchCluster', () => bindings.core.launchCluster(cluster?.id as bigint, null), { - enabled: false, - subscribed: false, - }); - - const handleLaunch = () => { - launch.refetch(); - - if (launch.isError) - set('launch_cluster', { - title: 'Failed to launch cluster', - message: launch.error.message, - }); - }; - - function updateName(name: string) { - if (name.length > 30 || name.length <= 0) - return; - - setNewName(name); - } - - const image = () => { - if (editMode && newCover && newCover !== cluster?.icon_url) - if (newCover.includes('\\') || newCover.includes('/')) { - console.warn('Using preview image:', newCover); - return convertFileSrc(newCover); - } - - const url = cluster?.icon_url; - - if (!url) - return DefaultInstancePhoto; - - return convertFileSrc(url); - }; - - return ( -
-
- -
- -
-
- - {/* */} - { - console.error('Failed to load cluster icon:', image(), e); - (e.target as HTMLImageElement).src = DefaultInstancePhoto; - }} - src={image()} - /> -
- -
-
- {cluster?.name} - } - when={editMode} - > - updateName(e.target.value)} - placeholder={cluster?.name} - /> - -
- -
-
- - - {cluster?.mc_version} - {cluster?.mc_loader || 'unknown'} - {cluster?.mc_loader_version && {cluster.mc_loader_version}} - - - Played for - {' '} - {formatAsDuration(cluster?.overall_played || 0)} - . - -
- -
-
-
- -
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/logs.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/logs.tsx deleted file mode 100644 index 59e5c9f5..00000000 --- a/apps/onelauncher/frontend/src/routes/app/cluster/logs.tsx +++ /dev/null @@ -1,223 +0,0 @@ -import type { ProcessPayload } from '@/bindings.gen'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Show } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { openPath } from '@tauri-apps/plugin-opener'; -import { LinkExternal01Icon, Upload01Icon } from '@untitled-theme/icons-react'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; -import { useEffect } from 'react'; -import { proxy, useSnapshot } from 'valtio'; -import Sidebar from '../settings/route'; - -export const Route = createFileRoute('/app/cluster/logs')({ - component: RouteComponent, -}); - -const store = proxy({ - logs: [] as Array, -}); - -function RouteComponent() { - const { id: _id } = Route.useSearch(); - const cluster = useCommand('getClusterById', () => bindings.core.getClusterById(Number(_id.toString()) as unknown as bigint)); - const state = useSnapshot(store); - - const addLog = (newLog: ProcessPayload) => { - store.logs.push(newLog); - }; - - useEffect(() => { - let cleanup: (() => void) | undefined; - - bindings.events.process.on(addLog).then((e) => { - cleanup = e; - }).catch(console.error); - - return () => { - cleanup?.(); - }; - }, []); - - const openLogsFolder = async () => { - openPath(await join(await dataDir(), 'OneLauncher', 'clusters', cluster.data?.folder_name as string, 'logs')); - }; - - return ( - - -
-
-
-
-

Logs

-
- - - {/* - - {(log) => { - const pretty = log.split('/').pop(); - return ( - -
- {pretty} -
-
- ); - }} -
-
*/} - - -
-
- - No logs were found.} - when={state.logs.length > 0} - > - - {/* {JSON.stringify(state.logs)} */} - -
-
-
-
-
- ); -} - -interface FormattedLogProps { - log: ReadonlyArray; -} - -function FormattedLog(props: FormattedLogProps) { - const { log } = props; - - return ( -
- -
- -
- - - {log.map((logLine, index) => { - if (index === log.length - 1) - return null; - - // trickery fuckery - const lineKey = `${logLine.type}-${index}-${(logLine.type === 'Output' ? logLine.output : '').slice(0, 50)}`; - return ; - })} - - -
-
- ); -} - -const REGEX_PATTERN = /\[(\d+:\d+:\d+)\] \[(.[^(\n\r/\u2028\u2029]*)\/(\w+)\]:? (?:\[(CHAT)\])?/; - -export function Line(props: { line: ProcessPayload }) { - const { line } = props; - - const format = (logText: string) => { - let processedLine = logText.replace(/§./g, ''); - const prefix = processedLine.match(REGEX_PATTERN); - - const isEmpty = processedLine.trim() === ''; - - if (isEmpty) - processedLine = '\n'; - - if (prefix === null) - return ( - - {processedLine} - - ); - - const isChatMsg = prefix[4] === 'CHAT'; - const logLevel = prefix[3].toUpperCase(); - - const getLevelColor = (level: string) => { - switch (level) { - case 'INFO': - return 'text-code-info'; - case 'DEBUG': - return 'text-code-debug'; - case 'TRACE': - return 'text-code-trace'; - case 'WARN': - return 'text-code-warn'; - case 'ERROR': - return 'text-code-error'; - default: - return 'text-fg-primary'; - } - }; - - return ( - - - {prefix[1]} - - - {`[${prefix[2]}/${prefix[3]}]`} - - {isChatMsg && ( - - CHAT - - )} - - {processedLine.slice(prefix[0].length)} - - - ); - }; - - return ( - <>{format(line.type === 'Output' ? line.output : '')} - ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx deleted file mode 100644 index bccb8424..00000000 --- a/apps/onelauncher/frontend/src/routes/app/cluster/route.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { createFileRoute, Outlet } from '@tanstack/react-router'; -import { EyeIcon, File06Icon, Globe04Icon, Image03Icon, PackagePlusIcon, Settings04Icon } from '@untitled-theme/icons-react'; -import Sidebar from '../settings/route'; - -interface ClusterSearch { - id: bigint; -} - -export const Route = createFileRoute('/app/cluster')({ - component: RouteComponent, - validateSearch: (search: Record): ClusterSearch => { - return { - id: BigInt(search.id as string), - }; - }, -}); - -function RouteComponent() { - const { id } = Route.useSearch(); - - const cluster = useCommand('getClusterById', () => bindings.core.getClusterById(Number(id.toString()) as unknown as bigint)); - - const isModded = cluster.data?.mc_loader !== 'vanilla'; - - return ( -
-
- , 'Overview', `/?id=${id}`], - (isModded ? [, 'Mods', `/mods?id=${id}`] : undefined), - [, 'Screenshots', `/screenshots?id=${id}`], - [, 'Worlds', `/worlds?id=${id}`], - [, 'Logs', `/logs?id=${id}`], - [, 'Game Settings', `/settings?id=${id}`], - ], - }} - /> - {/* */} -
- -
- -
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx deleted file mode 100644 index a70cc598..00000000 --- a/apps/onelauncher/frontend/src/routes/app/cluster/screenshots.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import Modal from '@/components/overlay/Modal'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Show } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { convertFileSrc } from '@tauri-apps/api/core'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { useEffect, useState } from 'react'; -import { Pressable } from 'react-aria-components'; -import Sidebar from '../settings/route'; - -export const Route = createFileRoute('/app/cluster/screenshots')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { id } = Route.useSearch(); - const cluster = useCommand('getClusterById', () => bindings.core.getClusterById(Number(id.toString()) as unknown as bigint)); - const result = useCommand('getScreenshots', () => bindings.core.getScreenshots(Number(id.toString()) as unknown as bigint)); - - return ( - -

Screenshots

- -
- No screenshots found. Press F2 in game to take a screenshot!
} - // @ts-ignore idk - when={result.data.length > 0} - > -
- {result.data.map(data => ( - - ))} -
- -
- - - ); -} - -function ScreenshotEntry({ - path, - cluster_path, -}: { - path: string; - cluster_path: string; -}) { - const [imagePath, setImagePath] = useState(''); - - useEffect(() => { - async function loadImagePath() { - const screenshotsDir = await join(await dataDir(), 'OneLauncher', 'clusters', cluster_path, 'screenshots'); - const fullPath = await join(screenshotsDir, path); - setImagePath(convertFileSrc(fullPath)); - } - - loadImagePath().catch(console.error); - }, [cluster_path, path]); - - return ( - <> - - -
- {path} -
-
- - - -
- - ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx deleted file mode 100644 index 9843f1c6..00000000 --- a/apps/onelauncher/frontend/src/routes/app/cluster/settings.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import ScrollableContainer from '@/components/ScrollableContainer'; -import usePopState from '@/hooks/usePopState'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { createFileRoute } from '@tanstack/react-router'; -import { GameSettings, ProcessSettings } from '../settings/minecraft'; -import Sidebar from '../settings/route'; - -export const Route = createFileRoute('/app/cluster/settings')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { id } = Route.useSearch(); - - const cluster = useCommand('getClusterById', () => bindings.core.getClusterById(Number(id.toString()) as unknown as bigint)); - const _result = useCommand('getProfileOrDefault', () => bindings.core.getProfileOrDefault(cluster.data?.setting_profile_name as string), { - enabled: !!cluster.data?.setting_profile_name, - }); - - const save = useCommand('updateClusterProfile', () => bindings.core.updateClusterProfile(cluster.data?.name as string, _result.data), { - enabled: false, - subscribed: false, - }); - - usePopState(() => { - save.refetch(); - }); - - return ( - - -
-

Minecraft Settings

- - - - -
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx b/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx deleted file mode 100644 index 6e051f9a..00000000 --- a/apps/onelauncher/frontend/src/routes/app/cluster/worlds.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import WorldIcon from '@/components/content/WorldIcon'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Show } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { Trash01Icon } from '@untitled-theme/icons-react'; -import Sidebar from '../settings/route'; - -export const Route = createFileRoute('/app/cluster/worlds')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { id } = Route.useSearch(); - const cluster = useCommand('getClusterById', () => bindings.core.getClusterById(Number(id.toString()) as unknown as bigint)); - const list = useCommand('getWorlds', () => bindings.core.getWorlds(Number(id.toString()) as unknown as bigint)); - - return ( - -

Worlds

- -
- No worlds found.
} - when={list.data.length > 0} - > -
- {list.data.map(data => ( - - ))} -
- -
- - - ); -} - -function WorldEntry(props: { name: string; cluster_path: string }) { - const { name, cluster_path } = props; - - return ( -
-
- -
-

{name}

-

Todo

-
-
- -
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/dev.tsx b/apps/onelauncher/frontend/src/routes/app/dev.tsx deleted file mode 100644 index c7045a91..00000000 --- a/apps/onelauncher/frontend/src/routes/app/dev.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import Modal from '@/components/overlay/Modal'; -import useNotifications from '@/hooks/useNotification'; -import useSettings from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Dropdown, Switch, TextField } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/app/dev')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { create, list, clear } = useNotifications(); - const { settings, createSetting } = useSettings(); - const result = useCommand('read_settings', bindings.core.readSettings); - - const addSimpleNotif = () => { - create({ - message: 'This is a simple notification message', - title: 'Simple Notification', - }); - }; - - const addProgressNotif = () => { - create({ - message: 'Download in progress...', - title: 'Downloading File', - fraction: Math.floor(Math.random() * 100), - }); - }; - - const addErrorNotif = () => { - create({ - message: 'Something went wrong while processing your request', - title: 'Error', - }); - }; - - const [parallel, setParallel] = createSetting('allow_parallel_running_clusters', settings?.allow_parallel_running_clusters); - - return ( -
-

this is really became my test place fr

- - - - {/* we can open the modal but we cant close it for some reason */} - - - - -

sadsadsad

-
-
- -
- - Slmalr - Slmalr 2 - -
- -
- - - - -
- -
-

- Current Notifications ( - {Object.keys(list).length} - ): -

-
-					{JSON.stringify(list, null, 2)}
-				
-
- -
-
-
-

Settings

-
-							{JSON.stringify(result.data, null, 2)}
-						
-
- -
-

Settings again but this time its from useSettings hook

-
-							{JSON.stringify(settings, null, 2)}
-						
-
-
- -
-
-
-							{parallel ? 'Parallel running is enabled' : 'Parallel running is disabled'}
-						
- setParallel(val)} /> -
-
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/index.tsx b/apps/onelauncher/frontend/src/routes/app/index.tsx deleted file mode 100644 index b279b270..00000000 --- a/apps/onelauncher/frontend/src/routes/app/index.tsx +++ /dev/null @@ -1,231 +0,0 @@ -import type { ClusterModel } from '@/bindings.gen'; -import DefaultBanner from '@/assets/images/default_banner.png'; -import DefaultInstancePhoto from '@/assets/images/default_instance_cover.jpg'; -import { NewClusterCreate } from '@/components/launcher/cluster/ClusterCreation'; -import { useRecentCluster } from '@/hooks/useCluster'; -import { bindings } from '@/main'; -import { formatAsDuration, upperFirst } from '@/utils'; -import { useCommand, useCommandMut } from '@onelauncher/common'; -import { Button, Show } from '@onelauncher/common/components'; -import { createFileRoute, Link } from '@tanstack/react-router'; -import { convertFileSrc } from '@tauri-apps/api/core'; -import { PlayIcon } from '@untitled-theme/icons-react'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; - -export const Route = createFileRoute('/app/')({ - component: RouteComponent, -}); - -/* -Please note this route has a very big issue related to scrolling -and i am very angry rn so i will not be fixing it rn - -hey future sassan here i guess the issue is solved idk - -hey future sassan here i guess the issue is solved idk -*/ -function RouteComponent() { - const result = useCommand('getClusters', bindings.core.getClusters); - - return ( -
- - -
- -
- -
- -
-
- ); -} - -function Banner() { - /** - * If there are any clusters, display the most recent cluster name + some statistics as the "description". - * The background would prioritise - * any screenshots taken from the cluster, if there are none, it would display the cluster cover if it has been set. - * The button would launch the cluster. - * - * If there are no clusters, display a generic background with the button action creating a new cluster. - */ - const cluster = useRecentCluster(); - - // const launch = useLaunchCluster(() => cluster()?.uuid); - // const navigate = useNavigate(); - - const image = () => { - const url = cluster?.icon_url; - - if (!url) - return DefaultBanner; - - return convertFileSrc(url); - }; - - return ( -
-
-
- Default Banner { - (e.target as HTMLImageElement).src = DefaultBanner; - }} - src={image()} - /> -
-
- -
-
-

{cluster?.name || 'Create a cluster'}

- -

- You've played - {' '} - - {cluster?.mc_version} - {' '} - {upperFirst(cluster?.mc_loader || 'Unknown')} - - {' '} - for - {' '} - {formatAsDuration(cluster?.overall_played || 0)} - . -

-
-
-
-
- {/* -
-
- {/* TODO: These tags */} - {/* } /> - }>Verified */} -
-
-
-
- ); -} - -interface ClusterGroupProps { - clusters: Array | undefined; - isFetching?: boolean; -} - -function ClusterGroup({ - isFetching, - clusters, -}: ClusterGroupProps) { - if (isFetching) - return ( -
-
-
- ); - - return ( -
- -
- {clusters?.map(data => ( - - ))} -
-
-
- ); -} - -function ClusterCard({ - id, - name, - mc_loader, - mc_version, - icon_url, - stage, -}: ClusterModel) { - const launch = useCommandMut(() => bindings.core.launchCluster(id, null)); - - const handleLaunch = () => { - launch.mutate(); - }; - - const image = () => { - const url = icon_url; - - if (!url) - return DefaultInstancePhoto; - - return convertFileSrc(url); - }; - - return ( - <> - -
-
-
- { - (e.target as HTMLImageElement).src = DefaultInstancePhoto; - }} - src={image()} - /> -
-
-
-
-

- {name} -

-

- {mc_loader} - {' '} - {mc_version} -

-
- - {/* */} - -
-
- - - ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/route.tsx b/apps/onelauncher/frontend/src/routes/app/route.tsx deleted file mode 100644 index e18f1696..00000000 --- a/apps/onelauncher/frontend/src/routes/app/route.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import Navbar from '@/components/Navbar'; -import { AnimatedOutlet } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; - -export const Route = createFileRoute('/app')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - <> -
- -
- -
- -
- - - -
-
-
- - ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx b/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx deleted file mode 100644 index 3db1b7c8..00000000 --- a/apps/onelauncher/frontend/src/routes/app/settings/accounts.tsx +++ /dev/null @@ -1,137 +0,0 @@ -import PlayerHead from '@/components/content/PlayerHead'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Show, Tooltip } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { InfoCircleIcon, Trash01Icon, UserPlus02Icon } from '@untitled-theme/icons-react'; -import { useState } from 'react'; -import Sidebar from './route'; - -export const Route = createFileRoute('/app/settings/accounts')({ - component: RouteComponent, -}); - -interface Account { - id: string; - username: string; -} - -function RouteComponent() { - const { data: usersData } = useCommand('getUsers', bindings.core.getUsers); - const { data: defaultUserData } = useCommand('getDefaultUser', () => bindings.core.getDefaultUser(false)); - - const addAccount = useCommand('openMsaLogin', bindings.core.openMsaLogin, { - enabled: false, - subscribed: false, - }); - - return ( - -

Accounts

- -
- No accounts found.

} when={usersData.length > 0}> - {usersData.map(account => ( - - ))} -
-
-
- -
- -
-
- ); -} - -interface AccountRowProps { - account: Account; - isCurrent?: boolean; -}; - -function AccountRow({ account, isCurrent }: AccountRowProps) { - const [errored, setErrored] = useState(false); - - const setDefaultUserCommand = useCommand( - 'setDefaultUser', - () => bindings.core.setDefaultUser(account.id), - { - enabled: false, - subscribed: false, - }, - ); - - const removeUserCommand = useCommand( - 'removeUser', - () => bindings.core.removeUser(account.id), - { - enabled: false, - subscribed: false, - }, - ); - - const handleSetDefault = () => { - setDefaultUserCommand.refetch(); - }; - - const handleDelete = (e: React.MouseEvent) => { - e.stopPropagation(); - removeUserCommand.refetch(); - }; - - return ( -
{ - if (e.key === 'Enter' || e.key === ' ') - handleSetDefault(); - }} - role="button" - tabIndex={0} - > -
- setErrored(true)} - uuid={account.id} - /> -
- -
-
-

{account.username}

- - - - - -
-

{account.id}

-
- -
- -
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/settings/appearance.tsx b/apps/onelauncher/frontend/src/routes/app/settings/appearance.tsx deleted file mode 100644 index c02df999..00000000 --- a/apps/onelauncher/frontend/src/routes/app/settings/appearance.tsx +++ /dev/null @@ -1,230 +0,0 @@ -import ScrollableContainer from '@/components/ScrollableContainer'; -import SettingsRow from '@/components/SettingsRow'; -import useSettings from '@/hooks/useSettings'; -import { bindings } from '@/main'; -import { THEMES } from '@/utils/theming'; -import { Switch } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { Monitor01Icon, PackageIcon, Speedometer04Icon } from '@untitled-theme/icons-react'; -import Sidebar from './route'; - -export const Route = createFileRoute('/app/settings/appearance')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { settings, createSetting } = useSettings(); - - const [windowFrame, setFrameStyle] = createSetting('native_window_frame', settings?.native_window_frame); - - const handleWindowFrameChange = async (value: boolean) => { - await bindings.onelauncher.set_window_style(value); - setFrameStyle(value); - }; - - return ( - - -
-

Appearance

- -
- -
- {/* - {theme => ( - - {variant => ( - - )} - - )} - */} - - {Object.keys(THEMES).map((theme) => { - return THEMES[theme as keyof typeof THEMES].variants.map((variant) => { - return ( - { }} themeSelector={`${theme}-${variant.name}`} /> - ); - }); - })} -
-
- - } - title="Package List Style" - > -

i hope i'll fix this

-
- - } - title="Custom Window Frame" - > - - - - } - title="Disable Animations" - > - - -
-
-
- ); -} - -interface ThemeCardProps { - themeSelector: string; - setTheme: (merged: string) => void; -}; - -function ThemeCard({ - themeSelector, - setTheme, -}: ThemeCardProps) { - return ( -
setTheme(themeSelector)}> - - - - - - - - - -
- ); -} - -function PrimaryThemeCard() { - return ( -
- - - - - - - - - - - - - -
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx b/apps/onelauncher/frontend/src/routes/app/settings/index.tsx deleted file mode 100644 index 5f3c7b25..00000000 --- a/apps/onelauncher/frontend/src/routes/app/settings/index.tsx +++ /dev/null @@ -1,80 +0,0 @@ -import DiscordIcon from '@/assets/logos/discord.svg'; -import SettingsRow from '@/components/SettingsRow'; -import useSettings from '@/hooks/useSettings'; -import { Button, Switch } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { dataDir, join } from '@tauri-apps/api/path'; -import { openPath } from '@tauri-apps/plugin-opener'; -import { FolderIcon, LinkExternal01Icon } from '@untitled-theme/icons-react'; -import { useEffect, useState } from 'react'; -import Sidebar from './route'; - -export const Route = createFileRoute('/app/settings/')({ - component: RouteComponent, -}); - -function RouteComponent() { - const { settings, createSetting } = useSettings(); - const [launcherDir, setLauncherDir] = useState(''); - - useEffect(() => { - (async () => { - setLauncherDir(await join(await dataDir(), 'OneLauncher')); - })(); - }, []); - - const openLauncherDir = () => openPath(launcherDir); - - const [discordRpc, setDiscordRpc] = createSetting('discord_enabled', settings?.discord_enabled); - - return ( - -
-

General

- - } - title="Discord RPC" - > - setDiscordRpc(val)} - /> - - - {/* } - title="Hide Close Dialog" - > - - - - } - title="Error Analytics" - > - !(settings().disable_analytics ?? false)} - onChecked={value => settings().disable_analytics = !value} - /> - */} - - Folders and Files - } - title="Launcher Folder" - > - - -
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx b/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx deleted file mode 100644 index 41c37c88..00000000 --- a/apps/onelauncher/frontend/src/routes/app/settings/minecraft.tsx +++ /dev/null @@ -1,186 +0,0 @@ -import type { SettingProfileModel } from '@/bindings.gen'; -import ScrollableContainer from '@/components/ScrollableContainer'; -import SettingsRow from '@/components/SettingsRow'; -import usePopState from '@/hooks/usePopState'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Switch, TextField } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { Database01Icon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, XIcon } from '@untitled-theme/icons-react'; -import Sidebar from './route'; - -export const Route = createFileRoute('/app/settings/minecraft')({ - component: RouteComponent, -}); - -function RouteComponent() { - const result = useCommand('readSettings', bindings.core.readSettings); - - const save = useCommand('writeSettings', () => bindings.core.writeSettings(result.data), { - enabled: false, - subscribed: false, - }); - - usePopState(() => { - save.refetch(); - }); - - return ( - - -
-

Minecraft Settings

- - - - {/* */} - - -
-
-
- ); -} - -interface GameSettingProps { - settings: SettingProfileModel; -} - -export function GameSettings(props: GameSettingProps) { - const { settings } = props; - - return ( - <> - Game - - } - title="Force Fullscreen" - > - { - settings.force_fullscreen = val; - }} - /> - - - } - title="Resolution" - > -
- { - settings.res!.width = Number(e.target.value); - }} - type="number" - /> - - { - settings.res!.height = Number(e.target.value); - }} - type="number" - /> -
-
- - } - title="Memory" - > -
-
- { - settings.mem_max = Number(e.target.value); - }} - type="number" - /> -
-
-
- - ); -} - -// function LauncherSettings() { -// return ( -// <> -// Launcher -// } -// title="Hide On Launch" -// > -// -// -// -// ); -// } - -interface ProcessSettingsProps { - settings: SettingProfileModel; -} - -export function ProcessSettings(props: ProcessSettingsProps) { - const { settings } = props; - - return ( - <> - Process - - } - title="Pre-Launch Command" - > - { - settings.hook_pre = e.target.value; - }} - placeholder="echo 'Game started'" - /> - - - } - title="Wrapper Command" - > - { - settings.hook_wrapper = e.target.value; - }} - placeholder="gamescope" - /> - - - } - title="Post-Exit Command" - > - { - settings.hook_post = e.target.value; - }} - placeholder="echo 'Game exited'" - /> - - - ); -} diff --git a/apps/onelauncher/frontend/src/routes/app/settings/route.tsx b/apps/onelauncher/frontend/src/routes/app/settings/route.tsx deleted file mode 100644 index dad9e84a..00000000 --- a/apps/onelauncher/frontend/src/routes/app/settings/route.tsx +++ /dev/null @@ -1,136 +0,0 @@ -import type { JSX } from 'react'; -import { createFileRoute, Outlet, useNavigate, useRouterState } from '@tanstack/react-router'; -import { Brush01Icon, CodeSnippet02Icon, MessageTextSquare01Icon, RefreshCcw02Icon, Rocket02Icon, Sliders04Icon, Users01Icon } from '@untitled-theme/icons-react'; -import { useEffect } from 'react'; - -export const Route = createFileRoute('/app/settings')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( -
-
- , 'General', '/'], - [, 'Appearance', '/appearance'], - // [, 'APIs', '/apis'], - // [, 'Language', '/language'], - ], - 'Game Settings': [ - [, 'Minecraft settings', '/minecraft'], - [, 'Accounts', '/accounts'], - ], - 'About': [ - [, 'Changelog', '/changelog'], - [, 'Feedback', '/feedback'], - [, 'Developer Options', '/developer'], - ], - }} - /> - {/* */} -
- -
- -
-
- ); -} - -interface SidebarProps { - base: string; - links: Record>; -} - -function Sidebar(props: SidebarProps) { - const { base, links } = props; - - const navigate = useNavigate(); - const routerState = useRouterState(); - - const location = routerState.location.pathname; - - useEffect(() => { - if (base.endsWith('/')) - throw new Error('Base should not end with a slash'); - }); - - function goto(href: string, params?: URLSearchParams) { - const currParams = new URLSearchParams(location); - if (params) - for (const [key, value] of params) - currParams.set(key, value); - - const url = `${base}${href}`; - navigate({ to: url }); - } - - function isActive(link: string, params: URLSearchParams | undefined) { - const fullBasePath = `${base}${link}`; - const pathnameMatch = location.startsWith(fullBasePath) || `${location}/`.startsWith(fullBasePath); - - if (!params) - return pathnameMatch; - - const searchParams = new URLSearchParams(routerState.location.searchStr); - for (const [key, value] of params) - if (searchParams.get(key) !== value) - return false; - - return pathnameMatch; - } - - return ( -
- {Object.keys(links).map(section => ( -
-
-

{section.toUpperCase()}

-
- {links[section].map((entry) => { - if (!entry) - return ''; - - const [Component, label, link, params] = entry; - - return ( - goto(link, params)} - > - - {Component} - {label} - - - ); - })} -
-
-
- ))} -
- ); -} - -interface SidebarPageProps { - className?: string; - children: JSX.Element | Array; -} - -Sidebar.Page = function (props: SidebarPageProps) { - return ( -
- {props.children} -
- ); -}; - -export default Sidebar; diff --git a/apps/onelauncher/frontend/src/routes/index.tsx b/apps/onelauncher/frontend/src/routes/index.tsx deleted file mode 100644 index 0599c7fe..00000000 --- a/apps/onelauncher/frontend/src/routes/index.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { createFileRoute, Navigate } from '@tanstack/react-router'; - -export const Route = createFileRoute('/')({ - component: App, -}); - -function App() { - // TODO: This will decide if we need to show onboarding or not. - return ( - - ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/complete.tsx b/apps/onelauncher/frontend/src/routes/onboarding/complete.tsx deleted file mode 100644 index 1ce8de61..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/complete.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/complete')({ - component: RouteComponent, -}); - -function RouteComponent() { - return
Hello "/onboarding/complete"!
; -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/import.tsx b/apps/onelauncher/frontend/src/routes/onboarding/import.tsx deleted file mode 100644 index f9881570..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/import.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import Illustration from '@/assets/illustrations/onboarding/import_from_others.svg'; -import LauncherIcon from '@/components/content/LauncherIcon'; -import { LAUNCHER_IMPORT_TYPES } from '@/utils'; -import { createFileRoute } from '@tanstack/react-router'; -import { OnboardingStep } from './route'; - -export const Route = createFileRoute('/onboarding/import')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - <> - } - paragraph="Import your profiles from other launchers." - title="Import" - > -
-
- {LAUNCHER_IMPORT_TYPES.map(x => ( - - ))} -
- - Want to contribute a launcher import? Click - {' '} - here - . - -
-
- - ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/index.tsx b/apps/onelauncher/frontend/src/routes/onboarding/index.tsx deleted file mode 100644 index 88ec7cf2..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/index.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( -
-

- Welcome to - {' '} - OneLauncher -

- -

A powerful yet easy to use launcher for Minecraft.

-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/language.tsx b/apps/onelauncher/frontend/src/routes/onboarding/language.tsx deleted file mode 100644 index 916f1df2..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/language.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import Illustration from '@/assets/illustrations/onboarding/language.svg'; -import { createFileRoute } from '@tanstack/react-router'; -import { languageList, OnboardingStep } from './route'; - -export const Route = createFileRoute('/onboarding/language')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( - <> - } - paragraph="Choose your preferred language." - title="Language" - > -
-
-
-
- -
-
-
- -
-

Help translate OneLauncher

-
-
-
- - ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/login.tsx b/apps/onelauncher/frontend/src/routes/onboarding/login.tsx deleted file mode 100644 index 0e6ab954..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/login.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import type { MinecraftCredentials } from '@/bindings.gen'; -import PlayerHead from '@/components/content/PlayerHead'; -import { bindings } from '@/main'; -import { useCommand } from '@onelauncher/common'; -import { Button, Show } from '@onelauncher/common/components'; -import { createFileRoute } from '@tanstack/react-router'; -import { useState } from 'react'; - -export const Route = createFileRoute('/onboarding/login')({ - component: RouteComponent, -}); - -function RouteComponent() { - const [profile, setProfile] = useState(); - const [errorMessage, setErrorMessage] = useState(''); - const result = useCommand('openMsaLogin', bindings.core.openMsaLogin, { - enabled: false, - subscribed: false, - }); - - function beginMsAuthFlow() { - result.refetch().then((data) => { - if (data.isError) { - setErrorMessage(data.error.message); - return; - } - - if (!data.data) { - setErrorMessage('No account was found. Please try again.'); - return; - } - - setProfile(data.data); - }); - } - - return ( - <> - {/* trust me i'll fix ui issues later */} -
-

Login

- -

Before you continue, we require you to own a copy of Minecraft: Java Edition.

- - -
- -
-

{profile?.username}

-

{profile?.id}

-
-
-
-
- - ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/route.tsx b/apps/onelauncher/frontend/src/routes/onboarding/route.tsx deleted file mode 100644 index 9de124ea..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/route.tsx +++ /dev/null @@ -1,306 +0,0 @@ -/* eslint-disable no-console -- we dont have a seperate logger for now */ -import type { ReactNode } from 'react'; -import { pluralize } from '@/utils'; -import { Button } from '@onelauncher/common/components'; -import { createFileRoute, Outlet, useNavigate, useRouterState } from '@tanstack/react-router'; -import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react'; - -export const Route = createFileRoute('/onboarding')({ - component: RouteComponent, -}); - -const steps = [ - '/onboarding', - '/onboarding/language', - '/onboarding/login', - '/onboarding/import', - '/onboarding/summary', - '/onboarding/complete', -] as const; - -interface Language { - lang: string; - code: string; - percentage: number; -} - -export const languageList: Array = [ - { - lang: 'English', - code: 'en', - percentage: 100, - }, -]; - -enum OnboardingTaskStage { - NotStarted = 0, - Running = 1, - Completed = 2, -} - -interface ImportInstancesType { - basePath: string; - instances: Array; -} - -interface OnboardingContextType { - setLanguage: (language: Language) => void; - language: Language | undefined; - - setImportInstances: (type: string, basePath: string, instances: Array) => void; - getImportInstance: (type: string) => ImportInstancesType | undefined; - - setIsForwardButtonEnabled: (enabled: boolean) => void; - - getTasks: () => Array; - - tasksStage: OnboardingTaskStage; - tasksMessage: string; -} - -const OnboardingContext = createContext(undefined); - -export function useOnboardingContext() { - const context = useContext(OnboardingContext); - if (context === undefined) - throw new Error('useOnboardingContext must be used within an OnboardingProvider (RouteComponent)'); - - return context; -} - -function RouteComponent() { - const navigate = useNavigate({ from: Route.fullPath }); - const pathname = useRouterState({ select: s => s.location.pathname }); - - const currentStepIndex = useMemo(() => { - return steps.findIndex(stepPath => stepPath === pathname); - }, [pathname]); - - const [isBackButtonEnabled, setIsBackButtonEnabled] = useState(false); - const [isForwardButtonEnabled, setIsForwardButtonEnabled] = useState(true); - - const [language, setLanguage] = useState(); - const [importInstancesMap, setImportInstancesMap] = useState>(new Map()); - const [tasksStage, setTasksStage] = useState(OnboardingTaskStage.NotStarted); - const [tasksMessage, setTasksMessage] = useState(''); - - const tasksCompleted = tasksStage === OnboardingTaskStage.Completed; - - const percentage = (currentStepIndex / (steps.length - 1)) * 100; - - const shallRunTasks = !tasksCompleted && currentStepIndex === steps.length - 2; - - useEffect(() => { - const isSummaryStep = currentStepIndex === steps.length - 2; - const isCompleteStep = currentStepIndex === steps.length - 1; - - setIsBackButtonEnabled(currentStepIndex > 0 && tasksStage !== OnboardingTaskStage.Running); - - if (tasksStage === OnboardingTaskStage.Running) - setIsForwardButtonEnabled(false); - else if (tasksCompleted) - setIsForwardButtonEnabled(isSummaryStep || isCompleteStep); - else - setIsForwardButtonEnabled(true); - }, [currentStepIndex, tasksStage, tasksCompleted]); - - const next = useCallback(() => { - const isLast = currentStepIndex === steps.length - 1; - - if (isLast) { - navigate({ to: '/app' }); - } - else { - const nextPath = steps[currentStepIndex + 1]; - - navigate({ to: nextPath }); - } - }, [currentStepIndex, navigate]); - - const previous = useCallback(() => { - if (currentStepIndex > 0) { - const prevPath = steps[currentStepIndex - 1]; - - navigate({ to: prevPath }); - } - }, [currentStepIndex, navigate]); - - const getButtonText = useMemo(() => { - if (shallRunTasks) - return 'Setup'; - if (currentStepIndex === steps.length - 1) - return 'Finish'; - return 'Next'; - }, [shallRunTasks, currentStepIndex]); - - const runTasks = useCallback(async () => { - setIsBackButtonEnabled(false); - setIsForwardButtonEnabled(false); - setTasksStage(OnboardingTaskStage.Running); - setTasksMessage('Starting setup...'); - - const tasksToRun = [ - () => new Promise((resolve) => { - setTasksMessage(`Setting language to ${language?.lang}...`); - - console.log('Language task completed for:', language?.lang); - - resolve(); - }), - () => new Promise((resolve) => { - if (importInstancesMap.size === 0) { - console.log('No instances selected for import.'); - resolve(); - return; - } - - for (const [launcher, importData] of importInstancesMap.entries()) { - if (importData.instances.length === 0) - continue; - - setTasksMessage(`Importing ${importData.instances.length} ${pluralize(importData.instances.length, 'instance')} from ${launcher}...`); - try { - console.log(`Simulating import for ${launcher}:`, importData); - } - catch (e) { - console.error(`Failed to import from ${launcher}:`, e); - setTasksMessage(`Failed to import ${pluralize(importData.instances.length, 'instance')} from ${launcher}...`); - throw e; - } - } - - resolve(); - }), - ]; - - const results = await Promise.allSettled(tasksToRun.map(task => task())); - const errorCount = results.filter(({ status }) => status === 'rejected').length; - - if (errorCount > 0) { - console.error('Onboarding tasks completed with error count:', errorCount); - setTasksMessage(`Setup completed with ${errorCount} ${pluralize(errorCount, 'error')}. Check console for details.`); - } - else { - setTasksMessage('Setup completed successfully!'); - } - - setTasksStage(OnboardingTaskStage.Completed); - // setIsBackButtonEnabled(true); - setIsForwardButtonEnabled(true); - next(); - }, [importInstancesMap, next, language?.lang, setIsBackButtonEnabled, setIsForwardButtonEnabled, setTasksStage, setTasksMessage]); - - const getTasks = useCallback((): Array => { - const tasksStrings: Array = []; - const selectedLangInfo = languageList.find(l => l.lang === language?.lang); - const langDisplayName = selectedLangInfo - ? `${selectedLangInfo.lang} (Coverage: ${selectedLangInfo.percentage}%)` - : language?.lang; - tasksStrings.push(`Set language to ${langDisplayName}`); - - importInstancesMap.forEach((importData, launcher) => { - if (importData.instances.length === 0) - return; - - let builder = `Import ${importData.instances.length} ${pluralize(importData.instances.length, 'instance')} from ${launcher} (Source: ${importData.basePath}):\n`; - importData.instances.forEach((instance, index) => { - builder += ` ${index + 1}. ${instance}\n`; - }); - tasksStrings.push(builder.trim()); - }); - - return tasksStrings; - }, [language, importInstancesMap]); - - const handleSetImportInstances = useCallback((type: string, newBasePath: string, instances: Array) => { - setImportInstancesMap((prevMap) => { - const newMap = new Map(prevMap); - newMap.set(type, { basePath: newBasePath, instances }); - return newMap; - }); - }, []); - - const getImportInstance = useCallback((type: string) => { - return importInstancesMap.get(type); - }, [importInstancesMap]); - - const ctxValue: OnboardingContextType = useMemo(() => ({ - setLanguage, - language, - setImportInstances: handleSetImportInstances, - getImportInstance, - setIsForwardButtonEnabled, - getTasks, - tasksStage, - tasksMessage, - }), [ - language, - handleSetImportInstances, - getImportInstance, - setIsForwardButtonEnabled, - getTasks, - tasksStage, - tasksMessage, - ]); - - return ( - -
-
-
-
- -
- -
- -
-
- - -
-
-
- - ); -} - -export interface OnboardingStepProps { - title: string; - paragraph: string; - illustration?: ReactNode; - children: ReactNode; -} - -export function OnboardingStep({ - title, - paragraph, - illustration, - children, -}: OnboardingStepProps) { - return ( -
- {illustration && ( -
- {illustration} -
- )} -
-
-

{title}

-

{paragraph}

-
-
- {children} -
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/routes/onboarding/summary.tsx b/apps/onelauncher/frontend/src/routes/onboarding/summary.tsx deleted file mode 100644 index 9987684d..00000000 --- a/apps/onelauncher/frontend/src/routes/onboarding/summary.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { createFileRoute } from '@tanstack/react-router'; - -export const Route = createFileRoute('/onboarding/summary')({ - component: RouteComponent, -}); - -function RouteComponent() { - return ( -
-

- Prepare OneLauncher -

- -

Are you sure you want to proceed with the following tasks?

- -
-
tasks
-
-
- ); -} diff --git a/apps/onelauncher/frontend/src/styles/global.css b/apps/onelauncher/frontend/src/styles/global.css deleted file mode 100644 index 909d092e..00000000 --- a/apps/onelauncher/frontend/src/styles/global.css +++ /dev/null @@ -1,41 +0,0 @@ -@import "tailwindcss"; -@plugin "@tailwindcss/typography"; -@plugin "tailwindcss-react-aria-components"; -@plugin "tailwindcss-animated"; -@import "../../node_modules/@onelauncher/common/dist/theme.css"; - -@theme { - --radius-xs: 0.125rem; - --radius-sm: 0.25rem; - --radius-md: 0.375rem; - --radius-lg: 0.5rem; - --radius-xl: 0.75rem; - --radius-2xl: 1rem; - --radius-3xl: 1.5rem; - --radius-4xl: 2rem; -} - -code { - @apply rounded-md p-2 text-left; -} - -/* i dont know where to put this */ -.linearBlur::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - -webkit-backdrop-filter: blur(30); - backdrop-filter: blur(30); - - -webkit-mask: linear-gradient(270deg, transparent, black 50%); - mask: linear-gradient(270deg, transparent, black 50%); - - background: linear-gradient(270deg, transparent, rgba(0, 0, 0, 0.85) 80%); -} - -@utility text-trim{ - text-box: trim-both cap alphabetic -} diff --git a/apps/onelauncher/frontend/src/types/global.d.ts b/apps/onelauncher/frontend/src/types/global.d.ts deleted file mode 100644 index bdc8303c..00000000 --- a/apps/onelauncher/frontend/src/types/global.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { bindings } from '@/main'; - -export type BindingCommands = (keyof typeof bindings.core) | (keyof typeof bindings.onelauncher); - -declare module '@onelauncher/common' { - interface Register { - commands: Array; - } -} diff --git a/apps/onelauncher/frontend/src/utils/browser.ts b/apps/onelauncher/frontend/src/utils/browser.ts deleted file mode 100644 index 10aa2e73..00000000 --- a/apps/onelauncher/frontend/src/utils/browser.ts +++ /dev/null @@ -1,116 +0,0 @@ -import type { PackageCategories, PackageModCategory, PackageType, Provider } from '@/bindings.gen'; -import type { Key } from '.'; - -export const BROWSER_VIEWS: Array = ['grid', 'list'] as const; - -const ModCategories = [ - 'Adventure', - 'Library', - 'Equipment', - 'Patches', - 'Cosmetic', - 'Food', - 'Magic', - 'Information', - 'Misc', - 'Performance', - 'Redstone', - 'ServerUtil', - 'Storage', - 'Technology', - 'Farming', - 'Automation', - 'Transport', - 'Utility', - 'QoL', - 'WorldGen', - 'Mobs', - 'Economy', - 'Social', -] as const; - -const ModpackCategories = [ - 'Technology', - 'Quests', - 'Optimization', - 'Multiplayer', - 'Magic', - 'LightWeight', - 'Combat', - 'Challenging', - 'Adventure', -] as const; - -const ResourcePackCategories = [ - 'X8', - 'X16', - 'X32', - 'X48', - 'X64', - 'X128', - 'X256', - 'X512', - 'VanillaLike', - 'Utility', - 'Tweaks', - 'Themed', - 'Simplistic', - 'Realistic', - 'Modded', - 'Decoration', - 'Cursed', - 'Combat', - 'Audio', - 'Blocks', - 'CoreShaders', - 'Gui', - 'Fonts', - 'Equipment', - 'Environment', - 'Entities', - 'Items', - 'Locale', - 'Models', -] as const; - -const ShaderCategories = [ - 'VanillaLike', - 'SemiRealistic', - 'Realistic', - 'Fantasy', - 'Cursed', - 'Cartoon', - 'Bloom', - 'Atmosphere', - 'Reflections', - 'Shadows', - 'PBR', - 'PathTracing', - 'Foliage', - 'ColoredLightning', - 'Potato', - 'Low', - 'Medium', - 'High', - 'Ultra', -] as const; - -export const browserCategories = { - Mod: ModCategories, - ResourcePack: ResourcePackCategories, - ModPack: ModpackCategories, - Shader: ShaderCategories, - DataPack: ModCategories, -} as const satisfies Record, ReadonlyArray>; - -type CategoryIdMap = { - [K in keyof typeof browserCategories as Lowercase]: K -}; - -export const categoryNameFromId: CategoryIdMap = { - mod: 'Mod', - resourcepack: 'ResourcePack', - modpack: 'ModPack', - shader: 'Shader', - datapack: 'DataPack', -}; diff --git a/apps/onelauncher/frontend/src/utils/index.ts b/apps/onelauncher/frontend/src/utils/index.ts deleted file mode 100644 index 15db87a6..00000000 --- a/apps/onelauncher/frontend/src/utils/index.ts +++ /dev/null @@ -1,141 +0,0 @@ -export const LAUNCHER_IMPORT_TYPES = [ - 'PrismLauncher', - 'CurseForge', - // 'Modrinth', - 'ATLauncher', - 'GDLauncher', - // 'FTBLauncher', - 'MultiMC', - // 'TLauncher', - // 'Technic' -] as const; - -export const LOADERS = [ - 'vanilla', - 'forge', - 'neoforge', - 'quilt', - 'fabric', - 'legacyfabric', -] as const; -export const ProviderNames: Record = { - vanilla: 'Vanilla', - forge: 'Forge', - neoforge: 'NeoForge', - quilt: 'Quilt', - fabric: 'Fabric', - legacyfabric: 'Legacy Fabric', -} as const; - -export const PROVIDERS = ['Modrinth', 'CurseForge', 'SkyClient'] as const; -export const PACKAGE_TYPES = ['mod', 'resourcepack', 'datapack', 'shaderpack'] as const; - -export function pluralize(n: number, word: string, locale: string = 'en'): string { - const pluralRules = new Intl.PluralRules(locale); - const pluralForm = pluralRules.select(n); - return pluralForm === 'one' ? word : `${word}s`; -} - -export function upperFirst(object: T): Capitalize { - const string = object.toString(); - return (string.charAt(0).toUpperCase() + string.slice(1)) as Capitalize; -} - -export function uint32ToBigInt([high, low]: [number, number]): bigint { - return (BigInt(high >>> 0) << 32n) | BigInt(low >>> 0); -} - -export function int32ToBigInt([high, low]: [number, number]): bigint { - return (BigInt(high | 0) << 32n) | BigInt(low >>> 0); -} - -export function randomString(len: number = 6, charSet: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') { - let str = ''; - for (let i = 0; i < len; i++) { - const randomPos = Math.floor(Math.random() * charSet.length); - str += charSet.substring(randomPos, randomPos + 1); - } - return str; -} - -export function abbreviateNumber(n: number | bigint, locale: string = 'en-US'): string { - return new Intl.NumberFormat(locale, { - notation: 'compact', - compactDisplay: 'short', - maximumFractionDigits: 1, - }).format(n); -}; - -export function formatAsRelative( - seconds: number | bigint | Date, - locale: string = 'en', - style: 'long' | 'short' | 'narrow' | 'digital' = 'long', -): string { - let elapsed: number | undefined; - - if (seconds instanceof Date) - elapsed = seconds.getTime(); - else - elapsed = Number(seconds); - - elapsed -= Date.now(); - - const units = { - year: 31536000000, - month: 2592000000, - week: 604800000, - day: 86400000, - hour: 3600000, - minute: 60000, - second: 1000, - }; - - const formatter = new Intl.RelativeTimeFormat(locale, { style: style as Intl.RelativeTimeFormatStyle }); - for (const [unit, ms] of Object.entries(units)) - if (Math.abs(elapsed) > ms || unit === 'second') - return formatter.format(Math.round(elapsed / ms), unit as Intl.RelativeTimeFormatUnit); - - return 'now'; -} - -function convertSeconds(secondsInput: number): string { - let remaining = secondsInput; - - const hours = Math.floor(remaining / 3600); - remaining %= 3600; - - const minutes = Math.floor(remaining / 60); - remaining %= 60; - - const seconds = remaining; - - const parts: Array = []; - - if (hours) - parts.push(`${hours} hours`); - if (minutes) - parts.push(`${minutes} minutes`); - if (seconds) - parts.push(`${seconds} seconds`); - - return parts.join(' '); -} - -export function formatAsDuration(seconds: number | bigint | Date): string { - if (seconds instanceof Date) - seconds = seconds.getTime() / 1000; - else - seconds = Number(seconds); - - return convertSeconds(seconds); -} - -export function includes(list: { includes: (arg0: TArray) => boolean }, element: T): element is TArray { - return list.includes(element as unknown as TArray); -} - -export type Key = T extends Record ? K : never; - -export type NonReadonly = { - [P in keyof T]: T[P] extends readonly infer O ? O : P -}; diff --git a/apps/onelauncher/frontend/src/utils/theming.ts b/apps/onelauncher/frontend/src/utils/theming.ts deleted file mode 100644 index 56a08beb..00000000 --- a/apps/onelauncher/frontend/src/utils/theming.ts +++ /dev/null @@ -1,26 +0,0 @@ -export const DEFAULT_THEME = 'OneLauncher-Dark'; -export const THEMES = { - OneLauncher: { - variants: [ - { - name: 'Dark', - type: 'dark', - }, - { - name: 'Light', - type: 'light', - }, - ], - }, -} as const satisfies Record; - -export interface Theme { - variants: Array; -} - -export type ThemeTypes = 'dark' | 'light'; - -export interface ThemeVariant { - type: ThemeTypes; - name: string; -}; diff --git a/apps/onelauncher/frontend/tsconfig.json b/apps/onelauncher/frontend/tsconfig.json deleted file mode 100644 index 9c13de82..00000000 --- a/apps/onelauncher/frontend/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - - "compilerOptions": { - "target": "ES2022", - "jsx": "react-jsx", - "lib": ["ES2023", "DOM", "DOM.Iterable"], - "baseUrl": ".", - "module": "ESNext", - - /* Bundler mode */ - "moduleResolution": "bundler", - "paths": { - "@/*": ["./src/*"] - }, - - /* Project */ - "types": ["vite/client"], - "allowImportingTsExtensions": true, - "strict": true, - "noFallthroughCasesInSwitch": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noEmit": true, - "verbatimModuleSyntax": true, - - /* Linting */ - "skipLibCheck": true, - "noUncheckedSideEffectImports": true - }, - "include": ["**/*.ts", "**/*.tsx", "vite.config.ts"] -} diff --git a/apps/onelauncher/frontend/vite.config.ts b/apps/onelauncher/frontend/vite.config.ts deleted file mode 100644 index 5fbb4ac3..00000000 --- a/apps/onelauncher/frontend/vite.config.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { resolve } from 'node:path'; -import process from 'node:process'; -import tailwindcss from '@tailwindcss/vite'; - -import { TanStackRouterVite } from '@tanstack/router-plugin/vite'; -import viteReact from '@vitejs/plugin-react'; - -import { defineConfig } from 'vite'; - -export default defineConfig({ - plugins: [ - TanStackRouterVite({ autoCodeSplitting: true }), - viteReact(), - tailwindcss(), - ], - clearScreen: false, - server: { - port: 8001, - strictPort: true, - }, - resolve: { - alias: { - '@': resolve(__dirname, './src'), - }, - }, - envPrefix: ['VITE_', 'TAURI_ENV_'], - build: { - target: process.env.TAURI_ENV_PLATFORM === 'windows' ? 'chrome105' : 'safari13', - minify: !process.env.TAURI_ENV_DEBUG ? 'esbuild' : false, - sourcemap: !!process.env.TAURI_ENV_DEBUG, - }, -}); diff --git a/apps/onelauncher/old_frontend/index.html b/apps/onelauncher/old_frontend/index.html deleted file mode 100644 index c19c6f84..00000000 --- a/apps/onelauncher/old_frontend/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - OneLauncher - - - -
- - - diff --git a/apps/onelauncher/old_frontend/isolation/index.html b/apps/onelauncher/old_frontend/isolation/index.html deleted file mode 100644 index c0e64e9c..00000000 --- a/apps/onelauncher/old_frontend/isolation/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Isolation Secure Script - - - - - diff --git a/apps/onelauncher/old_frontend/isolation/index.js b/apps/onelauncher/old_frontend/isolation/index.js deleted file mode 100644 index 1eb85f22..00000000 --- a/apps/onelauncher/old_frontend/isolation/index.js +++ /dev/null @@ -1,3 +0,0 @@ -window.__TAURI_ISOLATION_HOOK__ = (payload) => { - return payload; -}; diff --git a/apps/onelauncher/old_frontend/package.bak.json b/apps/onelauncher/old_frontend/package.bak.json deleted file mode 100644 index 81e2fe78..00000000 --- a/apps/onelauncher/old_frontend/package.bak.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "@onelauncher/old_frontend", - "type": "module", - "version": "1.0.0-alpha.6", - "private": true, - "description": "Next-generation open source Minecraft launcher frontend", - "license": "GPL-3.0-only", - "repository": { - "type": "git", - "url": "git@github.com:polyfrost/onelauncher", - "directory": "apps/frontend" - }, - "bugs": "https://github.com/polyfrost/onelauncher/issues", - "sideEffects": false, - "scripts": { - "dev": "vite", - "build": "vite build", - "typecheck": "tsc --noEmit" - }, - "dependencies": { - "@fontsource/poppins": "^5.1.0", - "@formatjs/intl-durationformat": "^0.5.0", - "@leeoniya/ufuzzy": "^1.0.14", - "@onelauncher/client": "workspace:*", - "@solid-primitives/i18n": "^2.1.1", - "@solid-primitives/map": "^0.4.13", - "@solid-primitives/refs": "^1.0.8", - "@solid-primitives/scheduled": "^1.5.0", - "@solidjs/router": "^0.14.7", - "@t3-oss/env-core": "^0.11.0", - "@tanstack/solid-query": "^5.56.2", - "@tauri-apps/api": "^2.0.3", - "@tauri-apps/plugin-clipboard-manager": "^2.0.0", - "@tauri-apps/plugin-dialog": "^2.0.1", - "@tauri-apps/plugin-shell": "^2.0.1", - "@unocss/reset": "^0.63.6", - "@untitled-theme/icons-solid": "^0.11.0", - "overlayscrollbars": "^2.10.0", - "overlayscrollbars-solid": "^0.5.5", - "pathe": "^1.1.2", - "solid-js": "^1.9.1", - "solid-transition-group": "^0.2.3", - "zod": "^3.23.8" - }, - "devDependencies": { - "@sentry/vite-plugin": "^2.22.4", - "@tauri-apps/cli": "^2.0.4", - "rollup-plugin-visualizer": "^5.12.0", - "sass": "^1.79.4", - "unocss": "^0.63.6", - "vite": "^5.4.8", - "vite-plugin-solid": "^2.10.2", - "vite-plugin-solid-svg": "^0.8.1", - "vite-tsconfig-paths": "^5.0.1" - } -} diff --git a/apps/onelauncher/old_frontend/src/RootLayout.tsx b/apps/onelauncher/old_frontend/src/RootLayout.tsx deleted file mode 100644 index c81e9ed5..00000000 --- a/apps/onelauncher/old_frontend/src/RootLayout.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { getProgramInfo } from '@onelauncher/client'; -import { type ParentProps, onMount } from 'solid-js'; -import AnimatedRoutes from '~ui/components/AnimatedRoutes'; -import { NotificationProvider } from '~ui/hooks/useNotifications'; -import { MultiProvider } from './ui/components/MultiProvider'; -import { AccountControllerProvider } from './ui/components/overlay/account/AddAccountModal'; -import { ClusterModalControllerProvider } from './ui/components/overlay/cluster/ClusterCreationModal'; -import { ModalProvider, ModalRenderer } from './ui/components/overlay/Modal'; -import NotificationOverlay from './ui/components/overlay/notifications/NotificationOverlay'; -import WindowFrame from './ui/components/WindowFrame'; -import { BrowserProvider } from './ui/hooks/useBrowser'; -import { SettingsProvider } from './ui/hooks/useSettings'; - -function RootLayout(props: ParentProps) { - onMount(() => { - if (getProgramInfo().dev_build !== true) - document.addEventListener('contextmenu', e => e.preventDefault()); - }); - - return ( - -
- - - - {props.children} - - - - -
-
- ); -} - -export default RootLayout; - -function GlobalContexts(props: ParentProps) { - return ( - - {props.children} - - ); -} diff --git a/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/import_from_others.svg b/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/import_from_others.svg deleted file mode 100644 index 7ab893e1..00000000 --- a/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/import_from_others.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/language.svg b/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/language.svg deleted file mode 100644 index bc60266c..00000000 --- a/apps/onelauncher/old_frontend/src/assets/illustrations/onboarding/language.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/images/default_instance_cover.jpg b/apps/onelauncher/old_frontend/src/assets/images/default_instance_cover.jpg deleted file mode 100644 index 6de5d7af..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/images/default_instance_cover.jpg and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/images/default_world.png b/apps/onelauncher/old_frontend/src/assets/images/default_world.png deleted file mode 100644 index 0de32741..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/images/default_world.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/images/header.png b/apps/onelauncher/old_frontend/src/assets/images/header.png deleted file mode 100644 index 94ec4dda..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/images/header.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/images/steve.jpg b/apps/onelauncher/old_frontend/src/assets/images/steve.jpg deleted file mode 100644 index 31e53111..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/images/steve.jpg and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/curseforge.svg b/apps/onelauncher/old_frontend/src/assets/logos/curseforge.svg deleted file mode 100644 index 7d2e9bd9..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/curseforge.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/discord.svg b/apps/onelauncher/old_frontend/src/assets/logos/discord.svg deleted file mode 100644 index e5e50cad..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/discord.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/atlauncher.svg b/apps/onelauncher/old_frontend/src/assets/logos/launchers/atlauncher.svg deleted file mode 100644 index fa2799c8..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/launchers/atlauncher.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/ftb.svg b/apps/onelauncher/old_frontend/src/assets/logos/launchers/ftb.svg deleted file mode 100644 index 2d3fee4b..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/launchers/ftb.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/gdlauncher.png b/apps/onelauncher/old_frontend/src/assets/logos/launchers/gdlauncher.png deleted file mode 100644 index 091e698c..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/launchers/gdlauncher.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/multimc.png b/apps/onelauncher/old_frontend/src/assets/logos/launchers/multimc.png deleted file mode 100644 index 891852eb..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/launchers/multimc.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/prismlauncher.svg b/apps/onelauncher/old_frontend/src/assets/logos/launchers/prismlauncher.svg deleted file mode 100644 index 1249b4f5..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/launchers/prismlauncher.svg +++ /dev/null @@ -1,52 +0,0 @@ - - Prism Launcher Logo - - - - Prism Launcher Logo - 19/10/2022 - - - Prism Launcher - - - - - AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke - - - https://github.com/PrismLauncher/PrismLauncher - - - Prism Launcher - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/technic.png b/apps/onelauncher/old_frontend/src/assets/logos/launchers/technic.png deleted file mode 100644 index a8cb9e49..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/launchers/technic.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/launchers/tlauncher.png b/apps/onelauncher/old_frontend/src/assets/logos/launchers/tlauncher.png deleted file mode 100644 index c515d2f5..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/launchers/tlauncher.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/loaders/fabric.png b/apps/onelauncher/old_frontend/src/assets/logos/loaders/fabric.png deleted file mode 100644 index 4ab8370f..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/loaders/fabric.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/loaders/forge.png b/apps/onelauncher/old_frontend/src/assets/logos/loaders/forge.png deleted file mode 100644 index 5b8e835c..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/loaders/forge.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/loaders/neoforge.png b/apps/onelauncher/old_frontend/src/assets/logos/loaders/neoforge.png deleted file mode 100644 index 963f36da..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/loaders/neoforge.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/loaders/quilt.png b/apps/onelauncher/old_frontend/src/assets/logos/loaders/quilt.png deleted file mode 100644 index d67ff6e9..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/loaders/quilt.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/microsoft.svg b/apps/onelauncher/old_frontend/src/assets/logos/microsoft.svg deleted file mode 100644 index dc4e8c6e..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/microsoft.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/minecraft.png b/apps/onelauncher/old_frontend/src/assets/logos/minecraft.png deleted file mode 100644 index d7062ad2..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/minecraft.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/assets/logos/modrinth.svg b/apps/onelauncher/old_frontend/src/assets/logos/modrinth.svg deleted file mode 100644 index e076a359..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/modrinth.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/oneconfig.svg b/apps/onelauncher/old_frontend/src/assets/logos/oneconfig.svg deleted file mode 100644 index c1330f3b..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/oneconfig.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher.svg b/apps/onelauncher/old_frontend/src/assets/logos/onelauncher.svg deleted file mode 100644 index 38a41821..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_full.svg b/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_full.svg deleted file mode 100644 index bf21199f..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_full.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_text.svg b/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_text.svg deleted file mode 100644 index af57a651..00000000 --- a/apps/onelauncher/old_frontend/src/assets/logos/onelauncher_text.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/apps/onelauncher/old_frontend/src/assets/logos/skyclient.png b/apps/onelauncher/old_frontend/src/assets/logos/skyclient.png deleted file mode 100644 index 1879366c..00000000 Binary files a/apps/onelauncher/old_frontend/src/assets/logos/skyclient.png and /dev/null differ diff --git a/apps/onelauncher/old_frontend/src/imports.ts b/apps/onelauncher/old_frontend/src/imports.ts deleted file mode 100644 index 7f9e9298..00000000 --- a/apps/onelauncher/old_frontend/src/imports.ts +++ /dev/null @@ -1 +0,0 @@ -export * as bridge from '@onelauncher/client/bindings'; diff --git a/apps/onelauncher/old_frontend/src/index.tsx b/apps/onelauncher/old_frontend/src/index.tsx deleted file mode 100644 index bc6c3260..00000000 --- a/apps/onelauncher/old_frontend/src/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* @refresh reload */ -import { Route, Router } from '@solidjs/router'; - -/* eslint-disable perfectionist/sort-imports -- Import order does matter Here */ -import '~utils/patches'; -import '@fontsource/poppins/400.css'; - -import '@fontsource/poppins/500.css'; -import '@fontsource/poppins/600.css'; -import 'virtual:uno.css'; -import '@unocss/reset/tailwind.css'; -import 'overlayscrollbars/overlayscrollbars.css'; -import '~styles/themes/index.scss'; -import '~styles/globals.scss'; -import '~styles/highlightjs.css'; - -import App from '~ui/pages/App'; -import BrowserRoot from '~ui/pages/browser/BrowserRoot'; -import ClusterRoot from '~ui/pages/cluster/ClusterRoot'; - -import Onboarding from '~ui/pages/onboarding/Onboarding'; -import SettingsRoot from '~ui/pages/settings/SettingsRoot'; -import { render } from 'solid-js/web'; -import RootLayout from './RootLayout'; -import HomePage from './ui/pages/Home'; -import UpdatesPage from './ui/pages/Updates'; -import { initProgramInfo } from '@onelauncher/client'; - -initProgramInfo().finally(() => { - render(() => ( - - - - - } component={ClusterRoot} path="/clusters" /> - } component={SettingsRoot} path="/settings" /> - } component={BrowserRoot} path="/browser" /> - - - - - ), document.getElementById('root') as HTMLElement); -}); diff --git a/apps/onelauncher/old_frontend/src/styles/globals.scss b/apps/onelauncher/old_frontend/src/styles/globals.scss deleted file mode 100644 index 39dbf65d..00000000 --- a/apps/onelauncher/old_frontend/src/styles/globals.scss +++ /dev/null @@ -1,114 +0,0 @@ -html, body, :root { - @apply bg-page; -} - -body { - @apply font-sans text-fg-primary text-md; -} - -body.theme-transition * { - transition-delay: 0ms !important; - transition-duration: 400ms !important; - transition-property: color, border, background-color !important; -} - -body[data-platform="linux"].theme-transition * { - transition-delay: 0ms !important; - transition-duration: 400ms !important; - transition-property: background-color !important; -} - -/* start lynith's native experience (tm) */ -* { - -webkit-user-select: none; - user-select: none; - -webkit-user-drag: none; - user-drag: none; - cursor: default !important; - animation-duration: 150ms !important; -} - -*:hover { - cursor: default !important; -} - -img { - user-select: none; - -webkit-user-drag: none; - user-drag: none; - pointer-events: none; -} -/* end lynith's native experience (tm) */ - -/* lynith's epic webkit gtk <=2.45 fixer */ -body[data-platform="linux"][data-skia-renderer="false"] img { - /* Forces webkit gtk to use the GPU for image rendering, should speed up loading of some pages. Temporary until Tauri updates to at least 2.46 - 2.46 is the first version to use Skia for rendering, which prioritises the GPU over the CPU unlike Cairo */ - @apply transform-gpu; -} -/* end lynith's epic webkit gtk <=2.45 fixer */ - -h1 { @apply text-2xl font-semibold; line-height: 1.5 !important; } -h2 { @apply text-xxl font-semibold; line-height: 1.25 !important; } -h3 { @apply text-xl font-medium; } -h4 { @apply text-lg font-medium; } -h5 { @apply text-md text-fg-secondary font-bold uppercase; } -h6 { @apply text-sm text-fg-secondary font-medium uppercase; } - -code { - @apply rounded-md bg-component-bg p-2 text-left; -} - -.os-scrollbar { - --os-size: 10px; - --os-track-border-radius: theme('borderRadius.lg'); - --os-handle-bg: theme('colors.border/.15'); - --os-handle-bg-hover: theme('colors.border/.25'); - --os-handle-bg-active: theme('colors.border/.10'); - --os-handle-perpendicular-size-hover: 140%; - --os-handle-perpendicular-size-active: 140%; - --os-handle-interactive-area-offset: 1; -} - -.os-scrollbar-offset-right { - --os-padding-axis: 10; -} - -.os-hide-horizontal-scrollbar > .os-scrollbar-horizontal { - display: none; -} - -.noti-animation-enter-active, .noti-animation-leave-active { - transition: opacity 160ms, transform 175ms; - transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); -} - -.noti-animation-enter, .noti-animation-leave-to { - opacity: 0; - transform: translateX(75px); -} - -.noti-animation-enter-to, .noti-animation-leave { - opacity: 1; - transform: translateX(0); -} - -.modal-animation-enter-active, .modal-animation-leave-active { - transition: opacity 160ms, transform 175ms; - transition-timing-function: cubic-bezier(0.16, 1, 0.3, 1); -} - -.modal-animation-enter, .modal-animation-leave-to { - opacity: 0; - transform: scale(0); -} - -.modal-animation-enter-to, .modal-animation-leave { - opacity: 1; - transform: scale(1); -} - -body.reduce-motion *, body.reduce-motion *::after, body.reduce-motion *::before { - transition-duration: 0.00001ms !important; - animation-duration: 0.00001ms !important; -} diff --git a/apps/onelauncher/old_frontend/src/styles/highlightjs.css b/apps/onelauncher/old_frontend/src/styles/highlightjs.css deleted file mode 100644 index a6a384bf..00000000 --- a/apps/onelauncher/old_frontend/src/styles/highlightjs.css +++ /dev/null @@ -1,126 +0,0 @@ -// TODO: make this support light theme too idk how :3 - -/*! - Theme: GitHub Dark Dimmed - Description: Dark dimmed theme as seen on github.com - Author: github.com - Maintainer: @Hirse - Updated: 2021-05-15 - - Colors taken from GitHub's CSS -*/ - -.hljs { - color: #adbac7; - background: #22272e; -} - -.hljs-doctag, -.hljs-keyword, -.hljs-meta .hljs-keyword, -.hljs-template-tag, -.hljs-template-variable, -.hljs-type, -.hljs-variable.language_ { - /* prettylights-syntax-keyword */ - color: #f47067; -} - -.hljs-title, -.hljs-title.class_, -.hljs-title.class_.inherited__, -.hljs-title.function_ { - /* prettylights-syntax-entity */ - color: #dcbdfb; -} - -.hljs-attr, -.hljs-attribute, -.hljs-literal, -.hljs-meta, -.hljs-number, -.hljs-operator, -.hljs-variable, -.hljs-selector-attr, -.hljs-selector-class, -.hljs-selector-id { - /* prettylights-syntax-constant */ - color: #6cb6ff; -} - -.hljs-regexp, -.hljs-string, -.hljs-meta .hljs-string { - /* prettylights-syntax-string */ - color: #96d0ff; -} - -.hljs-built_in, -.hljs-symbol { - /* prettylights-syntax-variable */ - color: #f69d50; -} - -.hljs-comment, -.hljs-code, -.hljs-formula { - /* prettylights-syntax-comment */ - color: #768390; -} - -.hljs-name, -.hljs-quote, -.hljs-selector-tag, -.hljs-selector-pseudo { - /* prettylights-syntax-entity-tag */ - color: #8ddb8c; -} - -.hljs-subst { - /* prettylights-syntax-storage-modifier-import */ - color: #adbac7; -} - -.hljs-section { - /* prettylights-syntax-markup-heading */ - color: #316dca; - font-weight: bold; -} - -.hljs-bullet { - /* prettylights-syntax-markup-list */ - color: #eac55f; -} - -.hljs-emphasis { - /* prettylights-syntax-markup-italic */ - color: #adbac7; - font-style: italic; -} - -.hljs-strong { - /* prettylights-syntax-markup-bold */ - color: #adbac7; - font-weight: bold; -} - -.hljs-addition { - /* prettylights-syntax-markup-inserted */ - color: #b4f1b4; - background-color: #1b4721; -} - -.hljs-deletion { - /* prettylights-syntax-markup-deleted */ - color: #ffd8d3; - background-color: #78191b; -} - -.hljs-char.escape_, -.hljs-link, -.hljs-params, -.hljs-property, -.hljs-punctuation, -.hljs-tag { - /* purposely ignored */ -} diff --git a/apps/onelauncher/old_frontend/src/styles/themes/_OneLauncher.scss b/apps/onelauncher/old_frontend/src/styles/themes/_OneLauncher.scss deleted file mode 100644 index e308fb8e..00000000 --- a/apps/onelauncher/old_frontend/src/styles/themes/_OneLauncher.scss +++ /dev/null @@ -1,122 +0,0 @@ -@use "_helpers.scss" as * with ( - $name: "OneLauncher" -); - -@include variant("Dark", ":root,") { - - --clr-white: 255, 255, 255; - --clr-black: 0, 0, 0; - - --clr-border: 255, 255, 255; - - --clr-fg-primary: 213, 219, 255; - --clr-fg-primary-hover: 218, 224, 255; - --clr-fg-primary-pressed: 225, 229, 255; - --clr-fg-primary-disabled: 205, 209, 235; - - --clr-fg-secondary: 120, 129, 141; - --clr-fg-secondary-hover: 95, 104, 116; - --clr-fg-secondary-pressed: 130, 141, 155; - --clr-fg-secondary-disabled: 100, 109, 121; - - --clr-brand: 43, 75, 255; - --clr-brand-hover: 40, 67, 221; - --clr-brand-pressed: 57, 87, 255; - --clr-brand-disabled: 37, 67, 235; - - --clr-onbrand: 213, 219, 255; - --clr-onbrand-hover: 218, 224, 255; - --clr-onbrand-pressed: 225, 229, 255; - --clr-onbrand-disabled: 205, 209, 235; - - --clr-danger: 255, 68, 68; - --clr-danger-hover: 214, 52, 52; - --clr-danger-pressed: 255, 86, 86; - --clr-danger-disabled: 235, 48, 48; - - --clr-success: 35, 154, 96; - --clr-success-hover: 26, 135, 82; - --clr-success-pressed: 44, 172, 110; - --clr-success-disabled: 15, 134, 76; - - --clr-component-bg: 26, 34, 41; - --clr-component-bg-hover: 23, 31, 37; - --clr-component-bg-pressed: 34, 44, 53; - --clr-component-bg-disabled: 16, 24, 31; - - --clr-code-info: 97, 175, 239; - --clr-code-warn: 229, 192, 123; - --clr-code-error: 190, 80, 70; - --clr-code-debug: 43, 75, 255; - --clr-code-trace: 253, 253, 253; - - --clr-link: 97, 175, 239; - --clr-link-hover: 95, 135, 255; - --clr-link-pressed: 114, 175, 255; - --clr-link-disabled: 97, 175, 239, 0.5; - - --clr-page: 17, 23, 28; - --clr-page-elevated: 21, 28, 34; - --clr-page-pressed: 14, 19, 23; - - --clr-secondary: 25, 32, 38; -} - -@include variant("Light") { - --clr-white: 255, 255, 255; - --clr-black: 0, 0, 0; - - --clr-border: 40, 40, 40; - - --clr-fg-primary: 40, 40, 40; - --clr-fg-primary-hover: 30, 30, 30; - --clr-fg-primary-pressed: 20, 20, 20; - --clr-fg-primary-disabled: 40, 40, 40, 0.5; - - --clr-fg-secondary: 80, 80, 80; - --clr-fg-secondary-hover: 60, 60, 60; - --clr-fg-secondary-pressed: 100, 100, 100; - --clr-fg-secondary-disabled: 80, 80, 80, 0.5; - - --clr-brand: 43, 75, 255; - --clr-brand-hover: 35, 60, 200; - --clr-brand-pressed: 30, 50, 170; - --clr-brand-disabled: 43, 75, 255, 0.5; - - --clr-onbrand: 255, 255, 255; - --clr-onbrand-hover: 245, 245, 245; - --clr-onbrand-pressed: 230, 230, 230; - --clr-onbrand-disabled: 230, 230, 230, 0.5; - - --clr-danger: 200, 50, 50; - --clr-danger-hover: 180, 40, 40; - --clr-danger-pressed: 220, 60, 60; - --clr-danger-disabled: 200, 50, 50, 0.5; - - --clr-success: 50, 160, 100; - --clr-success-hover: 40, 140, 90; - --clr-success-pressed: 60, 180, 110; - --clr-success-disabled: 50, 160, 100, 0.5; - - --clr-component-bg: 240, 240, 240; - --clr-component-bg-hover: 230, 230, 230; - --clr-component-bg-pressed: 220, 220, 220; - --clr-component-bg-disabled: 240, 240, 240, 0.5; - - --clr-code-info: 40, 120, 200; - --clr-code-warn: 200, 150, 90; - --clr-code-error: 180, 70, 60; - --clr-code-debug: 40, 70, 200; - --clr-code-trace: 40, 40, 40; - - --clr-link: 40, 120, 200; - --clr-link-hover: 30, 100, 180; - --clr-link-pressed: 20, 80, 160; - --clr-link-disabled: 40, 120, 200, 0.5; - - --clr-page: 255, 255, 255; - --clr-page-elevated: 245, 245, 245; - --clr-page-pressed: 230, 230, 230; - - --clr-secondary: 220, 220, 220; -} diff --git a/apps/onelauncher/old_frontend/src/styles/themes/_helpers.scss b/apps/onelauncher/old_frontend/src/styles/themes/_helpers.scss deleted file mode 100644 index 95c153ee..00000000 --- a/apps/onelauncher/old_frontend/src/styles/themes/_helpers.scss +++ /dev/null @@ -1,14 +0,0 @@ -$name: "UNSET" !default; - -@mixin variant($variant, $selectors: "") { - #{$selectors} [data-theme="#{$name}-#{$variant}"], .theme-#{$name}-#{$variant} { - @content; - } -} - -@mixin extends-variant($variant, $extends, $selectors: "") { - #{$selectors} [data-theme="#{$name}-#{$variant}"], .theme-#{$name}-#{$variant} { - @extend [data-theme="#{$name}-#{$extends}"], .theme-#{$name}-#{$extends}; - @content; - } -} diff --git a/apps/onelauncher/old_frontend/src/styles/themes/index.scss b/apps/onelauncher/old_frontend/src/styles/themes/index.scss deleted file mode 100644 index 8381c093..00000000 --- a/apps/onelauncher/old_frontend/src/styles/themes/index.scss +++ /dev/null @@ -1 +0,0 @@ -@use "OneLauncher"; diff --git a/apps/onelauncher/old_frontend/src/ui/components/AnimatedRoutes.tsx b/apps/onelauncher/old_frontend/src/ui/components/AnimatedRoutes.tsx deleted file mode 100644 index 8a0ef9c9..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/AnimatedRoutes.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import { getProgramInfo } from '@onelauncher/client'; -import { type ParentProps, Show, createMemo } from 'solid-js'; -import { Transition } from 'solid-transition-group'; -import type {TransitionProps} from 'solid-transition-group'; -import useSettings from '~ui/hooks/useSettings'; - -type AnimationTypes = 'default' | 'fade'; -export interface AnimatedProps { - animation?: AnimationTypes; -}; - -const animations: Record = { - default: { - before: { - transform: 'translateX(-85px)', - opacity: 0, - }, - after: { - transform: 'translateX(0)', - opacity: 1, - }, - }, - fade: { - before: { - opacity: 0, - }, - after: { - opacity: 1, - }, - }, -}; - -function AnimatedRoutes(props: AnimatedProps & TransitionProps & ParentProps) { - const { settings } = useSettings(); - - const animation = () => animations[props.animation ?? 'default']; - - const durationMultiplier = createMemo(() => { - // I LOVE WEBKITGTK I LOVE WEBKTIGTKI LOVE WEBKITGTK I LOVE WEBKTIGTKI LOVE WEBKITGTK I LOVE WEBKTIGTK - if (getProgramInfo().platform === 'linux') - return 0.36; - - return 1; - }); - - return ( - { - if (settings().disable_animations === true) { - done(); - return; - } - - el.animate([ - animation().before, - animation().after, - ], { - duration: 250 * durationMultiplier(), - easing: 'cubic-bezier(0.16, 1, 0.3, 1)', - }).onfinish = () => { - done(); - }; - }} - onExit={(el, done) => { - if (settings().disable_animations === true) { - done(); - return; - } - - el.animate([ - animation().after, - animation().before, - ], { - duration: 255 * durationMultiplier(), - easing: 'cubic-bezier(0.16, 1, 0.3, 1)', - }).onfinish = () => { - done(); - }; - }} - > - {props.children} - - )} - fallback={(<>{props.children})} - when={settings().disable_animations !== true} - /> - ); -} - -export default AnimatedRoutes; diff --git a/apps/onelauncher/old_frontend/src/ui/components/DynamicTime.tsx b/apps/onelauncher/old_frontend/src/ui/components/DynamicTime.tsx deleted file mode 100644 index 56643c74..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/DynamicTime.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { formatAsRelative } from '~utils'; -import { createSignal, onCleanup, onMount, type ParentProps } from 'solid-js'; - -type TimeProps = ParentProps & { - timestamp: Date | number; -}; - -export const TimeAgo = (props: TimeProps) => ; - -type InternalTimeProps = TimeProps & { format: (time: number) => string }; - -function InternalTime(props: InternalTimeProps) { - const [time, setTime] = createSignal(''); - const [intervalId, setIntervalId] = createSignal(undefined); - - onMount(() => { - const timestamp = typeof props.timestamp === 'number' ? props.timestamp : props.timestamp.getTime(); - - const loop = () => setTime(props.format(timestamp)); - loop(); - - setIntervalId(setInterval(loop, 1000)); - }); - - onCleanup(() => { - clearInterval(intervalId()!); - }); - - return {time()}; -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/ErrorBoundary.tsx b/apps/onelauncher/old_frontend/src/ui/components/ErrorBoundary.tsx deleted file mode 100644 index ae36ba26..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/ErrorBoundary.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import type { ParentProps } from 'solid-js'; -import { XIcon } from '@untitled-theme/icons-solid'; -import { ErrorBoundary as Boundary } from 'solid-js'; -import Button from './base/Button'; - -function ErrorBoundary(props: ParentProps) { - return ( - ( -
-
-
-

Error

-

{err.toString()}

-
- -
-
- )} - > - {props.children} -
- ); -} - -export default ErrorBoundary; diff --git a/apps/onelauncher/old_frontend/src/ui/components/LaunchButton.tsx b/apps/onelauncher/old_frontend/src/ui/components/LaunchButton.tsx deleted file mode 100644 index f8c480b4..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/LaunchButton.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import type { Cluster } from '@onelauncher/client/bindings'; -import type { ButtonProps } from './base/Button'; -import { debounce } from '@solid-primitives/scheduled'; -import { PlayIcon } from '@untitled-theme/icons-solid'; -import { useLaunchCluster } from '~ui/hooks/useCluster'; -import useProcessor from '~ui/hooks/useProcessor'; -import useSettings from '~ui/hooks/useSettings'; -import { Match, splitProps, Switch } from 'solid-js'; -import Button from './base/Button'; - -function LaunchButton(props: ButtonProps & { cluster: Cluster; iconOnly?: boolean }) { - const [split, rest] = splitProps(props, ['cluster']); - const innerLaunch = useLaunchCluster(() => split.cluster?.uuid); - // eslint-disable-next-line solid/reactivity -- a - const { running: runningProcesses } = useProcessor(split.cluster); - const { settings } = useSettings(); - - const launch = (e: MouseEvent) => { - e.stopImmediatePropagation(); - e.preventDefault(); - debounce(innerLaunch, 300)(); - }; - - return ( - - - - - - - {/* Notification Manager Button */} -
- - - el.classList.add('right-0')} - setVisible={setNotificationMenuOpen} - visible={notificationMenuOpen} - /> -
- - {/* Launcher Settings Button */} - - - {/* Account Menu Button */} -
- - - el.classList.add('right-0')} - setVisible={setProfileMenuOpen} - visible={profileMenuOpen} - /> -
-
-
- ); -} - -export default Navbar; diff --git a/apps/onelauncher/old_frontend/src/ui/components/ScrollableContainer.tsx b/apps/onelauncher/old_frontend/src/ui/components/ScrollableContainer.tsx deleted file mode 100644 index e2d2e36b..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/ScrollableContainer.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import type { ParentProps } from 'solid-js'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; - -function ScrollableContainer(props: ParentProps) { - return ( -
- -
- {props.children} -
-
-
- ); -} - -export default ScrollableContainer; diff --git a/apps/onelauncher/old_frontend/src/ui/components/SettingsRow.tsx b/apps/onelauncher/old_frontend/src/ui/components/SettingsRow.tsx deleted file mode 100644 index 565d0738..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/SettingsRow.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import type { JSX, ParentProps } from 'solid-js'; - -export type SettingsRowProps = ParentProps & { - title: JSX.Element; - description: JSX.Element; - icon: JSX.Element; - disabled?: boolean; -}; - -function SettingsRow(props: SettingsRowProps) { - return ( -
-
- {props.icon} -
- -
-

{props.title}

-

{props.description}

-
- -
- {props.children} -
-
- ); -} - -SettingsRow.Header = (props: JSX.HTMLAttributes) => { - return

; -}; - -export default SettingsRow; diff --git a/apps/onelauncher/old_frontend/src/ui/components/Sidebar.tsx b/apps/onelauncher/old_frontend/src/ui/components/Sidebar.tsx deleted file mode 100644 index 1e78a130..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/Sidebar.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import type { JSX, ParentProps } from 'solid-js'; -import { useLocation, useNavigate } from '@solidjs/router'; -import { createEffect, For, splitProps } from 'solid-js'; - -type SidebarProps = ParentProps & { - base: string; - links: Record; -}; - -function Sidebar(props: SidebarProps) { - const navigate = useNavigate(); - const location = useLocation(); - - createEffect(() => { - if (props.base.endsWith('/')) - throw new Error('Base should not end with a slash'); - }); - - function goto(href: string, params?: URLSearchParams) { - const currParams = new URLSearchParams(location.search); - if (params) - for (const [key, value] of params) - currParams.set(key, value); - - const url = `${props.base}${href}?${currParams.toString()}`; - navigate(url); - } - - function isActive(link: string, params: URLSearchParams | undefined) { - const pathnameMatch = location.pathname === `${props.base}${link}` || `${location.pathname}/` === `${props.base}${link}`; - const paramsMatch = params ? location.search.endsWith(params.toString()) : true; - return pathnameMatch && paramsMatch; - } - - return ( -
- - {section => ( -
-
-

{section.toUpperCase()}

-
- - {(link) => { - if (!link) - return; - - return ( - goto(link[2], link[3])} - > - - {link[0]} - {link[1]} - - - ); - }} - -
-
-
- )} -
-
- ); -} - -Sidebar.Page = function (props: JSX.HTMLAttributes) { - const [split, rest] = splitProps(props, ['class', 'children']); - return ( -
- {split.children} -
- ); -}; - -export default Sidebar; diff --git a/apps/onelauncher/old_frontend/src/ui/components/Spinner.tsx b/apps/onelauncher/old_frontend/src/ui/components/Spinner.tsx deleted file mode 100644 index 2c33a6a4..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/Spinner.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { type JSX, type ParentProps, splitProps, Suspense } from 'solid-js'; - -export interface SpinnerProps extends JSX.HTMLAttributes { - -}; - -// https://cssloaders.github.io/ -function Spinner(props: SpinnerProps) { - const [split, rest] = splitProps(props, ['class']); - - return ( -
- ); -} - -export default Spinner; - -export type SuspenseSpinnerProps = ParentProps & SpinnerProps; - -Spinner.Suspense = function SuspenseSpinner(props: SuspenseSpinnerProps) { - const [split, rest] = splitProps(props, ['children']); - - return ( - - -
- )} - > - {split.children} - - ); -}; diff --git a/apps/onelauncher/old_frontend/src/ui/components/WindowFrame.tsx b/apps/onelauncher/old_frontend/src/ui/components/WindowFrame.tsx deleted file mode 100644 index 1fe09ff4..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/WindowFrame.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import type { ComponentProps, JSX } from 'solid-js'; -import { Window } from '@tauri-apps/api/window'; -import { ChevronLeftIcon, Maximize02Icon, MinusIcon, XCloseIcon } from '@untitled-theme/icons-solid'; -import useSettings from '~ui/hooks/useSettings'; -import { onMount, Show } from 'solid-js'; -import Button from './base/Button'; -import Modal, { createModal } from './overlay/Modal'; - -interface TitlebarButtonProps { - icon: (props: ComponentProps<'svg'>) => JSX.Element; - onClick: (event: MouseEvent) => void; - danger?: boolean; -} - -function TitlebarButton(props: TitlebarButtonProps) { - return ( - - ); -} - -const maximize = () => Window.getCurrent().toggleMaximize(); -const minimize = () => Window.getCurrent().minimize(); -const quit = () => Window.getCurrent().close(); -const kill = () => Window.getCurrent().destroy(); - -function WindowFrame() { - const { settings } = useSettings(); - - const modal = createModal(props => ( - props.hide()}>No, - , - ]} - title="Close OneLauncher?" - /> - )); - - onMount(() => { - Window.getCurrent().onCloseRequested((event) => { - if (settings().hide_close_prompt !== true) { - event.preventDefault(); - modal.show(); - } - }); - }); - - return ( - -
-
- history.back()} /> -
- -
- minimize()} /> - maximize()} /> - quit()} /> -
-
-
- ); -} - -export default WindowFrame; diff --git a/apps/onelauncher/old_frontend/src/ui/components/base/Button.module.scss b/apps/onelauncher/old_frontend/src/ui/components/base/Button.module.scss deleted file mode 100644 index 9adcf47d..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/base/Button.module.scss +++ /dev/null @@ -1,70 +0,0 @@ -.button { - @apply py-1.5 px-3 rounded-lg flex flex-row justify-center items-center gap-x-2.5; - - &__primary, &__iconPrimary { - @apply text-onbrand hover:text-onbrand-hover active:text-onbrand-pressed disabled:text-onbrand-disabled; - @apply bg-brand hover:bg-brand-hover active:bg-brand-pressed disabled:bg-brand-disabled; - } - - &__secondary, &__iconSecondary { - @apply border box-border border-border/05; - @apply text-fg-primary hover:text-fg-primary-hover active:text-fg-primary-pressed disabled:text-fg-primary-disabled; - @apply bg-component-bg hover:bg-component-bg-hover active:bg-component-bg-pressed disabled:bg-component-bg-disabled; - } - - &__danger, &__iconDanger { - @apply text-onbrand hover:text-onbrand-hover active:text-onbrand-pressed disabled:text-onbrand-disabled; - @apply bg-danger hover:bg-danger-hover active:bg-danger-pressed disabled:bg-danger-disabled; - } - - &__iconDanger { - @apply bg-op-50; - } - - &__ghost { - @apply hover:bg-border/05 [&[aria-checked="true"]]:(bg-border/10) active:bg-border/10; - } - - &__icon, &__iconPrimary, &__iconSecondary, &__iconDanger { - @apply p-1.5 aspect-square box-border w-8 h-8; - - &.large { - @apply w-9 h-9; - & > * { - @apply p-0.5; - } - } - - & > * { - @apply w-full h-full stroke-fg-primary; - } - } - - &__icon, &__iconSecondary { - @apply hover:bg-border/05 [&[aria-checked="true"]]:bg-border/10 active:bg-border/10; - - &:hover > * { - @apply stroke-fg-primary-hover; - } - - &:active > * { - @apply stroke-fg-primary-pressed; - } - - &:disabled > * { - @apply stroke-fg-primary-disabled; - } - } - - &:disabled { - @apply border-opacity-1! bg-opacity-10! text-opacity-10! pointer-events-none; - - svg { - @apply fill-opacity-10! stroke-opacity-10!; - } - } -} - -.icon > * { - @apply w-4 min-w-4; -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/base/Button.test.tsx b/apps/onelauncher/old_frontend/src/ui/components/base/Button.test.tsx deleted file mode 100644 index fc429538..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/base/Button.test.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { render } from '@solidjs/testing-library'; -import Button from './Button'; - -describe(' - ); -} - -type ButtonToggleProps = ButtonProps & { - checked?: Accessor; - onChecked?: (checked: boolean) => void; -}; - -Button.Toggle = (props: ButtonToggleProps) => { - const [split, rest] = splitProps(props, ['checked', 'onChecked', 'onClick']); - const [checked, setChecked] = createSignal(untrack(() => split.checked?.()) || false); - - createEffect(on(() => split.checked?.(), newValue => setChecked(newValue || false))); - - function toggle() { - const newValue = !checked(); - setChecked(newValue); - props.onChecked?.(newValue); - } - - return ( - - ) - ); - - return ( -
- - - { - ref.classList.add('mt-1', 'w-full'); - if (split.dropdownClass) - ref.classList.add(...split.dropdownClass.split(' ')); - }} - setVisible={setVisible} - visible={visible} - > -
- - {/* TODO(perf): Optimise */} - - {(item, index) => ( -
select(index)}> -
- {item()} -
-
-
- )} - - - -
- {split.listToolRow!()} -
-
-
- -
- ); -} - -Dropdown.Row = function (props: ParentProps) { - return ( - // TODO(a11y): tabIndex -
- {props.children} -
- ); -}; - -type MinimalDropdownProps = Omit & { - icon?: JSX.Element; -}; - -Dropdown.Minimal = function (props: MinimalDropdownProps) { - const [split, rest] = splitProps(props, ['icon']); - return ( - ( - -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/base/Link.module.scss b/apps/onelauncher/old_frontend/src/ui/components/base/Link.module.scss deleted file mode 100644 index dfb5d7e5..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/base/Link.module.scss +++ /dev/null @@ -1,3 +0,0 @@ -.link { - @apply text-link hover:text-link-hover active:text-link-pressed underline text-left; -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/base/Link.tsx b/apps/onelauncher/old_frontend/src/ui/components/base/Link.tsx deleted file mode 100644 index 6bce6470..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/base/Link.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { LinkExternal01Icon } from '@untitled-theme/icons-solid'; -import usePromptOpener from '~ui/hooks/usePromptOpener'; -import { type JSX, splitProps } from 'solid-js'; -import styles from './Link.module.scss'; - -export type LinkProps = JSX.IntrinsicElements['a'] & { - skipPrompt?: boolean; - includeIcon?: boolean; -}; - -function Link(props: LinkProps) { - const [split, rest] = splitProps(props, ['skipPrompt', 'class', 'href', 'onClick', 'children']); - const open = usePromptOpener(); - - return ( -

- -

Found Instances

- { - const mapped = instances()?.map((instance, index) => indexes.includes(index) ? instance : undefined).filter((instance): instance is string => !!instance) || []; - setSelected(mapped); - }} - > - - {(instance, index) => { - // console.log(props.importInformation(), props.importInformation().instances.includes(instance)); - return ( - - {instance} - - ); - }} - - - -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.module.scss b/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.module.scss deleted file mode 100644 index 1ac17c7f..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.module.scss +++ /dev/null @@ -1,34 +0,0 @@ -.markdown { - @apply line-height-relaxed flex flex-col items-start gap-y-2; -} - -.markdown { - table { - width: auto; - } - - hr { - width: 100%; - margin: 20px 0px; - } - - ul, - ol { - margin-left: 2rem; - list-style: initial; - } - - center { - margin: auto; - width: 100%; - } - - img { - display: inline-block; - } - - blockquote, code, details, dl, ol, p, pre, table, ul { - margin-bottom: 16px; - margin-top: 0px; - } -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.tsx b/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.tsx deleted file mode 100644 index 1176ef45..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/content/Markdown.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import type { ParentProps } from 'solid-js'; -import { renderHighlightedString } from '@onelauncher/client'; -import usePromptOpener from '~ui/hooks/usePromptOpener'; -import styles from './Markdown.module.scss'; - -export type MarkdownProps = ParentProps & { - body: string; -}; - -function Markdown(props: MarkdownProps) { - const promptOpen = usePromptOpener(); - - return ( -
{ - if (e.target.nodeName === 'A') { - e.stopImmediatePropagation(); - e.preventDefault(); - - const target = e.target as HTMLAnchorElement; - if (target.href.startsWith('http')) - promptOpen(target.href); - } - }} - onContextMenu={(e) => { - e.stopImmediatePropagation(); - e.preventDefault(); - }} - /> - ); -} - -export default Markdown; diff --git a/apps/onelauncher/old_frontend/src/ui/components/content/ProviderIcon.tsx b/apps/onelauncher/old_frontend/src/ui/components/content/ProviderIcon.tsx deleted file mode 100644 index 64df85b0..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/content/ProviderIcon.tsx +++ /dev/null @@ -1,55 +0,0 @@ -import type { ManagedPackage, Providers } from '@onelauncher/client/bindings'; -import CurseForgeIcon from '~assets/logos/curseforge.svg?component-solid'; -import ModrinthImage from '~assets/logos/modrinth.svg?component-solid'; -import SkyClientImage from '~assets/logos/skyclient.png'; -import { type Component, type JSX, Match, Show, splitProps, Switch } from 'solid-js'; - -export function getProviderLogoElement(provider: ManagedPackage | Providers): string | Component { - const providerName = (typeof provider === 'string' ? provider : provider.provider)?.toLowerCase() as Lowercase; - - // [provider logo, is svg] - const mapping: Record, string | Component> = { - modrinth: ModrinthImage, - curseforge: CurseForgeIcon, - skyclient: SkyClientImage, - }; - - return mapping[providerName]; -} - -type ProviderIconProps = JSX.HTMLAttributes & { - provider: Providers | undefined; -}; - -function ProviderIcon(props: ProviderIconProps) { - const [split, rest] = splitProps(props, ['provider', 'class']); - - const Element = () => { - const value = getProviderLogoElement(split.provider!); - - return ( - - - {`${split.provider}'s - - - {value} - - - ); - }; - - return ( - - )} - fallback={( -
} /> - )} - when={split.provider !== undefined} - /> - ); -} - -export default ProviderIcon; diff --git a/apps/onelauncher/old_frontend/src/ui/components/content/SearchResults.tsx b/apps/onelauncher/old_frontend/src/ui/components/content/SearchResults.tsx deleted file mode 100644 index 2ec4eb45..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/content/SearchResults.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import type { Providers, SearchResult } from '@onelauncher/client/bindings'; -import type { JSX } from 'solid-js'; -import { ChevronDownIcon, Download01Icon, HeartIcon } from '@untitled-theme/icons-solid'; -import useBrowser from '~ui/hooks/useBrowser'; -import useSettings from '~ui/hooks/useSettings'; -import { abbreviateNumber } from '~utils'; -import { createSignal, For, Match, Show, Switch } from 'solid-js'; -import Button from '../base/Button'; - -interface SearchResultsContainerProps { - provider: Providers; - results: SearchResult[]; - header: string | JSX.Element; - collapsable?: boolean; -} - -function SearchResultsContainer(props: SearchResultsContainerProps) { - const { settings } = useSettings(); - // eslint-disable-next-line solid/reactivity -- - - const [collapsed, setCollapsed] = createSignal(props.collapsable || false); - - return ( -
-
- - -
{props.header}
-
- - - {props.header} - -
-
- -
- - -

No results found

-
- - - - - - - - -
-
- - -
-
-
- -
- ); -} - -export default SearchResultsContainer; - -function PackageGrid(props: SearchResultsContainerProps) { - return ( -
- - {mod => ( - - )} - -
- ); -} - -function PackageList(props: SearchResultsContainerProps) { - return ( -
- - {mod => ( - - )} - -
- ); -} - -function PackageItem(props: SearchResult & { provider: Providers; row?: boolean }) { - const controller = useBrowser(); - - function redirect() { - controller.displayPackage(props.project_id, props.provider); - } - - return ( -
-
- - )} - when={props.icon_url} - > - {`Icon - {`Icon - -
-
-
-

{props.title}

-

- By - {' '} - {props.author} - {' '} - on - {' '} - {props.provider} -

-
- -

{props.description}

- -
- -
- - {abbreviateNumber(props.downloads)} -
- - 0}> -
- - {abbreviateNumber(props.follows)} -
-
-
-
-
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.module.scss b/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.module.scss deleted file mode 100644 index 4ccb0ea6..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.module.scss +++ /dev/null @@ -1,15 +0,0 @@ -.linearBlur::after { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - -webkit-backdrop-filter: blur(var(--blur)); - backdrop-filter: blur(var(--blur)); - - -webkit-mask: linear-gradient(var(--degrees), transparent, black 50%); - mask: linear-gradient(var(--degrees), transparent, black 50%); - - background: linear-gradient(var(--degrees), transparent, rgba(0, 0, 0, 0.85) 80%); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.tsx b/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.tsx deleted file mode 100644 index b0464be5..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/game/ClusterCover.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import type { Cluster } from '@onelauncher/client/bindings'; -import { convertFileSrc } from '@tauri-apps/api/core'; -import defaultCover from '~assets/images/default_instance_cover.jpg'; -import { type JSX, type ParentProps, Show, splitProps } from 'solid-js'; -import styles from './ClusterCover.module.scss'; - -type ClusterCoverProps = JSX.HTMLAttributes & { - cluster: Cluster | undefined; - override?: string; - fallback?: string; - linearBlur?: { - degrees?: number; - blur?: number; - class?: string; - }; -}; - -function ClusterCover(props: ClusterCoverProps) { - const [split, rest] = splitProps(props, ['cluster', 'override', 'onError', 'fallback', 'linearBlur', 'class']); - - const image = () => { - const url = split.override || split.cluster?.meta.icon_url || split.cluster?.meta.icon; - - if (url === undefined || url === null) - return split.fallback || defaultCover; - - if (url.startsWith('/')) - return convertFileSrc(url); - - return url; - }; - - const Wrapper = (props: ParentProps) => ( - {props.children}} when={split.linearBlur !== undefined}> -
- - ); - - return ( - - { - e.currentTarget.src = split.override ? convertFileSrc(split.override) : defaultCover; - if (typeof split.onError === 'function') - split.onError(e); - }} - src={image()} - /> - - ); -} - -export default ClusterCover; diff --git a/apps/onelauncher/old_frontend/src/ui/components/game/LoaderIcon.tsx b/apps/onelauncher/old_frontend/src/ui/components/game/LoaderIcon.tsx deleted file mode 100644 index 77c7a3f1..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/game/LoaderIcon.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import type { Cluster, Loader } from '@onelauncher/client/bindings'; -import FabricImage from '~assets/logos/loaders/fabric.png'; -import ForgeImage from '~assets/logos/loaders/forge.png'; -import NeoForgeImage from '~assets/logos/loaders/neoforge.png'; -import QuiltImage from '~assets/logos/loaders/quilt.png'; -import VanillaImage from '~assets/logos/minecraft.png'; -import { type JSX, splitProps } from 'solid-js'; - -export function getLoaderLogoSrc(loader: Cluster | Loader): string { - const loaderName = (typeof loader === 'string' ? loader : loader.meta.loader)?.toLowerCase() as Loader; - - const mapping: Record = { - vanilla: VanillaImage, - fabric: FabricImage, - legacyfabric: FabricImage, - forge: ForgeImage, - neoforge: NeoForgeImage, - quilt: QuiltImage, - }; - - return mapping[loaderName]; -} - -type LoaderIconProp = JSX.HTMLAttributes & { - loader: Loader | undefined; -}; - -function LoaderIcon(props: LoaderIconProp) { - const [{ loader = 'vanilla' }, rest] = splitProps(props, ['loader']); - - const isMonochrome = () => loader === 'forge'; - - return ( - {`${loader}'s - ); -} - -export default LoaderIcon; diff --git a/apps/onelauncher/old_frontend/src/ui/components/game/PlayerHead.tsx b/apps/onelauncher/old_frontend/src/ui/components/game/PlayerHead.tsx deleted file mode 100644 index cde33e63..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/game/PlayerHead.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import type { JSX } from 'solid-js'; -import { createEffect, createSignal, splitProps } from 'solid-js'; -import steveSrc from '../../../assets/images/steve.png'; - -type PlayerHeadProps = JSX.IntrinsicElements['img'] & { - uuid: string | null | undefined; - onError?: () => void; -}; - -function crafatar(uuid: string) { - return `https://crafatar.com/avatars/${uuid}?size=48&overlay`; -} - -function PlayerHead(props: PlayerHeadProps) { - const [split, rest] = splitProps(props, ['uuid', 'class']); - const [src, setSrc] = createSignal(steveSrc); - - createEffect(() => { - if (split.uuid) - setSrc(crafatar(split.uuid)); - }); - - const onError = () => { - setSrc(steveSrc); - props.onError && props.onError(); - }; - - return ( - - ); -} - -export default PlayerHead; diff --git a/apps/onelauncher/old_frontend/src/ui/components/game/WorldIcon.tsx b/apps/onelauncher/old_frontend/src/ui/components/game/WorldIcon.tsx deleted file mode 100644 index 94032de8..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/game/WorldIcon.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { convertFileSrc } from '@tauri-apps/api/core'; -import DefaultWorld from '~assets/images/default_world.png?url'; -import useSettings from '~ui/hooks/useSettings'; -import { join } from 'pathe'; -import { type JSX, splitProps } from 'solid-js'; - -export type WorldIconProps = JSX.HTMLAttributes & { - world_name: string; - cluster_name: string; -}; - -function WorldIcon(props: WorldIconProps) { - const [split, rest] = splitProps(props, ['cluster_name', 'world_name', 'class']); - const { settings } = useSettings(); - const path = () => convertFileSrc(join(settings().config_dir || '', 'clusters', props.cluster_name, 'saves', props.world_name, 'icon.png')); - - return ( - {`${props.world_name} { - e.currentTarget.src = DefaultWorld; - }} - src={path()} - /> - ); -} - -export default WorldIcon; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/ContextMenu.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/ContextMenu.tsx deleted file mode 100644 index e2746826..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/ContextMenu.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { type Accessor, createEffect, createSignal, type JSX } from 'solid-js'; -import Popup, { type PopupProps } from './Popup'; - -type ContextMenuProps = { - pos: Accessor<{ x: number; y: number }>; -} & PopupProps; - -function ContextMenu(props: ContextMenuProps) { - const [pos, setPos] = createSignal({ x: 0, y: 0 }); - const [ref, setRef] = createSignal(); - - createEffect(() => { - if (ref() === undefined) - return; - - const rect = ref()!.getBoundingClientRect(); - - let x = props.pos().x; - let y = props.pos().y; - - if (x + rect.width > window.innerWidth) - x = window.innerWidth - rect.width - 10; - - if (y + rect.height > window.innerHeight) - y = window.innerHeight - rect.height - 10; - - setPos({ x, y }); - }); - - return ( - { - el.style.left = `${pos().x}px`; - el.style.top = `${pos().y}px`; - }} - setVisible={props.setVisible} - visible={props.visible} - > -
-
- {props.children} -
-
-
- ); -} - -ContextMenu.Seperator = function () { - return
; -}; - -interface ContextMenuRowProps { - icon: JSX.Element; - text: string; - onClick?: (e: MouseEvent) => void; -} - -ContextMenu.Row = function (props: ContextMenuRowProps) { - return ( -
props.onClick?.(e)} - > - {props.icon} - {props.text} -
- ); -}; - -export default ContextMenu; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/FullscreenOverlay.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/FullscreenOverlay.tsx deleted file mode 100644 index 4d5ab98e..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/FullscreenOverlay.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import type { - Accessor, - ParentProps, - Setter, -} from 'solid-js'; -import { Portal } from 'solid-js/web'; - -export type FullscreenOverlayProps = { - visible: Accessor; - setVisible: Setter; - mount?: Node | undefined; - zIndex?: number; -} & ParentProps; - -function FullscreenOverlay(props: FullscreenOverlayProps) { - function onBackdropClick(this: HTMLDivElement, e: MouseEvent) { - e.preventDefault(); - if (e.target === this) - props.setVisible(false); - } - - return ( - -
- -
- {props.children} -
- -
-
- ); -} - -export default FullscreenOverlay; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/Modal.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/Modal.tsx deleted file mode 100644 index 3e6e4af0..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/Modal.tsx +++ /dev/null @@ -1,323 +0,0 @@ -import type { MakeOptional } from '@onelauncher/client'; -import type { - Context, - JSX, - ParentProps, - Ref, -} from 'solid-js'; -import { mergeRefs } from '@solid-primitives/refs'; -import { createContext, createSignal, For, onCleanup, onMount, Show, splitProps, useContext } from 'solid-js'; -import { createStore } from 'solid-js/store'; -import { Transition } from 'solid-transition-group'; -import Button from '../base/Button'; -import FullscreenOverlay from './FullscreenOverlay'; - -type ModalsList = (() => JSX.Element)[]; - -interface ModalContextType { - modals: () => ModalsList; - displayModal: (modal: () => JSX.Element) => number; - closeModal: (index?: number) => void; - isVisible: (index: number) => boolean; -}; - -const ModalContext = createContext() as Context; - -export function ModalProvider(props: ParentProps) { - const [modals, setModals] = createStore([]); - - const context: ModalContextType = { - modals: () => modals, - - displayModal: (modal) => { - setModals(prev => [...prev, modal]); - return modals.length - 1; - }, - - closeModal: (index?: number) => { - if (modals.length === 0 || modals.length < (index || 0)) - return; - - setModals((prev) => { - if (index === undefined) { - const next = [...prev]; - next.pop(); - - return next; - } - else { - return prev.filter((_, i) => i !== index); - } - }); - }, - - isVisible: (index) => { - return modals.length > index; - }, - }; - - return ( - - {props.children} - - ); -} - -export function ModalRenderer() { - const controller = useModalController(); - - return ( - { - if (value === false) - controller.closeModal(); - }} - visible={() => controller.modals().length > 0} - > - - 0}> - {controller.modals()[controller.modals().length - 1]!()} - - - - ); -} - -export function useModalController() { - const context = useContext(ModalContext); - - if (!context) - throw new Error('useModal must be used within a ModalProvider'); - - return context; -} - -export interface ModalController { - show: () => void; - hide: () => void; -}; - -export function createModal(el: (props: ModalController) => JSX.Element): ModalController { - const controller = useModalController(); - const [index, setIndex] = createSignal(); - - const ctx: ModalController = { - show: () => { - setIndex(controller.displayModal(() => el(ctx))); - }, - hide: () => { - controller.closeModal(index()); - }, - }; - - return ctx; -} - -export type ModalProps = { - ref?: Ref | undefined; -} & ParentProps & ModalController; - -function Modal(props: ModalProps) { - return ( -
- {props.children} -
- ); -} - -Modal.SplitProps = function (props: T) { - return splitProps(props, ['hide', 'show']); -}; - -type ModalButtonProps = string | JSX.Element; - -export type ModalSimpleProps = { - title: string; - buttons?: ModalButtonProps[]; -} & ModalProps; - -Modal.Simple = function (props: ModalSimpleProps) { - const [split, rest] = splitProps(props, ['title', 'buttons', 'children']); - - return ( - -

{split.title}

-
- {split.children} -
-
- - {button => ( - - )} - -
-
- ); -}; - -type ModalErrorProps = MakeOptional & { - message?: string | undefined; -}; - -Modal.Error = function (props: ModalErrorProps) { - const [split, rest] = splitProps(props, ['message', 'title', 'buttons', 'children']); - - return ( - , - ]} - title={split.title || 'Error'} - > -
- {split.children || ( - Something went wrong. - )} - {split.message && ( - // - // - // {split.message} - // - // - - {split.message} - - )} -
-
- ); -}; - -type ModalDeleteProps = MakeOptional & { - onCancel?: () => void; - onDelete?: () => void; - timeLeft?: number; - deleteBtnText?: string; - name?: string; - description?: string; -}; - -Modal.Delete = function (props: ModalDeleteProps) { - const [split, rest] = splitProps(props, ['title', 'buttons', 'onCancel', 'onDelete', 'timeLeft', 'children', 'deleteBtnText']); - const [timeLeft, setTimeLeft] = createSignal(1); - const [intervalId, setIntervalId] = createSignal(undefined); - - onMount(() => { - startInterval(true); - }); - - onCleanup(() => { - clearIntervalId(); - }); - - function clearIntervalId() { - if (intervalId()) - clearInterval(intervalId()); - } - - function startInterval(visible: boolean) { - if (visible !== true) - return; - - clearIntervalId(); - setTimeLeft(split.timeLeft ?? 3); - - if (split.timeLeft === 0) - return; - - const intervalId = setInterval(() => { - setTimeLeft((prev) => { - const next = prev - 1; - - if (next <= 0) - clearIntervalId(); - - return next; - }); - }, 1000); - - setIntervalId(intervalId); - } - - function onCancel() { - if (split.onCancel) - split.onCancel(); - - props.hide(); - } - - function onDelete() { - if (split.onDelete) - split.onDelete(); - - props.hide(); - } - - return ( - , - - ) - : ( - button.props - )} - - ); -} - -export default Modal; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/Popup.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/Popup.tsx deleted file mode 100644 index f6d6cd04..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/Popup.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import type { - Accessor, - JSX, - ParentProps, - Setter, -} from 'solid-js'; -import { mergeRefs } from '@solid-primitives/refs'; -import { createEffect } from 'solid-js'; -import { Portal } from 'solid-js/web'; - -export type PopupProps = Omit[0], 'children'> & ParentProps & { - visible: Accessor; - setVisible: Setter; - class?: string; - style?: JSX.CSSProperties | string; - mount?: Node; -}; - -function Popup(props: PopupProps) { - let popupRef!: HTMLDivElement; - - function onClick(e: MouseEvent) { - e.stopPropagation(); - if (!popupRef || !props.visible()) - return; - - const clicked = e.target === popupRef || popupRef.contains(e.target as Node); - if (!clicked) - props.setVisible(false); - } - - createEffect(() => { - if (props.visible()) - document.addEventListener('click', onClick); - else - document.removeEventListener('click', onClick); - }); - - return ( - { - el.classList.add('absolute', 'z-[1000]', 'pointer-events-none'); - return el; - }, props.ref)} - > -
- {props.children} -
-
- ); -} - -Popup.setPos = (parent: HTMLElement, ref: (SVGGElement | HTMLDivElement)) => { - const parentRect = parent.getBoundingClientRect(); - - const top = parentRect.bottom; - const right = document.body.clientWidth - parentRect.right; - - ref.style.top = `${top}px`; - ref.style.right = `${right}px`; -}; - -export default Popup; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AccountsPopup.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AccountsPopup.tsx deleted file mode 100644 index e3c0e1ee..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AccountsPopup.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import type { MinecraftCredentials } from '@onelauncher/client/bindings'; -import { useNavigate } from '@solidjs/router'; -import { PlusIcon, Settings01Icon } from '@untitled-theme/icons-solid'; -import { For, Show } from 'solid-js'; -import Button from '../../base/Button'; -import PlayerHead from '../../game/PlayerHead'; -import Popup, { type PopupProps } from '../Popup'; -import useAccountController from './AddAccountModal'; - -interface AccountComponentProps { - account: MinecraftCredentials | null | undefined; - loggedIn?: boolean; -} - -function AccountComponent(props: AccountComponentProps) { - const controller = useAccountController(); - - function login() { - if (props.loggedIn === true) - return; - - if (props.account) - controller.setDefaultAccount(props.account.id); - } - - return ( - -
-
- -
-
-

{props.account!.username}

- {props.loggedIn &&

Logged in

} -
-
-
- - {/* -
-
- ); -} - -function AccountPopup(props: PopupProps) { - const controller = useAccountController(); - - const filteredAccounts = () => controller.accounts()?.filter(account => account.id !== controller.defaultAccount()?.id) ?? []; - - const navigate = useNavigate(); - - return ( - -
-
- - - - - - - {account => ( - - )} - - -
- -
-
- -
-
- -
-
- -
-
- - ); -} - -export default AccountPopup; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AddAccountModal.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AddAccountModal.tsx deleted file mode 100644 index 2f04ea4b..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/account/AddAccountModal.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import type { MinecraftCredentials } from '@onelauncher/client/bindings'; -import { LinkExternal01Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import useCommand, { tryResult } from '~ui/hooks/useCommand'; -import { type Context, createContext, createSignal, Match, type ParentProps, type Resource, Switch, useContext } from 'solid-js'; -import Modal, { createModal, type ModalProps } from '../Modal'; - -interface AccountControllerContextFunc { - displayAddAccount: () => void; - refetch: () => void; - accounts: Resource; - defaultAccount: Resource; - setDefaultAccount: (uuid: string | null) => Promise; - removeAccount: (uuid: string, force?: boolean) => Promise; -} - -const AccountControllerContext = createContext() as Context; - -export function AccountControllerProvider(props: ParentProps) { - const [accounts, { refetch: refetchAccounts }] = useCommand(() => bridge.commands.getUsers()); - const [defaultAccount, { refetch: refetchDefaultAccount }] = useCommand(() => bridge.commands.getDefaultUser(true)); - - const [deleteModalUuid, setDeleteModalUuid] = createSignal(); - - const addAccountModal = createModal(props => ( - - )); - - const deleteAccountModal = createModal(props => ( - _forceRemoveAccount(deleteModalUuid())} - timeLeft={0} - title="Remove Account" - /> - )); - - function refetch() { - refetchAccounts(); - refetchDefaultAccount(); - } - - async function setDefaultAccount(uuid: string | null) { - await tryResult(() => bridge.commands.setDefaultUser(uuid)).then(refetch); - } - - async function removeAccount(uuid: string, force?: boolean) { - if (force !== true) { - setDeleteModalUuid(uuid); - deleteAccountModal.show(); - } - else { await _forceRemoveAccount(uuid); } - } - - async function _forceRemoveAccount(uuid: string | undefined) { - if (uuid === undefined) - return; - - await tryResult(() => bridge.commands.removeUser(uuid)); - refetch(); - } - - const func: AccountControllerContextFunc = { - displayAddAccount: () => addAccountModal.show(), - refetch, - accounts, - defaultAccount, - setDefaultAccount, - removeAccount, - }; - - return ( - - {props.children} - - ); -} - -export function useAccountController() { - return useContext(AccountControllerContext); -} - -export default useAccountController; - -enum ModalStage { - Tasks, - WaitingForCode, - LoggingIn, -} - -interface AddAccountModalProps extends ModalProps { - refetch: () => void; -} - -function AddAccountModal(p: AddAccountModalProps) { - const [modalProps, props] = Modal.SplitProps(p); - const [stage, setStage] = createSignal(ModalStage.Tasks); - - function start() { - setStage(ModalStage.WaitingForCode); - - tryResult(bridge.commands.authLogin).finally(finish); - } - - function finish() { - modalProps.hide(); - props.refetch(); - } - - return ( - modalProps.hide()} - />, -
-
-
- ); - }; -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterGameSetup.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterGameSetup.tsx deleted file mode 100644 index 51b93992..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterGameSetup.tsx +++ /dev/null @@ -1,221 +0,0 @@ -import type { CreateCluster, Loader, VersionType } from '@onelauncher/client/bindings'; -import { TextInputIcon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Checkbox from '~ui/components/base/Checkbox'; -import Dropdown from '~ui/components/base/Dropdown'; -import SelectList from '~ui/components/base/SelectList'; -import TextField from '~ui/components/base/TextField'; -import LoaderIcon from '~ui/components/game/LoaderIcon'; -import useCommand from '~ui/hooks/useCommand'; -import { formatVersionRelease, LOADERS } from '~utils'; -import { createEffect, createMemo, createSignal, For, Index, type JSX, onMount, Show, splitProps, untrack } from 'solid-js'; -import { type ClusterStepProps, createClusterStep } from './ClusterCreationModal'; - -type PartialCluster = Partial; -type PartialClusterUpdateFunc = (key: K, value: PartialCluster[K]) => void; - -export default createClusterStep({ - message: 'Game Setup', - buttonType: 'create', - Component: ClusterGameSetup, -}); - -function _epicHardcodedLoaderVersionFilter(loader: Loader, version: string): boolean { - if (loader === 'vanilla') - return true; - - const split = version.split('.')[1]; - if (split === undefined) - return true; - - const minor = Number.parseInt(split); - if (minor < 13) - return loader === 'forge' || loader === 'legacyfabric'; - else - return loader === 'forge' || loader === 'fabric' || loader === 'neoforge' || loader === 'quilt'; -} - -function ClusterGameSetup(props: ClusterStepProps) { - const [partialCluster, setPartialCluster] = createSignal({ - mod_loader: 'vanilla', - }); - - const requiredProps: (keyof PartialCluster)[] = ['name', 'mc_version', 'mod_loader']; - - const updatePartialCluster: PartialClusterUpdateFunc = (key, value) => setPartialCluster(prev => ({ ...prev, [key]: value })); - const setName = (name: string) => updatePartialCluster('name', name); - const setVersion = (version: string) => updatePartialCluster('mc_version', version); - const setLoader = (loader: Loader | string) => updatePartialCluster('mod_loader', loader.toLowerCase() as Loader); - - const getLoaders = createMemo(() => { - const version = partialCluster().mc_version ?? ''; - - return LOADERS.filter(loader => _epicHardcodedLoaderVersionFilter(loader, version)); - }); - - createEffect(() => { - const hasName = (partialCluster().name?.length ?? 0) > 0; - const hasVersion = (partialCluster().mc_version?.length ?? 0) > 0; - const hasLoader = (partialCluster().mod_loader?.length ?? 0) > 0; - - props.setCanGoForward(hasName && hasVersion && hasLoader); - }); - - onMount(() => { - props.controller.setFinishFunction(() => async () => { - const untracked = untrack(partialCluster); - - for (const prop of requiredProps) - if (!untracked[prop]) - throw new Error(`Missing required property ${prop}`); - - bridge.commands.createCluster({ - icon: null, - icon_url: null, - loader_version: null, - package_data: null, - skip: null, - skip_watch: null, - ...untracked, - } as CreateCluster); - - return true; - }); - }); - - return ( -
- - - - - -
- ); -} - -type VersionReleaseFilters = { - [key in VersionType]: boolean; -}; - -function VersionSelector(props: { setVersion: (version: string) => void }) { - const [versions] = useCommand(() => bridge.commands.getMinecraftVersions()); - const [filteredVersions, setFilteredVersions] = createSignal([]); - const [filters, setFilters] = createSignal({ - old_alpha: false, - old_beta: false, - release: true, - snapshot: false, - }); - - function refresh(filters: VersionReleaseFilters, versions: bridge.Version[]) { - setFilteredVersions(() => { - if (Object.values(filters).every(value => value === false)) - return versions; - - return versions.filter((version) => { - return filters[version.type]; - }); - }); - } - - function toggleFilter(name: string) { - setFilters((prev) => { - return { - ...prev, - [name]: !prev[name as keyof VersionReleaseFilters], - }; - }); - } - - function setVersion(index: number | undefined) { - if (index === undefined) - return; - - const versions = untrack(() => filteredVersions); - const version = versions()[index]; - - if (version) - props.setVersion(version.id); - } - - createEffect(() => { - const list = versions(); - if (list !== undefined) - refresh(filters(), list); - }); - - onMount(() => { - setFilteredVersions(versions()!); - }); - - return ( -
- setVersion(indexes[0])} - > - - - {(version, index) => ( - {version().id} - )} - - - - -
- - {name => ( - toggleFilter(name)} - > - {formatVersionRelease(name as VersionType)} - - )} - -
-
- ); -} - -type OptionProps = { - header: string; -} & JSX.HTMLAttributes; - -function Option(props: OptionProps) { - const [split, rest] = splitProps(props, ['header', 'class']); - - return ( -
-

{props.header}

- {/*
*/} - {props.children} - {/*
*/} -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterImportSelection.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterImportSelection.tsx deleted file mode 100644 index 04c54d78..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterImportSelection.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { ImportType } from '@onelauncher/client/bindings'; -import type { LauncherImportInformation } from '~ui/components/content/LauncherImportComponent'; -import { bridge } from '~imports'; -import LauncherImportComponent from '~ui/components/content/LauncherImportComponent'; -import { createSignal, onMount, untrack } from 'solid-js'; -import { type ClusterStepProps, createClusterStep } from './ClusterCreationModal'; - -export default createClusterStep({ - message: 'Import Launcher', - buttonType: 'create', - Component: ClusterImportSelection, -}); - -function ClusterImportSelection(props: ClusterStepProps) { - const [importInfo, setImportInfo] = createSignal({ - // eslint-disable-next-line solid/reactivity -- It works as intended - importType: untrack(props.controller.provider) as ImportType, - instances: [], - path: null, - }); - - onMount(() => { - props.controller.setFinishFunction(() => async () => { - const details = untrack(importInfo); - - bridge.commands.importInstances(details.importType, details.path!, details.instances); - - return true; - }); - }); - - return ( - - ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterProviderSelection.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterProviderSelection.tsx deleted file mode 100644 index 867d08fd..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/cluster/ClusterProviderSelection.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import type { ImportType } from '@onelauncher/client/bindings'; -import { User03Icon } from '@untitled-theme/icons-solid'; -import LauncherIcon from '~ui/components/content/LauncherIcon'; -import { LAUNCHER_IMPORT_TYPES } from '~utils'; -import { createEffect, createSignal, For, type JSX } from 'solid-js'; -import { type ClusterStepProps, createClusterStep, CreationStage } from './ClusterCreationModal'; - -export default createClusterStep({ - message: 'Select Provider', - buttonType: 'next', - Component: ClusterProviderSelection, -}); - -export type ClusterCreationProvider = ImportType | 'New'; - -function ClusterProviderSelection(props: ClusterStepProps) { - const [selected, setSelected] = createSignal(); - - createEffect(() => { - // eslint-disable-next-line solid/reactivity -- It's fine - props.setCanGoForward(() => { - const index = selected(); - if (index === undefined) - return false; - - if (index === -1) { - props.controller.setProvider('New'); - props.setNextStage(CreationStage.GAME_SETUP); - } - else if (index >= 0) { - props.controller.setProvider(LAUNCHER_IMPORT_TYPES[index]); - props.setNextStage(CreationStage.IMPORT_SELECTION); - } - - return true; - }); - }); - - return ( -
- } - name="New" - selected={selected() === -1} - setSelected={() => setSelected(-1)} - /> - - - {(provider, index) => ( - setSelected(index)} - /> - )} - -
- ); -} - -interface ProviderLauncherCardProps { - importType: ImportType; -} - -interface ProviderCustomCardProps { - icon: JSX.Element; - name: string; -} - -type ProviderCardProps = (ProviderLauncherCardProps | ProviderCustomCardProps) & { - setSelected: () => void; - selected: boolean; -}; - -function ProviderCard(props: ProviderCardProps) { - const Icon = () => { - if ('icon' in props) - // eslint-disable-next-line solid/components-return-once -- ok - return props.icon; - - return ; - }; - - const Name = () => { - if ('name' in props) - return props.name; - - return props.importType; - }; - - return ( -
props.setSelected()} - > -
- -
- {Name()} -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx deleted file mode 100644 index 6c6dd001..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationComponent.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { PausableTimer } from '@onelauncher/client'; -import { InfoCircleIcon } from '@untitled-theme/icons-solid'; -import { createEffect, createSignal, type JSX, Match, Show, Switch } from 'solid-js'; - -export interface NotificationData { - title: string; - message: string; - fraction?: number | undefined; -} - -export type NotificationComponentProps = NotificationData & { - icon?: () => JSX.Element; - overlay: boolean; -}; - -const TOTAL_SECONDS = 7; -const fractionEnded = (fraction: number | undefined) => fraction !== undefined && fraction >= 0.97; - -function NotificationOverlayComponent(props: NotificationComponentProps) { - const [disappearing, setDisappearing] = createSignal(true); - const [timer, setTimer] = createSignal(); - const [visible, setVisible] = createSignal(true); - const [secondsLeft, setSecondsLeft] = createSignal(TOTAL_SECONDS); - - createEffect(() => { - setDisappearing(props.fraction === undefined); - - if (fractionEnded(props.fraction)) { - setVisible(false); - return; - } - - if (disappearing()) { - setTimer(new PausableTimer(onInterval, 1000, true)); - return; - } - - if (timer()) { - timer()?.stop(); - setTimer(undefined); - } - }); - - function onInterval() { - if (secondsLeft() <= 0) { - hide(); - return; - } - - setSecondsLeft(secondsLeft() - 1); - } - - function hide() { - timer()?.stop(); - setVisible(false); - setTimer(undefined); - } - - function onEnter() { - timer()?.pause(); - } - - function onLeave() { - timer()?.resume(); - } - - return ( - -
onEnter()} - onMouseLeave={() => onLeave()} - onMouseUp={() => hide()} - > -
- -
- - -
-
-
- -
-
- ); -} - -function NotificationPopupComponent(props: NotificationComponentProps) { - // eslint-disable-next-line solid/reactivity -- Doesn't really matter here - const Icon = props.icon ?? InfoCircleIcon; - - return ( -
-
- - -
- {props.title} - {props.message} -
- - -
- -
-
-
- - -
-
-
- -
- ); -} - -function NotificationComponent(props: NotificationComponentProps) { - return ( - - - - - - - - - ); -} - -export default NotificationComponent; diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationOverlay.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationOverlay.tsx deleted file mode 100644 index 2c240279..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationOverlay.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import useNotifications from '~ui/hooks/useNotifications'; -import { For } from 'solid-js'; -import Popup from '../Popup'; -import NotificationComponent from './NotificationComponent'; - -export default function NotificationOverlay() { - const notifications = useNotifications(); - - return ( - ref.classList.add('fixed', 'bottom-8', 'right-8', 'z-99999')} - setVisible={() => {}} - visible={() => true} - > -
- - {notification => ( - - )} - -
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationPopup.tsx b/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationPopup.tsx deleted file mode 100644 index fde20735..00000000 --- a/apps/onelauncher/old_frontend/src/ui/components/overlay/notifications/NotificationPopup.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { Settings01Icon, Trash01Icon } from '@untitled-theme/icons-solid'; -import useNotifications from '~ui/hooks/useNotifications'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; -import { createEffect, createMemo, For, Match, on, Switch } from 'solid-js'; -import Button from '../../base/Button'; -import Popup, { type PopupProps } from '../Popup'; -import NotificationComponent from './NotificationComponent'; - -function NotificationPopup(props: PopupProps) { - const notifications = useNotifications(); - - let inner!: HTMLDivElement; - let parent!: HTMLDivElement; - - createEffect(on(notifications.list, () => { - if (inner && parent) { - const rect = inner.getBoundingClientRect(); - parent.style.height = `${rect.height}px`; - } - })); - - const memoedNotifications = createMemo(() => Object.values(notifications.list())); - - function clearNotifications() { - notifications.clear(); - } - - return ( - -
-
-
-

Notifications

- - 0}> - -
- - {noti => ( -
- - -
- )} -
-
-
-
- - You have no notifications - - -
- -
- - - -
-
-
-
-
- ); -} - -export default NotificationPopup; diff --git a/apps/onelauncher/old_frontend/src/ui/hooks/useBrowser.tsx b/apps/onelauncher/old_frontend/src/ui/hooks/useBrowser.tsx deleted file mode 100644 index 813a2c61..00000000 --- a/apps/onelauncher/old_frontend/src/ui/hooks/useBrowser.tsx +++ /dev/null @@ -1,185 +0,0 @@ -import type { Cluster, FeaturedPackage, PackageType, Providers, ProviderSearchQuery, SearchResult } from '@onelauncher/client/bindings'; -import { useNavigate } from '@solidjs/router'; -import { bridge } from '~imports'; -import { createModal } from '~ui/components/overlay/Modal'; -import BrowserPackage from '~ui/pages/browser/BrowserPackage'; -import { PROVIDERS } from '~utils'; -import { type Accessor, type Context, createContext, createEffect, createResource, createSignal, on, onMount, type ParentProps, type Resource, type Setter, useContext } from 'solid-js'; -import { ChooseClusterModal, useRecentCluster } from './useCluster'; -import { tryResult } from './useCommand'; - -export type ProviderSearchOptions = ProviderSearchQuery & { provider: Providers }; -export type PopularPackages = Record; - -interface BrowserControllerType { - cluster: Accessor; - setCluster: Setter; - - displayBrowser: (cluster?: Cluster | undefined) => void; - displayPackage: (id: string, provider: Providers) => void; - displayClusterSelector: () => void; - - search: () => void; - searchQuery: Accessor; - setSearchQuery: Setter; - - packageType: Accessor; - setPackageType: Setter; - - popularPackages: Accessor; - featuredPackage: Resource; -}; - -const BrowserContext = createContext() as Context; - -export function BrowserProvider(props: ParentProps) { - const [popularPackages, setPopularPackages] = createSignal(); - const [featuredPackage] = createResource(async () => { - try { - return await tryResult(bridge.commands.getFeaturedPackages); - } - catch (e) { - console.error('Failed to fetch featured packages', e); - return []; - } - }); - - // Used for the current "Browser Mode". It'll only show packages of the selected type - const [packageType, setPackageType] = createSignal('mod'); - - // Active cluster that results should be "focused" on - const [cluster, setCluster] = createSignal(); - - const [searchOptions, setSearchOptions] = createSignal({ - provider: 'Modrinth', - query: '', - limit: 18, // Even multiples of 3 recommended for grid view (normally 3 columns, 2 columns on very small windows) - offset: 0, - categories: null, - game_versions: null, - loaders: null, - package_types: ['mod'], - open_source: null, - }); - - const navigate = useNavigate(); - const recentCluster = useRecentCluster(); - - const currentlySelectedCluster = (list: Cluster[]) => { - const cluster = controller.cluster(); - - if (cluster === undefined) - return 0; - - if (list === undefined) - return 0; - - const index = list.findIndex(c => c.uuid === cluster.uuid) || 0; - if (index === -1) - return 0; - - return index; - }; - - const chooseCluster = (cluster: Cluster) => { - controller.setCluster(cluster); - }; - - const modal = createModal(props => ( - currentlySelectedCluster(list) || 0} - {...props} - /> - )); - - const controller: BrowserControllerType = { - cluster, - setCluster, - - displayBrowser(cluster?: Cluster) { - setCluster(cluster); - }, - - displayPackage(id: string, provider: Providers) { - navigate(BrowserPackage.buildUrl({ id, provider })); - }, - - displayClusterSelector() { - modal.show(); - }, - - search: () => navigate('/browser/search'), - searchQuery: searchOptions, - setSearchQuery: setSearchOptions, - - packageType, - setPackageType, - - popularPackages, - featuredPackage, - }; - - onMount(async () => { - const getOpts = (provider: Providers): ProviderSearchOptions => ({ - provider, - query: '', - limit: 10, - offset: 0, - categories: null, - game_versions: null, - loaders: null, - package_types: ['mod'], - open_source: null, - }); - - const response = await Promise.allSettled( - PROVIDERS.map(provider => tryResult(() => bridge.commands.searchProviderPackages(provider, getOpts(provider)))), - ); - - const popularPackages = response.reduce((acc, res, i) => { - const provider = PROVIDERS[i] as Providers; - - if (res.status === 'fulfilled') - acc[provider] = res.value.results; - - return acc; - }, {} as PopularPackages); - - setPopularPackages(popularPackages); - }); - - createEffect(() => { - setCluster(recentCluster()); - }); - - createEffect(on(cluster, (cluster) => { - if (cluster !== undefined) - setSearchOptions((prev) => { - const opts: ProviderSearchOptions = { - ...prev, - game_versions: [cluster.meta.mc_version], - }; - - if (cluster.meta.loader !== undefined) - opts.loaders = [cluster.meta.loader]; - - return opts; - }); - })); - - return ( - - {props.children} - - ); -} - -export default function useBrowser() { - const controller = useContext(BrowserContext); - - if (!controller) - throw new Error('useBrowserController should be called inside its BrowserProvider'); - - return controller; -} diff --git a/apps/onelauncher/old_frontend/src/ui/hooks/useCluster.tsx b/apps/onelauncher/old_frontend/src/ui/hooks/useCluster.tsx deleted file mode 100644 index 6cc4b83b..00000000 --- a/apps/onelauncher/old_frontend/src/ui/hooks/useCluster.tsx +++ /dev/null @@ -1,187 +0,0 @@ -import type { Cluster } from '@onelauncher/client/bindings'; -import { useNavigate } from '@solidjs/router'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Dropdown from '~ui/components/base/Dropdown'; -import Modal, { createModal, type ModalProps } from '~ui/components/overlay/Modal'; -import ClusterGame from '~ui/pages/cluster/ClusterGame'; -import { type Accessor, type Context, createContext, createEffect, createResource, createSignal, For, Match, onMount, type ParentProps, type ResourceReturn, Show, Switch, untrack, useContext } from 'solid-js'; -import useCommand, { tryResult } from './useCommand'; - -const ClusterContext = createContext() as Context>; - -export function getCluster(uuid: string | undefined | null): ResourceReturn | undefined { - if (typeof uuid !== 'string' || uuid.length === 0) - return undefined; - - const resource = useCommand(() => bridge.commands.getCluster(uuid)); - return resource; -} - -export function ClusterProvider(props: ParentProps & { uuid: string | undefined }) { - // eslint-disable-next-line solid/reactivity -- todo - const cluster = getCluster(props.uuid); - - return ( - - - {props.children} - - - ); -} - -export function useClusterContext() { - const context = useContext(ClusterContext); - - if (!context) - throw new Error('useClusterContext should be called inside its ClusterProvider'); - - return context; -} - -export function useLaunchCluster(uuid: string | Accessor | (() => string | undefined) | undefined) { - const navigate = useNavigate(); - const [error, setError] = createSignal(undefined); - - const getUuid = () => typeof uuid === 'function' ? uuid() : uuid; - - const modal = createModal(props => ( - - )); - - return () => { - const uuid = getUuid(); - - if (uuid === undefined) - return; - - tryResult(() => bridge.commands.runCluster(uuid)).then((details) => { - navigate(`/clusters/game?${ClusterGame.buildUrl(uuid, details).toString()}`); - }).catch((err) => { - setError(err); - modal.show(); - }); - }; -} - -export function useRecentCluster() { - const [clusters] = useCommand(() => bridge.commands.getClusters()); - const [cluster, setCluster] = createSignal(); - - createEffect(() => { - let mostRecentCluster: Cluster | undefined; - const list = clusters(); - - if (list === undefined) - return; - - for (const cluster of list) { - if (mostRecentCluster === undefined) { - mostRecentCluster = cluster; - continue; - } - - if (typeof mostRecentCluster.meta.played_at !== 'string' && typeof cluster.meta.played_at === 'string') { - mostRecentCluster = cluster; - continue; - } - - if (typeof mostRecentCluster.meta.played_at === 'string' && typeof cluster.meta.played_at === 'string') { - const playedAt = new Date(mostRecentCluster.meta.played_at); - const clusterPlayedAt = new Date(cluster.meta.played_at); - - if (clusterPlayedAt > playedAt) - mostRecentCluster = cluster; - } - } - - setCluster(mostRecentCluster); - }); - - return cluster; -} - -export default useClusterContext; - -type ChooseClusterModalProps = ModalProps & { - clusters?: () => Cluster[]; - selected?: (clusters: Cluster[]) => number; - onSelected?: (cluster: Cluster) => void; -}; - -export function ChooseClusterModal(props: ChooseClusterModalProps) { - const [clusters] = createResource(async () => { - if (props.clusters !== undefined) - return await props.clusters(); - - return await tryResult(bridge.commands.getClusters); - }); - const [selected, setSelected] = createSignal(0); - - onMount(() => { - const newSelected = props.selected?.(clusters() || []); - if (newSelected !== undefined) - setSelected(newSelected); - }); - - function chooseCluster() { - const index = untrack(selected); - const clusterz = untrack(clusters); - if (clusterz !== undefined && index !== undefined) { - const cluster = clusterz[index]; - if (cluster !== undefined) - props.onSelected?.(cluster); - } - - props.hide(); - } - - return ( - , -
- ); - - return { - page, - next, - prev, - hasNext, - hasPrev, - totalPages, - offset, - reset, - options, - Navigation, - }; -} - -export default usePagination; diff --git a/apps/onelauncher/old_frontend/src/ui/hooks/usePreventLeave.tsx b/apps/onelauncher/old_frontend/src/ui/hooks/usePreventLeave.tsx deleted file mode 100644 index c90f7dbe..00000000 --- a/apps/onelauncher/old_frontend/src/ui/hooks/usePreventLeave.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import type { BeforeLeaveEventArgs } from '@solidjs/router'; -import { useBeforeLeave } from '@solidjs/router'; -import { createSignal } from 'solid-js'; - -interface PreventLeaveContext { - continue: () => void; - cancel: () => void; - preventNavigation: () => void; - triedNavigating: () => boolean; -}; - -function usePreventLeave(listener: (ctx: PreventLeaveContext) => void): PreventLeaveContext { - const [event, setEvent] = createSignal(null); - - const ctx: PreventLeaveContext = { - continue: () => { - if (ctx.triedNavigating() !== true) { - console.warn('PreventLeaveContext.continue() called without an event'); - return; - } - - event()?.retry(true); - setEvent(null); - }, - - cancel: () => { - setEvent(null); - }, - - preventNavigation: () => event()?.preventDefault(), - triedNavigating: () => event() !== null, - }; - - useBeforeLeave((e) => { - setEvent(e); - - listener(ctx); - }); - - return ctx; -} - -export default usePreventLeave; diff --git a/apps/onelauncher/old_frontend/src/ui/hooks/useProcessor.tsx b/apps/onelauncher/old_frontend/src/ui/hooks/useProcessor.tsx deleted file mode 100644 index 10f8de3a..00000000 --- a/apps/onelauncher/old_frontend/src/ui/hooks/useProcessor.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { Cluster, DetailedProcess } from '@onelauncher/client/bindings'; -import type { UnlistenFn } from '@tauri-apps/api/event'; -import { bridge } from '~imports'; -import { type Accessor, createEffect, createSignal, onCleanup, onMount, type Resource } from 'solid-js'; -import useCommand, { tryResult } from './useCommand'; - -interface ProcessorHookType { - running: Resource; - stop: (id: string) => Promise; - isRunning: Accessor; -}; - -export default function useProcessor(cluster: Cluster): ProcessorHookType { - const [runningProcesses, { refetch: refetchProcesses }] = useCommand(() => bridge.commands.getProcessesDetailedByPath(cluster.path!)); - const [unlisten, setUnlisten] = createSignal(); - const [isRunning, setIsRunning] = createSignal(false); - - onMount(async () => { - const unlisten = await bridge.events.processPayload.listen((e) => { - if (e.payload.event === 'started' || e.payload.event === 'finished') - refetchProcesses(); - }); - - setUnlisten(() => unlisten); - }); - - onCleanup(() => { - unlisten()?.(); - }); - - createEffect(() => { - setIsRunning((runningProcesses()?.length ?? 0) > 0); - }); - - return { - running: runningProcesses, - stop: async id => await tryResult(() => bridge.commands.killProcess(id)), - isRunning, - }; -} diff --git a/apps/onelauncher/old_frontend/src/ui/hooks/usePromptOpener.tsx b/apps/onelauncher/old_frontend/src/ui/hooks/usePromptOpener.tsx deleted file mode 100644 index c8b47a54..00000000 --- a/apps/onelauncher/old_frontend/src/ui/hooks/usePromptOpener.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { open } from '@tauri-apps/plugin-shell'; -import Button from '~ui/components/base/Button'; -import Modal, { createModal } from '~ui/components/overlay/Modal'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; -import { createSignal } from 'solid-js'; - -function usePromptOpener() { - const [url, setUrl] = createSignal(null); - - const modal = createModal(props => ( - , -
-
- - - - {([group, clusters]) => ( - - )} - -
- )} - fallback={( -
- No clusters were found. - Create one now with the New Cluster button. -
- )} - when={containerIds(clusters()).length > 0} - /> -
- ); -} - -export default HomePage; - -function Banner() { - /** - * If there are any clusters, display the most recent cluster name + some statistics as the "description". - * The background would prioritise - * any screenshots taken from the cluster, if there are none, it would display the cluster cover if it has been set. - * The button would launch the cluster. - * - * If there are no clusters, display a generic background with the button action creating a new cluster. - */ - const cluster = useRecentCluster(); - const launch = useLaunchCluster(() => cluster()?.uuid); - const navigate = useNavigate(); - - return ( -
- - -
-
-

{cluster()?.meta.name || 'Create a cluster'}

- -

- You've played - {' '} - - {cluster()!.meta.mc_version} - {' '} - {upperFirst(cluster()!.meta.loader || 'Unknown')} - - {' '} - for - {' '} - {formatAsDuration((cluster()!.meta.overall_played || 0))} - . -

-
-
-
-
- -
-
- {/* TODO: These tags */} - {/* } /> - }>Verified */} -
-
-
-
- ); -} - -function ClusterCard(props: Cluster) { - const navigate = useNavigate(); - const { running, isRunning } = useProcessor(props); - - function openClusterPage(_e: MouseEvent) { - navigate(`/clusters/?id=${props.uuid}`); - } - - return ( - <> -
openClusterPage(e)} - > -
-
- -
- - -
- - {process => ( - - )} - -
-
-
-
-
-

{props.meta.name}

-

- {upperFirst(props.meta.loader || 'Unknown')} - {' '} - {props.meta.mc_version} - {/* {' '} - {props.packages.mods && `• ${props.mods} mods`} */} -

-
- - -
-
- - ); -} - -interface ClusterGroupProps { - title: string; - clusters: Cluster[]; -} - -function ClusterGroup(props: ClusterGroupProps) { - return ( -
-

{props.title}

-
- - {item => } - -
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/Updates.tsx b/apps/onelauncher/old_frontend/src/ui/pages/Updates.tsx deleted file mode 100644 index bbf86bd8..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/Updates.tsx +++ /dev/null @@ -1,9 +0,0 @@ -function UpdatesPage() { - return ( -

- Updates -

- ); -} - -export default UpdatesPage; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserMain.tsx b/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserMain.tsx deleted file mode 100644 index 84b28728..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserMain.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import type { Providers } from '@onelauncher/client/bindings'; -import { ChevronRightIcon } from '@untitled-theme/icons-solid'; -import OneConfigLogo from '~assets/logos/oneconfig.svg?component-solid'; -import Button from '~ui/components/base/Button'; -import SearchResultsContainer from '~ui/components/content/SearchResults'; -import Spinner from '~ui/components/Spinner'; -import useBrowser from '~ui/hooks/useBrowser'; -import { createMemo, For, onMount, Show } from 'solid-js'; -import { BrowserContent } from './BrowserRoot'; - -function BrowserMain() { - const browser = useBrowser(); - - onMount(() => { - browser.setSearchQuery(prev => ({ - ...prev, - categories: [], - })); - }); - - return ( - -
- - - - - - {([provider, results]) => ( - - )} - - - -
-
- ); -} - -function Featured() { - const browser = useBrowser(); - - const featured = createMemo(() => browser.featuredPackage()?.[0]); - - const open = () => { - const pkg = featured(); - if (!pkg) - return; - browser.displayPackage(pkg.id, pkg.provider); - }; - - return ( - -
-
Featured
-
-
- {`${featured()?.title} -
-
-

{featured()?.title}

- - -
- - OneConfig Integrated -
-
- -

{featured()?.description}

- -
-
-
-
-
-
- ); -} - -export default BrowserMain; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserPackage.tsx b/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserPackage.tsx deleted file mode 100644 index 647e63cd..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserPackage.tsx +++ /dev/null @@ -1,610 +0,0 @@ -import type { Cluster, ManagedPackage, ManagedVersion, Providers } from '@onelauncher/client/bindings'; -import { A, type Params, Route, useSearchParams } from '@solidjs/router'; -import { CalendarIcon, ChevronDownIcon, ClockRewindIcon, Download01Icon, File02Icon, HeartIcon, LinkExternal01Icon } from '@untitled-theme/icons-solid'; -import SteveHead from '~assets/images/steve.png'; -import { bridge } from '~imports'; -import AnimatedRoutes from '~ui/components/AnimatedRoutes'; -import Button from '~ui/components/base/Button'; -import Dropdown from '~ui/components/base/Dropdown'; -import Link from '~ui/components/base/Link'; -import Tooltip from '~ui/components/base/Tooltip'; -import Markdown from '~ui/components/content/Markdown'; -import { createModal } from '~ui/components/overlay/Modal'; -import Spinner from '~ui/components/Spinner'; -import useBrowser from '~ui/hooks/useBrowser'; -import { ChooseClusterModal } from '~ui/hooks/useCluster'; -import useCommand, { tryResult } from '~ui/hooks/useCommand'; -import usePagination from '~ui/hooks/usePagination'; -import usePromptOpener from '~ui/hooks/usePromptOpener'; -import { abbreviateNumber, formatAsRelative } from '~utils'; -import { type Accessor, createContext, createEffect, createMemo, createResource, createSignal, For, Match, on, type ParentProps, type Resource, Show, Switch, useContext } from 'solid-js'; -import { getLicenseUrl, getPackageUrl, upperFirst } from '../../../utils'; - -interface BrowserModParams extends Params { - id: string; - provider: Providers; -} - -interface BrowserPackageContextType { - pkg: Accessor; - body: Resource; -}; - -const BrowserPackageContext = createContext(null); - -const basePath = '/browser/package'; - -function BrowserPackageProvider(props: ParentProps & { pkg: ManagedPackage }) { - const [body] = useCommand(() => bridge.commands.getPackageBody(props.pkg.provider, props.pkg.body)); - - const ctx: BrowserPackageContextType = { - pkg: () => props.pkg, - body, - }; - - return ( - - {props.children} - - ); -} - -function BrowserPackageRoutes() { - return ( - <> - - {/* */} - - - ); -} - -function NavLink(props: ParentProps & { href: string }) { - const [params] = useSearchParams(); - - const url = () => { - const searchParams = new URLSearchParams(params as Record); - return `${basePath}${props.href}?${searchParams.toString()}`; - }; - - return ( - - ); -} - -function BrowserPackage(props: ParentProps) { - const [params] = useSearchParams(); - const [pkg] = useCommand(() => bridge.commands.getProviderPackage(params.provider!, params.id!)); - - const links = [ - ['About', '/'], - // ['Gallery', '/gallery'], - ['Versions', '/versions'], - ]; - - return ( - -
- - - -
-
- - {link => ( - - {link[0]} - - )} - -
- -
- - -
- - {props.children} - -
-
-
-
-
- - )} - when={pkg() !== undefined} - /> -
-
- ); -} - -BrowserPackage.buildUrl = function (params: BrowserModParams): string { - return `${basePath}/?id=${params.id}&provider=${params.provider}`; -}; - -BrowserPackage.Routes = BrowserPackageRoutes; - -export default BrowserPackage; - -function BrowserSidebar(props: { package: ManagedPackage }) { - const [authors] = useCommand(() => props.package, () => bridge.commands.getProviderAuthors(props.package.provider, props.package.author)); - const createdAt = createMemo(() => props.package.created ? new Date(props.package.created) : null); - const updatedAt = createMemo(() => props.package.updated ? new Date(props.package.updated) : null); - const promptOpen = usePromptOpener(); - - return ( -
-
-
- {`Icon - {`Icon -
-
-
-

{props.package.title}

-

- {props.package.package_type} - {' '} - on - {' '} - {props.package.provider} -

- -

Archived

-
-
- -

{props.package.description}

- -
- -
- - {abbreviateNumber(props.package.downloads)} -
- - 0}> -
- - {abbreviateNumber(props.package.followers)} -
-
-
-
-
-
- - - -
-

Links

- - {props.package.provider} - {' '} - Page - -
- -
-

Authors

- - {author => ( - <> -
promptOpen(author.url)} - > - {`${author.username}'s -
- {author.username} - - - Organization - - - - {author.role} - -
- -
- 1)}> -
- - - )} - -
- -
-

Details

- -
- - License - - {props.package.license?.name || props.package.license?.id || 'Unknown'} - -
-
- - - -
- - Created - - {formatAsRelative(createdAt()!.getTime(), 'en', 'long')} - -
-
-
- - - -
- - Last Updated - - {formatAsRelative(updatedAt()!.getTime(), 'en', 'long')} - -
-
-
-
- -
- ); -} - -function InstallButton(props: ManagedPackage) { - const [selected, setSelected] = createSignal(0); - const [clusters] = useCommand(() => bridge.commands.getClusters()); - const controller = useBrowser(); - - const meetsRequirements = (cluster: Cluster) => { - const game_version = props.game_versions.includes(cluster.meta.mc_version); - const loader = props.loaders.includes(cluster.meta.loader || 'vanilla'); - - return game_version && loader; - }; - - const filtered = createMemo(() => clusters()?.filter(meetsRequirements)); - - const getSelectedCluster = () => filtered()?.[selected()]; - - async function download() { - const cluster = getSelectedCluster(); - - if (cluster === undefined) - return; - - // TODO: Add a progress bar - try { - await bridge.commands.downloadProviderPackage( - props.provider, - props.id, - cluster.uuid, - cluster.meta.mc_version, - cluster.meta.loader || null, - null, // TODO: Specific package version - ); - - await bridge.commands.syncClusterPackages(cluster.path || ''); - } - catch (err) { - console.error(err); - } - } - - createEffect(() => { - if (filtered() === undefined) - return; - - const cluster = controller.cluster(); - - if (cluster !== undefined && meetsRequirements(cluster)) { - const index = filtered()!.findIndex(c => c.uuid === cluster.uuid); - if (index !== -1) - setSelected(index); - } - }); - - return ( - 0}> -
- -
- )} - class="max-w-full flex-1 rounded-r-none!" - iconLeft={} - onClick={download} - /> - - ( -
- - ); -} - -// Sub pages -function BrowserPackageBody() { - const context = useContext(BrowserPackageContext); - - return ( -
- -
- ); -} - -// function BrowserPackageGallery() { -// // const context = useContext(BrowserPackageContext); - -// return ( -//
-//
Gallery
-// {/* -// {image => ( -// {image.alt} -// )} -// */} -//
-// ); -// } - -function BrowserPackageVersions() { - const context = useContext(BrowserPackageContext); - const MAX_ITEMS_PER_PAGE = 20; - - const { page, Navigation, reset, options } = usePagination({ - itemsCount: () => context?.pkg().versions.length || 0, - itemsPerPage: () => MAX_ITEMS_PER_PAGE, - }); - - const getVersionsForPage = (page: number) => { - if (context === null) - return []; - - const newestToOldest = context.pkg().versions; - if (context.pkg().provider !== 'SkyClient') - newestToOldest.reverse(); - - const start = (page - 1) * MAX_ITEMS_PER_PAGE; - const end = start + MAX_ITEMS_PER_PAGE; - - return newestToOldest.slice(start, end); - }; - - const [versions, { refetch }] = createResource(context, async () => { - if (context === null) - throw new Error('Context is null'); - - if (context.pkg().versions.length === 0) { - const [data, pagination] = (await tryResult(() => bridge.commands.getAllProviderPackageVersions(context.pkg().provider, context.pkg().id, null, null, page() - 1, MAX_ITEMS_PER_PAGE))) || []; - - if (options().itemsCount() !== pagination.totalCount) - reset({ - itemsCount: () => pagination.totalCount || 0, - itemsPerPage: () => MAX_ITEMS_PER_PAGE, - }); - - return data; - } - - const list = getVersionsForPage(page()); - - const versions = (await tryResult(() => bridge.commands.getProviderPackageVersions(context.pkg().provider, list))); - - if (context.pkg().provider !== 'SkyClient') - versions.reverse(); - - return versions; - }); - - let container!: HTMLDivElement; - - createEffect(on(() => page(), () => { - refetch(); - })); - - return ( -
-
-

- Versions - Page - {' '} - {page()} -

- - -
- - - - - - - - - - - - - - - - {version => } - - -
- - NameGame VersionLoaderCreatedDownloads -
-
- - - -
- ); -} - -function colorForType(type: string) { - switch (type.toLowerCase()) { - case 'release': - return 'bg-code-trace'; - case 'snapshot': - return 'bg-code-debug'; - case 'beta': - return 'bg-code-warn'; - case 'alpha': - return 'bg-code-error'; - default: - return 'bg-border/05'; - } -} - -function VersionRow(props: ManagedVersion) { - const [clusters, setClusters] = createSignal([]); - const context = useContext(BrowserPackageContext); - - async function getClusters() { - const clusters = await tryResult(bridge.commands.getClusters); - - return clusters.filter((cluster) => { - const game_version = props.game_versions.includes(cluster.meta.mc_version); - const loader = props.loaders.includes(cluster.meta.loader || 'vanilla'); - - return game_version && loader; - }); - } - - const modal = createModal((props) => { - return ( - - ); - }); - - async function downloadPrompted() { - const clusterz = await getClusters(); - setClusters(clusterz); - - modal.show(); - } - - async function downloadPackage(cluster: Cluster) { - if (cluster === undefined) - return; - - try { - // eslint-disable-next-line solid/reactivity -- lint issue - await tryResult(() => bridge.commands.downloadProviderPackage( - context!.pkg()!.provider, - context!.pkg()!.id, - cluster.uuid, - cluster.meta.mc_version, - cluster.meta.loader || null, - props.id, - )); - - await bridge.commands.syncClusterPackages(cluster.path || ''); - } - catch (err) { - console.error(err); - } - } - - return ( - - - -
- {props.version_type.charAt(0).toUpperCase()} -
-
- - - -
-

{props.version_display}

-

{props.name === props.version_display ? props.files[0]?.file_name : props.name}

-
- - - - - 3}> - - - {props.game_versions.slice(-3).toReversed().join(', ')} - ... - - - - - {props.game_versions.join(', ')} - - - - - - {props.loaders.map(upperFirst).join(', ')} - - - - {props.published ? formatAsRelative(new Date(props.published).getTime(), 'en', 'long') : 'Unknown'} - - - - {props.downloads.toLocaleString()} - - - -
-
-
Provider
- { - controller.setSearchQuery(prev => ({ - ...prev, - provider: PROVIDERS[index] || 'Modrinth', - })); - controller.search(); - }} - selected={() => PROVIDERS.indexOf(controller.searchQuery().provider)} - > - - {provider => ( - - - {provider} - - )} - - -
- {/*
-
Package Type
- controller.setSearchQuery(prev => ({ - ...prev, - package_types: [PACKAGE_TYPES[index] || 'mod'], - }))} - selected={() => PACKAGE_TYPES.indexOf(controller.searchQuery().package_types?.[0] || 'mod')} - > - - {provider => ( - - {provider} - - )} - - -
*/} -
-
- ); -} - -export function BrowserContent(props: ParentProps) { - return ( -
-
-
-
- -
-
- -
- - -
-
- {props.children} -
-
- - -
-
-
- ); -} - -BrowserRoot.Routes = BrowserRoutes; - -export default BrowserRoot; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserSearch.tsx b/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserSearch.tsx deleted file mode 100644 index 9678cc4a..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/browser/BrowserSearch.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { bridge } from '~imports'; -import SearchResultsContainer from '~ui/components/content/SearchResults'; -import Spinner from '~ui/components/Spinner'; -import useBrowser from '~ui/hooks/useBrowser'; -import useCommand from '~ui/hooks/useCommand'; -import usePagination, { type PaginationOptions } from '~ui/hooks/usePagination'; -import { createEffect, on, Show } from 'solid-js'; -import { BrowserContent } from './BrowserRoot'; - -function BrowserSearch() { - const browser = useBrowser(); - const [results, { refetch }] = useCommand(() => bridge.commands.searchProviderPackages(browser.searchQuery().provider, browser.searchQuery())); - - const paginationOptions = (): PaginationOptions => ({ - itemsCount: () => results()?.total || 0, - itemsPerPage: () => browser.searchQuery().limit || 20, - }); - - const pagination = usePagination(paginationOptions()); - - createEffect(on(browser.searchQuery, () => { - refetch(); - })); - - createEffect(on(() => results()?.total, (curr, prev) => { - if (curr !== prev) - pagination.reset(paginationOptions()); - })); - - createEffect(on(pagination.page, () => { - browser.setSearchQuery(prev => ({ - ...prev, - offset: pagination.offset(), - })); - })); - - return ( - - - - -
Results
- -
- )} - provider={browser.searchQuery().provider} - results={results()!.results} - /> - - -
- -
- - - ); -} - -export default BrowserSearch; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterGame.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterGame.tsx deleted file mode 100644 index 4f7dc308..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterGame.tsx +++ /dev/null @@ -1,143 +0,0 @@ -import type { DetailedProcess } from '@onelauncher/client/bindings'; -import type { UnlistenFn } from '@tauri-apps/api/event'; -import { type Params, useSearchParams } from '@solidjs/router'; -import { SlashOctagonIcon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Tooltip from '~ui/components/base/Tooltip'; -import FormattedLog, { Line } from '~ui/components/content/FormattedLog'; -import { TimeAgo } from '~ui/components/DynamicTime'; -import Modal, { createModal } from '~ui/components/overlay/Modal'; -import Sidebar from '~ui/components/Sidebar'; -import useClusterContext from '~ui/hooks/useCluster'; -import { tryResult } from '~ui/hooks/useCommand'; -import useNotifications from '~ui/hooks/useNotifications'; -import { createResource, createSignal, onCleanup, onMount } from 'solid-js'; -import { render } from 'solid-js/web'; - -interface ClusterGameParams extends Params { - process_uuid: string; - started_at: string; - pid: string; - user: string; -}; - -function ClusterGame() { - const [cluster] = useClusterContext(); - const [params] = useSearchParams(); - const [log] = createResource(() => { - return tryResult(() => bridge.commands.getClusterLog(cluster()!.uuid, 'latest.log')) - .then(res => res) - .catch((err) => { - console.error(err); - return ''; - }); - }); - const [isRunning, setIsRunning] = createSignal(true); - const notifications = useNotifications(); - - const [unlisten, setUnlisten] = createSignal(); - let codeRef!: HTMLElement; - - onMount(async () => { - const unlisten = await bridge.events.processPayload.listen((event) => { - if (event.payload.uuid !== params.process_uuid) - return; - - if (event.payload.event === 'logging') - render(() => , codeRef); - else if (event.payload.event === 'finished') - setIsRunning(false); - else if (event.payload.event === 'modified') - notifications.create({ - title: 'Process Status', - message: event.payload.message, - }); - }); - - setUnlisten(() => unlisten); - }); - - onCleanup(() => { - unlisten()?.(); - }); - - const killModal = createModal(props => ( - killProcess(true)} - timeLeft={1} - title="Kill Game" - /> - )); - - function killProcess(force: boolean = false) { - if (params.process_uuid !== undefined) { - if (force === true) { - bridge.commands.killProcess(params.process_uuid); - return; - } - - killModal.show(); - } - } - - const date = new Date(params.started_at!); - - return ( - -

{isRunning() ? 'Game Running' : 'Game Stopped'}

-
-
-
-
- - Started: - {' '} - - - - -
-
- -

- PID: - {' '} - {params.pid || 0} -

-
- - codeRef = el} - enableAutoScroll={true} - log={log()?.trim()} - /> - -
-
-
-
- ); -} - -ClusterGame.buildUrl = function (cluster_id: string, detailed: DetailedProcess): URLSearchParams { - return new URLSearchParams({ - id: cluster_id, - process_uuid: detailed.uuid, - started_at: detailed.started_at, - pid: detailed.pid.toString(), - ...(detailed.user ? { user: detailed.user } : {}), - }); -}; - -export default ClusterGame; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterLogs.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterLogs.tsx deleted file mode 100644 index 89ac5263..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterLogs.tsx +++ /dev/null @@ -1,122 +0,0 @@ -import { open } from '@tauri-apps/plugin-shell'; -import { LinkExternal01Icon, Upload01Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Dropdown from '~ui/components/base/Dropdown'; -import FormattedLog from '~ui/components/content/FormattedLog'; -import useClusterContext from '~ui/hooks/useCluster'; -import useCommand, { tryResult } from '~ui/hooks/useCommand'; -import useNotifications from '~ui/hooks/useNotifications.tsx'; -import useSettings from '~ui/hooks/useSettings'; -import { join } from 'pathe'; -import { createEffect, createSignal, For, Show, untrack } from 'solid-js'; - -function ClusterLogs() { - const [cluster] = useClusterContext(); - const [logs] = useCommand(() => bridge.commands.getClusterLogs(cluster()!.uuid)); - const { settings } = useSettings(); - const notifications = useNotifications(); - - const [activeLogFile, setActiveLogFile] = createSignal(null); - const [logContent, setLogContent] = createSignal(null); - - function getAndSetLog(log_name: string) { - tryResult(() => bridge.commands.getClusterLog(cluster()!.uuid, log_name)).then(setLogContent); - } - - function changeLog(index: number) { - const log = untrack(() => logs()); - if (log === undefined || log[index] === undefined) - return; - - setActiveLogFile(log[index]); - } - - async function openFolder() { - const root = settings().config_dir; - const path = cluster()!.path; - if (root === null || root === undefined || path === null || path === undefined) - return; - - const dir = join(root, 'clusters', path); - open(join(dir, 'logs')); - } - - async function uploadAndOpenLog() { - const log = activeLogFile(); - if (log === null) - return; - - const id = await tryResult(() => bridge.commands.uploadLog(cluster()!.uuid, log)); - - open(`https://mclo.gs/${id}`).then(() => notifications.set('logs', { - title: 'Log Uploaded', - message: 'Opening in your browser.', - })); - } - - const missingLogs = () => logs() === undefined || logs()?.length === 0 || false; - - createEffect(() => { - const log = logs()?.[0]; - - // Set default log to the first file - if (log !== undefined && activeLogFile() === null) - setActiveLogFile(log); - - // Fetch log content - if (activeLogFile() !== null) - getAndSetLog(activeLogFile()!); - }); - - return ( -
-
-
-

Logs

-
-
-
- - No logs were found.} when={logContent() !== null}> - - -
-
- ); -} - -export default ClusterLogs; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterMods.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterMods.tsx deleted file mode 100644 index 724e5434..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterMods.tsx +++ /dev/null @@ -1,314 +0,0 @@ -import type { Package } from '@onelauncher/client/bindings'; -import UFuzzy from '@leeoniya/ufuzzy'; -import { open } from '@tauri-apps/plugin-shell'; -import { FilterFunnel01Icon, LinkExternal01Icon, RefreshCw01Icon, SearchMdIcon, Trash03Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Checkbox from '~ui/components/base/Checkbox'; -import TextField from '~ui/components/base/TextField'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useBrowser from '~ui/hooks/useBrowser'; -import useClusterContext from '~ui/hooks/useCluster'; -import useCommand, { tryResult } from '~ui/hooks/useCommand'; -import useProcessor from '~ui/hooks/useProcessor'; -import useSettings from '~ui/hooks/useSettings'; -import { join } from 'pathe'; -import { type Accessor, createEffect, createSignal, For, Match, on, Show, Switch, untrack } from 'solid-js'; - -// TODO: This needs a rewrite. -function ClusterMods() { - const [cluster] = useClusterContext(); - const { settings } = useSettings(); - const { isRunning } = useProcessor(cluster()!); - const [mods, { refetch: refetchModsCommand }] = useCommand(cluster, () => bridge.commands.getClusterPackages(cluster()?.path || '', 'mod')); - - // Mods to display, should be a clone of the mods array but sorted - const [displayedMods, setDisplayedMods] = createSignal([]); - - // true - `A to Z` & false - `Z to A` - const [sortingAtoZ, setSortingAtoZ] = createSignal(true); - - const [searchQuery, setSearchQuery] = createSignal(''); - - async function refetchMods() { - if (mods.loading) - return; - - await refetchModsCommand(); - } - - function getModName(mod: Package) { - if (mod.meta.type === 'unknown') - return mod.file_name; - - return mod.meta.title || mod.file_name; - } - - const uf = new UFuzzy(); - const [modsSearchable] = createSignal(() => mods()?.map(getModName) || []); - - function search(query: string) { - if (query.length === 0) - return untrack(mods) || []; - - const result = uf.search(modsSearchable()(), query); - - const filtered: Package[] = []; - result[0]?.forEach((index) => { - const mod = mods()?.[index]; - if (mod) - filtered.push(mod); - }); - - return filtered; - } - - function sortListByName(list: Package[]): Package[] { - if (sortingAtoZ()) - return list.sort((a, b) => getModName(a).localeCompare(getModName(b))); - else - return list.sort((a, b) => getModName(b).localeCompare(getModName(a))); - } - - function onToggleNameSort() { - setSortingAtoZ(value => !value); - setDisplayedMods(value => sortListByName([...value])); - } - - function openFolder() { - open(join(settings().config_dir || '', 'clusters', cluster()?.path || '', 'mods')); - } - - createEffect(on(mods, (value) => { - setDisplayedMods(sortListByName(value || [])); - })); - - createEffect(on(searchQuery, (query) => { - setDisplayedMods(sortListByName(search(query))); - })); - - return ( - -
-

Mods

-
-
-
-
-
- - - - -

Fetching mods...

-
- - 0}> - - {mod => ( - - )} - - - - -

No mods were found

-
-
-
- -
-
-
- ); -} - -export default ClusterMods; - -interface ModEntryProps { - pkg: Package; - refetch: () => void; - isRunning: Accessor; -}; - -function ModEntry(props: ModEntryProps) { - const [cluster] = useClusterContext(); - const browser = useBrowser(); - // eslint-disable-next-line solid/reactivity -- . - const [disabled, setDisabled] = createSignal(props.pkg.disabled || false); - - const name = () => { - if (props.pkg.meta.type === 'unknown') { - let fileName = props.pkg.file_name; - if (fileName.endsWith('.disabled')) - fileName = fileName.slice(0, -9); - - return fileName; - } - - return props.pkg.meta.title || props.pkg.file_name; - }; - - const version = () => { - let formatted = 'Unknown'; - - if (props.pkg.meta.type === 'managed') - formatted = props.pkg.meta.version_formatted; - - return formatted; - }; - - const tags = () => { - type TagStatus = 'normal' | 'warning' | 'danger'; - const tags: [string, TagStatus][] = []; - const meta = props.pkg.meta; - - if (meta.type === 'managed') { - tags[0] = [meta.provider, 'normal']; - - const supportedVersions = meta.mc_versions || []; - if (supportedVersions.length === 0) - tags.push(['Unknown Version', 'warning']); - else if (!supportedVersions.includes(cluster()!.meta.mc_version)) - tags.push(['Incompatible', 'danger']); - } - else { - tags[0] = ['Unknown', 'normal']; - } - - return tags; - }; - - const icon = () => { - if (props.pkg.meta.type === 'managed') - return props.pkg.meta.icon_url; - - return undefined; - }; - - function onClick(e: MouseEvent) { - const meta = props.pkg.meta; - if (meta.type === 'managed') { - e.preventDefault(); - e.stopPropagation(); - - browser.displayPackage(meta.package_id, meta.provider); - } - } - - async function deletePackage(e: MouseEvent) { - e.preventDefault(); - e.stopPropagation(); - - const path = cluster()?.path; - if (path) { - await bridge.commands.removeClusterPackage(path, props.pkg.file_name, 'mod'); - await bridge.commands.syncClusterPackages(path); - props.refetch(); - } - } - - async function togglePackage(checked: boolean) { - try { - const path = cluster()?.path; - if (path) { - setDisabled(!checked); - // eslint-disable-next-line solid/reactivity -- bs lol - await tryResult(() => bridge.commands.setClusterPackageEnabled( - path, - props.pkg.file_name, - 'mod', - checked, - )).then(() => setDisabled(!checked)); - } - } - catch (err) { - console.error(err); - } - } - - return ( -
-
- } - fallback={
} - when={icon()} - /> -
-
-
-
-
- -

{name()}

- - {([tag, status]) => ( - - {tag} - - )} - -
- - {version()} - {/* TODO: Add version checker */} - {/* */} - {/* - 1.0.1 */} - {/* */} - -
-
- -
- - -
-
-
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterOverview.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterOverview.tsx deleted file mode 100644 index f3585fcd..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterOverview.tsx +++ /dev/null @@ -1,372 +0,0 @@ -import type { Cluster } from '@onelauncher/client/bindings'; -import { useNavigate } from '@solidjs/router'; -import * as dialog from '@tauri-apps/plugin-dialog'; -import { open } from '@tauri-apps/plugin-shell'; -import { Edit02Icon, FolderIcon, ImagePlusIcon, LinkExternal01Icon, Save01Icon, Share07Icon, Tool02Icon, Trash01Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import TextField from '~ui/components/base/TextField'; -import LaunchButton from '~ui/components/LaunchButton'; -import Modal, { createModal, type ModalProps } from '~ui/components/overlay/Modal'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import SettingsRow from '~ui/components/SettingsRow'; -import Sidebar from '~ui/components/Sidebar'; -import useClusterContext from '~ui/hooks/useCluster'; -import usePreventLeave from '~ui/hooks/usePreventLeave'; -import useSettings from '~ui/hooks/useSettings'; -import { formatAsDuration, upperFirst } from '~utils'; -import { join } from 'pathe'; -import { type Accessor, createSignal, type Setter, Show, untrack } from 'solid-js'; -import Button from '../../components/base/Button'; -import ClusterCover from '../../components/game/ClusterCover'; -import LoaderIcon from '../../components/game/LoaderIcon'; - -function ClusterOverview() { - const { settings } = useSettings(); - const [cluster, { refetch }] = useClusterContext(); - - const [editMode, setEditMode] = createSignal(false); - const [newName, setNewName] = createSignal(''); - const [newCover, setNewCover] = createSignal(''); - - const navigate = useNavigate(); - - const saveModal = createModal(props => ( - - )); - - const deleteModal = createModal(props => ( - - )); - - function getPath() { - const clusterPath = cluster()?.path; - const configDir = settings().config_dir; - - if (typeof clusterPath !== 'string' || typeof configDir !== 'string') - return ''; - - return join(configDir, 'clusters', clusterPath); - } - - function openPath() { - open(getPath()); - } - - async function deleteCluster() { - await bridge.commands.removeCluster(cluster()!.uuid); - navigate('/'); - } - - async function repairCluster() { - await bridge.commands.repairCluster(cluster()!.uuid); - } - - function madeChanges() { - const name = untrack(() => newName()); - const cover = untrack(() => newCover()); - const c = untrack(() => cluster()); - - if (!c) - return false; - - const changedName = (name.length > 0 && name !== c.meta.name); - const changedCover = (cover.length > 0 && (cover !== c.meta.icon_url || cover !== c.meta.icon)); - - return changedName || changedCover; - } - - function toggleEditMode() { - const next = !untrack(() => editMode()); - - if (next === false && madeChanges()) { - saveModal.show(); - return; - } - - setEditMode(next); - } - - async function pushEdits() { - const c = untrack(() => cluster()); - - if (!c) - return; - - await bridge.commands.editClusterMeta( - c.uuid, - newName().length > 0 ? newName() : null, - newCover().length > 0 ? newCover() : c.meta.icon_url || c.meta.icon || null, - ); - - refetch(); - } - - const preventLeave = usePreventLeave((ctx) => { - if (editMode() && madeChanges()) { - ctx.preventNavigation(); - saveModal.show(); - } - }); - - async function dontSave() { - saveModal.hide(); - setEditMode(false); - - if (preventLeave.triedNavigating()) - preventLeave.continue(); - } - - async function save() { - await pushEdits(); - saveModal.hide(); - setEditMode(false); - - if (preventLeave.triedNavigating()) - preventLeave.continue(); - } - - return ( - -

Overview

- - - - Folders and Files - } - onClick={openPath} - /> - )} - description={getPath()} - disabled={editMode()} - icon={} - title="Cluster Folder" - /> - - Cluster Actions - } - fallback={} - when={editMode() === false} - /> - )} - onChecked={toggleEditMode} - /> - )} - description="Edit the cluster name and cover image." - icon={} - title="Edit Cluster" - /> - } - onClick={() => deleteModal.show()} - /> - )} - description="Delete this cluster and all its data." - disabled={editMode()} - icon={} - title="Delete Cluster" - /> - } - onClick={repairCluster} - /> - )} - description="Verifies whether all assets, libraries and natives were properly installed." - icon={} - title="Verify Cluster" - /> - -
- ); -} - -interface SaveModalProps extends ModalProps { - save: () => void; - dontSave: () => void; -} - -function SaveModal(p: SaveModalProps) { - const [modalProps, props] = Modal.SplitProps(p); - - return ( - modalProps.hide()} - />, -
-
- -
-
- ); -} - -export default ClusterOverview; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterRoot.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterRoot.tsx deleted file mode 100644 index fdf557dd..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterRoot.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import { type Navigator, Route, useIsRouting, useSearchParams } from '@solidjs/router'; -import { EyeIcon, File06Icon, Globe04Icon, Image03Icon, PackagePlusIcon, Settings04Icon } from '@untitled-theme/icons-solid'; -import PlayerHead from '~ui/components/game/PlayerHead'; -import LaunchButton from '~ui/components/LaunchButton'; -import useClusterContext, { ClusterProvider } from '~ui/hooks/useCluster'; -import useProcessor from '~ui/hooks/useProcessor'; -import { supportsMods } from '~utils'; -import { createEffect, type ParentProps, Show } from 'solid-js'; -import AnimatedRoutes from '../../components/AnimatedRoutes'; -import ErrorBoundary from '../../components/ErrorBoundary'; -import Sidebar from '../../components/Sidebar'; -import ClusterGame from './ClusterGame'; -import ClusterLogs from './ClusterLogs'; -import ClusterMods from './ClusterMods'; -import ClusterOverview from './ClusterOverview'; -import ClusterScreenshots from './ClusterScreenshots'; -import ClusterSettings from './ClusterSettings'; -import ClusterWorlds from './ClusterWorlds'; - -function ClusterRoutes() { - return ( - <> - - - - - - - { - const [searchParams] = useSearchParams(); - - return ( - - - - ); - }} - path="/game" - /> - - ); -} - -function ClusterRoot(props: ParentProps) { - const [searchParams] = useSearchParams<{ id: string }>(); - - return ( - -
-
- -
- -
- - - {props.children} - - -
-
-
- ); -} - -ClusterRoot.open = function (navigate: Navigator, uuid: string) { - navigate(`/clusters/?id=${uuid}`); -}; - -function ClusterSidebar() { - const [cluster, { refetch: refetchCluster }] = useClusterContext(); - const { running: runningProcesses } = useProcessor(cluster()!); - const isRouting = useIsRouting(); - - createEffect(() => { - if (isRouting()) - refetchCluster(); - }); - - return ( -
- - , 'Overview', '/'], - (supportsMods(cluster()) ? [, 'Mods', '/mods'] : undefined), - [, 'Screenshots', '/screenshots'], - [, 'Worlds', '/worlds'], - [, 'Logs', '/logs'], - [, 'Game Settings', '/settings'], - ], - ...(runningProcesses() && runningProcesses()!.length > 0 - ? { - Running: runningProcesses()!.map((details, index) => { - const icon = ; ; - - return [icon, `Process #${index + 1}`, '/game', ClusterGame.buildUrl(cluster()!.uuid, details)]; - }), - } - : {}), - }} - /> - - - -
- ); -} - -ClusterRoot.Routes = ClusterRoutes; - -export default ClusterRoot; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterScreenshots.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterScreenshots.tsx deleted file mode 100644 index af2e2e3d..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterScreenshots.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import { convertFileSrc } from '@tauri-apps/api/core'; -import { open } from '@tauri-apps/plugin-shell'; -import { LinkExternal01Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useClusterContext from '~ui/hooks/useCluster'; -import useCommand from '~ui/hooks/useCommand'; -import useSettings from '~ui/hooks/useSettings'; -import { join } from 'pathe'; -import { For, Show } from 'solid-js'; - -function ClusterScreenshots() { - const { settings } = useSettings(); - const [cluster] = useClusterContext(); - const [list] = useCommand(() => bridge.commands.getScreenshots(cluster()!.uuid!)); - - function openFolder() { - open(join(settings().config_dir || '', 'clusters', cluster()?.path || '', 'screenshots')); - } - - return ( - -

Screenshots

- - No screenshots found. Press F2 in game to take a screenshot!
} - when={list() !== undefined && list()!.length > 0} - > -
- - {screenshot => ( - - )} - -
- - - -
-
- - ); -} - -export default ClusterScreenshots; - -function ScreenshotEntry(props: { path: string; cluster_path: string }) { - const { settings } = useSettings(); - - const dir = () => join(settings().config_dir || '', 'clusters', props.cluster_path, 'screenshots'); - const pathSrc = () => convertFileSrc(join(dir(), props.path)); - - function onClick() { - // TODO: Probably make a cool image viewer or something - open(dir()); - } - - return ( -
- {props.path} -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterSettings.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterSettings.tsx deleted file mode 100644 index d58bb81a..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterSettings.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import type { Cluster } from '@onelauncher/client/bindings'; -import { useBeforeLeave } from '@solidjs/router'; -import { bridge } from '~imports'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useClusterContext from '~ui/hooks/useCluster'; -import { tryResult } from '~ui/hooks/useCommand'; -import useSettings from '~ui/hooks/useSettings'; -import { type Accessor, Show } from 'solid-js'; -import { createSetting, GameSettings, JvmSettings, LauncherSettings, ProcessSettings } from '../settings/game/SettingsMinecraft'; - -function ClusterSettings() { - const [cluster] = useClusterContext(); - - return ( - -

Game Settings

- - - {PageSettings(() => cluster()!)} - - -
- ); -} - -function PageSettings(cluster: Accessor) { - const { settings, save } = useSettings(); - - // Game - const fullscreen = createSetting(cluster().force_fullscreen, settings().force_fullscreen ?? false); - const resolution = createSetting(cluster().resolution, settings().resolution); - const memory = createSetting(cluster().memory, settings().memory); - - // Launcher - - // Process - const preCommand = createSetting(cluster().init_hooks?.pre, settings().init_hooks.pre ?? ''); - const wrapperCommand = createSetting(cluster().init_hooks?.wrapper, settings().init_hooks.wrapper ?? ''); - const postCommand = createSetting(cluster().init_hooks?.post, settings().init_hooks.post ?? ''); - - // JVM - const javaVersion = createSetting(cluster().java?.custom_version || null); - const javaVersions = createSetting(settings().java_versions); - const javaArgs = createSetting(cluster().java?.custom_arguments, settings().custom_java_args); - const envVars = createSetting(cluster().java?.custom_env_arguments, settings().custom_env_args); - - useBeforeLeave(() => { - tryResult(() => bridge.commands.editGameSettings(cluster().uuid, { - ...cluster(), - - // Game - force_fullscreen: fullscreen.getRaw(), - resolution: resolution.getRaw(), - memory: memory.getRaw(), - - // Process - init_hooks: { - pre: preCommand.getRaw(), - wrapper: wrapperCommand.getRaw(), - post: postCommand.getRaw(), - }, - - // JVM - java: { - custom_version: javaVersion.getRaw(), - custom_arguments: javaArgs.getRaw(), - custom_env_arguments: envVars.getRaw(), - }, - })); - - save({ - ...settings(), - java_versions: javaVersions.get(), - }); - }); - - return ( - <> - - - - - - - - - ); -} - -export default ClusterSettings; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterWorlds.tsx b/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterWorlds.tsx deleted file mode 100644 index cfea2691..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/cluster/ClusterWorlds.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import { open } from '@tauri-apps/plugin-shell'; -import { LinkExternal01Icon, Trash01Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import WorldIcon from '~ui/components/game/WorldIcon'; -import Modal, { createModal } from '~ui/components/overlay/Modal'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useClusterContext from '~ui/hooks/useCluster'; -import useCommand from '~ui/hooks/useCommand'; -import useSettings from '~ui/hooks/useSettings'; -import { join } from 'pathe'; -import { For, Show } from 'solid-js'; - -function ClusterWorlds() { - const { settings } = useSettings(); - const [cluster] = useClusterContext(); - const [list] = useCommand(() => bridge.commands.getWorlds(cluster()!.uuid)); - - function openFolder() { - open(join(settings().config_dir || '', 'clusters', cluster()?.path || '', 'saves')); - } - - return ( - -

Worlds

- - No worlds found.
} - when={list() !== undefined && list()!.length > 0} - > -
- - {world_name => ( - - )} - -
- - - -
-
- - ); -} - -export default ClusterWorlds; - -function WorldEntry(props: { name: string; cluster_path: string }) { - const { settings } = useSettings(); - - const dir = () => join(settings().config_dir || '', 'clusters', props.cluster_path, 'saves', props.name); - - const deleteModal = createModal(self => ( - { - // bridge.commands.deleteWorld(props.name); - self.hide(); - }} - title={`Delete '${props.name}'`} - /> - )); - - function onClick() { - // TODO: World region viewer or whatever?? - open(dir()); - } - - function deleteWorld(e: Event) { - e.preventDefault(); - e.stopImmediatePropagation(); - - deleteModal.show(); - } - - return ( -
-
- -
-

{props.name}

-

Todo

-
-
- -
-
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/Onboarding.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/Onboarding.tsx deleted file mode 100644 index 6435673f..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/Onboarding.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import type { ImportType } from '@onelauncher/client/bindings'; -import { Route, useBeforeLeave, useLocation, useNavigate } from '@solidjs/router'; -import { ChevronLeftIcon, ChevronRightIcon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import AnimatedRoutes from '~ui/components/AnimatedRoutes'; -import Button from '~ui/components/base/Button'; -import useSettings from '~ui/hooks/useSettings'; -import { pluralize, setAsyncTimeout } from '~utils'; -import { type Accessor, type Context, createContext, createEffect, createSignal, type JSX, on, type ParentProps, useContext } from 'solid-js'; -import OnboardingComplete from './OnboardingComplete'; -import OnboardingImport from './OnboardingImport'; -import OnboardingLanguage, { type Language, LanguagesList } from './OnboardingLanguage'; -import OnboardingLogin from './OnboardingLogin'; -import OnboardingSummary from './OnboardingSummary'; -import OnboardingWelcome from './OnboardingWelcome'; - -const basePath = '/onboarding'; -const OnboardingSteps = [ - ['/', OnboardingWelcome], - - ['/language', OnboardingLanguage], - ['/login', OnboardingLogin], - ['/import', OnboardingImport], - - ['/summary', OnboardingSummary], // Second to last will always be the summary (which is basically a confirmation for all the tasks that are about to be done) - ['/complete', OnboardingComplete], // Last will always be a "onelauncher is ready to use" page -] as const; - -// eslint-disable-next-line no-restricted-syntax -- - -export const enum OnboardingTaskStage { - NotStarted = 0, - Running = 1, - Completed = 2, -} - -interface ImportInstancesType { - basePath: string; - instances: string[]; -} - -type InstancesImportMapType = Map; - -interface OnboardingContextType { - setLanguage: (language: Language) => void; - language: () => Language; - - setImportInstances: (type: ImportType, basePath: string, instances: string[]) => void; - importInstances: (type: ImportType) => ImportInstancesType | undefined; - - setForwardButtonEnabled: (enabled: boolean) => void; - - getTasks: () => string[]; - - tasksStage: Accessor; - tasksMessage: Accessor; -} - -const OnboardingContext = createContext() as Context; - -function Onboarding(props: ParentProps) { - const navigate = useNavigate(); - const location = useLocation(); - const { settings, save: saveSettings } = useSettings(); - - const [backButtonEnabled, setBackButtonEnabled] = createSignal(false); - const [forwardButtonEnabled, setForwardButtonEnabled] = createSignal(true); - - const [language, setLanguage] = createSignal('en'); - const [importInstances, setImportInstances] = createSignal(new Map()); - const [tasksStage, setTasksStage] = createSignal(OnboardingTaskStage.NotStarted); - const [tasksMessage, setTasksMessage] = createSignal(''); - - const tasksCompleted = () => tasksStage() === OnboardingTaskStage.Completed; - - const percentage = () => (step() / (OnboardingSteps.length - 1)) * 100; - const step = () => OnboardingSteps.findIndex(([path]) => (basePath + path).startsWith(location.pathname)); - const shallRunTasks = () => !tasksCompleted() && step() === OnboardingSteps.length - 2; - - createEffect(on(() => location.pathname, () => { - setBackButtonEnabled(step() > 0 && !tasksCompleted()); - setForwardButtonEnabled(step() < OnboardingSteps.length - 1 && !tasksCompleted()); - })); - - useBeforeLeave((e) => { - if (tasksCompleted() && step() === OnboardingSteps.length - 1 && !settings().onboarding_completed) - e.preventDefault(); - }); - - const next = () => { - const isLast = step() === OnboardingSteps.length - 1; - - if (isLast) - saveSettings({ - ...settings(), - onboarding_completed: true, - }).finally(() => navigate('/')); - else - navigate(basePath + OnboardingSteps[step() + 1]![0]); - }; - - const previous = () => { - if (step() > 0) - navigate(basePath + OnboardingSteps[step() - 1]![0]); - }; - - const getButtonText = () => { - if (shallRunTasks()) - return 'Setup'; - else if (step() === OnboardingSteps.length - 1) - return 'Finish'; - else - return 'Next'; - }; - - const runTasks = async () => { - setBackButtonEnabled(false); - setForwardButtonEnabled(false); - - setTasksStage(OnboardingTaskStage.Running); - - const tasks = [ - - async () => { - setTasksMessage('Setting language'); // TODO: Actually do this - await setAsyncTimeout(500); - }, - - // eslint-disable-next-line solid/reactivity -- - - async () => { - for (const [launcher, value] of importInstances()) { - if (value.instances.length === 0) - continue; - - setTasksMessage(`Importing ${value.instances.length} ${pluralize(value.instances.length, 'instance')} ${launcher}`); - try { - await bridge.commands.importInstances(launcher, value.basePath, value.instances); - } - catch (e) { - console.error(e); - setTasksMessage(`Failed to import ${value.instances.length} ${pluralize(value.instances.length, 'instance')} ${launcher}...`); - await setAsyncTimeout(1500); - } - } - }, - - ].map(task => task()); - - const errorCount = (await Promise.allSettled(tasks)).filter(({ status }) => status === 'rejected').length; - - if (errorCount > 0) - console.error('Error count:', errorCount); // TODO: Show a toast or something idk - - setForwardButtonEnabled(true); - setTasksStage(OnboardingTaskStage.Completed); - next(); // Go to Completion page - }; - - const getTasks = () => { - const tasks = []; - - tasks.push(`Set language to ${LanguagesList[language()][0]}`); - - importInstances().forEach((value, launcher) => { - if (value.instances.length === 0) - return; - - let builder = `Import ${value.instances.length} ${pluralize(value.instances.length, 'instance')} from ${launcher}\n`; - value.instances.forEach((instance, index) => { - builder += ` ${index + 1}. ${instance}\n`; - }); - - tasks.push(builder); - }); - - return tasks; - }; - - const ctx: OnboardingContextType = { - setLanguage, - language, - - setImportInstances(type, basePath, instances) { - setImportInstances((importTypes) => { - const newMap = new Map(importTypes); - newMap.set(type, { - basePath, - instances, - }); - return newMap; - }); - }, - importInstances: type => importInstances().get(type), - - getTasks, - - setForwardButtonEnabled, - - tasksStage, - tasksMessage, - }; - - return ( - -
-
-
-
- -
-
- - {props.children} - -
- -
-
-
-
-
-
- - ); -} - -Onboarding.useContext = () => { - const ctx = useContext(OnboardingContext); - if (!ctx) - throw new Error('Onboarding context not found'); - - return ctx; -}; - -Onboarding.Steps = OnboardingSteps; -Onboarding.Routes = OnboardingSteps.map(([path, component]) => ( - -)); - -export default Onboarding; - -export interface OnboardingStepProps extends ParentProps { - title: string; - paragraph: string; - illustration: JSX.Element; -} - -export function OnboardingStep(props: OnboardingStepProps) { - return ( -
-
- {props.illustration} -
- -
-
-

{props.title}

-

{props.paragraph}

-
- -
- {props.children} -
-
-
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingComplete.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingComplete.tsx deleted file mode 100644 index 3080d34b..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingComplete.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { onMount } from 'solid-js'; -import Onboarding from './Onboarding'; - -function OnboardingComplete() { - const context = Onboarding.useContext(); - - onMount(() => { - context.setForwardButtonEnabled(true); - }); - - return ( -
-

- You're all set -

- -

OneLauncher is ready to be used.

-
- ); -} - -export default OnboardingComplete; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingImport.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingImport.tsx deleted file mode 100644 index 9d63ddae..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingImport.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import type { ImportType } from '@onelauncher/client/bindings'; -import type { LauncherImportInformation } from '~ui/components/content/LauncherImportComponent'; -import Illustration from '~assets/illustrations/onboarding/import_from_others.svg?component-solid'; -import Button from '~ui/components/base/Button'; -import Link from '~ui/components/base/Link'; -import LauncherIcon from '~ui/components/content/LauncherIcon'; -import LauncherImportComponent from '~ui/components/content/LauncherImportComponent'; -import Modal, { createModal, type ModalProps } from '~ui/components/overlay/Modal'; -import { LAUNCHER_IMPORT_TYPES } from '~utils'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; -import { createMemo, createSignal, For, untrack } from 'solid-js'; -import Onboarding, { OnboardingStep } from './Onboarding'; - -function OnboardingImport() { - const ctx = Onboarding.useContext(); - const [launcher, setLauncher] = createSignal(); - - const foundInfo = createMemo(() => ctx.importInstances(launcher()!)); - - const modal = createModal(props => ( - { - ctx.setImportInstances(launcher()!, basePath, instance); - }} - path={foundInfo()?.basePath} - /> - )); - - function displayImport(type: ImportType) { - setLauncher(type); - modal.show(); - } - - return ( - } - paragraph="Import your profiles from other launchers." - title="Import" - > -
- -
- - {type => ( - - )} - -
- - Want to contribute a launcher import? Click - {' '} - here - . - -
-
-
- ); -} - -export default OnboardingImport; - -type InstancesPickerModalProps = ModalProps & { - launcher: ImportType; - path: string | undefined; - instances: string[] | undefined; - onSelected: (basePath: string, instances: string[]) => void; -}; - -function InstancesPickerModal(props: InstancesPickerModalProps) { - const [importInfo, setImportInfo] = createSignal({ - // eslint-disable-next-line solid/reactivity -- its ok - importType: props.launcher, - // eslint-disable-next-line solid/reactivity -- its ok - instances: props.instances || [], - // eslint-disable-next-line solid/reactivity -- its ok - path: props.path || '', - }); - - const instanceLength = createMemo(() => importInfo().instances.length); - - return ( - { - const info = untrack(importInfo); - props.onSelected(info.path!, info.instances); - props.hide(); - }} - />, - ]} - title="Import Instances" - > - - - ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLanguage.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLanguage.tsx deleted file mode 100644 index cc6ee96f..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLanguage.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import { TRANSLATION_WEBSITE } from '@onelauncher/client'; -import { useBeforeLeave } from '@solidjs/router'; -import Illustration from '~assets/illustrations/onboarding/language.svg?component-solid'; -import Link from '~ui/components/base/Link'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; -import { createSignal, For } from 'solid-js'; -import Onboarding, { OnboardingStep } from './Onboarding'; - -export const LanguagesList = { - en: ['English', 100], -} as const; - -export type Language = keyof typeof LanguagesList; - -function OnboardingLanguage() { - const ctx = Onboarding.useContext(); - - const [selected, setSelected] = createSignal('en'); - - const getSelectedLanguage = () => LanguagesList[selected()]; - - useBeforeLeave(() => { - ctx.setLanguage(selected()); - }); - - return ( - } - paragraph="Choose your preferred language." - title="Language" - > -
-
- -
- b[1][1] - a[1][1])}> - {([code, language]) => ( -
setSelected(code as Language)} - > -
{language[0]}
-
- {language[1]} - % -
-
- )} -
-
-
-
- -
- Help translate OneLauncher -
-
-
- ); -} - -export default OnboardingLanguage; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLogin.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLogin.tsx deleted file mode 100644 index cd0acdc9..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingLogin.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import type { MinecraftCredentials } from '@onelauncher/client/bindings'; -import MicrosoftLogo from '~assets/logos/microsoft.svg?component-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import PlayerHead from '~ui/components/game/PlayerHead'; -import useAccountController from '~ui/components/overlay/account/AddAccountModal'; -import { createSignal, onMount, Show } from 'solid-js'; -import Onboarding from './Onboarding'; - -function OnboardingLogin() { - const context = Onboarding.useContext(); - const accountController = useAccountController(); - - const [errorMessage, setErrorMessage] = createSignal(''); - const [profile, setProfile] = createSignal(); - - onMount(() => { - context.setForwardButtonEnabled(false); - }); - - async function requestLogin() { - const result = await bridge.commands.authLogin(); - - if (result.status === 'error') { - setErrorMessage(result.error); - return; - } - - if (!result.data) { - setErrorMessage('No account was found. Please try again.'); - return; - } - - setProfile(result.data); - accountController.refetch(); - - context.setForwardButtonEnabled(true); - } - - return ( -
-

Login

- -

Before you continue, we require you to own a copy of Minecraft: Java Edition.

- - -
- -
-

{profile()?.username}

-

{profile()?.id}

-
-
-
- -
- ); -} - -export default OnboardingLogin; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingSummary.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingSummary.tsx deleted file mode 100644 index f2398412..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingSummary.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import AnimatedRoutes from '~ui/components/AnimatedRoutes'; -import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; -import { For, Match, Switch } from 'solid-js'; -import Onboarding, { OnboardingTaskStage } from './Onboarding'; - -function OnboardingSummary() { - const ctx = Onboarding.useContext(); - - return ( -
-

- Prepare OneLauncher -

- -

Are you sure you want to proceed with the following tasks?

- - - - - -
- - {task => ( - - {task} - - )} - -
-
-
- -
-
-

Preparing...

-
-
-
-
-
-
- ); -} - -export default OnboardingSummary; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingWelcome.tsx b/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingWelcome.tsx deleted file mode 100644 index 6649ee3b..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/onboarding/OnboardingWelcome.tsx +++ /dev/null @@ -1,15 +0,0 @@ -function OnboardingWelcome() { - return ( -
-

- Welcome to - {' '} - OneLauncher -

- -

A powerful yet easy to use launcher for Minecraft.

-
- ); -} - -export default OnboardingWelcome; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/SettingsRoot.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/SettingsRoot.tsx deleted file mode 100644 index 477d4d01..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/SettingsRoot.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { getProgramInfo } from '@onelauncher/client'; -import { Route } from '@solidjs/router'; -import { writeText } from '@tauri-apps/plugin-clipboard-manager'; -import { Brush01Icon, CodeSnippet02Icon, MessageTextSquare01Icon, RefreshCcw02Icon, Rocket02Icon, Sliders04Icon, Users01Icon } from '@untitled-theme/icons-solid'; -import AnimatedRoutes from '~ui/components/AnimatedRoutes'; -import Tooltip from '~ui/components/base/Tooltip'; -import ErrorBoundary from '~ui/components/ErrorBoundary'; -import { createSignal, type ParentProps } from 'solid-js'; -import Sidebar from '../../components/Sidebar'; -import SettingsChangelog from './about/SettingsChangelog'; -import SettingsDeveloper from './about/SettingsDeveloper'; -import SettingsFeedback from './about/SettingsFeedback'; -import SettingsAccounts from './game/SettingsAccounts'; -import SettingsMinecraft from './game/SettingsMinecraft'; -import SettingsAppearance from './launcher/SettingsAppearance'; -import SettingsGeneral from './launcher/SettingsGeneral'; - -function SettingsRoutes() { - return ( - <> - {/* Launcher Settings */} - - - - {/* Game Settings */} - - - - {/* About */} - - - - - ); -} - -function SettingsRoot(props: ParentProps) { - return ( -
-
- , 'General', '/'], - [, 'Appearance', '/appearance'], - // [, 'APIs', '/apis'], - // [, 'Language', '/language'], - ], - 'Game Settings': [ - [, 'Minecraft settings', '/minecraft'], - [, 'Accounts', '/accounts'], - ], - 'About': [ - [, 'Changelog', '/changelog'], - [, 'Feedback', '/feedback'], - [, 'Developer Options', '/developer'], - ], - }} - /> - -
- -
- - - {props.children} - - -
-
- ); -} - -function Info() { - const [copied, setCopied] = createSignal(false); - - return ( -
- -
{ - const info = e.target.innerHTML; - writeText(info) - .finally(() => { - setCopied(true); - setTimeout(() => setCopied(false), 3000); - }); - }} - > - {(() => { - const PROGRAM_INFO = getProgramInfo(); - return ` -Launcher Version: ${PROGRAM_INFO.launcher_version} -Tauri Version: ${PROGRAM_INFO.tauri_version} -Webview Version: ${PROGRAM_INFO.webview_version} -Platform: ${PROGRAM_INFO.platform} ${PROGRAM_INFO.arch} bit -Build: ${PROGRAM_INFO.dev_build ? 'dev' : 'release'} -`.trim(); - })()} -
-
-
- ); -} - -SettingsRoot.Routes = SettingsRoutes; - -export default SettingsRoot; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsChangelog.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsChangelog.tsx deleted file mode 100644 index 002104a5..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsChangelog.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; - -function SettingsChangelog() { - return ( - -

Changelog

- - - - - -
- ); -} - -// TODO: Implement markdown support? -function UpdatePost() { - return ( -
-

New Feature

-

- {` -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus fringilla, enim nec lobortis ornare, dui dolor convallis ante, eget blandit dolor purus eget nisi. Nullam malesuada sem purus, nec placerat velit luctus nec. Nullam quis consequat mi. Pellentesque in mi nec ligula rhoncus ullamcorper. Morbi vehicula, magna in lobortis imperdiet, diam orci sodales massa, sed convallis sapien diam id lorem. Cras condimentum tincidunt felis non suscipit. Morbi rhoncus enim nec felis sagittis, sed semper tortor interdum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sed lacinia est. Etiam a est vitae diam laoreet dapibus. Cras eu dignissim felis. Nam quis magna tempor, convallis nibh eu, sagittis quam. - -Aliquam ullamcorper libero sem, ac pellentesque nulla gravida eget. Phasellus volutpat lectus sit amet dictum gravida. Vivamus ligula magna, venenatis vitae elementum ut, elementum quis dolor. Pellentesque congue urna nibh, quis mollis nunc sagittis eu. Maecenas lacinia, velit quis euismod pulvinar, eros diam eleifend metus, quis porta nisi ligula ut ipsum. Proin eget diam mi. Cras sed rutrum est, in pellentesque lacus. Donec vitae egestas nibh. Vivamus vulputate convallis dui, vitae tempus velit sagittis eget. Ut sit amet magna a risus ultrices sagittis. Duis imperdiet erat felis, a pretium velit egestas in. Nulla facilisi. Praesent fringilla sem orci, ac elementum magna sollicitudin at. Phasellus convallis gravida est, at venenatis quam maximus id. Cras euismod purus vel massa consequat, sit amet porttitor odio accumsan. -`.trim()} -

-
- ); -} - -export default SettingsChangelog; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx deleted file mode 100644 index 1c3e7718..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx +++ /dev/null @@ -1,110 +0,0 @@ -import { useNavigate } from '@solidjs/router'; -import { CodeBrowserIcon, EyeIcon, GitMergeIcon, LinkExternal01Icon, PlusIcon, RefreshCcw05Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Toggle from '~ui/components/base/Toggle'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import SettingsRow from '~ui/components/SettingsRow'; -import Sidebar from '~ui/components/Sidebar'; -import useNotifications from '~ui/hooks/useNotifications'; -import useSettings from '~ui/hooks/useSettings'; -import { createSignal } from 'solid-js'; - -function SettingsDeveloper() { - const notifications = useNotifications(); - const { settings, saveOnLeave } = useSettings(); - const navigate = useNavigate(); - - const [notiCounter, setNotiCounter] = createSignal(0); - - saveOnLeave(() => ({ - debug_mode: settings().debug_mode!, - onboarding_completed: settings().onboarding_completed!, - })); - - function createTestNotification() { - notifications.set(`test_notification${notiCounter()}`, { - title: `Test Notification ${notiCounter()}`, - message: 'Test Notification Message body', - }); - - setNotiCounter(count => count + 1); - } - - function openDevTools() { - bridge.commands.openDevTools(); - } - - return ( - -

Developer Options

-

You probably shouldn't mess with any of these if you don't know what you're doing!

- - } - title="Open Dev Tools" - > -
- - ); -} - -interface AccountRowProps { - username: string; - uuid: string; - current?: boolean; - onClick: (uuid: string) => void; - onDelete: (uuid: string) => void; -}; - -function AccountRow(props: AccountRowProps) { - const defaultProps = mergeProps({ current: false }, props); - const [errored, setErrored] = createSignal(false); - - return ( -
props.onClick(props.uuid)} - > -
- setErrored(true)} - uuid={props.uuid} - /> -
- -
-
-

{props.username}

- - - - - -
-

{props.uuid}

-
- -
-
-
- ); -} - -export default SettingsAccounts; diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx deleted file mode 100644 index fe7b9a8c..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/game/SettingsMinecraft.tsx +++ /dev/null @@ -1,650 +0,0 @@ -import type { JavaVersion, JavaVersions, JavaZuluPackage, Memory, Resolution } from '@onelauncher/client/bindings'; -import { ActivityIcon, CpuChip01Icon, Database01Icon, Download01Icon, EyeIcon, FilePlus02Icon, FileX02Icon, LayoutTopIcon, Maximize01Icon, ParagraphWrapIcon, VariableIcon, XIcon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Button from '~ui/components/base/Button'; -import Dropdown from '~ui/components/base/Dropdown'; -import TextField from '~ui/components/base/TextField'; -import Toggle from '~ui/components/base/Toggle'; -import Modal, { createModal, type ModalProps } from '~ui/components/overlay/Modal'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import BaseSettingsRow, { type SettingsRowProps } from '~ui/components/SettingsRow'; -import Sidebar from '~ui/components/Sidebar'; -import { tryResult } from '~ui/hooks/useCommand'; -import useSettings from '~ui/hooks/useSettings'; -import { asEnvVariables } from '~utils'; -import { type Accessor, createMemo, createResource, createSignal, For, onMount, type Setter, Show, splitProps, untrack } from 'solid-js'; - -function SettingsMinecraft() { - return ( - -

Global Game Settings

- - - -
- ); -} - -interface CreateSetting { - get: Accessor; - getRaw: () => T; - set: Setter; - isGlobal: Accessor; - resetToFallback: (raw?: T) => void; -}; - -export function createSetting(initial: T | undefined | null, fallback?: T): CreateSetting { - const [value, setValue] = createSignal((initial === undefined || initial === null) ? fallback as T : initial); - const [raw, setRaw] = createSignal(initial as T); - const [isGlobal, setIsGlobal] = createSignal(true); - - const checkGlobal = () => { - if (fallback === undefined || fallback === null) { - setIsGlobal(null); - return; - } - - const check_one = untrack(() => raw()) === undefined || untrack(() => raw()) === null; - - setIsGlobal(check_one); - }; - - onMount(() => { - checkGlobal(); - }); - - const set: Setter = (newValue?: any) => { - setRaw(newValue!); - setValue(newValue!); - checkGlobal(); - - return value as any; - }; - - const resetToFallback = (raw?: T) => { - if (fallback === undefined || fallback === null) - throw new Error('No fallback value provided'); - - setValue(() => fallback); - - setRaw(() => (raw || null)!); - - checkGlobal(); - }; - - return { - get: value, - getRaw: raw, - set, - isGlobal, - resetToFallback, - }; -} - -function SettingsRow(props: SettingsRowProps & { - reset: () => any; - isGlobal: Accessor; -}) { - const [split, rest] = splitProps(props, ['children', 'reset', 'isGlobal']); - - return ( - - -
split.reset()} - > - Reset -
-
- - {split.children} -
- ); -} - -export function GameSettings(props: { - fullscreen: CreateSetting; - resolution: CreateSetting; - memory: CreateSetting; -}) { - return ( - <> - Game - - } - isGlobal={props.fullscreen.isGlobal} - reset={props.fullscreen.resetToFallback} - title="Force Fullscreen" - > - - - - } - isGlobal={props.resolution.isGlobal} - reset={props.resolution.resetToFallback} - title="Resolution" - > -
- { - props.resolution.set([Number.parseInt(value), props.resolution.get()[1]]); - }} - value={props.resolution.get()[0]} - /> - - { - props.resolution.set([props.resolution.get()[0], Number.parseInt(value)]); - }} - value={props.resolution.get()[1]} - /> -
-
- - {/* TODO: make this a memory slider */} - } - isGlobal={props.memory.isGlobal} - reset={props.memory.resetToFallback} - title="Memory" - > -
-
- Min: - { - props.memory.set({ minimum: Number.parseInt(value), maximum: props.memory.get().maximum }); - }} - value={props.memory.get().minimum} - /> -
- -
- Max: - { - props.memory.set({ minimum: props.memory.get().minimum, maximum: Number.parseInt(value) }); - }} - value={props.memory.get().maximum} - /> -
-
-
- - ); -} - -export function LauncherSettings(props: { - hideOnLaunch: CreateSetting | undefined; - allowParallelClusters: CreateSetting | undefined; -}) { - const shouldShowHeader = () => Object.values(props).some(setting => setting !== undefined); - - return ( - <> - - Launcher - - - - } - isGlobal={props.hideOnLaunch!.isGlobal} - reset={props.hideOnLaunch!.resetToFallback} - title="Hide On Launch" - > - - - - - - } - isGlobal={props.allowParallelClusters!.isGlobal} - reset={props.allowParallelClusters!.resetToFallback} - title="Allow Parallel Clusters" - > - - - - - ); -} - -export function ProcessSettings(props: { - preCommand: CreateSetting; - wrapperCommand: CreateSetting; - postCommand: CreateSetting; -}) { - return ( - <> - Process - - } - isGlobal={props.preCommand.isGlobal} - reset={props.preCommand.resetToFallback} - title="Pre-Launch Command" - > - - - - } - isGlobal={props.wrapperCommand.isGlobal} - reset={props.wrapperCommand.resetToFallback} - title="Wrapper Command" - > - - - - } - isGlobal={props.postCommand.isGlobal} - reset={props.postCommand.resetToFallback} - title="Post-Exit Command" - > - - - - ); -} - -export function JvmSettings(props: { - javaArgs: CreateSetting; - envVars: CreateSetting<[string, string][]>; -} & ({ - clusterId: string; - javaVersion: CreateSetting; - javaVersions: CreateSetting; -} | { - javaVersion: undefined; - javaVersions: CreateSetting; -})) { - const modal = createModal((controller) => { - if (props.javaVersion) - return ( - - ); - else return ( - - ); - }); - - return ( - <> - Java - - } - isGlobal={() => true} - reset={() => {}} - title="Version" - > -
- - - - ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsAppearance.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsAppearance.tsx deleted file mode 100644 index b0b41c90..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsAppearance.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { useBeforeLeave } from '@solidjs/router'; -import { Window } from '@tauri-apps/api/window'; -import { Monitor01Icon, PackageIcon, Speedometer04Icon } from '@untitled-theme/icons-solid'; -import { bridge } from '~imports'; -import Dropdown from '~ui/components/base/Dropdown'; -import Toggle from '~ui/components/base/Toggle'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useSettings from '~ui/hooks/useSettings'; -import { upperFirst } from '~utils'; -import { BROWSER_VIEWS } from '~utils/browser'; -import { DEFAULT_THEME, setAppTheme, splitMergedTheme, THEMES } from '~utils/theming'; -import { createEffect, createSignal, For } from 'solid-js'; -import SettingsRow from '../../../components/SettingsRow'; - -function SettingsAppearance() { - const { settings, saveOnLeave } = useSettings(); - const [shouldReload, setShouldReload] = createSignal(false); - const [theme, setTheme] = createSignal(settings().theme ?? DEFAULT_THEME); - - createEffect(() => { - document.body.classList.add('theme-transition'); - const split = splitMergedTheme(theme()); - setAppTheme(split.theme, split.variant); - setTimeout(() => document.body.classList.remove('theme-transition'), 300); - }); - - useBeforeLeave((e) => { - if (shouldReload()) { - e.preventDefault(); - setShouldReload(false); - location.reload(); - } - - if (settings().custom_frame !== undefined) - bridge.commands.setWindowStyle(settings().custom_frame!); - }); - - // eslint-disable-next-line solid/reactivity -- This is a side effect - saveOnLeave(() => ({ - disable_animations: settings().disable_animations!, - custom_frame: settings().custom_frame!, - theme: theme(), - })); - - return ( - -

Appearance

- -
- -
- - {theme => ( - - {variant => ( - - )} - - )} - -
-
- - {/* } - title="Accent Color" - > - - */} - - } - title="Package List Style" - > - settings().browser_list_view = BROWSER_VIEWS[value] ?? 'grid'} - selected={() => BROWSER_VIEWS.indexOf(settings().browser_list_view ?? 'grid')} - > - - {view => ( - {upperFirst(view)} - )} - - - - - } - title="Custom Window Frame" - > - settings().custom_frame ?? true} - onChecked={(value) => { - settings().custom_frame = value; - Window.getCurrent().setDecorations(value); - // setShouldReload(true); - }} - /> - - - } - title="Disable Animations" - > - settings().disable_animations ?? false} - onChecked={(value) => { - settings().disable_animations = value; - setShouldReload(true); - }} - /> - -
-
- ); -} - -export default SettingsAppearance; - -interface ThemeCardProps { - themeSelector: string; - setTheme: (merged: string) => void; -}; - -function ThemeCard(props: ThemeCardProps) { - return ( -
props.setTheme(props.themeSelector)}> - - - - - - - - - -
- ); -} - -interface PrimaryThemeCardProps { - merged: string; -} - -function PrimaryThemeCard(props: PrimaryThemeCardProps) { - return ( -
- - - - - - - - - - - - - - -
- ); -} diff --git a/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsGeneral.tsx b/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsGeneral.tsx deleted file mode 100644 index 6a9bbbf1..00000000 --- a/apps/onelauncher/old_frontend/src/ui/pages/settings/launcher/SettingsGeneral.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { open } from '@tauri-apps/plugin-shell'; -import { FolderIcon, LinkExternal01Icon, XIcon } from '@untitled-theme/icons-solid'; -import DiscordIcon from '~assets/logos/discord.svg?component-solid'; -import Button from '~ui/components/base/Button'; -import Toggle from '~ui/components/base/Toggle'; -import ScrollableContainer from '~ui/components/ScrollableContainer'; -import Sidebar from '~ui/components/Sidebar'; -import useSettings from '~ui/hooks/useSettings'; -import SettingsRow from '../../../components/SettingsRow'; - -function SettingsGeneral() { - const { settings, saveOnLeave } = useSettings(); - - saveOnLeave(() => ({ - disable_discord: settings().disable_discord!, - hide_close_prompt: settings().hide_close_prompt!, - disable_analytics: settings().disable_analytics!, - })); - - return ( - -

General

- - - } - title="Discord RPC" - > - !(settings().disable_discord ?? false)} - onChecked={value => settings().disable_discord = !value} - /> - - - } - title="Hide Close Dialog" - > - settings().hide_close_prompt ?? true} - onChecked={value => settings().hide_close_prompt = value} - /> - - - {/* } - title="Error Analytics" - > - !(settings().disable_analytics ?? false)} - onChecked={value => settings().disable_analytics = !value} - /> - */} - - Folders and Files - } - title="Launcher Folder" - > -